diff options
-rwxr-xr-x | Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua | 78 | ||||
-rwxr-xr-x | Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl | 28 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/lwarp/README.txt | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/lwarp/lwarp.pdf | bin | 1472957 -> 1482832 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/lwarp/lwarp_tutorial.txt | 49 | ||||
-rwxr-xr-x | Master/texmf-dist/scripts/lwarp/lwarpmk.lua | 78 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/lwarp/lwarp.dtx | 6211 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/lwarp/lwarp.ins | 1 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/lwarp/lwarp-newproject.sty | 2217 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/lwarp/lwarp.sty | 2399 |
10 files changed, 5685 insertions, 5378 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua b/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua index 9b7e7e29197..07334170924 100755 --- a/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua +++ b/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua @@ -4,7 +4,7 @@ -- Print the usage of the lwarpmk command: -printversion = "v0.29" +printversion = "v0.30" function printhelp () print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ; @@ -45,8 +45,9 @@ latexname = "pdflatex" (or "lualatex", or "xelatex") sourcename = "projectname" (the source-code filename w/o .tex) homehtmlfilename = "index" (or perhaps the project name) htmlfilename = "" (or "projectname" - filename prefix) -uselatexmk = "false" (or "true" to use latexmk to build PDFs) +latexmk = "false" (or "true" to use latexmk to build PDFs) languge = "english" (use a language supported by xindy) +xdyfile = "lwarp.xdy" (or a custom file based on lwarp.xdy) -- Filenames must contain only letters, numbers, underscore, or dash. Values must be in "quotes". @@ -90,6 +91,8 @@ local conffile = "lwarpmk.conf" if arg[2] ~= nil then conffile = arg[2]..".lwarpmkconf" end -- Default language: language = "english" +-- Default xdyfile: +xdyfile = "lwarp.xdy" -- Verify the file exists: if (lfs.attributes(conffile,"mode")==nil) then -- file not exists print("lwarpmk: " .. conffile .." does not exist.") @@ -104,7 +107,7 @@ io.input(conffile) ; local linenum = 0 for line in io.lines() do -- scan lines linenum = linenum + 1 -i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*\"([%w-_]*)\"") ; +i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*\"([%w%-_%.]*)\"") ; -- Error if incorrect enclosing characters: if ( i == nil ) then print ( linenum .. " : " .. line ) ; @@ -133,8 +136,9 @@ elseif ( cvarname == "latexname" ) then elseif ( cvarname == "sourcename" ) then sourcename = cvalue elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue -elseif ( cvarname == "uselatexmk" ) then uselatexmk = cvalue +elseif ( cvarname == "latexmk" ) then latexmk = cvalue elseif ( cvarname == "language" ) then language = cvalue +elseif ( cvarname == "xdyfile" ) then xdyfile = cvalue else print ( linenum .. " : " .. line ) ; print ("lwarpmk: Incorrect variable name \"" .. cvarname .. "\" in " .. conffile ..".\n" ) ; @@ -160,6 +164,16 @@ dirslash = "\\" opquote= "\"" else print ( "lwarpmk: Select Unix or Windows for opsystem" ) end --- for Windows + +-- set xindycmd according to pdflatex vs xelatex/lualatex: +if ( latexname == "pdflatex" ) then +xindycmd = "texindy -C utf8" +glossarycmd = "xindy -C utf8" +else +xindycmd = "xindy -M texindy -C utf8" +glossarycmd = "xindy -C utf8" +end + end -- loadconf function refreshdate () @@ -215,8 +229,10 @@ end function pdftohtml () -- Convert to text: - print ("lwarpmk: Converting " .. sourcename .."_html.pdf to " .. sourcename .. "_html.html") - os.execute("pdftotext -enc UTF-8 -nopgbrk -layout " .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") + print ("lwarpmk: Converting " .. sourcename + .."_html.pdf to " .. sourcename .. "_html.html") + os.execute("pdftotext -enc UTF-8 -nopgbrk -layout " + .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") -- Split the result into individual HTML files: splitfile (homehtmlfilename .. ".html" , sourcename .. "_html.html") end @@ -273,6 +289,24 @@ end end -- do end -- function +-- Use latexmk to compile source and index: +-- fsuffix is "" for print, or "_html" for HTML +function compilelatexmk ( fsuffix ) + -- 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 " + .. "-e " + .. opquote + .. "$makeindex = q/" + .. xindycmd + .. " -M " .. xdyfile + .. " -L " .. language .. " /" + .. opquote + .. " -pdflatex=\"" .. latexname .." %O %S\" " + .. sourcename..fsuffix ..".tex" ) ; + if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end +end + -- lwarpmk --version : if (arg[1] == "--version") then @@ -288,8 +322,8 @@ print ("lwarpmk: " .. printversion .. " Automated make for the LaTeX lwarp pack if arg[1] == "print" then loadconf () -if ( uselatexmk == "true" ) then - os.execute ( "latexmk -pdf -dvi- -ps- -pdflatex=\"" .. latexname .." %O %S\" " .. sourcename ..".tex" ) ; +if ( latexmk == "true" ) then + compilelatexmk ("") print ("lwarpmk: Done.") else -- not latexmk verifyfileexists (sourcename .. ".tex") ; @@ -316,7 +350,11 @@ end -- not latexmk elseif arg[1] == "printindex" then loadconf () print ("lwarpmk: Processing the index.") -os.execute("texindy -M lwarp_html.xdy " .. sourcename .. ".idx") +os.execute( + xindycmd + .. " -M " .. xdyfile + .. " -L " .. language + .. " " .. sourcename .. ".idx") print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") refreshdate () print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") @@ -330,7 +368,7 @@ elseif arg[1] == "printglossary" then loadconf () print ("lwarpmk: Processing the glossary.") -os.execute("xindy -L " .. language .. " -C utf8 -I xindy -M " .. sourcename .. +os.execute(glossarycmd .. " -L " .. language .. " -I xindy -M " .. sourcename .. " -t " .. sourcename .. ".glg -o " .. sourcename .. ".gls " .. sourcename .. ".glo") print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") @@ -342,15 +380,8 @@ print ("lwarpmk: Done.") elseif arg[1] == "html" then loadconf () -if ( uselatexmk == "true" ) then - -- 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 " - .. "-e " - .. opquote .. "$makeindex = q/texindy -M lwarp_html.xdy/" .. opquote - .. " -pdflatex=\"" .. latexname .." %O %S\" " - .. sourcename .."_html.tex" ) ; - if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end +if ( latexmk == "true" ) then + compilelatexmk ("_html") pdftohtml () print ("lwarpmk: Done.") else -- not latexmk @@ -383,7 +414,12 @@ elseif arg[1] == "pdftohtml" then elseif arg[1] == "htmlindex" then loadconf () print ("lwarpmk: Processing the index.") -os.execute("texindy -M lwarp_html.xdy " .. sourcename .. "_html.idx") +os.execute( + xindycmd + .. " -M " .. xdyfile + .. " -L " .. language + .. " " .. sourcename .. "_html.idx" +) print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") refreshdate () print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") @@ -397,7 +433,7 @@ elseif arg[1] == "htmlglossary" then loadconf () print ("lwarpmk: Processing the glossary.") -os.execute("xindy -L " .. language .. " -C utf8 -I xindy -M " ..sourcename .. +os.execute(glossarycmd .. " -L " .. language .. " -I xindy -M " ..sourcename .. "_html -t " .. sourcename .. "_html.glg -o " ..sourcename .. "_html.gls " ..sourcename .. "_html.glo") diff --git a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl index f8f3e55ba42..ebc97294ea4 100755 --- a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl +++ b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl @@ -1,13 +1,13 @@ #!/usr/bin/env perl -# $Id: tlmgr.pl 44076 2017-04-27 08:51:00Z preining $ +# $Id: tlmgr.pl 44109 2017-04-28 23:12:11Z karl $ # # Copyright 2008-2017 Norbert Preining # This file is licensed under the GNU General Public License version 2 # or any later version. # -my $svnrev = '$Revision: 44076 $'; -my $datrev = '$Date: 2017-04-27 10:51:00 +0200 (Thu, 27 Apr 2017) $'; +my $svnrev = '$Revision: 44109 $'; +my $datrev = '$Date: 2017-04-29 01:12:11 +0200 (Sat, 29 Apr 2017) $'; my $tlmgrrevision; my $prg; if ($svnrev =~ m/: ([0-9]+) /) { @@ -7134,6 +7134,12 @@ out). If I<value> is given in addition, I<key> is set to I<value> in the respective file. I<No error checking is done!> +Here is a practical example of changing configuration values. If the +execution of (some or all) system commands via C<\write18> was left +enabled during installation, you can disable it afterwards: + + tlmgr conf texmf shell_escape 0 + For C<texmf>, an additional subcommand C<auxtrees> allows adding and removing arbitrary additional texmf trees, completely under user control. C<texmf auxtrees show> shows the list of additional trees, @@ -7145,18 +7151,12 @@ C<ROOT/texmf.cnf>. Example: tlmgr conf texmf auxtrees add /my/quick/test/tree tlmgr conf texmf auxtrees remove /my/quick/test/tree -In all cases the file used can be explicitly specified via the option -C<--conffile I<file>>, in case one wants to operate on a different file. +In all cases the configuration file can be explicitly specified via the +option C<--conffile> I<file>, if desired. -The C<PATH> value shown is that used by C<tlmgr>. The directory in -which the C<tlmgr> executable is found is automatically prepended to the -PATH value inherited from the environment. - -A practical example of changing configuration values: if the execution of -(some or all) system commands via C<\write18> was left enabled during -installation, you can disable it afterwards: - - tlmgr conf texmf shell_escape 0 +The C<PATH> value shown is as used by C<tlmgr>. The directory in which +the C<tlmgr> executable is found is automatically prepended to the PATH +value inherited from the environment. Warning: The general facility is here, but tinkering with settings in this way is strongly discouraged. Again, no error checking on either diff --git a/Master/texmf-dist/doc/latex/lwarp/README.txt b/Master/texmf-dist/doc/latex/lwarp/README.txt index cd0004b7712..f5b9d35fafe 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.29 README.txt +LaTeX lwarp package v0.30 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 b334c8805d5..7cac958b166 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/doc/latex/lwarp/lwarp_tutorial.txt b/Master/texmf-dist/doc/latex/lwarp/lwarp_tutorial.txt index 89da7124729..bd28114bd9b 100644 --- a/Master/texmf-dist/doc/latex/lwarp/lwarp_tutorial.txt +++ b/Master/texmf-dist/doc/latex/lwarp/lwarp_tutorial.txt @@ -6,49 +6,55 @@ \usepackage{iftex} % --- LOAD FONT SELECTION AND ENCODING BEFORE LOADING LWARP --- + \ifPDFTeX -\usepackage{lmodern} % pdflatex +\usepackage{lmodern} % pdflatex \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \else -\usepackage{fontspec} % XeLaTeX or LuaLaTeX +\usepackage{fontspec} % XeLaTeX or LuaLaTeX \fi -% --- HTML FILENAME AND LATEXMK SETTINGS --- -% \newcommand{\HomeHTMLFilename}{index} % Filename of the homepage. -% \newcommand{\HTMLFileName}{node-} % Filename prefix of other pages. -% \newcommand{\UseLatexmk}{true}% Uncomment to use latexmk - % --- LWARP IS LOADED NEXT --- -\usepackage{lwarp-newproject} % Possibly with the [lwarpmk] option. -\usepackage{lwarp} +\usepackage[ +% HomeHTMLFilename=index, % Filename of the homepage. +% HTMLFilename={node-}, % Filename prefix of other pages. +% IndexLanguage=english, % Language for xindy index, glossary. +% latexmk, % Use latexmk to compile. +% OSWindows, % Force Windows. (Usually automatic.) +% mathjax, % Use MathJax to display math. +]{lwarp} % \boolfalse{FileSectionNames} % If false, numbers the files. % --- OTHER PACKAGES ARE LOADED AFTER LWARP --- \usepackage{makeidx} \makeindex -\usepackage{xcolor} - +\usepackage{xcolor} % (Demonstration purposes only.) \usepackage{hyperref,cleveref} % LOAD THESE LAST! % --- LATEX AND HTML CUSTOMIZATION --- \title{The Lwarp Tutorial} \author{Some Author} -\setcounter{tocdepth}{2} % Include subsections in the TOC. +\setcounter{tocdepth}{2} % Include subsections in the \TOC. \setcounter{secnumdepth}{2} % Number down to subsections. -\setcounter{FileDepth}{1} % Split HTML files at sections +\setcounter{FileDepth}{1} % Split \HTML\ files at sections \booltrue{CombineHigherDepths} % Combine parts/chapters/sections -\setcounter{SideTOCDepth}{1} % Include subsections in the sideTOC -\SetFirstPageTop{Name and \fbox{HOMEPAGE LOGO}} -\SetPageTop{\fbox{LOGO}} -\SetPageBottom{Contact Information and Copyright} -\NewCSS{lwarp_sagebrush.css} +\setcounter{SideTOCDepth}{1} % Include subsections in the side\TOC +\HTMLAuthor{Some Author} % Sets the HTML meta author tag. +\HTMLLanguage{en-US} % Sets the HTML meta language. +\HTMLDescription{A description.}% Sets the HTML meta description. +\HTMLFirstPageTop{Name and \fbox{HOMEPAGE LOGO}} +\HTMLPageTop{\fbox{LOGO}} +\HTMLPageBottom{Contact Information and Copyright} +\CSSFilename{lwarp_sagebrush.css} \begin{document} -\maketitle % (or a titlepage environment) -% --- An abstract may be placed here. --- +\maketitle % Or titlepage/titlingpage environment. + +% An article abstract would go here. -\tableofcontents \listoffigures % --- MUST BE BEFORE THE FIRST SECTION. +\tableofcontents % MUST BE BEFORE THE FIRST SECTION BREAK! +\listoffigures \chapter{First chapter} @@ -68,6 +74,7 @@ See \cref{fig:withtext}. \section{Some math} Inline math: $r = r_0 + vt - \frac{1}{2}at^2$ +followed by display math: \begin{equation} a^2 + b^2 = c^2 \end{equation} diff --git a/Master/texmf-dist/scripts/lwarp/lwarpmk.lua b/Master/texmf-dist/scripts/lwarp/lwarpmk.lua index 9b7e7e29197..07334170924 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.29" +printversion = "v0.30" function printhelp () print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ; @@ -45,8 +45,9 @@ latexname = "pdflatex" (or "lualatex", or "xelatex") sourcename = "projectname" (the source-code filename w/o .tex) homehtmlfilename = "index" (or perhaps the project name) htmlfilename = "" (or "projectname" - filename prefix) -uselatexmk = "false" (or "true" to use latexmk to build PDFs) +latexmk = "false" (or "true" to use latexmk to build PDFs) languge = "english" (use a language supported by xindy) +xdyfile = "lwarp.xdy" (or a custom file based on lwarp.xdy) -- Filenames must contain only letters, numbers, underscore, or dash. Values must be in "quotes". @@ -90,6 +91,8 @@ local conffile = "lwarpmk.conf" if arg[2] ~= nil then conffile = arg[2]..".lwarpmkconf" end -- Default language: language = "english" +-- Default xdyfile: +xdyfile = "lwarp.xdy" -- Verify the file exists: if (lfs.attributes(conffile,"mode")==nil) then -- file not exists print("lwarpmk: " .. conffile .." does not exist.") @@ -104,7 +107,7 @@ io.input(conffile) ; local linenum = 0 for line in io.lines() do -- scan lines linenum = linenum + 1 -i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*\"([%w-_]*)\"") ; +i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*\"([%w%-_%.]*)\"") ; -- Error if incorrect enclosing characters: if ( i == nil ) then print ( linenum .. " : " .. line ) ; @@ -133,8 +136,9 @@ elseif ( cvarname == "latexname" ) then elseif ( cvarname == "sourcename" ) then sourcename = cvalue elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue -elseif ( cvarname == "uselatexmk" ) then uselatexmk = cvalue +elseif ( cvarname == "latexmk" ) then latexmk = cvalue elseif ( cvarname == "language" ) then language = cvalue +elseif ( cvarname == "xdyfile" ) then xdyfile = cvalue else print ( linenum .. " : " .. line ) ; print ("lwarpmk: Incorrect variable name \"" .. cvarname .. "\" in " .. conffile ..".\n" ) ; @@ -160,6 +164,16 @@ dirslash = "\\" opquote= "\"" else print ( "lwarpmk: Select Unix or Windows for opsystem" ) end --- for Windows + +-- set xindycmd according to pdflatex vs xelatex/lualatex: +if ( latexname == "pdflatex" ) then +xindycmd = "texindy -C utf8" +glossarycmd = "xindy -C utf8" +else +xindycmd = "xindy -M texindy -C utf8" +glossarycmd = "xindy -C utf8" +end + end -- loadconf function refreshdate () @@ -215,8 +229,10 @@ end function pdftohtml () -- Convert to text: - print ("lwarpmk: Converting " .. sourcename .."_html.pdf to " .. sourcename .. "_html.html") - os.execute("pdftotext -enc UTF-8 -nopgbrk -layout " .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") + print ("lwarpmk: Converting " .. sourcename + .."_html.pdf to " .. sourcename .. "_html.html") + os.execute("pdftotext -enc UTF-8 -nopgbrk -layout " + .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") -- Split the result into individual HTML files: splitfile (homehtmlfilename .. ".html" , sourcename .. "_html.html") end @@ -273,6 +289,24 @@ end end -- do end -- function +-- Use latexmk to compile source and index: +-- fsuffix is "" for print, or "_html" for HTML +function compilelatexmk ( fsuffix ) + -- 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 " + .. "-e " + .. opquote + .. "$makeindex = q/" + .. xindycmd + .. " -M " .. xdyfile + .. " -L " .. language .. " /" + .. opquote + .. " -pdflatex=\"" .. latexname .." %O %S\" " + .. sourcename..fsuffix ..".tex" ) ; + if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end +end + -- lwarpmk --version : if (arg[1] == "--version") then @@ -288,8 +322,8 @@ print ("lwarpmk: " .. printversion .. " Automated make for the LaTeX lwarp pack if arg[1] == "print" then loadconf () -if ( uselatexmk == "true" ) then - os.execute ( "latexmk -pdf -dvi- -ps- -pdflatex=\"" .. latexname .." %O %S\" " .. sourcename ..".tex" ) ; +if ( latexmk == "true" ) then + compilelatexmk ("") print ("lwarpmk: Done.") else -- not latexmk verifyfileexists (sourcename .. ".tex") ; @@ -316,7 +350,11 @@ end -- not latexmk elseif arg[1] == "printindex" then loadconf () print ("lwarpmk: Processing the index.") -os.execute("texindy -M lwarp_html.xdy " .. sourcename .. ".idx") +os.execute( + xindycmd + .. " -M " .. xdyfile + .. " -L " .. language + .. " " .. sourcename .. ".idx") print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") refreshdate () print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") @@ -330,7 +368,7 @@ elseif arg[1] == "printglossary" then loadconf () print ("lwarpmk: Processing the glossary.") -os.execute("xindy -L " .. language .. " -C utf8 -I xindy -M " .. sourcename .. +os.execute(glossarycmd .. " -L " .. language .. " -I xindy -M " .. sourcename .. " -t " .. sourcename .. ".glg -o " .. sourcename .. ".gls " .. sourcename .. ".glo") print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") @@ -342,15 +380,8 @@ print ("lwarpmk: Done.") elseif arg[1] == "html" then loadconf () -if ( uselatexmk == "true" ) then - -- 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 " - .. "-e " - .. opquote .. "$makeindex = q/texindy -M lwarp_html.xdy/" .. opquote - .. " -pdflatex=\"" .. latexname .." %O %S\" " - .. sourcename .."_html.tex" ) ; - if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end +if ( latexmk == "true" ) then + compilelatexmk ("_html") pdftohtml () print ("lwarpmk: Done.") else -- not latexmk @@ -383,7 +414,12 @@ elseif arg[1] == "pdftohtml" then elseif arg[1] == "htmlindex" then loadconf () print ("lwarpmk: Processing the index.") -os.execute("texindy -M lwarp_html.xdy " .. sourcename .. "_html.idx") +os.execute( + xindycmd + .. " -M " .. xdyfile + .. " -L " .. language + .. " " .. sourcename .. "_html.idx" +) print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") refreshdate () print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") @@ -397,7 +433,7 @@ elseif arg[1] == "htmlglossary" then loadconf () print ("lwarpmk: Processing the glossary.") -os.execute("xindy -L " .. language .. " -C utf8 -I xindy -M " ..sourcename .. +os.execute(glossarycmd .. " -L " .. language .. " -I xindy -M " ..sourcename .. "_html -t " .. sourcename .. "_html.glg -o " ..sourcename .. "_html.gls " ..sourcename .. "_html.glo") diff --git a/Master/texmf-dist/source/latex/lwarp/lwarp.dtx b/Master/texmf-dist/source/latex/lwarp/lwarp.dtx index 73ca057c437..27c7a4d3f13 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> [2017/04/15 v0.29 Allows LaTeX to directly produce HTML5 output.] +%<package> [2017/04/29 v0.30 Allows LaTeX to directly produce HTML5 output.] % %<*driver> \documentclass{ltxdoc} @@ -58,8 +58,7 @@ \usepackage[log-declarations=false]{xparse} -\usepackage[lwarpmk]{lwarp-newproject} -\usepackage{lwarp} +\usepackage[lwarpmk]{lwarp} \usepackage{needspace} @@ -91,7 +90,6 @@ \excludecomment{testing} - % \usepackage{morefloats} % \usepackage{marginfix} @@ -131,6 +129,12 @@ \DescribeEnv{#1}% } +\newcommand{\ItemDescribeOption}[1]{% +\item[\texttt{#1}:]% +\setlength{\parskip}{1.5ex}% +\DescribeOption{#1}% +} + \newcommand{\ItemDescribeCounter}[1]{% \item[\texttt{#1}:]% \setlength{\parskip}{1.5ex}% @@ -300,7 +304,8 @@ code apply to the generation of \HTML, print, or both forms of output. } \newcommand{\limitspageref}{\pkg{cleveref} and \pkg{varioref} are supported, -but printed page numbers do not map to \HTML. +but printed page numbers do not map to \HTML, so a section name or a text phrase +are used instead. See \cref{sec:successfulcommands} to redefine the message which is printed for page number references. } @@ -319,6 +324,13 @@ of the home page if it is after the abstract. \newcommand{\limitstext}{\cs{textbf}, etc.\ are supported, but \cs{bfseries}, etc.\ are not yet supported.} +\newcommand{\limitsreferences}{% +\cs{nameref} refers to the most recently-used section where the \cs{label} +was defined. If no section has been defined before the \cs{label}, +the link will be empty. +Index entries also use \cs{nameref} and have the same limitation. +} + \newcommand{\limitsfootnotes}{ \pkg{lwarp} uses native \LaTeX\ footnote code, although with its own \cs{box} to avoid the \LaTeX\ output routine. The usual functions work as-is. @@ -910,24 +922,29 @@ For now, the number list is simply turned off. \texttt{htmlglossary} to process the glossaries created by \pkg{glossaries} using \texttt{xindy}. -The packages \pkg{lwarp-newproject} and \pkg{lwarp} each take an option -\DescribeOption[lwarp-newproject]{lwarpmklang} -\DescribeOption[lwarp]{lwarpmklang} -\texttt{lwarpmklang=english} to set the language used by \texttt{xindy}. -Set the same option for both packages. -This is passed to \texttt{xindy} using its \texttt{-L} option. +The package \pkg{lwarp} takes an option +\DescribeOption{IndexLanguage} +\texttt{IndexLanguage=english} to set the language used by \texttt{xindy}. +This is passed to \texttt{xindy} using its \texttt{-L} option, and is +used for both index and glossary generation. } \newcommand{\osportabilityusage}{% \pkg{lwarp} tries to detect which operating system is being used. +\DescribeProgram{Unix}\DescribeProgram{Mac OS}\DescribeProgram{Linux} +\textsc{Unix}~/ \textsc{Mac~OS}~/ \textsc{Linux} is the default +(collectively referred to as ``\textsc{Unix}'' in the configuration files), +and \textsc{MS-Windows} is supported as well. -If \textsc{MS-Windows} is not correctly detected, +If \textsc{Windows} is not correctly detected, \DescribeProgram{MS-Windows} \DescribeProgram{Windows} -use the command \cs{warpOSwindows} in the document -\DescribeMacro{\warpOSwindows} -preamble after \pkg{lwarp} is loaded. This modifies the -operating-system path separator used by \pkg{lwarp}. +use the \pkg{lwarp} option \texttt{OSWindows}. +\DescribeOption{OSWindows} + +When detected or specified, the operating-system path separator used by \pkg{lwarp} +is modified, the boolean \texttt{usingOSWindows} is set true. +This boolean may be tested by the user for later use. } @@ -955,7 +972,7 @@ operating-system path separator used by \pkg{lwarp}. %<*package> % \fi % -% \CheckSum{10986} +% \CheckSum{10974} % % \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 @@ -1023,6 +1040,7 @@ operating-system path separator used by \pkg{lwarp}. % \changes{v0.27}{2017/04/04}{\ 2017/04/04} % \changes{v0.28}{2017/04/14}{\ 2017/04/14} % \changes{v0.29}{2017/04/15}{\ 2017/04/15} +% \changes{v0.30}{2017/04/29}{\ 2017/04/29} @@ -1156,15 +1174,97 @@ operating-system path separator used by \pkg{lwarp}. % For a detailed list of changes, see the Change History on page \pageref{sec:changehistory}. % % \begin{description} +% \item[v0.30:] \ +% \begin{itemize} +% \item \pkg{lwarp-newproject} has been removed, and its functions +% \watchout[\pkg{lwarp-newproject}] +% have been combined with \pkg{lwarp}. +% +% To modify existing documents, remove from the document source: +% \begin{sourcedisplay} +% \cs{usepackage}\{lwarp-newproject\} +% \end{sourcedisplay} +% +% The \pkg{lwarp} package now produces the configuration files during +% print output, and also accepts the option |lwarpmk| if desired. +% +% \item A number of macros +% \watchout[HTML setup changes.] +% related to \HTML\ settings have been converted to options, and +% other macros and options have been renamed to create a consistent syntax: +% \begin{center} +% \begin{tabular}{ll} +% \toprule +% Old Macro & New Package Option \\ \midrule +% \cs{HomeHTMLFileName} & |HomeHTMLFilename| \\ +% \cs{HTMLFileName} & |HTMLFilename| \\ +% \cs{useLatexmk} & |latexmk| \\ +% \cs{warpOSwindows} & |OSWindows| \\[2.5ex] \toprule +% Old Package Option & New Package Option \\ \midrule +% |lwarpmklang| & |IndexLanguage| \\ +% (new) & |xdyFilename| \\[2.5ex] \toprule +% Old Macro & New Macro \\ \midrule +% \cs{MetaLanguage} & \cs{HTMLLanguage} \\ +% \cs{HTMLauthor} & \cs{HTMLAuthor} \\ +% \cs{NewHTMLdescription} & \cs{HTMLDescription} \\ +% \cs{SetFirstPageTop} & \cs{HTMLFirstPageTop} \\ +% \cs{SetPageTop} & \cs{HTMLPageTop} \\ +% \cs{SetPageBottom} & \cs{HTMLPageBottom} \\ +% \cs{NewCSS} & \cs{CSSFilename} \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% \needspace{2\baselineskip} +% \item Per the above changes, in existing documents, +% modify the package load of \pkg{lwarp}, such as: +% \begin{Verbatim}[tabsize=4,gobble=2] +% \usepackage[ +% HomeHTMLFilename=index, +% HTMLFilename={}, +% IndexLanguage=english +% ]{lwarp} +% \end{Verbatim} +% +% \item The file |lwarp_html.xdy| has been renamed |lwarp.xdy|. +% To update each document's project: +% \begin{enumerate} +% \item Make the changes shown above. +% \item Recompile the document in print mode. +% This updates the project's configuration files, and also generates the +% new file |lwarp.xdy|. +% \item The old file |lwarp_html.xdy| may be deleted. +% \end{enumerate} +% +% \item The new \pkg{lwarp} package option |xdyFilename| may be used to tell +% |lwarpmk| to use a custom |.xdy| file instead of |lwarp.xdy|. +% See \cref{sec:modifyxindy}. +% +% \item Improvements in index processing: +% \begin{itemize} +% \item |xindy|'s language is now used for index processing +% as well as glossary. +% \item Print mode without |latexmk| now uses |xindy| instead of |makeindex|. +% \item |texindy|/|xindy| usage depends on |pdflatex| vs |xelatex|, |lualatex|. +% \item For |pdflatex| and |texindy|, the |-C utf8| option is used. This is +% supported in modern distributions, but a customized |lwarpmk.lua| may +% need to be created for use with older distributions. +% \end{itemize} +% +% \end{itemize} +% +% \needspace{2\baselineskip} +% % \item[v0.29:] \ % \begin{itemize} % \item Add: |lwarpmklang| option for \pkg{lwarp-newproject} and \pkg{lwarp}. % Sets the language to use while processing the glossary. +% (As of v0.30, this has been changed to the |IndexLanguage| option.) % \item Fix: \cs{includegraphics} when no optional arguments. % \end{itemize} % \item[v0.28:] \ % \begin{itemize} -% \item \cs{HTMLauthor} \marg{name} assigns \HTML\ meta author if non-empty. +% \item \cs{HTMLAuthor} \marg{name} assigns \HTML\ meta author if non-empty. % Defaults to \cs{theauthor}. % \item Booean |HTMLDebugComments| controls whether \HTML\ comments are % added for closing \tag{div}s, opening and closing sections, etc. @@ -1261,17 +1361,20 @@ operating-system path separator used by \pkg{lwarp}. % \item A new tutorial is included in the documentation, and % many obsolete sections have been removed. % \item \cs{NewHTMLdescription} sets the \HTML\ meta description tag for each file. -% See \cref{sec:htmldescription}. -% \item \cs{HTMLFileName} may now be empty, allowing filenames without a prefix. +% See \cref{sec:htmldescription}. (v0.30 changes this to \cs{HTMLDescription}.) +% \item \cs{HTMLFilename} may now be empty, allowing filenames without a prefix. % Lwarp no longer automatically appends a |-| character. % \watchout -% For existing projects, add a |-| to the end of \cs{HTMLFileName}. -% \item \cs{HomeHTMLFileName} and \cs{HTMLFileName} no longer use +% For existing projects, add a |-| to the end of \cs{HTMLFilename}. +% \item \cs{HomeHTMLFilename} and \cs{HTMLFilename} no longer use % escaped underscore\watchout\ % characters. Underscores may be used in filenames as-is. +% (Version 0.30 changes these to package options |HomeHTMLFilename| and +% |HTMLFilename|.) % \item \pkg{lwarp} now tries to auto-detect the operating system, % and \cs{warpOSwindows} is only needed if the auto-detection -% fails to detect Windows. +% fails to detect Windows. (As of v0.30, \cs{warpOSwindows} has been converted to +% the |OSWindows| option.) % \item Tabular column types |@|, |>|, and |<| are now supported. % \item |BlockClass| and \cs{InlineClass} add an optional style. % \item The |sidebar| and |example| environments have been moved to the @@ -1378,8 +1481,10 @@ operating-system path separator used by \pkg{lwarp}. % the conversion from a \LaTeX{}-generated \PDF\ file which happens to have \HTMLfive\ tags, % to a number of \HTMLfive\ plain-text files and accompanying images. % -% A special |lwarp-newproject| package is used to set up the auxiliary files necessary for -% the \HTML\ conversion. Included is a parallel version of the user's source document, +% \pkg{lwarp} automatically generates the extra files necessary for +% the \HTML\ conversion, such as \CSS\ and |.xdy| files, and configuration files +% for the utility |lwarpmk|. +% Also included is a parallel version of the user's source document, % |<sourcename>-html.tex|, which selects \HTML\ output and then inputs the user's own source. % This process allows both the printed and \HTML\ versions to co-exist side-by-side, % each with their own auxiliary files. @@ -1660,7 +1765,7 @@ operating-system path separator used by \pkg{lwarp}. % % (Watch for improvements in cross-references to figures and tables.) % -% \subsection{Word Processors} +% \subsection{Word processors} % % It should be noted that the popular word processors % \DescribeProgram{Word}\DescribeProgram{LibreOffice}\DescribeProgram{OpenOffice} @@ -1670,7 +1775,7 @@ operating-system path separator used by \pkg{lwarp}. % See recent developments in Microsoft\,\textregistered{} Word\,\textregistered{} % and LibreOffice\,\texttrademark{} Writer. % -% \subsection{Commercial Systems} +% \subsection{Commercial systems} % % Likewise, several professional systems exist whose % \DescribeProgram{Adobe} \DescribeProgram{FrameMaker} @@ -1751,13 +1856,10 @@ operating-system path separator used by \pkg{lwarp}. % % \item[The \pkg{lwarp} package:] This package. % -% \item[The \pkg{lwarp-newproject} package:] Accompanies \pkg{lwarp}, and used -% to create configuration files. -% % \item[The |lwarpmk| utility:] Provided along with this package. This % should be an operating-system executable in the same way that % |pdflatex| or |latexmk| is. It is possible to have the -% \pkg{lwarp-newproject} package generate a local copy of |lwarpmk| +% \pkg{lwarp} package generate a local copy of |lwarpmk| % called |lwarpmk.lua|. % See \cref{sec:genlatexmk}. % @@ -2004,9 +2106,9 @@ operating-system path separator used by \pkg{lwarp}. % It is also possible to use a local version of |lwarpmk|: % \begin{enumerate} % \item When compiling the tutorial in \cref{sec:tutorial}, -% use the |lwarpmk| option for the \pkg{lwarp-newproject} package: +% use the |lwarpmk| option for the \pkg{lwarp} package: % \begin{sourcedisplay} -% |\usepackage[lwarpmk]{lwarp-newproject}| +% |\usepackage[lwarpmk]{lwarp}| % \end{sourcedisplay} % \item When the tutorial is compiled with |pdflatex|, the file |lwarpmk.lua| % will be generated along with the other configuration files. @@ -2160,8 +2262,8 @@ operating-system path separator used by \pkg{lwarp}. % % Another copy may be found by entering into a command line: % \DescribeFile{lwarp_tutorial.txt} -% \userentry{texdoc -l lwarp\_tutorial.txt} % \watchout[Note: |.txt| suffix!] +% \userentry{texdoc -l lwarp\_tutorial.txt} % % This should be in the |doc/latex/lwarp/| directory along % with this \PDF\ documentation. @@ -2170,7 +2272,7 @@ operating-system path separator used by \pkg{lwarp}. % \end{description} % % \emph{When using Windows, use an editor other than Notepad, -% \watchout[Bad Formatting!] +% \watchout[Bad formatting!] % since Notepad does not accept the end-of-line from a Unix text file.} % % \item Compile the project: \userentry{pdflatex tutorial.tex} @@ -2178,16 +2280,18 @@ operating-system path separator used by \pkg{lwarp}. % % (|xelatex| or |lualatex| may be used as well.) % +% \item View the resulting |tutorial.pdf| with a \PDF\ viewer. +% % \end{enumerate} % % % A number of new files are created when |tutorial.tex| is compiled, as % shown in \cref{fig:newprojectfiles}. These files are created by -% the |lwarp-newproject| package. +% the |lwarp| package. % % (Two of the new files are configuration files for the helper program |lwarpmk|. -% Whenever a print version of the document is created while the |lwarp-newproject| -% package is used, the configuration files for |lwarpmk| are updated to +% Whenever a print version of the document is created, +% the configuration files for |lwarpmk| are updated to % record the operating system, \LaTeX\ program (|pdflatex|, |xelatex|, or |lualatex|), % the filenames of the source code and \HTML\ output, and whether % the additional helper program |latexmk| will be used to compile the document.) @@ -2207,93 +2311,24 @@ operating-system path separator used by \pkg{lwarp}. % % \small % -% \begin{Verbatim}[gobble=2] -% -% % Save this as tutorial.tex for the lwarp package tutorial. -% -% \documentclass{book} -% -% \usepackage{iftex} -% -% % --- LOAD FONT SELECTION AND ENCODING BEFORE LOADING LWARP --- -% \ifPDFTeX -% \usepackage{lmodern} % pdflatex -% \usepackage[T1]{fontenc} -% \usepackage[utf8]{inputenc} -% \else -% \usepackage{fontspec} % XeLaTeX or LuaLaTeX -% \fi -% -% % --- HTML FILENAME AND LATEXMK SETTINGS --- -% % \newcommand{\HomeHTMLFilename}{index} % Filename of the homepage. -% % \newcommand{\HTMLfiveName}{node-} % Filename prefix of other pages. -% % \newcommand{\UseLatexmk}{true}% Uncomment to use latexmk -% -% % --- LWARP IS LOADED NEXT --- -% \usepackage{lwarp-newproject} % Possibly with the [lwarpmk] option. -% \usepackage{lwarp} -% % \boolfalse{FileSectionNames} % If false, numbers the files. -% -% % --- OTHER PACKAGES ARE LOADED AFTER LWARP --- -% \usepackage{makeidx} \makeindex -% \usepackage{xcolor} -% -% \usepackage{hyperref,cleveref} % LOAD THESE LAST! -% -% % --- LATEX AND HTML CUSTOMIZATION --- -% \title{The Lwarp Tutorial} -% \author{Some Author} -% \setcounter{tocdepth}{2} % Include subsections in the \TOC. -% \setcounter{secnumdepth}{2} % Number down to subsections. -% \setcounter{FileDepth}{1} % Split \HTML\ files at sections -% \booltrue{CombineHigherDepths} % Combine parts/chapters/sections -% \setcounter{SideTOCDepth}{1} % Include subsections in the side\TOC -% \SetFirstPageTop{Name and \fbox{HOMEPAGE LOGO}} -% \SetPageTop{\fbox{LOGO}} -% \SetPageBottom{Contact Information and Copyright} -% \NewCSS{lwarp_sagebrush.css} -% -% \begin{document} -% \maketitle % (or a titlepage environment) -% -% % --- An abstract may be placed here. --- -% -% \tableofcontents \listoffigures % --- MUST BE BEFORE THE FIRST SECTION. -% -% \chapter{First chapter} -% -% \section{A section} -% -% This is some text which is indexed.\index{Some text.} -% -% \subsection{A subsection} -% -% See \cref{fig:withtext}. -% -% \begin{figure}\begin{center} -% \fbox{\textcolor{blue!50!green}{Text in a figure.}} -% \caption{A figure with text\label{fig:withtext}} -% \end{center}\end{figure} -% -% \section{Some math} -% -% Inline math: $r = r_0 + vt - \frac{1}{2}at^2$ -% \begin{equation} -% a^2 + b^2 = c^2 -% \end{equation} -% -% \printindex -% -% \end{document} -% \end{Verbatim} +% \VerbatimInput{lwarp_tutorial.txt} +% +% ^^A ************************************************************************** +% ^^A NOTE: lwarp_tutorial.txt is located in the TDS doc directory! +% ^^A Copy it to the source directory if you wish to recompile lwarp.dtx! +% ^^A (It is stored in the doc directory so that texdoc can find it and +% ^^A the user can copy it.) +% ^^A ************************************************************************** +% % \endgroup % % % \begin{table} -% \caption{Files created in a new project\label{fig:newprojectfiles}} +% \caption{Files created along with the print version\label{fig:newprojectfiles}} % \begin{description} % % \item [|tutorial.pdf|:] The \PDF\ output from \LaTeX. +% The print version of the document. % % \item [|tutorial\_html.tex|:] A small |.tex| file used to create % a parallel \HTML\ version of the document, which co-exists with usual @@ -2301,7 +2336,7 @@ operating-system path separator used by \pkg{lwarp}. % own auxiliary files. In this way, both \PDF\ and \HTML\ % documents may co-exist side-by-side. % -% \item [Auxiliary files:] The usual \LaTeX\ files |tutorial.aux|, |tutorial.log|. +% \item [Auxiliary files:] The usual \LaTeX\ files |.aux|, |.log|, |.out|, |.toc|, |.lof|, |.idx|. % When an \HTML\ version of the document is created, |_html| versions % of the auxiliary files will also be generated. % @@ -2320,12 +2355,13 @@ operating-system path separator used by \pkg{lwarp}. % \item [|sample\_project.css|:] An example of a user-customized \CSS\ file, % which may be used for project-specific changes to the \pkg{lwarp} defaults. % -% \item [|lwarp\_html.xdy|:] Used by \pkg{lwarp} while creating an index. -% This file should not need to be modified by the user. +% \item [|lwarp.xdy|:] Used by \pkg{lwarp} while creating an index. +% This file should not be modified by the user. +% A custom file may be used instead, if necessary. % % \item [|lwarp\_mathjax.txt|:] Inserted into the \HTML\ files when % |MathJax| is used to display math. -% This file should not need to be modified by the user. +% This file should not be modified by the user. % % \item [|comment.cut|:] A temporary file used by \pkg{lwarp} to % conditionally process blocks of text. This file may be ignored. @@ -2333,7 +2369,7 @@ operating-system path separator used by \pkg{lwarp}. % % \hrule \medskip % \label{sec:genlatexmk} -% When the |lwarpmk| option is given to the \pkg{lwarp-newproject} package: +% When the |lwarpmk| option is given to the \pkg{lwarp} package: % \begin{description} % \item [|lwarpmk.lua|:] A local copy of the |lwarpmk| utility. % @@ -2383,10 +2419,9 @@ operating-system path separator used by \pkg{lwarp}. % Although, when using the utility |latexmk| (introduced later), the changed date is % ignored and an actual change in contents must occur to cause a recompile.} % -% \item Process the index.\footnote{A \texttt{lwarpmk printglossary} command is also +% \item Process the index.\index{index>processing}\footnote{A \texttt{lwarpmk printglossary} command is also % available to process a glossary produced with the \textsf{glossaries} package. -% Set its language using the \texttt{lwarpmklang} option for \pkg{lwarp-newproject} -% and \pkg{lwarp}.} +% See \cref{sec:glossaries}.} % \userentry{lwarpmk printindex} % % \item Recompile again to include the index. @@ -2412,7 +2447,7 @@ operating-system path separator used by \pkg{lwarp}. % \item |lwarpmk| uses \LaTeX\ to process |tutorial_html.tex| % to create \\ % |tutorial_html.pdf|. -% \item |pdftotext| is then used to convert into the file |tutorial_html.html|. +% \item |pdftotext| is then used to convert to the file |tutorial_html.html|. % This file is a plain-text file containing \HTML\ tags and % content for the entire document. % \item |lwarpmk| manually splits |tutorial_html.html| into @@ -2435,7 +2470,7 @@ operating-system path separator used by \pkg{lwarp}. % Note that math is still displayed as its plain-text \LaTeX\ source % \margintag{math} % until the -% images of the math expressions have not yet been generated. Math may be +% images of the math expressions have been generated. Math may be % displayed as \SVG\ images or by a MathJax script, as seen in % \cref{sec:tutorialsvgmath,sec:tutorialmathjax}. % @@ -2444,10 +2479,9 @@ operating-system path separator used by \pkg{lwarp}. % \userentry{lwarpmk html} % \userentry{lwarpmk print} % -% \item Process the \HTML\ index and recompile:\footnote{A \texttt{lwarpmk htmlglossary} command is also +% \item Process the \HTML\ index and recompile:\index{index>processing}\footnote{A \texttt{lwarpmk htmlglossary} command is also % available to process a glossary produced with the \textsf{glossaries} package. -% Set its language using the \texttt{lwarpmklang} option for \pkg{lwarp-newproject} -% and \pkg{lwarp}.} +% See \cref{sec:glossaries}.} % \userentry{lwarpmk htmlindex} % \userentry{lwarpmk html} % @@ -2509,13 +2543,9 @@ operating-system path separator used by \pkg{lwarp}. % \margintag{math with MathJax} % % \begin{enumerate} -% \item In the tutorial's source code, change +% \item In the tutorial's source code, uncomment the |mathjax| package option for \pkg{lwarp}: % \begin{sourcedisplay} -% |\usepackage{lwarp}| -% \end{sourcedisplay} -% to -% \begin{sourcedisplay} -% |\usepackage[mathjax]{lwarp}| +% mathjax, \% Use MathJax to display math. % \end{sourcedisplay} % % \item Recompile \userentry{lwarpmk html} @@ -2537,34 +2567,34 @@ operating-system path separator used by \pkg{lwarp}. % \clearpage % \subsection{Changing the CSS style} % -% \DescribeMacro{\NewCSS} -% \cs{NewCSS} may be used to choose which |.css| file is used to display -% each section of the web page. Use \cs{NewCSS} before |\begin{document}| +% \DescribeMacro{\CSSFilename} +% \cs{CSSFilename} may be used to choose which |.css| file is used to display +% each section of the web page. Use \cs{CSSFilename} before |\begin{document}| % to assign the style of the home page. % If different parts of the website should have different styles, -% call \cs{NewCSS} again before each section heading which creates a new file. +% call \cs{CSSFilename} again before each section heading which creates a new file. % % The styles provided by \pkg{lwarp} include: % \begin{description} -% \item[|lwarp.css|:] A default style if \cs{NewCSS} is not used. This +% \item[|lwarp.css|:] A default style if \cs{CSSFilename} is not used. This % style is comparable to a plain \LaTeX\ document. -% To set this style, you may use |\NewCSS{lwarp.css}|, or no \cs{NewCSS} call at all. +% To set this style, you may use |\CSSFilename{lwarp.css}|, or no \cs{CSSFilename} call at all. % \item[|lwarp\_formal.css|:] A formal style with a serif fonts and a traditional % look. % \item[|lwarp\_sagebrush.css|:] A style with muted colors, gradient backgrounds, % additional borders, and rounded corners. % \end{description} % -% To see each style in use, change the \cs{NewCSS} entry in the tutorial -% |lwarpmk html|, and then reload the webpage. +% To see each style in use, change the \cs{CSSFilename} entry in the tutorial, +% |lwarpmk html| again, and then reload the webpage. % % A customized style may also be created. % \margintag{Custom \CSS} % For each new project a file % called |sample_project.css| is generated. This may be renamed to -% |<project>.css| then used by assigning |\NewCSS{<project>.css|. +% |<project>.css| then used by assigning |\CSSFilename{<project>.css}|. % -% Note that |sample_project.css| is overwritten whenever \pkg{lwarp-newproject} +% Note that |sample_project.css| is overwritten whenever \pkg{lwarp} % is loaded in print mode. % It is therefore important to rename the file \watchout[Rename it!] % to something like |<project>.css| before @@ -2575,6 +2605,8 @@ operating-system path separator used by \pkg{lwarp}. % desired. Additional changes to the \CSS\ may be made by making entries % later in the |<project>.css| file. % +% +% % \clearpage % % \subsection{Customizing the HTML output} @@ -2587,43 +2619,49 @@ operating-system path separator used by \pkg{lwarp}. % % Note that if changes are made, % \watchout[Changes!] -% it is best to first use |lwarpmk clearall| to -% clear all the \HTML, \PDF, and auxiliary files. -% Also, if \cs{HomeHTMLFilename}, \cs{HTMLFileName}, or \cs{UseLatexmk} are -% changed, it is necessary to reenable the |lwarp-newproject| package and -% then recompile the print version in order to recreate the configuration -% files for |lwarpmk|. +% it is best to first: +% \begin{enumerate} +% \item Clear all the \HTML, \PDF, and auxiliary files: \userentry{lwarpmk clearall} +% \item Recompile the print version in order to recreate +% the configuration files for |lwarpmk|: \userentry{lwarpmk print} +% \item Finally, recompile the \HTML\ version with the new settings: \userentry{lwarpmk html} +% \end{enumerate} % -% \begin{description} +% \begin{description}[style=unboxed] % -% \item[Placed in the preamble just before \pkg{lwarp} is loaded:] \ +% \item[Options for the \pkg{lwarp} package:] \ \newline +% Use the following as options for |\usepackage[<options>]{lwarp}|: % % \begin{description} % -% \ItemDescribeMacro{\HomeHTMLFilename} Filename of the homepage, without +% \ItemDescribeOption{HomeHTMLFilename} Filename of the homepage, without % the ``|.html|'' suffix. % Defaults to the \cs{BaseJobname}. A common setting is: % \begin{sourcedisplay} -% |\newcommand{HomeHTMLFilename}{index}| +% |HomeHTMLFilename=index| % \end{sourcedisplay} % causing the % homepage to be the file |index.html|. Underscores are allowed in -% \margintag{filename underscore} -% \cs{HomeHTMLFilename} and \cs{HTMLFilename}, but usually must be escaped -% elsewhere, such as |\item [\href{file\_name.pdf}{text}] \| +% \margintag{filename underscores} +% |HomeHTMLFilename| and |HTMLFilename| options, but may need to be escaped +% elsewhere, such as when appearing in a list: % \index{underscore>filename}\index{file>underscore} % \changes{v0.24}{2017/03/13}{Docs: Filename underscore.} +% \begin{sourcedisplay} +% \cs{item} [\cs{href}\{file\textcolor{red}{\textbackslash\_}name.pdf\}\{text\}] \textbackslash +% \end{sourcedisplay} % -% \ItemDescribeMacro{\HTMLfiveName} A filename prefix for the rest of the \HTML\ web pages. +% \ItemDescribeOption{HTMLFilename} A filename prefix for the rest of the \HTML\ web pages. % Useful for numbered web pages with a common prefix. May be empty. % -% \ItemDescribeMacro{\UseLatexmk} A macro which controls whether +% \ItemDescribeOption{latexmk} Controls whether % \pkg{lwarp} uses |latexmk| to % compile the document. This setting is written to |lwarpmk|'s configuration -% files. Defaults to false. Set to true with: -% \begin{sourcedisplay} -% |\newcommand*{\UseLatexmk}{true}| -% \end{sourcedisplay} +% files. Defaults to false. +% +% \ItemDescribeOption{mathsvg} Selects \SVG\ display for math output. (The default.) +% +% \ItemDescribeOption{mathjax} Selects MathJax for math output. % % \end{description} % @@ -2715,7 +2753,7 @@ operating-system path separator used by \pkg{lwarp}. % % \ItemDescribeBoolean{FileSectionNames} If true, web page filenames are % derived from a sanitized version of the section names. If false, web pages -% are numbered. Either way, the \cs{HTMLFileName} is prefixed. +% are numbered. Either way, the |HTMLFilename| option is used as a prefix. % % Example \HTML\ filenames: % \changes{v0.20}{2016/09/11}{Docs: Examples for generating \HTML\ file names.} @@ -2728,9 +2766,10 @@ operating-system path separator used by \pkg{lwarp}. % Example: Homepage |index.html|, and |node-1|, |node-2|. % (See \cs{SetHTMLFileNumber} to number grouped by chapter, for example.) % \begin{Verbatim}[gobble=2,frame=lines,obeytabs,tabsize=4] -% \newcommand{\HomeHTMLFileName}{index} -% \newcommand{\HTMLfiveName}{node-} -% \usepackage{lwarp} +% \usepackage[ +% HomeHTMLFilename=index, +% HTMLFilename={node-} +% ]{lwarp} % \boolfalse{FileSectionNames} % \end{Verbatim} % @@ -2738,9 +2777,10 @@ operating-system path separator used by \pkg{lwarp}. % % Example: |index.html|, and |About.html|, |Products.html| % \begin{Verbatim}[gobble=2,frame=lines,obeytabs,tabsize=4] -% \newcommand{\HomeHTMLFileName}{index} -% \newcommand{\HTMLfiveName}{} -% \usepackage{lwarp} +% \usepackage[ +% HomeHTMLFilename=index, +% HTMLFilename={} +% ]{lwarp} % \booltrue{FileSectionNames} % \end{Verbatim} % @@ -2749,9 +2789,10 @@ operating-system path separator used by \pkg{lwarp}. % Example: Homepage |mywebsite.html|, and additional pages such % as |mywebsite-About.html|, etc. % \begin{Verbatim}[gobble=2,frame=lines,obeytabs,tabsize=4] -% \newcommand{\HomeHTMLFileName}{mywebsite} -% \newcommand{\HTMLfiveName}{mywebsite-} -% \usepackage{lwarp} +% \usepackage[ +% HomeHTMLFilename=mywebsite, +% HTMLFilename={mywebsite-} +% ]{lwarp} % \booltrue{FileSectionNames} % \end{Verbatim} % \end{description} @@ -2760,23 +2801,51 @@ operating-system path separator used by \pkg{lwarp}. % This may also be over-written % by the \pkg{babel} package. Defaults to ``Abstract''. % -% \ItemDescribeMacro{\MetaLanguage} The \HTML\ language meta header. -% Defaults to {en-US}. +% \end{description} +% +% +% \item[Placed before \texttt{\cs{begin}\{document\}}, +% or before any sectioning command which causes a file break:] \ +% +% \begin{description} +% \ItemDescribeMacro{\CSSFilename} \marg{filename.css} \quad +% Sets the \CSS\ file to use for the following +% files. May be changed before each each sectioning command which would +% cause a file split. +% +% The \CSS\ styles of the web pages are set by the \cs{CSSFilename} command. +% If \cs{CSSFilename} is not used, a default plain style is used to mimic printed +% \LaTeX\ output. |lwarp_sagebrush.css| is a semi-fancy colored style as shown +% in this tutorial. Change it to |lwarp_formal.css| for a more formal look, +% or comment out the \cs{CSSFilename} command to see the default. +% \cs{CSSFilename} may be used before each file break to set the \CSS\ for +% individual pagess of the website. +% +% \ItemDescribeMacro{\HTMLLanguage} The \HTML\ file's |html lang| tag. +% Defaults to |en-US|. +% +% \ItemDescribeMacro{\HTMLAuthor} The \HTML\ header's meta author. +% Defaults to \cs{theauthor}. % -% \ItemDescribeMacro{\SetFirstPageTop} \marg{contents} \quad +% \ItemDescribeMacro{\HTMLDescription} \marg{description} \quad +% Sets the \HTML\ description tag for +% the following files. May be changed before each each sectioning command which would +% cause a file split. +% +% \ItemDescribeMacro{\HTMLFirstPageTop} \marg{contents} \quad % A user-definable custom action applied % to the top of the home page. Useful for logos, etc. % Defaults empty. % Ignored in print output. % -% \ItemDescribeMacro{\SetPageTop} \marg{contents} \quad +% \ItemDescribeMacro{\HTMLPageTop} \marg{contents} \quad % A user-definable custom action applied to % the top of pages other than the home page. Useful for logos, etc. % Defaults empty. % |\LinkHome| may be used to place a link back to the homepage. % Ignored in print output. % -% \ItemDescribeMacro{\SetPageBottom} \marg{contents} \quad +% \ItemDescribeMacro{\HTMLPageBottom} \marg{contents} \quad % A user-definable custom action applied to the % bottom of each web page. % Useful for authors, copyright notices, contact information, etc. @@ -2786,40 +2855,21 @@ operating-system path separator used by \pkg{lwarp}. % % \end{description} % -% \item[Placed in the home page before the first section break:] \ +% +% \needspace{2\baselineskip} +% \item[Placed in the home page before the first sectioning command which causes a file break:] \ % % \begin{description} % \ItemDescribeMacro{\tableofcontents} % Used to place a table of contents on the home page. -% This command must be used before the first file split, so that a way is -% available to navigate to other files from the homepage. +% This command must be used before the first file split, +% \watchout[TOC on the homepage!] +% so that a way is available to navigate to other files from the homepage. % % Links to each chapter/section are provided, as selected by |tocdepth|. % \end{description} % % -% \item[Placed before any sectioning command which causes a file break:] \ -% -% \begin{description} -% \ItemDescribeMacro{\NewCSS} \marg{filename.css} \quad -% Sets the \CSS\ file to use for the following -% files. May be changed before each each sectioning command which would -% cause a file split. -% -% The \CSS\ styles of the web pages are set by the \cs{NewCSS} command. -% If \cs{NewCSS} is not used, a default plain style is used to mimic printed -% \LaTeX\ output. |lwarp_sagebrush.css| is a semi-fancy colored style as shown -% in this tutorial. Change it to |lwarp_formal.css| for a more formal look, -% or comment out the \cs{NewCSS} command to see the default. -% \cs{NewCSS} may be used before each file break to set the \CSS\ for -% individual pagess of the website. -% -% \ItemDescribeMacro{\NewHTMLdescription} \marg{description} \quad -% Sets the \HTML\ description tag for -% the following files. May be changed before each each sectioning command which would -% cause a file split. -% \end{description} -% % \needspace{2\baselineskip} % \item[Placed in the document wherever necessary:] \ % @@ -2854,15 +2904,14 @@ operating-system path separator used by \pkg{lwarp}. % and recompile as needed. % % \begin{enumerate} -% \item In the tutorial's source code, at ``HTML FILENAME AND LATEXMK SETTINGS'', -% insert the line: +% \item In the tutorial's source code uncomment the |latexmk| option for the +% \pkg{lwarp} package: % \begin{sourcedisplay} -% |\newcommand{\UseLatexmk}{true}| +% latexmk, \% Use latexmk to compile. % \end{sourcedisplay} % -% \item Directly recompile the printed version of the document. -% \userentry{pdflatex tutorial.tex} \watchout[NOT \texttt{lwarpmk}!] -% (Or |xelatex| or |lualatex|) +% \item Recompile the printed version of the document. +% \userentry{lwarpmk print} % % \begin{sloppy} % \pkg{lwarp} updates its own configuration files (|lwarpmk.conf| and \newline @@ -2894,17 +2943,11 @@ operating-system path separator used by \pkg{lwarp}. % \item Remove the auxiliary files for the project: % \userentry{lwarpmk cleanall} % -% \item Be sure that -% \begin{sourcedisplay} -% |\usepackage{lwarp-newproject}| -% \end{sourcedisplay} -% is still enabled in |tutorial.tex|. -% % \item Use |xelatex| or |lualatex| to recompile the printed version. % \userentry{xelatex tutorial.tex} \quad -or- % \userentry{lualatex tutorial.tex} % -% When the recompile occurs and \pkg{lwarp-newproject} is loaded, +% When the recompile occurs, % the configuration files for |lwarpmk| are modified to remember % which \TeX\ engine was used. \XeLaTeX\ or \LuaLaTeX\ will be used for % future runs of |lwarpmk|. @@ -2924,22 +2967,24 @@ operating-system path separator used by \pkg{lwarp}. % % \changes{v0.29}{2017/04/15}{Docs: Using a glossary} % -% \pkg{lwarp} supports the \pkg{glossaries} package. +% \pkg{lwarp} supports the \pkg{glossaries} package, although this tutorial +% does not supply an example. % -% \DescribeOption[lwarp-newproject]{lwarpmklang} -% \DescribeOption[lwarp]{lwarpmklang} -% To assign a language to be used while processing the glossary, -% use the |lwarpmklang| option: +% \DescribeOption{IndexLanguage} +% To assign a language to be used while processing the index and glossary, +% use the |IndexLanguage| option: % \index{language>glossary} +% \index{language>index} % \index{glossary>language} +% \index{index>language} % % \begin{Verbatim}[gobble=2,frame=lines] -% \usepackage[lwarpmklang=english]{lwarp-newproject} -% \usepackage[lwarpmklang=english]{lwarp} +% \usepackage[IndexLanguage=english]{lwarp} % \end{Verbatim} % % \index{glossary>processing} % To process the glossary for the print version: +% \index{glossary>processing} % \userentry{lwarpmk printglossary} % % To process the glossary for the \HTML\ version: @@ -3102,6 +3147,28 @@ operating-system path separator used by \pkg{lwarp}. % \item \ldots{} the rest of the preamble and the main document. % \end{enumerate} % +% +% \subsubsection{Indexes and UTF-8} +% \index{UTF-8>index} +% \index{index>UTF-8} +% +% \pkg{lwarp} uses the |xindy| program to processes indexes. +% +% While using |xelatex| or |lualatex|, |xindy| is used for the index. +% Everything is handled in UTF-8 encoding, and should work as expected. +% +% While using |pdflatex|, the |texindy| program is used with the |-C utf8| option, +% which is newly supported in recent distributions of \LaTeX. This option correctly +% sorts index entries into headings while using Latin languages, but will not work +% well with others. \XeLaTeX\ or \LuaLaTeX\ are recommended for non-Latin languages. +% +% For an older distribution of \LaTeX, it may be necessary to generate a local version of +% |lwarpmk.lua| and modify it to remove the |-C utf8| option from the texindy call. +% See \cref{sec:modifylwarpmk}. +% +% +% +% % \subsection{\protect\pkg{lwarp} package loading and options} % \label{sec:loading} % \index{settings>lwarp package options} @@ -3114,23 +3181,49 @@ operating-system path separator used by \pkg{lwarp}. % \DescribePackage{lwarp} % \index{lwarp>loading}\index{lwarp>options} % -% \DescribeOption[lwarp]{warpprint} -% \DescribeOption[lwarp]{warpHTML} +% \DescribeOption{warpprint} +% \DescribeOption{warpHTML} % Select the |warpprint| option to generate print output (default), % or the |warpHTML| option to generate \HTMLfive{} output. % The default is print output, so the print version may be % compiled with the usual |pdflatex|, etc. -% When \pkg{lwarp-newproject} is loaded in print mode, it creates +% When \pkg{lwarp} is loaded in print mode, it creates % |<project>_html.tex|, which sets the |warpHTML| option before calling % the user's source code |<project>.tex|. In this way, |<project>.tex| % can |\usepackage{lwarp}| without any options to create a printed version, % while |<project>_html.tex| will create an \HTML\ version. % -% \DescribeOption[lwarp]{mathsvg} -% \DescribeOption[lwarp]{mathjax} +% \DescribeOption{mathsvg} +% \DescribeOption{mathjax} % For math display, select |mathsvg| (default), or |mathjax|. % For more information about the math options, see \cref{sec:limitsmath}. % +% See \cref{tab:options} for the full list of options. +% +% +% \begin{table} +% \caption{Package options\label{tab:options}} +% \centering +% \begin{tabular}{>{\ttfamily}lp{3.25in}} +% Option & Description \\ \hline +% warpprint & Generate print output, and also generate configuration files. \\ +% warpHTML & Generate \HTML\ output. \\ +% mathsvg & Show math using \SVG\ images. \\ +% mathjax & Show math using MathJax. \\ +% OSWindows & Force compatibility with MS-Windows. \\ +% BaseJobname & The \cs{jobname} to use. +% Set to the \cs{jobname} of the printed version even while generating \HTML. \\ +% HomeHTMLFilename & The filename of the home page. \\ +% HTMLFilename & A prefix for the filenames of the remaining web pages. \\ +% IndexLanguage & The |xindy| language option used for index and glossary generation. \\ +% latexmk & Boolean for |lwarpmk| to use |latexmk| for compiling documents. +% Otherwise, |lwarpmk| attempts to recompile several times by itself. \\ +% lwarpmk & Generate a local copy of |lwarpmk.lua|. \\ +% xdyFilename & Tells |lwarpmk| to use a custom filename for |xindy|, instead of |lwarp.xdy|. \\ +% \end{tabular} +% \end{table} +% +% % % \subsection{Selecting the operating system} % \label{sec:OSportabilityusage} @@ -3384,7 +3477,7 @@ operating-system path separator used by \pkg{lwarp}. % \index{HTML>meta tag>description} % \index{description>HTML meta tag} % \index{meta tag, HTML>description} -% \DescribeMacro{\NewHTMLdescription} \marg{A description of the web page.} +% \DescribeMacro{\HTMLDescription} \marg{A description of the web page.} % \quad The default is no description. % % Each page of \HTML\ output should have its own \HTML\ meta description, @@ -3393,20 +3486,20 @@ operating-system path separator used by \pkg{lwarp}. % is limited to around % 150 characters in length, and should not include the \acro{ASCII} double quote character ("). % -% Use \cs{NewHTMLdescription} +% Use \cs{HTMLDescription} % \margintag{placement} % just before |\begin{document}| to set the description of the home page, % and also just before each sectioning command such as \cs{chapter} or \cs{section} % where a new file will be generated, depending on |FileDepth|. For example, if |FileDepth| is 1, -% use \cs{NewHTMLdescription} just before each \cs{section} command, and that description will be +% use \cs{HTMLDescription} just before each \cs{section} command, and that description will be % placed inside the \HTML\ page for that \cs{section}. The same descrition will be used for -% all following \HTML\ files as well, until reset by a new \cs{NewHTMLdescription}. It is best +% all following \HTML\ files as well, until reset by a new \cs{HTMLDescription}. It is best % to use a unique description for each \HTML\ file. % % To disable the generation of \HTML\ description meta tags, % \margintag{disabling} % use:\\ -% \hspace*{1em} |\NewCSSdescription{}| +% \hspace*{1em} |\HTMLDescription{}| % % % \subsection{HTML page meta author} @@ -3414,9 +3507,9 @@ operating-system path separator used by \pkg{lwarp}. % \index{HTML>meta tag>author} % \index{author>HTML meta tag} % \index{meta tag, HTML>author} -% \DescribeMacro{\HTMLauthor} \marg{author} \quad Sets the contents +% \DescribeMacro{\HTMLAuthor} \marg{author} \quad Sets the contents % of the web page \tag{meta name="author"} tag. -% Defaults to |\HTMLauthor{\theauthor}|. +% Defaults to |\HTMLAuthor{\theauthor}|. % May be set empty to cancel the meta author tag. % % @@ -3436,16 +3529,58 @@ operating-system path separator used by \pkg{lwarp}. % % \label{sec:setcss} % -% \DescribeMacro{\NewCSS} +% \DescribeMacro{\CSSFilename} % For each section at which \HTML\ files are split, -% |\NewCSS| may be used before the sectioning command to select a \CSS\ file for that and all +% |\CSSFilename| may be used before the sectioning command to select a \CSS\ file for that and all % following sections. This may be changed numerous times throughout the file, resulting in -% different \HTML\ pages having different \CSS\ files assigned. +% different \HTML\ pages having different \CSS\ files assigned: +% \begin{Verbatim}[gobble=2,tabsize=4] +% ... +% \newCSS{myCSS.css} +% \chapter{Another Chapter} +% ... +% \end{Verbatim} % \index{CSS>file selection} % \index{CSS>per HTML page} % \index{settings>CSS selection} % % +% \subsection{Modifying \protect\texttt{xindy} index processing} +% \label{sec:modifyxindy} +% +% \DescribeProgram{xindy} +% \DescribeFile{lwarp.xdy} +% \pkg{lwarpmk} uses the file |lwarp.xdy| to process the index. +% \index{lwarp.xdy>customizing} +% \index{xindy>customizing} +% This file is over-written by \pkg{lwarp} whenever a print version of +% the document is processed. +% +% To customize index processing: +% \begin{enumerate} +% \item Copy |lwarp.xdy| to a new filename such as |projectname.xdy| +% \item Make changes to |projectname.xdy|. +% Keep the line which says +% \begin{Verbatim}[gobble=2,tabsize=4] +% (markup-locref :open "\hyperindexref{" :close "}") +% \end{Verbatim} +% This line creates the hyperlinks for the \HTML\ index. During print output +% \cs{hyperindexref} becomes a null function. +% \item In the document source use the |xdyFilename| option for \pkg{lwarp}: +% \DescribeOption{xdyFilename} +% \begin{Verbatim}[gobble=2,tabsize=4] +% \usepackage[ +% ... other options ... +% xdyFilename=projectname.xdy, +% ]{lwarp} +% \end{Verbatim} +% \item Recompile the print version, which causes +% \pkg{lwarp} to rewrite the |lwarpmk.conf| configuration file. +% This tells |lwarpmk| to use the custom |projectname.xdy| file instead of |lwarp.xdy|. +% \end{enumerate} +% +% +% % % \subsection{Special cases and limitations} % \label{sec:limitations} @@ -3454,6 +3589,17 @@ operating-system path separator used by \pkg{lwarp}. % % \limitstext % +% \subsubsection{Cross-references} +% +% \limitsreferences +% +% \subsubsection{\pkg{cleveref} and \pkg{varioref} packages} +% +% \changes{v0.22}{2017/03/01}{\pkg{varioref}: Supported.} +% +% \limitspageref +% +% % \subsubsection{Footnotes and page notes} % % \limitsfootnotes @@ -3468,7 +3614,7 @@ operating-system path separator used by \pkg{lwarp}. % \margintag{custom MathJax macros} % see page \pageref{ex:mathjaxmacros}. % -% \subsubsection{Ntheorem} +% \subsubsection{\pkg{ntheorem} package} % % \limitsntheorem % @@ -3478,7 +3624,7 @@ operating-system path separator used by \pkg{lwarp}. % \limitsgraphics % % -% \subsubsection{Xcolor} +% \subsubsection{\pkg{xcolor} package} % % \limitsxcolor % @@ -3488,7 +3634,7 @@ operating-system path separator used by \pkg{lwarp}. % \limitstabular % % -% \subsubsection{Longtable} +% \subsubsection{\pkg{longtable} package} % % \limitslongtable % @@ -3505,7 +3651,7 @@ operating-system path separator used by \pkg{lwarp}. % \limitsminipage % % -% \subsubsection{Mdframed} +% \subsubsection{\pkg{mdframed} package} % % \limitsmdframed % @@ -3535,13 +3681,6 @@ operating-system path separator used by \pkg{lwarp}. % \limitsabstract % % -% \subsubsection{\pkg{cleveref} and \pkg{varioref} packages} -% -% \changes{v0.22}{2017/03/01}{\pkg{varioref}: Supported.} -% -% \limitspageref -% -% % \subsubsection{\pkg{verse} and \pkg{memoir}} % % \limitsverse @@ -3576,6 +3715,7 @@ operating-system path separator used by \pkg{lwarp}. % % % \subsubsection{\pkg{glossaries} package} +% \label{sec:glossaries} % % \DescribePackage{glossaries} % \limitsglossaries @@ -3610,7 +3750,7 @@ operating-system path separator used by \pkg{lwarp}. % To assign the author's name for regular \pkg{lwarp} \HTML\ % \margintag{\tag{meta} author} % files, and also for the \EPUB, -% use \cs{HTMLauthor} \marg{name}. This assigns the name to the +% use \cs{HTMLAuthor} \marg{name}. This assigns the name to the % \tag{meta} author tag. It may be set empty, and it defaults to % \cs{theauthor}. % @@ -3848,12 +3988,8 @@ operating-system path separator used by \pkg{lwarp}. % \HTML. The print output compiles faster, and any errors in the printed % version will be easier to figure out than the \HTML\ version. % -% The package \pkg{lwarp-newproject} must be loaded to set up the configuration -% files, but may be commented out from then on unless the configuration changes. -% A small amount of time is taken each time \pkg{lwarp-newproject} is run. -% % Remember that the configuration files are only rewritten when compiling the -% printed version of the document, and when \pkg{lwarp-newproject} is enabled. +% printed version of the document. % % Sometimes it is worth checking the |<project>_html.pdf| file, which is the % \PDF\ containing \HTML\ tags. Also, |<project>_html.html| has @@ -3865,6 +4001,7 @@ operating-system path separator used by \pkg{lwarp}. % % % \subsection{Modifying \protect\texttt{lwarpmk}} +% \label{sec:modifylwarpmk} % % \changes{v0.28}{2017/04/14}{Docs: Modfying lwarpmk and index processing.} % @@ -3878,11 +4015,10 @@ operating-system path separator used by \pkg{lwarp}. % A project-local copy of |lwarpmk.lua| may be generated, modified, and then used to % compile documents: % \begin{enumerate} -% \item Add the |lwarpmk| option to the \pkg{lwarp-newproject} package. +% \item Add the |lwarpmk| option to the \pkg{lwarp} package. % \item Recompile the printed version of the document. -% The |lwarpmk| option causes \pkg{lwarp-newproject} to create a local -% copy of |lwarpmk.lua| -% \item The |lwarpmk| option may now be removed from the \pkg{lwarp-newproject} package. +% The |lwarpmk| option causes \pkg{lwarp} to create a local copy of |lwarpmk.lua| +% \item The |lwarpmk| option may now be removed from the \pkg{lwarp} package. % \item Copy and rename |lwarpmk.lua| to a new file such as |mymake.lua|. % \item Modify |mymake.lua| as desired. % \item If necessary, make |mymake.lua| executable. @@ -3896,24 +4032,6 @@ operating-system path separator used by \pkg{lwarp}. % look for ``|xindy|''. % % -% \subsection{Modifying \protect\texttt{xindy} index processing} -% -% \DescribeProgram{xindy} -% \DescribeFile{lwarp_html.xdy} -% \index{lwarp\_html.xdy>customizing} -% \index{xindy>customizing} -% \pkg{lwarpmk} uses the file |lwarp_html.xdy| to process the index. -% This file is over-written by \pkg{lwarp-newproject} whenever a print version of -% the document is processed. -% -% To customize index processing: -% \begin{enumerate} -% \item Copy |lwarp_html.xdy| to a new filename such as |projectname.xdy| -% \item Make changes to |projectname.xdy| -% \item Make a new version of |lwarpmk|, as previously described, -% which uses |xindy| with |projectname.xdy| instead of |lwarp_html.xdy|. -% \end{enumerate} -% % % % \clearpage @@ -3969,6 +4087,8 @@ operating-system path separator used by \pkg{lwarp}. % \begin{itemize} % \item Use |lwarpmk again| followed % by |lwarpmk html| or |lwarpmk print| to compile the document one more time. +% \item \limitsreferences +% \item \limitspageref % \end{itemize} % % \item [Em-dashes or En-dashes in listing captions and titles:] \ @@ -4009,7 +4129,7 @@ operating-system path separator used by \pkg{lwarp}. % \item [Plain-looking document:] ~ % \begin{itemize} % \item The document's \CSS\ stylesheet may not be available, or may be -% linked incorrectly. Verify any \cs{NewCSS} statements point to +% linked incorrectly. Verify any \cs{CSSFilename} statements point to % a valid \CSS\ file. % \end{itemize} % @@ -4057,6 +4177,11 @@ operating-system path separator used by \pkg{lwarp}. % \subsection{Compiling the \protect\texttt{lwarp.dtx} file} % % \begin{description} +% \item [\texttt{lwarp\_tutorial.tex}:] Copy or link |lwarp_tutorial.txt| +% from the \acro{TDS} |doc| directory to the |source| directory, +% or wherever you wish to compile the documentation. +% This file is included verbatim into the documentation, but is in the |doc| +% directory so that it may be found by |texdoc| and copied by the user. % \item [Illogical error messages caused by an out-of-sync |lwarp.sty| file:] ~ % \begin{enumerate} % \item Delete the |lwarp.sty| file. @@ -4192,8 +4317,6 @@ operating-system path separator used by \pkg{lwarp}. % % \clearpage % -% -% % \section{Detecting the \TeX\ Engine — pdflatex, lualatex, xelatex} % % \begin{macrocode} @@ -4242,11 +4365,11 @@ operating-system path separator used by \pkg{lwarp}. \fi % \end{macrocode} % + + +% \clearpage % -% -% \section{Handling package options} -% \label{sec:handlingpackageoptions} -% +% \section{Early package requirements} % % \DescribePackage{etoolbox} % Provides |\ifbool| and other functions. @@ -4276,6 +4399,76 @@ operating-system path separator used by \pkg{lwarp}. +% \clearpage +% +% +% \section{Operating-System portability} +% \label{sec:OSportability} +% \changes{v0.11}{2016/03/11}{Added section: Operating-System portability.} +% +% \osportabilityusage +% +% +% +% \subsection{Common portability code} +% +% \DescribeBoolean{usingOSWindows} Set if the |OSWindows| option is used. +% \begin{macrocode} +\newbool{usingOSWindows} +\boolfalse{usingOSWindows} +% \end{macrocode} + +% +% \subsection{Unix, Linux, and Mac\,OS} + +% \begin{macro}{\OSPathSymbol} +% Symbol used to separate directories in a path. +% \begin{macrocode} +\newcommand*{\OSPathSymbol}{/} +% \end{macrocode} +% \end{macro} + + +% \subsection{MS-Windows} + +% For MS-Windows: +% +% \begin{macro}{\LWR@setOSWindows} +% Set defaults for the MS-Windows operating system. +% \pkg{lwarp} attempts to auto-detect the operatings system, +% and the |OSWindows| option may also be used to force +% MS-Windows compatibility. +% +% \changes{v0.20}{2016/12/19}{Auto-detects operating system.} +% +% \begin{macrocode} +\newcommand*{\LWR@setOSWindows} +{ +\booltrue{usingOSWindows} +\renewcommand*{\OSPathSymbol}{\@backslashchar} +} +% \end{macrocode} +% \end{macro} +% +% Test for windows during compile. The user may also specify +% |OSWindows| package option in case this test fails. +% \begin{macrocode} +\ifwindows +\LWR@setOSWindows +\fi +% \end{macrocode} + + + + + +% +% \section{Package options} +% \label{sec:handlingpackageoptions} +% +% + + % \DescribePackage{kvoptions} % Allows key/value package options. % \begin{macrocode} @@ -4334,10 +4527,11 @@ operating-system path separator used by \pkg{lwarp}. % \begin{environment}{warpprint} % Anything in the |warpprint| environment will be generated for print output only. % -% \DescribeOption[lwarp]{warpprint} +% \DescribeOption{warpprint} % If the |warpprint| option is given, boolean |warpingprint| is true and boolean |warpingHTML| is false, % and may be used for |\ifbool| tests. % +% % \begin{macrocode} \DeclareVoidOption{warpprint}{% \PackageInfo{lwarp}{Using option 'warpprint'} @@ -4352,7 +4546,7 @@ operating-system path separator used by \pkg{lwarp}. % \begin{environment}{warpHTML} % Anything in the |warpHTML| environment will be generated for \HTML\ output only. % -% \DescribeOption[lwarp]{warpHTML} +% \DescribeOption{warpHTML} % If the |warpHTML| option is given, boolean |warpingHTML| is true and boolean |warpingprint| is false, % and may be used for |\ifbool| tests. % @@ -4373,7 +4567,7 @@ operating-system path separator used by \pkg{lwarp}. % % \changes{v0.19}{2016/05/25}{Options: mathsvg and mathjax} -% \DescribeOption[lwarp]{mathsvg} +% \DescribeOption{mathsvg} % Option |mathsvg| selects \SVG\ math display: % \index{math>mathsvg option} % \index{SVG>mathsvg option} @@ -4385,7 +4579,7 @@ operating-system path separator used by \pkg{lwarp}. } % \end{macrocode} % -% \DescribeOption[lwarp]{mathjax} +% \DescribeOption{mathjax} % Option |mathjax| selects MathJax math display: % \index{math>mathjax option} % \index{MathJax>mathjax option} @@ -4397,31 +4591,121 @@ operating-system path separator used by \pkg{lwarp}. } % \end{macrocode} -% \DescribeOption[lwarp]{BaseJobname} + + +% \DescribeOption{BaseJobname} % Option |BaseJobname| sets the \cs{BaseJobname} for this document. % % This is the \cs{jobname} of the printed version, even if currently % compiling the \HTML\ version. % I.e. this is the \cs{jobname} without |_html| appended. -% This is used to set \cs{HomeHTMLFileName} if the user did not provide one. +% This is used to set \cs{HomeHTMLFilename} if the user did not provide one. % \begin{macrocode} \DeclareStringOption[\jobname]{BaseJobname} % \end{macrocode} -% \DescribeOption[lwarp]{lwarpmklang} Sets the language to be assigned +% \DescribeOption{IndexLanguage} Sets the language to be assigned % in |lwarpmk|'s configuration files. This is then used by |lwarpmk| while -% processing the glossary. +% processing the index and glossary. % % \changes{v0.29}{2017/04/15}{Add: \protect\texttt{lwarpmklang} option for \pkg{lwarp}.} +% \changes{v0.30}{2017/04/28}{Option \protect\texttt{lwarpmklang} changed +% to \protect\texttt{IndexLanguage}.} +% +% \begin{macrocode} +\DeclareStringOption[english]{IndexLanguage} +% \end{macrocode} + + + +% \DescribeOption{xdyFilename} Selects a custom |.xdy| file. +% The default is |lwarp.xdy|. +% A customized file should be based on |lwarp.xdy|, and must retain +% the line +% \begin{Verbatim}[gobble=4] +% (markup-locref :open "\hyperindexref{" :close "}") +% \end{Verbatim} +% +% \changes{v0.30}{2017/04/28}{Option \protect\texttt{xdyFilename} added.} % % \begin{macrocode} -\DeclareStringOption[english]{lwarpmklang} +\DeclareStringOption[lwarp.xdy]{xdyFilename} % \end{macrocode} +% \DescribeOption{lwarpmk} Tells \pkg{lwarp} to +% generate a local copy of |lwarpmk| called |lwarpmk.lua|. +% Useful for archiving for future use. +% This file may be made executable and acts just like |lwarpmk|. +% +% If |lwarpmk| option, creates a local copy of |lwarpmk.lua|: +% \begin{macrocode} +\DeclareVoidOption{lwarpmk}{ +\PackageInfo{lwarp}{Using option 'lwarpmk'} +\includecomment{LWR@createlwarpmk} +} +% \end{macrocode} + + + +% \DescribeOption{OSWindows} Tells \pkg{lwarp} to use MS-Windows compatibility. +% Auto-detection of the operating system is attempted, and this option is only +% necessary if the auto-detection fails. +% See the automatically-generated |lwarpmk.conf| file to find out +% whether the operating system was detected correctly. +% +% \changes{v0.30}{2017/04/27}{Option \texttt{OSWindows} replaces macro \cs{warpOSwindows}.} +% +% \begin{macrocode} +\DeclareVoidOption{OSWindows}{ +\PackageInfo{lwarp}{Using option 'OSWindows'} +\LWR@setOSWindows +} +% \end{macrocode} + + + +% \DescribeOption{HomeHTMLFilename} +% The filename of the homepage. +% The default is the jobname. +% This option is stored into \cs{LWR@HomeHTMLFilename}, +% and later transferred into \cs{HomeHTMLFilename} for internal use. +% +% \changes{v0.30}{2017/04/27}{Options \texttt{HomeHTMLFilename} and \texttt{HTMLFilename} +% replace macros \cs{HomeHTMLFilename} and \cs{HTMLFilename}.} +% +% \begin{macrocode} +\DeclareStringOption[]{HomeHTMLFilename} +% \end{macrocode} + + +% \DescribeOption{HTMLFilename} +% The filename prefix of web pages after the homepage. +% The default is empty, no prefix. +% This option is stored into \cs{LWR@HTMLFilename}, +% and later transferred into \cs{HTMLFilename} for internal use. +% +% \begin{macrocode} +\DeclareStringOption[]{HTMLFilename} +% \end{macrocode} + + + +% \DescribeOption{latexmk} +% Option |latexmk| tells |lwarpmk| to use |latexmk| when compiling documents. +% +% \changes{v0.30}{2017/04/29}{Option \protect\texttt{latexmk} replaces macro \cs{UseLatexmk}.} +% +% \begin{macrocode} +\DeclareBoolOption[false]{latexmk} +% \end{macrocode} + + + % The default is print output, +% \margintag{defaults} % and \SVG\ math if the user chose \HTML\ output. % \begin{macrocode} \includecomment{warpprint}% @@ -4429,28 +4713,45 @@ operating-system path separator used by \pkg{lwarp}. \booltrue{warpingprint}% \boolfalse{warpingHTML}% \boolfalse{mathjax}% +% \end{macrocode} + + +% Optionally generate a local copy of |lwarpmk|. Default to no: +% \begin{macrocode} +\excludecomment{LWR@createlwarpmk} +% \end{macrocode} -% \ExecuteOptions{warpprint,mathsvg} +% Execute the package options, with the defaults which have been set just above: +% \margintag{Execute options} +% \begin{macrocode} \ProcessKeyvalOptions*\relax % \end{macrocode} + + % Assign the \cs{BaseJobname} if the user hasn't provided one: % \begin{macrocode} \providecommand*{\BaseJobname}{\LWR@BaseJobname} % \end{macrocode} - -% \begin{macro}{\@nameedef} \marg{name} \marg{defn} -% -% Expands |<defn>| before assigning to |<name>| +% Defaults unless already over-ridden by the user: % \begin{macrocode} -\def\@nameedef#1{\expandafter\edef\csname #1\endcsname} +\ifcsempty{LWR@HomeHTMLFilename}{ +\newcommand*{\HomeHTMLFilename}{\BaseJobname} +}{ +\csedef{HomeHTMLFilename}{\LWR@HomeHTMLFilename} +} + +\csedef{HTMLFilename}{\LWR@HTMLFilename} % \end{macrocode} -% \end{macro} +% + + + @@ -5499,72 +5800,2548 @@ top=1in,bottom=1in,% -% \section{Operating-System portability} -% \label{sec:OSportability} -% \changes{v0.11}{2016/03/11}{Added section: Operating-System portability.} + + + + + +% \section{Configuration Files} + + +% \changes{v0.20}{2016/12/20}{\pkg{lwarp-newproject}: Added.} +% \changes{v0.30}{2017/04/27}{\pkg{lwarp-newproject} removed, and combined with \pkg{lwarp}.} + + + + + +% \begin{macrocode} +\begin{warpprint} +\typeout{lwarp: generating configuration files} +\end{warpprint} +% \end{macrocode} + + +% \subsection{project\_html.tex} % -% \osportabilityusage +% \DescribeFile{project_html.tex} Used to allow an \HTML\ version of the +% document to exist alongside the print version. % -% \codeall +% Only write |\jobname_html.tex| if generating the print version. % \begin{macrocode} -\begin{warpall} +\begin{warpprint} +\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} +\immediate\openout\LWR@file=\jobname_html.tex +\immediate\write\LWR@file{% +\detokenize{\PassOptionsToPackage}% +{warpHTML,BaseJobname=\jobname}{lwarp}% +} +\immediate\write\LWR@file{% +\detokenize{\input}\string{\jobname.tex\string }% +} +\immediate\closeout\LWR@file +\end{warpprint} % \end{macrocode} + + + + +% \subsection{lwarpmk.conf} +% +% \DescribeFile{lwarpmk.conf} +% |lwarpmk.conf| is automatically (re-)created by the \pkg{lwarp} package when +% executing\\ +% \hspace*{2ex} |pdflatex <project.tex>|,\\ +% or similar for |xelatex| or |lualatex|, in print-document generation mode, +% which is the default unless the |warpHTML| option is given. +% |lwarpmk.conf| is then used by the utility |lwarpmk|. % +% An example |lwarpmk.conf|: +% \begin{Verbatim}[gobble=2,frame=lines,obeytabs,tabsize=4,formatcom={\unskip}] +% opsystem = "Unix" -- or "Windows" +% latexname = "pdflatex" -- or "lualatex" or "xelatex" +% sourcename = "projectname" -- your .tex source +% homehtmlfilename = "index" -- or "projectname" +% htmlfilename = "" -- or "projectname" if numbered HTML files +% \end{Verbatim} % -% \subsection{Common portability code} +% \changes{v0.29}{2017/04/15}{File \protect\texttt{lwarpmk.conf}: Add: \protect\texttt{language} option for config files.} % -% \DescribeBoolean{usingOSwindows}Set if \cs{warpOSwindows}. +% \codeprint % \begin{macrocode} -\newbool{usingOSwindows} -\boolfalse{usingOSwindows} +\begin{warpprint} +\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} +\immediate\openout\LWR@file=lwarpmk.conf +\ifbool{usingOSWindows}{ +\immediate\write\LWR@file{opsystem = "Windows"} +}{ +\immediate\write\LWR@file{opsystem = "Unix"} +} +\ifPDFTeX +\immediate\write\LWR@file{latexname = "pdflatex"} +\fi +\ifXeTeX +\immediate\write\LWR@file{latexname = "xelatex"} +\fi +\ifLuaTeX +\immediate\write\LWR@file{latexname = "lualatex"} +\fi +\immediate\write\LWR@file{sourcename = "\jobname"} +\immediate\write\LWR@file{% +homehtmlfilename = "\HomeHTMLFilename"% +} +\immediate\write\LWR@file{htmlfilename = "\HTMLFilename"} +\immediate\write\LWR@file{latexmk = "\ifbool{LWR@latexmk}{true}{false}"} +\immediate\write\LWR@file{language = "\LWR@IndexLanguage"} +\immediate\write\LWR@file{xdyfile = "\LWR@xdyFilename"} +\immediate\closeout\LWR@file +\end{warpprint} % \end{macrocode} -% -% \subsection{Unix, Linux, and Mac\,OS} -% \begin{macro}{\OSPathSymbol} -% Symbol used to separate directories in a path. + +% \subsection{project.lwarpmkconf} +% +% \DescribeFile{project.lwarpmkconf} A project-specific configuration file for |lwarpmk|. +% +% \changes{v0.29}{2017/04/15}{File \protect\texttt{*.lwarpmkconf}: Add: \protect\texttt{language} option for config files.} +% % \begin{macrocode} -\newcommand*{\OSPathSymbol}{/} +\begin{warpprint} +\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} +\immediate\openout\LWR@file=\jobname.lwarpmkconf +\ifbool{usingOSWindows}{ +\immediate\write\LWR@file{opsystem = "Windows"} +}{ +\immediate\write\LWR@file{opsystem = "Unix"} +} +\ifPDFTeX +\immediate\write\LWR@file{latexname = "pdflatex"} +\fi +\ifXeTeX +\immediate\write\LWR@file{latexname = "xelatex"} +\fi +\ifLuaTeX +\immediate\write\LWR@file{latexname = "lualatex"} +\fi +\immediate\write\LWR@file{sourcename = "\jobname"} +\immediate\write\LWR@file{% +homehtmlfilename = "\HomeHTMLFilename"% +} +\immediate\write\LWR@file{htmlfilename = "\HTMLFilename"} +\immediate\write\LWR@file{latexmk = "\ifbool{LWR@latexmk}{true}{false}"} +\immediate\write\LWR@file{language = "\LWR@IndexLanguage"} +\immediate\write\LWR@file{xdyfile = "\LWR@xdyFilename"} +\immediate\closeout\LWR@file +\end{warpprint} % \end{macrocode} -% \end{macro} -% \subsection{MS-Windows} -% For MS-Windows: +% \subsection{lwarp.css} + +% \DescribeFile{lwarp.css} +% This is the base \CSS\ layer used by \pkg{lwarp}. % -% \begin{macro}{\warpOSwindows} -% Set defaults for the MS-Windows operating system. -% \pkg{lwarp} attempts to auto-detect the operatings system, -% so \cs{warpOSwindows} may not be necessary. +% This must be present both when compiling the project +% and also when distributing the \HTML\ files. % -% \changes{v0.20}{2016/12/19}{Auto-detects operating system.} +% \changes{v0.26}{2017/03/30}{\texttt{lwarp.css}: Improved responsive +% \texttt{marginpar} and \texttt{marginblock}.} +% \changes{v0.30}{2017/04/26}{Fix: \protect\texttt{*.css} files only written in print mode.} % % \begin{macrocode} -\newcommand*{\warpOSwindows} +\begin{warpprint} +\begin{VerbatimOut}{lwarp.css} +/* + CSS stylesheet for the LaTeX lwarp package + Copyright 2016-2017 Brian Dunn — BD Tech Concepts LLC +*/ + + +/* a fix for older browsers: */ +header, section, footer, aside, nav, main, + article, figure { display: block; } + + +A:link {color:#000080 ; text-decoration: none ; } +A:visited {color:#800000 ; } +A:hover {color:#000080 ; text-decoration: underline ;} +A:active {color:#800000 ; } + +a.tocpart {display: inline-block ; margin-left: 0em ; + font-weight: bold ;} +a.tocchapter {display: inline-block ; margin-left: 0em ; + font-weight: bold ;} +a.tocsection {display: inline-block ; margin-left: 1em ; + text-indent: -.5em ; font-weight: bold ; } +a.tocsubsection {display: inline-block ; margin-left: 2em ; + text-indent: -.5em ; } +a.tocsubsubsection {display: inline-block ; margin-left: 3em ; + text-indent: -.5em ; } +a.tocparagraph {display: inline-block ; margin-left: 4em ; + text-indent: -.5em ; } +a.tocsubparagraph {display: inline-block ; margin-left: 5em ; + text-indent: -.5em ; } +a.tocfigure {margin-left: 0em} +a.tocsubfigure {margin-left: 2em} +a.toctable {margin-left: 0em} +a.tocsubtable {margin-left: 2em} +a.toctheorem {margin-left: 0em} +a.toclstlisting {margin-left: 0em} + + +body { + font-family: "DejaVu Serif", "Bitstream Vera Serif", + "Lucida Bright", Georgia, serif; + background: #FAF7F4 ; + color: black ; + margin:0em ; + padding:0em ; + font-size: 100% ; + line-height: 1.2 ; +} + +p {margin: 1.5ex 0em 1.5ex 0em ;} + +/* Holds a section number to add space between it and the name */ +span.sectionnumber { margin-right: .6em } + +/* Inserted in front of index lines */ +span.indexitem {margin-left: 0em} +span.indexsubitem {margin-left: 2em} +span.indexsubsubitem {margin-left: 4em} + +div.hidden { display: none ; } + +kbd { + font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", + "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", + "Courier New", monospace; + font-size: 100% ; +} + +span.strong { font-weight: bold; } + +span.textmd { font-weight: normal; } + +span.textsc { font-variant: small-caps; } + +span.textup { font-variant: normal; } + +span.textrm { + font-family: "DejaVu Serif", "Bitstream Vera Serif", + "Lucida Bright", Georgia, serif; +} + +span.textsf { + font-family: "DejaVu Sans", "Bitstream Vera Sans", + Geneva, Verdana, sans-serif ; +} + +span.attribution { + margin-left: 1em ; font-size: 80% ; font-variant: small-caps; +} + +span.citetitle { + margin-left: 1em ; font-size: 80% ; font-style: oblique; +} + +span.poemtitle { + font-size: 120% ; font-weight: bold; +} + +blockquote { + margin-left: 0px ; + margin-right: 0px ; +} + +blockquote p { + line-height: 1.5; + text-align: left ; + font-size: .85em ; + margin-left: 3em ; + margin-right: 3em ; +} + +blockquotation { + margin-left: 0px ; + margin-right: 0px ; +} + +blockquotation p { + line-height: 1.5; + text-align: left ; + font-size: .85em ; + margin-left: 3em ; + margin-right: 3em ; +} + +div.epigraph { + line-height: 1.2; + text-align: left ; + padding: 3ex 1em 0ex 1em ; +/* margin: 3ex auto 3ex auto ; */ /* Epigraph centered */ + margin: 3ex 1em 3ex auto ; /* Epigraph to the right */ +/* margin: 3ex 1em 3ex 1em ; */ /* Epigraph to the left */ + font-size: .85em ; + max-width: 27em ; +} + + + +div.epigraphsource{ + text-align:right ; + margin-left:auto ; +/* max-width: 50% ; */ + border-top: 1px solid #A0A0A0 ; + padding-bottom: 3ex ; + line-height: 1.2; +} + +div.epigraph p { padding: .5ex ; margin: 0ex ;} +div.epigraphsource p { padding: .5ex 0ex 0ex 0ex ; margin: 0ex ;} + + +/* lettrine package: */ +span.lettrine { font-size: 3ex ; float: left ; } +span.lettrinetext { font-variant: small-caps ; } + +/* ulem and soul packages: */ +span.uline { + text-decoration: underline ; + text-decoration-skip ; +} + +span.uuline { + text-decoration: underline ; + text-decoration-skip ; + text-decoration-style: double ; +} + +span.uwave { + text-decoration: underline ; + text-decoration-skip ; + text-decoration-style: wavy ; +} + +span.sout { + text-decoration: line-through ; +} + +span.xout { + text-decoration: line-through ; +} + +span.dashuline { + text-decoration: underline ; + text-decoration-skip ; + text-decoration-style: dashed ; +} + +span.dotuline { + text-decoration: underline ; + text-decoration-skip ; + text-decoration-style: dotted ; +} + +span.letterspacing { letter-spacing: .2ex ; } + +span.capsspacing { + font-variant: small-caps ; + letter-spacing: .1ex ; +} + +span.highlight { background: #F8E800 ; } + + + + +html body { + margin: 0 ; + line-height: 1.2; +} + + +body div { + margin: 0ex; +} + + +h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph { -\booltrue{usingOSwindows} -\renewcommand*{\OSPathSymbol}{\@backslashchar} + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + font-style: normal ; + font-weight: bold ; + text-align: left ; +} + +h1 { /* title of the entire website, used on each page */ + text-align: center ; + font-size: 2.5em ; + padding: .4ex 0em 0ex 0em ; +} +h2 { font-size: 2.25em } +h3 { font-size: 2em } +h4 { font-size: 1.75em } +h5 { font-size: 1.5em } +h6 { font-size: 1.25em } +span.paragraph {font-size: 1em ; font-variant: normal ; + margin-right: 1em ; } +span.subparagraph {font-size: 1em ; font-variant: normal ; + margin-right: 1em ; } + + + +/* Title of the file */ +h1 { + margin: 0ex 0em 0ex 0em ; + line-height: 1.3; + text-align: center ; +} + +/* Part */ +h2 { + margin: 1ex 0em 1ex 0em ; + line-height: 1.3; + text-align: center ; +} + +/* Chapter */ +h3 { + margin: 3ex 0em 1ex 0em ; + line-height: 1.3; +} + +/* Section */ +h4 { + margin: 3ex 0em 1ex 0em ; + line-height: 1.3; +} + +/* Sub-Section */ +h5 { + margin: 3ex 0em 1ex 0em ; + line-height: 1.3; +} + +/* Sub-Sub-Section */ +h6 { + margin: 3ex 0em 1ex 0em ; + line-height: 1.3; +} + + +div.titlepage { + text-align: center ; +} + +.footnotes { + font-size: .85em ; + margin: 3ex 1em 0ex 1em ; + padding-bottom: 1ex ; + border-top: 1px solid silver ; +} + +.marginpar { + max-width:50%; + float:right; + text-align:left; + margin: 1ex 0.5em 1ex 1em ; + padding: 1ex 0.5em 1ex 0.5em ; + font-size: 85% ; + border-top: 1px solid silver ; + border-bottom: 1px solid silver ; + overflow-x: auto; +} + +.marginpar br { margin-bottom: 2ex ; } + +div.marginblock { + max-width:50%; + float:right; + text-align:left; + margin: 1ex 0.5em 1ex 1em ; + padding: 1ex 0.5em 1ex 0.5em ; + overflow-x: auto; +} + +div.marginblock div.minipage { + display: block ; + margin: 0pt auto 0pt auto ; +} + +div.marginblock div.minipage p { font-size: 85%} + +div.marginblock br { margin-bottom: 2ex ; } + + +section.textbody div.footnotes{ + margin: 3ex 0em 0ex 0em ; + border-bottom: 2px solid silver ; +} + +.footnoteheader { + border-top: 2px solid silver ; + margin-top: 3ex ; + padding-top: 1ex ; + font-weight: bold ; +} + +.mpfootnotes { + text-align: left ; + font-size: .85em ; + margin-left: 1em ; + border-top: 1px solid silver ; +} + +/* Remove footnote top border in the title page. */ +div.titlepage div.mpfootnotes { + border-top: none ; +} + + + +ol { + margin: 1ex 1em 1ex 0em; + line-height: 1.2; +} + +ul, body dir, body menu { + margin: 1ex 1em 1ex 0em; + line-height: 1.2; +} + +li { margin: 0ex 0em 1ex 0em; } + +html { + margin: 0; + padding: 0; +} + +.programlisting { + font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", + "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", + "Courier New", monospace; + margin: 1ex 0ex 1ex 0ex ; + padding: .5ex 0pt .5ex 0pt ; + overflow-x: auto; +} + +section.textbody>pre.programlisting { +border-top: 1px solid silver ; +border-bottom: 1px solid silver ; +} + + +.inlineprogramlisting { + font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", + "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", + "Courier New", monospace; + overflow-x: auto; +} + + +div.abstract { + margin: 2em 5% 2em 5% ; + padding: 1ex 1em 1ex 1em ; +/* font-weight: bold ; */ + font-size: 90% ; +} + +div.abstract dl {line-height:1.5;} +div.abstract dt {color:#304070;} + +div.abstracttitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-size:1.25em; + text-align: center ; +} + +span.abstractrunintitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; +} + + +.verbatim { + overflow-x: auto ; +} + +.alltt { + overflow-x: auto ; +} + + +.bverbatim { + margin: 1ex 0pt 1ex 0pt ; + padding: .5ex 0pt .5ex 0pt ; + overflow-x: auto ; +} + +.lverbatim { + margin: 1ex 0pt 1ex 0pt ; + padding: .5ex 0pt .5ex 0pt ; + overflow-x: auto ; +} + +.fancyvrb { + font-size:.85em ; + margin: 3ex 0pt 3ex 0pt +} + +.fancyvrblabel { + font-weight:bold; + text-align: center ; +} + + +.verse { + font-family: "Linux Libertine Mono O", "Lucida Console", + "Droid Sans Mono", "DejaVu Mono", "Bitstream Vera Mono", + "Liberation Mono", "FreeMono", "Andale Mono", + "Nimbus Mono L", "Courier New", monospace; + margin-left: 1em ; +} + + +div.singlespace { line-height: 1.2 ; } +div.onehalfspace { line-height: 1.5 ; } +div.doublespace { line-height: 2 ; } + + + + + +/* Minipage environments, vertically aligned to top, center, bottom: */ +.minipage { + /* display: inline-block ; */ + /* Mini pages which follow each other will be tiled. */ + margin: .25em .25em .25em .25em; + padding: .25em .25em .25em .25em; + display: inline-flex; + flex-direction: column ; + overflow: auto; +} + +/* Paragraphs in the flexbox did not collapse their margins. */ +/* Have not yet researched this. */ +.minipage p {margin: .75ex 0em .75ex 0em ;} + + + +.framebox { + margin: 0ex ; + padding: 0ex ; + border: 1px solid black; + border-radius: 0px ; + padding: .3ex .2em 0ex .2em ; + margin: .1ex ; + display: inline-block ; +} + + +.mdframed { +/* padding: 0ex ; */ +/* border: 1px solid blafck; */ +/* border-radius: 0px ; */ + padding: 0ex ; + margin: 3ex 5% 3ex 5% ; +/* display: inline-block ; */ +} + +.mdframed p { padding: 0ex .5em 0ex .5em ; } + +.mdframed dl { padding: 0ex .5em 0ex .5em ; } + +.mdframedtitle { + padding: .5em ; + display: block ; + font-size: 130% +} + +.mdframedsubtitle { + padding: 0ex .5em 0ex .5em ; + display: block ; + font-size: 115% ; +} + +.mdframedsubsubtitle { + padding: 0ex .5em 0ex .5em ; + display: block ; +} + +.mdtheorem { + padding: 0ex .5em 0ex .5em ; + margin: 3ex 5% 3ex 5% ; +/* display: inline-block ; */ +} + + +/* framed package */ +.framed { + margin: 3ex 0em 3ex 0em ; + border: 1px solid black; + border-radius: 0px ; + padding: .3ex 1em 0ex 1em ; + display: block ; +} + +.snugframed { + margin: 3ex 0em 3ex 0em ; + border: 1px solid black; + border-radius: 0px ; + display: block ; +} + +.framedleftbar { + margin: 3ex 0em 3ex 0em ; + border-left: 3pt solid black; + border-radius: 0px ; + padding: .3ex .2em .3ex 1em ; + display: block ; +} + +.framedtitle { + margin: 0em ; + padding: 0em ; + font-size: 130% +} + +.framedtitle p { padding: .3em } + + + +dl { + margin: 1ex 2em 1ex 0em; + line-height: 1.3; +} + +dl dt { + margin-top: 1ex; + font-weight: bold; +} + +dl dd p { margin-top: 0em; } + + +nav.toc, nav.lof, nav.lot, nav.lol, nav.lothm { + font-family: "URW Classico", Optima, "Linux Biolinum O", + "DejaVu Sans", "Bitstream Vera Sans", + Geneva, Verdana, sans-serif ; + margin-bottom: 4ex ; +} + +nav.toc p, nav.lof p, nav.lot p, nav.lol p, nav.lothm p { + line-height: 1.2 ; + margin-top:.5ex ; + margin-bottom:.5ex; + font-size: .9em ; +} + + + +img, img.hyperimage, img.borderimage { + max-width: 600px; + border: 1px solid silver; + box-shadow: 3px 3px 3px #808080 ; + padding: .5% ; + margin: .5% ; + background: none ; +} + +img.inlineimage{ + padding: 0px ; + box-shadow: none ; + border: none ; + background: none ; + margin: 0px ; + display: inline-block ; + border-radius: 0px ; +} + +img.logoimage{ + max-width: 300px ; + box-shadow: 3px 3px 3px #808080 ; + border: 1px solid black ; + background:none ; + padding:0 ; + margin:.5ex ; + border-radius: 10px ; +} + + +.section { +/* + To have each section float relative to each other: +*/ +/* + display: block ; + float: left ; + position: relative ; + background: white ; + border: 1px solid silver ; + padding: .5em ; +*/ + margin: 0ex .5em 0ex .5em ; + padding: 0 ; +} + + +figure { + margin: 3ex auto 3ex auto ; + padding: 1ex 1em 1ex 1em ; + overflow-x: auto ; +} + + +/* To automatically center images in figures: */ +/* +figure img.inlineimage { + margin: 0ex auto 0ex auto ; + display: block ; +} +*/ + +/* To automatically center minipages in figures: */ +/* +figure div.minipage, figure div.minipage div.minipage { + margin: 1ex auto 1ex auto ; + display: block ; +} +*/ + +figure div.minipage p { font-size: 85% ; } + +figure.subfigure, figure.subtable { + display: inline-block ; margin: 3ex 1em 3ex 1em ; +} + +figcaption .minipage { margin:0 ; padding: 0 } + +div.floatrow { text-align: center; } + +div.floatrow figure { display: inline-block ; margin: 1ex 2% ; } + +div.floatfoot { font-size: .85em ; + border-top: 1px solid silver ; line-height: 1.2 ; } + +figcaption , .lstlistingtitle { + font-size: .85em ; + text-align: center ; + font-weight: bold ; + margin-top: 1ex ; + margin-bottom: 1ex ; +} + +figure.subfigure figcaption, figure.subtable figcaption { + border-bottom: none ; background: none ; +} + +div.nonfloatcaption { + margin: 1ex auto 1ex auto ; + font-size: .85em ; + text-align: center ; + font-weight: bold ; +} + +/* For a \RawCaption inside a minipage inside a figure's floatrow: */ +figure div.floatrow div.minipage figcaption { + border: none ; + background: none ; +} + + +table { + margin: 1ex auto 1ex auto ; + border-collapse: collapse ; + border-spacing: 0px ; + line-height: 1.3 ; + } + +tr.hline {border-top: 1px solid silver ; margin-top: 0ex ; + margin-bottom: 0ex ; } /* for \hline */ + +tr.tbrule {border-top: 1px solid black ; margin-top: 0ex ; + margin-bottom: 0ex ; } /* for \toprule, \bottomrule */ + +td {padding: 1ex .5em 1ex .5em ;} + +table td.tdl { text-align: left ; vertical-align: middle ; } +table td.tdc { text-align: center ; vertical-align: middle ; } +table td.tdr { text-align: right ; vertical-align: middle ; } +table td.tdp { text-align: left ; vertical-align: bottom ; } +table td.tdm { text-align: left ; vertical-align: middle ; } +table td.tdb { text-align: left ; vertical-align: top ; } +table td.tdP { text-align: center ; vertical-align: bottom ; } +table td.tdM { text-align: center ; vertical-align: middle ; } +table td.tdB { text-align: center ; vertical-align: top ; } +table td.tdlrule { text-align: left ; border-top: 1px solid silver ; + vertical-align: middle ; } /* for cmidrule */ +table td.tdcrule { text-align: center ; border-top: 1px solid silver ; + vertical-align: middle ; } +table td.tdrrule { text-align: right ; border-top: 1px solid silver ; + vertical-align: middle ; } +table td.tdprule { text-align: left ; border-top: 1px solid silver ; + vertical-align: bottom ; } +table td.tdmrule { text-align: left ; border-top: 1px solid silver ; + vertical-align: middle ; } +table td.tdbrule { text-align: left ; border-top: 1px solid silver ; + vertical-align: top ; } +table td.tdPrule { text-align: center ; border-top: 1px solid silver ; + vertical-align: bottom ; } +table td.tdMrule { text-align: center ; border-top: 1px solid silver ; + vertical-align: middle ; } +table td.tdBrule { text-align: center ; border-top: 1px solid silver ; + vertical-align: top ; } + +/* Margins of paragraphs inside table cells: */ +td.tdp p , td.tdprule p , td.tdP p , td.tdPrule p { padding-top: 1ex ; + padding-bottom: 1ex ; margin: 0ex ; } +td.tdm p , td.tmbrule p , td.tdM p , td.tdMrule p { padding-top: 1ex ; + padding-bottom: 1ex ; margin: 0ex ; } +td.tdb p , td.tdbrule p , td.tdB p , td.tdBrule p { padding-top: 1ex ; + padding-bottom: 1ex ; margin: 0ex ; } + +td.tdp , td.tdprule , td.tdP , td.tdPrule + { padding: 0ex .5em 0ex .5em ; } +td.tdm , td.tdmrule , td.tdM , td.tdMrule + { padding: 0ex .5em 0ex .5em ; } +td.tdb , td.tdbrule , td.tdB , td.tdBrule + { padding: 0ex .5em 0ex .5em ; } + + +/* table notes: */ +.tnotes { + margin: 0ex 5% 1ex 5% ; + padding: 0.5ex 1em 0.5ex 1em; + font-size:.85em; + text-align: left ; +} + +.tnotes dl dt p {margin-bottom:0px;} + +.tnoteitemheader {margin-right: 1em;} + + + +/* center, flushleft, flushright environments */ +div.center{text-align:center;} +div.center table {margin-left:auto;margin-right:auto;} +div.flushleft{text-align:left;} +div.flushleft table {margin-left:0em ; margin-right:auto;} +div.flushright{text-align:right;} +div.flushright table {margin-left:auto ; margin-right: 0em ;} + + + + +/* program listing callouts: */ +span.callout { + font-family: "DejaVu Sans", "Bitstream Vera Sans", + Geneva, Verdana, sans-serif ; + border-radius: .5em; + background-color:black; + color:white; + padding:0px .25em 0px .25em; + margin: 0 ; + font-weight: bold; + font-size:.72em ; +} + +div.programlisting pre.verbatim span.callout{ + font-size: .85em ; +} + + + + + +div.published +{ + text-align: center ; + font-variant: normal ; + font-style: italic ; + font-size: 1em ; + margin: 3ex 0em 3ex 0em ; +} + +div.subtitle +{ + text-align: center ; + font-variant: normal ; + font-style: italic ; + font-size: 1.25em ; + margin: 3ex 0em 3ex 0em ; +} + +div.subtitle p { margin: 1ex ; } + +div.author +{ + font-variant: normal ; + font-style: normal ; + font-size: 1em ; + margin: 3ex 0em 3ex 0em ; +} + +div.author table { + margin: 3ex auto 0ex auto ; + background: none ; +} + +div.author table tbody tr td { padding: .25ex ; } + +span.affiliation {font-size: .85em ; font-variant: small-caps; } + +div.titledate { + text-align: center ; + font-size: .85em ; + font-style: italic; + margin: 6ex 0em 6ex 0em ; +} + + +nav.topnavigation{ + text-align: left ; + padding: 0.5ex 1em 0.5ex 1em ; +/* margin: 2ex 0em 3ex 0em ; */ + margin: 0 ; + border-bottom: 1px solid silver ; + border-top: 1px solid silver ; + clear:right ; +} + +nav.botnavigation{ + text-align: left ; + padding: 0.5ex 1em 0.5ex 1em ; +/* margin: 3ex 0em 2ex 0em ; */ + margin: 0 ; + border-top: 1px solid silver ; + border-bottom: 1px solid silver ; + clear:right ; +} + + +header{ + line-height: 1.2 ; + font-size: 1em ; +/* border-bottom: 2px solid silver ; */ + margin: 0px ; + padding: 0ex 1em 0ex 1em ; + text-align:center ; } + +header p {margin:0ex;padding:4ex 0em 2ex 0em ;text-align:center;} + + +footer{ + font-size: .85em ; + line-height: 1.2 ; + margin-top: 1ex ; + border-top: 2px solid silver ; + padding: 2ex 1em 2ex 1em ; + clear:right ; + text-align:left ; +} + + +a.linkhome { font-weight:bold ; font-size: 1em ;} + + +div.lateximagesource { padding: 0px ; margin: 0px ; display: none; } + +img.lateximage{ + padding: 0px 0px 0px 0px ; + box-shadow: none ; + border: none ; + background: none ; + margin: 0px 0px -.15ex 0px ; + /* pdfcrop leaves a slight margin, adjust to baseline */ + max-width: 100% ; + border-radius: 0ex ; + border: none ; +} + + + +nav.sidetoc { + font-family: "DejaVu Serif", "Bitstream Vera Serif", + "Lucida Bright", Georgia, serif; + float:right ; + width: 20%; + border-left: 1px solid silver; + border-top: 1px solid silver; + border-bottom: 1px solid silver; +/* border-top: 2px solid #808080 ; */ + background: #FAF7F4 ; + padding: 2ex 0em 2ex 1em ; + margin: 0ex 0em 2ex 1em ; + font-size:.9em ; + border-radius: 20px 0px 0px 20px ; + } + +div.sidetoccontents { +/* border-top: 1px solid silver ; */ + overflow-y: auto ; + width: 100% ; + text-align: left ; +} + +nav.sidetoc p {line-height:1.2 ; margin: 1ex .5em 1ex .5em ; + text-indent: 0 ; } +nav.sidetoc p a {color:black ; font-size: .7em ;} +div.sidetoctitle {font-size: 1.2em; font-weight:bold; text-align:center; + border-bottom: 1px solid silver ; } +nav.sidetoc a:hover {text-decoration: underline ; } + + + +section.textbody { margin: 0ex 1em 0ex 1em ;} + + +div.multicolsheading { -webkit-column-span: all; + -moz-column-span: all; column-span: all; } +div.multicols { -webkit-columns: 3 380px ; + -moz-columns: 3 380px ; columns: 3 380px ; } +div.multicols p {margin-top: 0ex} + + + +/* Used to support algorithmicx: */ +span.floatright { float: right ; } + + + + +/* Native LaTeX theorems: */ + +.theoremcontents { font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ; } +.theoremlabel { font-style: normal; font-weight: bold ; margin-right: .5em ; } + + +/* theorem, amsthm, and ntheorem packages */ + +span.theoremheader, +span.theoremheaderplain, +span.theoremheaderdefinition, +span.theoremheaderbreak, +span.theoremheadermarginbreak, +span.theoremheaderchangebreak, +span.theoremheaderchange, +span.theoremheadermargin +{ + font-style:normal ; font-weight: bold ; margin-right: 1em ; +} + +span.amsthmnameplain, +span.amsthmnamedefinition, +span.amsthmnumberplain, +span.amsthmnumberdefinition +{ + font-style:normal ; font-weight: bold ; +} + + +span.amsthmnameremark, +span.amsthmnumberremark +{font-style:italic ; font-weight: normal ; } + + +span.amsthmnoteplain, +span.amsthmnotedefinition +{font-style:normal ;} + + +span.theoremheaderremark, +span.theoremheaderproof, +span.amsthmproofname +{font-style:italic ; font-weight: normal ; margin-right: 1em ; } + +span.theoremheadersc +{ + font-style:normal ; + font-variant: small-caps ; + font-weight: normal ; + margin-right: 1em ; +} + +.theoremendmark {float:right} + +div.amsthmbodyplain, div.theorembodyplain, div.theorembodynonumberplain, +div.theorembodybreak, div.theorembodynonumberbreak, +div.theorembodymarginbreak, +div.theorembodychangebreak, +div.theorembodychange, +div.theorembodymargin +{ + font-style:italic; + margin-top: 3ex ; margin-bottom: 3ex ; +} + +div.theorembodydefinition, div.theorembodyremark, div.theorembodyproof, +div.theorembodyplainupright, nonumberplainuprightsc, +div.amsthmbodydefinition, div.amsthmbodyremark, +div.amsthmproof +{ + font-style: normal ; + margin-top: 3ex ; margin-bottom: 3ex ; +} + +span.amsthmnoteremark {} + + + +/* +For CSS LaTeX and related logos: +Based on: +http://edward.oconnor.cx/2007/08/tex-poshlet +http://nitens.org/taraborelli/texlogo +*/ + +.latexlogofont { + font-family: "Linux Libertine O", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-variant: normal ; +} + +.latexlogo { + font-family: "Linux Libertine O", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + letter-spacing: .03em ; + font-size: 1.1em; +} + +.latexlogo sup { + text-transform: uppercase; + letter-spacing: .03em ; + font-size: 0.85em; + vertical-align: 0.15em; + margin-left: -0.36em; + margin-right: -0.15em; +} + +.latexlogo sub { + text-transform: uppercase; + vertical-align: -0.5ex; + margin-left: -0.1667em; + margin-right: -0.125em; + font-size: 1em; +} + +.xetexlogo { + font-family: "Linux Libertine O", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + letter-spacing: .03em ; + font-size: 1.1em; +} + +/* A smaller gap between Xe and Tex v.s. LaTeX: */ +.xetexlogo sub { + text-transform: uppercase; + vertical-align: -0.5ex; + margin-left: -0.0667em; + margin-right: -0.2em; + font-size: 1em; + letter-spacing: .03em ; +} + +/* A large gap between Xe and LaTeX v.s. TeX: */ +.xelatexlogo sub { + text-transform: uppercase; + vertical-align: -0.5ex; + margin-left: -0.0667em; + margin-right: -.05em; + font-size: 1em; + letter-spacing: .03em ; +} + +.amslogo { + font-family: "TeXGyreChorus","URW Chancery L", + "Apple Chancery","ITC Zapf Chancery","Monotype Corsiva", + "Linux Libertine O", "Nimbus Roman No 9 L", "FreeSerif", + "Hoefler Text", Times, "Times New Roman", serif; + font-style: italic; +} + +.lyxlogo { + font-family: "URW Classico", Optima, "Linux Biolinum O", + "DejaVu Sans", "Bitstream Vera Sans", Geneva, + Verdana, sans-serif ; +} + + + + +/* Only display top and bottom navigation if a small screen: */ +/* Hide the sidetoc if a small screen: */ +nav.topnavigation { display:none; } +nav.botnavigation { display:none; } + +@media screen and (max-width: 45em) { +/* nav.sidetoc {display:none;} */ + nav.sidetoc { + float: none ; + width: 100% ; + margin: 5ex 0px 5ex 0px ; + padding: 0 ; + border-radius: 0 ; + border-bottom: 1px solid black ; + border-top: 1px solid black ; + box-shadow: none ; + } +/* nav.topnavigation { display:block } */ + nav.botnavigation { display:block } + .marginpar { + max-width: 100%; + float: none; + display:block ; + margin: 1ex 1em 1ex 1em ; + } +} + +@media print { + body { + font-family: "Linux Libertine O", + "DejaVu Serif", "Bitstream Vera Serif", + "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + } + nav.sidetoc { display:none; } + nav.topnavigation { display: none; } + nav.botnavigation { display: none; } +} + +@media handheld { + nav.sidetoc { display:none; } + nav.topnavigation { display:block } + nav.botnavigation { display:block } +} + +@media projection { + nav.sidetoc { display:none; } + nav.topnavigation { display:block } + nav.botnavigation { display:block } +} +\end{VerbatimOut} +% \end{Verbatim}% for syntax highlighting +\end{warpprint} % \end{macrocode} -% Test for windows during compile. The user may also specify -% \cs{warpOSwindows} later in case this test fails. + + + + +% \subsection{lwarp\_sagebrush.css} + +% \DescribeFile{lwarp_sagebrush.css} +% An optional \CSS\ which may be used for +% a semi-modern appearance. +% +% If used, this must be present both when compiling the project +% and also when distributing the \HTML\ files. +% % \begin{macrocode} -\ifwindows -\warpOSwindows -\fi +\begin{warpprint} +\begin{VerbatimOut}{lwarp_sagebrush.css} +@import url("lwarp.css") ; + + +A:link {color:#105030 ; text-decoration: none ; } +A:visited {color:#705030 ; text-shadow:1px 1px 2px #a0a0a0;} +A:hover {color:#006000 ; text-decoration: underline ; text-shadow:0px 0px 2px #a0a0a0;} +A:active {color:#00C000 ; text-shadow:1px 1px 2px #a0a0a0;} + + + +h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph +{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", + "Nimbus Roman No 9 L", "FreeSerif", + "Hoefler Text", Times, "Times New Roman", serif; + font-variant: small-caps ; + font-weight: normal ; + color: #304070 ; + text-shadow: 2px 2px 3px #808080; +} + +h1 { /* title of the entire website, used on each page */ + font-variant: small-caps ; + color: #304070 ; + text-shadow: 2px 2px 3px #808080; + background-color: #F7F7F0 ; + background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C4); +} + +h1 { + border-bottom: 1px solid #304070; + border-top: 2px solid #304070; +} + +h2 { + border-bottom: 1px solid #304070; + border-top: 2px solid #304070; + background-color: #F7F7F0 ; + background-image: linear-gradient(to bottom, #F7F7F0, #DAD0C0); +} + + + +div.abstract { + background: #f5f5eb ; + background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); + + border: 1px solid silver; + border-radius: 1em ; +} + +div.abstract dl {line-height:1.5;} +div.abstract dt {color:#304070;} + +div.abstracttitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-variant: small-caps ; + font-size:1.5em; + border-bottom: 1px solid silver ; + color: #304070 ; + text-align: center ; + text-shadow: 1px 1px 2px #808080; +} + +span.abstractrunintitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; +} + + +div.epigraph { + background: #f5f5eb ; + background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); + + border: 1px solid silver ; + border-radius: 1ex ; + box-shadow: 3px 3px 3px #808080 ; +} + + +.example { + background-color: #f5f5eb ; + background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); + +} + +div.exampletitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-variant: small-caps ; + border-bottom: 1px solid silver ; + color: #304070 ; + text-align: center ; + text-shadow: 1px 1px 2px #808080; +} + + +.sidebar { + background-color: #f5f5eb ; + background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); + +} + +div.sidebartitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-variant: small-caps ; + border-bottom: 1px solid silver ; + color: #304070 ; + text-align: center ; + text-shadow: 1px 1px 2px #808080; +} + + +.fancyvrblabel { + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-variant: small-caps ; + font-size: 1.5em ; + color: #304070 ; + text-align: center ; + text-shadow: 1px 1px 2px #808080; +} + + + +.minipage { + background-color: #eeeee7 ; + border: 1px solid silver ; + border-radius: 1ex ; +} + +.framed .minipage , .framedleftbar .minipage { + border: none ; + background: none ; + padding: 0ex ; + margin: 0ex ; +} + +figure.figure .minipage, figcaption .minipage { border: none; } + +div.marginblock div.minipage { border: none; } + +figure , div.marginblock { + background-color: #eeeee7 ; + border: 1px solid silver ; + border-radius: 1ex ; + box-shadow: 3px 3px 3px #808080 ; +} + +figure figure { + border: 1px solid silver ; + margin: 0em ; + box-shadow: none ; +} + +/* +figcaption { + border-top: 1px solid silver ; + border-bottom: 1px solid silver ; + background-color: #e8e8e8 ; +} +*/ + + +div.table { + box-shadow: 3px 3px 3px #808080 ; +} + +/* +.tnotes { + background: #e8e8e8; + border: 1px solid silver; +} +*/ + + +nav.topnavigation{ + background-color: #b0b8b0 ; + background-image: linear-gradient(to bottom,#e0e0e0,#b0b8b0) ; +} + +nav.botnavigation{ + background-color: #b0b8b0 ; + background-image: linear-gradient(to top,#e0e0e0,#b0b8b0) ; +} + + + +header{ + background-color: #F7F7F0 ; + background-image: linear-gradient(to top, #F7F7F0, #b0b8b0); +} + +footer{ + background-color: #F7F7F0 ; + background-image: linear-gradient(to bottom, #F7F7F0, #b0b8b0); +} + + + +nav.sidetoc { + background-color: #F7F7F0 ; + background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C0); + box-shadow: 3px 3px 3px #808080 ; + border-radius: 0px 0px 0px 20px ; + } + +div.sidetoctitle {color: #304070 ; } + +nav.sidetoc a:hover { + color:#006000 ; + text-decoration: none ; + text-shadow:0px 0px 2px #a0a0a0; +} + + +@media screen and (max-width: 45em) { + nav.sidetoc { border-radius: 0 ; } +} + + +\end{VerbatimOut} +% \end{Verbatim}% for syntax highlighting +\end{warpprint} % \end{macrocode} -% \end{macro} + + +% \subsection{lwarp\_formal.css} + +% \DescribeFile{lwarp_formal.css} +% An optional \CSS\ which may be used for +% a more formal appearance. +% +% If used, this must be present both when compiling the project +% and also when distributing the \HTML\ files. +% % \begin{macrocode} -\end{warpall} +\begin{warpprint} +\begin{VerbatimOut}{lwarp_formal.css} +@import url("lwarp.css") ; + + + +A:link {color:#802020 ; text-decoration:none; } +A:visited {color:#802020 ; text-shadow:none ;} +A:hover {color:#400000 ; text-shadow:none ;} +A:active {color:#C00000 ; text-shadow:none ;} + + +body { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + background: #fffcf5; +} + +span.textrm { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; +} + +span.textsf { + font-family: "DejaVu Sans", "Bitstream Vera Sans", + Geneva, Verdana, sans-serif ; +} + + + +h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph +{ + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: #800000 ; + text-shadow: none ; +} + +h1, h2 { + background-color: #fffcf5 ; + background-image: none ; + border-bottom: 1px solid #808080; + border-top: 2px solid #808080; +} + +div.abstracttitle { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: black ; + text-shadow: none ; +} + +span.abstractrunintitle { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: black ; + text-shadow: none ; +} + +div.abstract { font-size: 100% } + +.sidebar { + background: #fffcf5; + background-image: none ; + margin: 2em 5% 2em 5%; + padding: 0.5em 1em; + border: none ; + border-top : 1px solid silver; + border-bottom : 1px solid silver; + font-size: 90% ; +} + +div.sidebartitle{ + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: #800000 ; + text-shadow: none ; + border: none ; +} + +.example { + background: #fffcf5; + background-image: none ; + margin: 2em 5% 2em 5%; + padding: 0.5em 1em; + border: none ; + border-top : 1px solid silver; + border-bottom : 1px solid silver; +} + +div.exampletitle{ + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: #800000 ; + text-shadow: none ; + border: none ; +} + +div.fancyvrblabel{ + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: #800000 ; + text-shadow: none ; + border: none ; +} + + + +.verse { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; +} + + +figure { + margin: 3ex 5% 3ex 5% ; + padding: 1ex 1em 1ex 1em ; + background-color: #fffcf5 ; + overflow-x: auto ; + border: none ; +/* border-top: 1px solid silver; */ +/* border-bottom: 1px solid silver; */ +} + + +figcaption , .lstlisting { + border: none ; +/* border-top: 1px solid silver ; */ +/* border-bottom: 1px solid silver ; */ + background-color: #fffcf5 ; +} + +.tnotes { + background: #fffcf5 ; +} + +.theorem { + background: none ; +} + +.minipage { + background-color: #fffcf5 ; + border: none ; +} + +div.floatrow figure { border: none ; } + +figure figure { border: none ; } + + +nav.toc, nav.lof, nav.lot, nav.lol { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; +} + +nav.sidetoc { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + background-image: linear-gradient(to bottom, #fffcf5, #C0C0C0); + border-radius: 0px 0px 0px 20px ; +} + +div.sidetoctitle{ + color: #800000 ; +} + +header{ + background-color: #e0e0e0 ; + background-image: linear-gradient(to top, #fffcf5, #b0b0b0); + text-align:center ; +} + +footer{ + background-color: #e0e0e0 ; + background-image: linear-gradient(to bottom, #fffcf5, #b0b0b0); + padding: 2ex 1em 2ex 1em ; + clear:right ; + text-align:left ; +} + +nav.botnavigation { + background: #dedcd5 ; + border-top: 1px solid black ; +} +\end{VerbatimOut} +% \end{Verbatim}% for syntax highlighting +\end{warpprint} +% \end{macrocode} + + + +% \subsection{sample\_project.css} + +% \DescribeFile{sample_project.css} +% The project-specific \CSS\ file. Use with \cs{CSSFilename}. +% +% If used, this must be present both when compiling the project +% and also when distributing the \HTML\ files. +% +% \begin{macrocode} +\begin{warpprint} +\begin{VerbatimOut}{sample_project.css} +/* ( --- Start of project.css --- ) */ +/* A sample project-specific CSS file for lwarp --- ) */ + +/* Load default lwarp settings: */ +@import url("lwarp.css") ; +/* or lwarp_formal.css, lwarp_sagebrush.css */ + +/* Project-specific CSS setting follow here. */ +/* . . . */ + +/* ( --- End of project.css --- ) */ +\end{VerbatimOut} +% \end{Verbatim}% for syntax highlighting +\end{warpprint} +% \end{macrocode} + + + +% \subsection{lwarp.xdy} + +% \DescribeFile{lwarp.xdy} +% Used to modify the index for \pkg{lwarp}. +% +% This must be present when compiling the project, +% but does not need to be present when distributing +% the resulting \HTML\ files. +% +% \changes{v0.30}{2017/04/28}{File: \protect\texttt{lwarp\_html.xdy} renamed to \protect\texttt{lwarp.xdy}.} +% \changes{v0.30}{2017/04/26}{Fix: \protect\texttt{lwarp.xdy} only written in print mode.} +% +% \begin{macrocode} +\begin{warpprint} +\begin{VerbatimOut}{lwarp.xdy} +(require "tex/inputenc/latin.xdy") +(merge-rule "\\PS *" "Postscript") +(require "texindy.xdy") +(require "page-ranges.xdy") +(require "book-order.xdy") +(markup-locref :open "\hyperindexref{" :close "}") +\end{VerbatimOut} +% \end{Verbatim}% for syntax highlighting +\end{warpprint} +% \end{macrocode} + + + +% \subsection{lwarp\_mathjax.txt} + +% \DescribeFile{lwarp_mathjax.txt} +% Used by \pkg{lwarp} when using MathJax. +% +% This must be present when compiling the project, +% but does not need to be present when distributing +% the resulting \HTML\ files. +% +% \changes{v0.28}{2017/04/11}{File \protect\texttt{lwarp\_mathjax.txt}: Updated \protect\acro{CDN} repository.} +% \changes{v0.30}{2017/04/26}{Fix: \protect\texttt{lwarp\_mathjax.txt} only written in print mode.} +% +% +% \begin{macrocode} +\begin{warpprint} +\begin{VerbatimOut}{lwarp_mathjax.txt} +<!-- https://groups.google.com/forum/#!topic/ + mathjax-users/jUtewUcE2bY --> +<script type="text/x-mathjax-config"> +MathJax.Hub.Register.StartupHook("TeX AMSmath Ready",function () { + var seteqsectionDefault = {name: "", num: 0}; + var seteqsections = {}, seteqsection = seteqsectionDefault; + var TEX = MathJax.InputJax.TeX, PARSE = TEX.Parse; + var AMS = MathJax.Extension["TeX/AMSmath"]; + TEX.Definitions.Add({ + macros: { + seteqsection: "mySection", + seteqnumber: "mySetEqNumber" + } + }); + + PARSE.Augment({ + mySection: function (name) { + seteqsection.num = AMS.number; + var n = this.GetArgument(name); + if (n === "") { + seteqsection = seteqsectionDefault; + } else { + if (!seteqsections["_"+n]) + seteqsections["_"+n] = {name:n, num:0}; + seteqsection = seteqsections["_"+n]; + } + AMS.number = seteqsection.num; + }, + mySetEqNumber: function (name) { + var n = this.GetArgument(name); + if (!n || !n.match(/^ *[0-9]+ *$/)) + n = ""; else n = parseInt(n)-1; + <!-- $ syntax highlighting --> + if (n === "" || n < 1) + TEX.Error + ("Argument to "+name+" should be a positive integer"); + AMS.number = n; + } + }); + MathJax.Hub.Config({ + TeX: { + equationNumbers: { + formatTag: function (n) + {return "("+(seteqsection.name+"."+n).replace(/^\./,"")+")"}, + formatID: function (n) { + n = (seteqsection.name+'.'+n).replace + (/[:"'<>&]/g,"").replace(/^\./,""); + return 'mjx-eqn-' + n; + } + } + } + }); +}); +</script> + +<!-- http://docs.mathjax.org/en/latest/options/ThirdParty.html --> +<script type="text/x-mathjax-config"> + MathJax.Ajax.config.path["Contrib"] = + "https://cdn.mathjax.org/mathjax/contrib"; +</script> + +<!-- https://github.com/mathjax/MathJax-third-party-extensions/ + tree/master/siunitx --> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js","[Contrib]/siunitx/siunitx.js"], + jax: ["input/TeX","output/HTML-CSS"], + tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}, + TeX: {extensions: ["AMSmath.js","AMSsymbols.js", "sinuitx.js"]} + }); + </script> + +<script type="text/x-mathjax-config"> +MathJax.Hub.Config({ + TeX: { + equationNumbers: { + autoNumber: "AMS" + } + } +}); +</script> + +<!-- Alternative CDN provider: --> +<script type="text/javascript" async +src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML-full"> +</script> + +<!-- No longer supported after April 30, 2017: --> +<!-- +<script + src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full"> +</script> +--> + +\end{VerbatimOut} +% \end{Verbatim}% for syntax highlighting +\end{warpprint} +% \end{macrocode} + + + +% \subsection{lwarpmk option} + +% The following is only generated if the |lwarpmk| option +% was given to \pkg{lwarp}. +% \begin{macrocode} +\begin{LWR@createlwarpmk} % \end{macrocode} +% \DescribeProgram{lwarpmk} Creates a local copy of |lwarpmk|: +% +% \changes{v0.21}{2017/02/11}{\protect\texttt{lwarpmk}: Fix: \protect\texttt{lwarpmk again} for Windows.} +% \changes{v0.21}{2017/02/22}{\protect\texttt{lwarpmk}: Fix: \protect\texttt{lwarpmk limages} for Windows.} +% \changes{v0.21}{2017/02/22}{\protect\texttt{lwarpmk}: Fix: \protect\texttt{lwarpmk} uses \texttt{lateximages} text file instead of shell script.} +% \changes{v0.28}{2017/04/14}{\protect\texttt{lwarpmk}: Add: \protect\texttt{printglossary} and \protect\texttt{htmlglossary} commands.} +% \changes{v0.29}{2017/04/15}{\protect\texttt{lwarpmk}: Add: \protect\texttt{language} option for config files.} +% \changes{v0.30}{2017/04/22}{\protect\texttt{lwarpmk}: \protect\texttt{language} now used for both index and glossary generation.} +% \changes{v0.30}{2017/04/22}{\protect\texttt{lwarpmk}: Fix: \protect\texttt{xindy} now used for print index generation with \protect\texttt{latexmk}.} +% \changes{v0.30}{2017/04/28}{\protect\texttt{lwarpmk}: Fix: \protect\texttt{xindy} and \protect\texttt{texindy} +% adjusted for \protect\texttt{pdflatex}, \protect\texttt{xelatex} and \protect\texttt{lualatex}.} +% \changes{v0.30}{2017/04/28}{\protect\texttt{lwarpmk}: Add: \protect\texttt{xdyfile} configuration option.} +% +% \begin{macrocode} +\begin{VerbatimOut}{lwarpmk.lua} +#!/usr/bin/env texlua + +-- Copyright 2016-2017 Brian Dunn + +-- Print the usage of the lwarpmk command: + +printversion = "v0.30" + +function printhelp () +print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ; +end + +function printusage () +print ( [[ + +lwarpmk print [project]: Compile a print version. +lwarpmk printindex [project]: Process the index for the print version. +lwarpmk printglossary [project]: Process the glossary for the print version. +lwarpmk html [project]: Compile an HTML version. +lwarpmk htmlindex [project]: Process the index for the html version. +lwarpmk htmlglossary [project]: Process the glossary for the html version. +lwarpmk again [project]: Touch the source code to trigger recompiles. +lwarpmk limages [project]: Process the "lateximages" created by lwarp.sty. +lwarpmk pdftohtml [project]: + For use with latexmk or a Makefile: + Convert project_html.pdf to project_html.html and + individual HTML files. +lwarpmk clean [project]: Remove project.aux, .toc, .lof/t, .idx, .ind, .log, .gl* +lwarpmk cleanall [project]: Remove auxiliary files and also project.pdf, *.html +lwarpmk -h: Print this help message. +lwarpmk --help: Print this help message. + +]] ) +printconf () +end + +-- Print the format of the configuration file lwarpmk.conf: + +function printconf () +print ( [[ +An example lwarpmk.conf or <project>.lwarpmkconf project file: +-- +opsystem = "Unix" (or "Windows") +latexname = "pdflatex" (or "lualatex", or "xelatex") +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) +languge = "english" (use a language supported by xindy) +xdyfile = "lwarp.xdy" (or a custom file based on lwarp.xdy) +-- +Filenames must contain only letters, numbers, underscore, or dash. +Values must be in "quotes". + +]] ) ; +end + + +-- Split one large sourcefile into a number of files, +-- starting with destfile. +-- The file is split at each occurance of <!--|Start file|newfilename|* + +function splitfile (destfile,sourcefile) +print ("lwarpmk: Splitting " .. sourcefile .. " into " .. destfile) ; +io.input(sourcefile) +io.output(destfile) +for line in io.lines() do +i,j,copen,cstart,newfilename = string.find (line,"(.*)|(.*)|(.*)|") ; +if ( (i~= nil) and (copen == "<!--") and (cstart == "Start file")) then -- split the file +io.output(newfilename) ; +else -- not a splitpoint +io.write (line .. "\n") ; +end +end -- do +end -- function + +-- Incorrect value, so print an error and exit. + +function cvalueerror ( line, linenum , cvalue ) + print ( linenum .. " : " .. line ) ; + print ("lwarpmk: incorrect variable value \"" .. cvalue .. "\" in lwarpmk.conf.\n" ) ; + printconf () ; + os.exit(1) ; +end + +-- Load settings from the project's "lwarpmk.conf" file: + +function loadconf () +-- Default configuration filename: +local conffile = "lwarpmk.conf" +-- Optional configuration filename: +if arg[2] ~= nil then conffile = arg[2]..".lwarpmkconf" end +-- Default language: +language = "english" +-- Default xdyfile: +xdyfile = "lwarp.xdy" +-- Verify the file exists: +if (lfs.attributes(conffile,"mode")==nil) then -- file not exists +print("lwarpmk: " .. conffile .." does not exist.") +print("lwarpmk: " .. arg[2] .. " does not appear to be a project name.\n") +printhelp () ; +os.exit(1) -- exit the entire lwarpmk script +else -- file exists +-- Read the file: +print ("lwarpmk: Reading " .. conffile ..".") +io.input(conffile) ; +-- Scan each line: +local linenum = 0 +for line in io.lines() do -- scan lines +linenum = linenum + 1 +i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*\"([%w%-_%.]*)\"") ; +-- Error if incorrect enclosing characters: +if ( i == nil ) then +print ( linenum .. " : " .. line ) ; +print ( "lwarpmk: Incorrect entry in " .. conffile ..".\n" ) ; +printconf () ; +os.exit(1) ; +end +if ( cvarname == "opsystem" ) then + -- Verify choice of opsystem: + if ( (cvalue == "Unix") or (cvalue == "Windows") ) then + opsystem = cvalue + else + cvalueerror ( line, linenum , cvalue ) + end +elseif ( cvarname == "latexname" ) then + -- Verify choice of LaTeX compiler: + if ( + (cvalue == "pdflatex") or + (cvalue == "xelatex") or + (cvalue == "lualatex") + ) then + latexname = cvalue + else + cvalueerror ( line, linenum , cvalue ) + end +elseif ( cvarname == "sourcename" ) then sourcename = cvalue +elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue +elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue +elseif ( cvarname == "latexmk" ) then latexmk = cvalue +elseif ( cvarname == "language" ) then language = cvalue +elseif ( cvarname == "xdyfile" ) then xdyfile = cvalue +else +print ( linenum .. " : " .. line ) ; +print ("lwarpmk: Incorrect variable name \"" .. cvarname .. "\" in " .. conffile ..".\n" ) ; +printconf () ; +os.exit(1) ; +end +end -- do scan lines +end -- file exists +-- Select some operating-system commands: +if opsystem=="Unix" then -- For Unix / Linux / Mac OS: +rmname = "rm" +mvname = "mv" +touchnamepre = "touch" +touchnamepost = "" +dirslash = "/" +opquote= "\'" +elseif opsystem=="Windows" then -- For Windows +rmname = "DEL" +mvname = "MOVE" +touchnamepre = "COPY /b" +touchnamepost = "+,," +dirslash = "\\" +opquote= "\"" +else print ( "lwarpmk: Select Unix or Windows for opsystem" ) +end --- for Windows + +-- set xindycmd according to pdflatex vs xelatex/lualatex: +if ( latexname == "pdflatex" ) then +xindycmd = "texindy -C utf8" +glossarycmd = "xindy -C utf8" +else +xindycmd = "xindy -M texindy -C utf8" +glossarycmd = "xindy -C utf8" +end + +end -- loadconf + + +function refreshdate () +os.execute(touchnamepre .. " " .. sourcename .. ".tex " .. touchnamepost) +end + + +-- Scan the LaTeX log file for the phrase "Rerun to get", +-- indicating that the file should be compiled again. +-- Return true if found. + +function reruntoget (filesource) +io.input(filesource) +for line in io.lines() do +if ( string.find(line,"Rerun to get") ~= nil ) then return true end +end +return false +end + + +-- Compile one time, return true if should compile again. +-- fsuffix is "" for print, "_html" for HTML output. + +function onetime (fsuffix) +print("lwarpmk: Compiling with " .. latexname .. " " .. sourcename..fsuffix) +err = os.execute( +-- "echo " .. + latexname .. " " .. sourcename..fsuffix ) +if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end +return (reruntoget(sourcename .. fsuffix .. ".log") ) ; +end + + +-- Compile up to five times. +-- fsuffix is "" for print, "_html" for HTML output + +function manytimes (fsuffix) +if onetime(fsuffix) == true then +if onetime(fsuffix) == true then +if onetime(fsuffix) == true then +if onetime(fsuffix) == true then +if onetime(fsuffix) == true then +end end end end end +end + +-- Exit if the given file does not exist. + +function verifyfileexists (filename) +if (lfs.attributes ( filename , "modification" ) == nil ) then +print ( "lwarpmk: " .. filename .. " not found." ) ; +os.exit (1) ; +end +end + + +-- Convert <project>_html.pdf into HTML files: + +function pdftohtml () + -- Convert to text: + print ("lwarpmk: Converting " .. sourcename + .."_html.pdf to " .. sourcename .. "_html.html") + os.execute("pdftotext -enc UTF-8 -nopgbrk -layout " + .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") + -- Split the result into individual HTML files: + splitfile (homehtmlfilename .. ".html" , sourcename .. "_html.html") +end + + +-- Remove auxiliary files: + +function removeaux () + os.execute ( rmname .. " " .. + sourcename ..".aux " .. sourcename .. "_html.aux " .. + sourcename ..".toc " .. sourcename .. "_html.toc " .. + sourcename ..".lof " .. sourcename .. "_html.lof " .. + sourcename ..".lot " .. sourcename .. "_html.lot " .. + sourcename ..".idx " .. sourcename .. "_html.idx " .. + sourcename ..".ind " .. sourcename .. "_html.ind " .. + sourcename ..".log " .. sourcename .. "_html.log " .. + sourcename ..".gl* " .. sourcename .. "_html.gl* " + ) +end + + + +-- Create lateximages based on lateximages.txt: +function createlateximages () +print ("lwarpmk: Creating lateximages.") +io.input("lateximages.txt") +-- Create the lateximages directory, ignore error if alreadt exists +err = os.execute("mkdir lateximages") +-- Scan lateximages.txt +for line in io.lines() do +-- lwimgpage is the page number in the PDF which has the image +-- lwimgnum is the sequential lateximage number to assign for the image +i,j,lwimgpage,lwimgnum = string.find (line,"|(.*)|(.*)|") +-- For each entry: +if ( (i~=nil) ) then +-- Separate out the image into its own single-page pdf: +err = os.execute( +"pdfseparate -f " .. lwimgpage .. " -l " .. + lwimgpage .. " " .. sourcename .."_html.pdf lateximagetemp-%d.pdf") +-- Crop the image: +err = os.execute( +"pdfcrop --hires lateximagetemp-" .. lwimgpage ..".pdf lateximage-" .. lwimgnum ..".pdf") +if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end +-- Convert the image to svg: +err = os.execute( +"pdftocairo -svg lateximage-" .. lwimgnum ..".pdf lateximage-" .. lwimgnum ..".svg") +if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end +-- Move the result into lateximages/: +err = os.execute( +mvname .. " lateximage-" .. lwimgnum ..".svg lateximages" .. dirslash ) +if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end +-- Remove the temporary files: +err = os.execute( +rmname .. " lateximage-" .. lwimgnum ..".pdf lateximagetemp-" .. lwimgpage ..".pdf") +if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end +end +end -- do +end -- function + + +-- Use latexmk to compile source and index: +-- fsuffix is "" for print, or "_html" for HTML +function compilelatexmk ( fsuffix ) + -- 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 " + .. "-e " + .. opquote + .. "$makeindex = q/" + .. xindycmd + .. " -M " .. xdyfile + .. " -L " .. language .. " /" + .. opquote + .. " -pdflatex=\"" .. latexname .." %O %S\" " + .. sourcename..fsuffix ..".tex" ) ; + if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end +end + + + +-- lwarpmk --version : + +if (arg[1] == "--version") then +print ( "lwarpmk: " .. printversion ) + +else -- not -- version + +-- print intro: + +print ("lwarpmk: " .. printversion .. " Automated make for the LaTeX lwarp package.") + +-- lwarpmk print: + +if arg[1] == "print" then +loadconf () +if ( latexmk == "true" ) then + compilelatexmk ("") + print ("lwarpmk: Done.") +else -- not latexmk + verifyfileexists (sourcename .. ".tex") ; + -- See if up to date: + if ( + ( lfs.attributes ( sourcename .. ".pdf" , "modification" ) == nil ) or + ( + lfs.attributes ( sourcename .. ".tex" , "modification" ) > + lfs.attributes ( sourcename .. ".pdf" , "modification" ) + ) + ) then + -- Recompile if not yet up to date: + manytimes("") + print ("lwarpmk: Done.") ; + else + print ("lwarpmk: " .. sourcename .. ".pdf is up to date.") ; + end +end -- not latexmk + +-- lwarp printindex: +-- Compile the index then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "printindex" then +loadconf () +print ("lwarpmk: Processing the index.") +os.execute( + xindycmd + .. " -M " .. xdyfile + .. " -L " .. language + .. " " .. sourcename .. ".idx") +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarp printglossary: +-- Compile the glossary then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "printglossary" then +loadconf () +print ("lwarpmk: Processing the glossary.") + +os.execute(glossarycmd .. " -L " .. language .. " -I xindy -M " .. sourcename .. + " -t " .. sourcename .. ".glg -o " .. sourcename .. ".gls " + .. sourcename .. ".glo") +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk html: + +elseif arg[1] == "html" then +loadconf () +if ( latexmk == "true" ) then + compilelatexmk ("_html") + pdftohtml () + print ("lwarpmk: Done.") +else -- not latexmk + verifyfileexists ( sourcename .. ".tex" ) ; + -- See if exists and is up to date: + if ( + ( lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) == nil ) or + ( + lfs.attributes ( sourcename .. ".tex" , "modification" ) > + lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) + ) + ) then + -- Recompile if not yet up to date: + manytimes("_html") + pdftohtml () + print ("lwarpmk: Done.") + else + print ("lwarpmk: " .. homehtmlfilename .. ".html is up to date.") + end +end -- not latexmk + +elseif arg[1] == "pdftohtml" then + loadconf () + pdftohtml () + +-- lwarpmk htmlindex: +-- Compile the index then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "htmlindex" then +loadconf () +print ("lwarpmk: Processing the index.") +os.execute( + xindycmd + .. " -M " .. xdyfile + .. " -L " .. language + .. " " .. sourcename .. "_html.idx" +) +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk htmlglossary: +-- Compile the glossary then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "htmlglossary" then +loadconf () +print ("lwarpmk: Processing the glossary.") + +os.execute(glossarycmd .. " -L " .. language .. " -I xindy -M " ..sourcename .. + "_html -t " .. sourcename .. "_html.glg -o " ..sourcename .. + "_html.gls " ..sourcename .. "_html.glo") + +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk limages: +-- Scan the lateximages.txt file to create lateximages, +-- then touch the source to trigger a recompile. + +elseif arg[1] == "limages" then +loadconf () +print ("lwarpmk: Processing images.") +createlateximages () +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk again: +-- Touch the source to trigger a recompile. + +elseif arg[1] == "again" then +loadconf () +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk clean: +-- Remove project.aux, .toc, .lof, .lot, .idx, .ind, .log, .gl* + +elseif arg[1] == "clean" then +loadconf () +removeaux () +print ("lwarpmk: Done.") + +-- lwarpmk cleanall +-- Remove project.aux, .toc, .lof, .lot, .idx, .ind, .log, .gl* +-- and also project.pdf, *.html + +elseif arg[1] == "cleanall" then +loadconf () +removeaux () +os.execute ( rmname .. " " .. + sourcename .. ".pdf " .. sourcename .. "_html.pdf " .. + "*.html" + ) +print ("lwarpmk: Done.") + +-- lwarpmk with no argument : + +elseif (arg[1] == nil) then +printhelp () + +-- lwarpmk -h or lwarpmk --help : + +elseif (arg[1] == "-h" ) or (arg[1] == "--help") then +printusage () + +else +print ("lwarpmk: Unknown command \""..arg[1].."\".\n") +printhelp () +end + +end -- not --version +\end{VerbatimOut} +% \end{Verbatim}% for syntax highlighting +% \end{macrocode} +% +% \begin{macrocode} +\end{LWR@createlwarpmk} +% \end{macrocode} +% + + @@ -5838,8 +8615,8 @@ top=1in,bottom=1in,% % \section{HTML filename generation} % -% The filename of the homepage is set to |\HomeHTMLFileName.html|. -% The filenames of additional sections start with |\HTMLfiveName|, to which is +% The filename of the homepage is set to |\HomeHTMLFilename.html|. +% The filenames of additional sections start with |\HTMLFilename|, to which is % appended a section number or a simplified section name, depending on |FileSectionNames|. % @@ -5853,31 +8630,31 @@ top=1in,bottom=1in,% % The \cs{jobname} of the printed version, even if currently % compiling the \HTML\ version. % I.e. this is the \cs{jobname} without |_html| appended. -% This is used to set \cs{HomeHTMLFileName} if the user did not provide one. +% This is used to set \cs{HomeHTMLFilename} if the user did not provide one. % \begin{macrocode} \providecommand*{\BaseJobname}{\jobname} % \end{macrocode} % \end{macro} -% \begin{macro}{\HTMLfiveName} +% \begin{macro}{\HTMLFilename} % \changes{v0.19}{2016/05/28}{Docs: Escape filename underscores.} % \changes{v0.20}{2016/12/18}{No longer escape underscores.} % The prefix for all generated \HTML\ files other than the home page, % defaulting to empty. See \cref{sec:filenameexamples}. % % \begin{macrocode} -\providecommand*{\HTMLfiveName}{} +\providecommand*{\HTMLFilename}{} % \end{macrocode} % \end{macro} % -% \begin{macro}{\HomeHTMLFileName} +% \begin{macro}{\HomeHTMLFilename} % \changes{v0.19}{2016/05/28}{Docs: Escape filename underscores.} % \changes{v0.20}{2016/12/18}{No longer escape underscores.} % The filename of the home page, defaulting to the \cs{BaseJobname}. % See \cref{sec:filenameexamples}. % % \begin{macrocode} -\providecommand*{\HomeHTMLFileName}{\BaseJobname} +\providecommand*{\HomeHTMLFilename}{\BaseJobname} % \end{macrocode} % \end{macro} % @@ -5932,11 +8709,11 @@ top=1in,bottom=1in,% % % \changes{v0.14}{2016/03/28}{Fix: Links to home page.} % \changes{v0.17}{2016/04/11}{Fix: Links when entire doc is one \HTML\ page.} -% \changes{v0.20}{2016/09/11}{HTMLFileName: removed additional trailing '-', and may be empty.} +% \changes{v0.20}{2016/09/11}{HTMLFilename: removed additional trailing '-', and may be empty.} % \changes{v0.20}{2016/09/11}{Sections called ``Index'' or ``index'' have an underscore % prepended to their filenames if no prefix.} % -% Prints the filename for a given section: |\HTMLfiveName{}filenumber/name.html| +% Prints the filename for a given section: |\HTMLFilename{}filenumber/name.html| % \begin{macrocode} \newcommand*{\LWR@htmlsectionfilename}[1]{% \LWR@traceinfo{LWR@htmlsectionfilename A}% @@ -5960,8 +8737,8 @@ top=1in,bottom=1in,% \OR \equal{\LWR@tempone}{??}% }% {% -\LWR@traceinfo{LWR@htmlsectionfilename B \HomeHTMLFileName.html}% -\HomeHTMLFileName.html% +\LWR@traceinfo{LWR@htmlsectionfilename B \HomeHTMLFilename.html}% +\HomeHTMLFilename.html% }% % \end{macrocode} % For a \LaTeX\ section named ``Index'' or ``index'' without a prefix, create a filename @@ -5970,7 +8747,7 @@ top=1in,bottom=1in,% {% \LWR@traceinfo{LWR@htmlsectionfilename C \LWR@tempone}% \ifthenelse{% -\equal{\HTMLfiveName}{} \AND \equal{\LWR@tempone}{Index} \OR \equal{\LWR@tempone}{index}% +\equal{\HTMLFilename}{} \AND \equal{\LWR@tempone}{Index} \OR \equal{\LWR@tempone}{index}% }% {% \LWR@traceinfo{prefixing the index name with an underscore.}% @@ -5978,7 +8755,7 @@ top=1in,bottom=1in,% % \end{macrocode} % Otherwise, create a filename with the chosen prefix: % \begin{macrocode} -{\HTMLfiveName#1.html}% +{\HTMLFilename#1.html}% }% \LWR@traceinfo{LWR@htmlsectionfilename Z}% } @@ -6017,7 +8794,7 @@ top=1in,bottom=1in,% % \begin{macrocode} \newcommand*{\LinkHome}{% \LWR@subhyperrefclass{% -\HomeHTMLFileName.html}% +\HomeHTMLFilename.html}% {Home}{linkhome}% } % \end{macrocode} @@ -6919,13 +9696,18 @@ top=1in,bottom=1in,% \catcode`\_=8 } % \end{macrocode} -% \begin{macro}{\SetFirstPageTop} \marg{text and logos} +% \begin{macro}{\HTMLFirstPageTop} \marg{text and logos} +% +% \changes{v0.30}{2017/04/28}{Renamed from \cs{SetFirstPageTop}.} +% % \begin{macrocode} -\newcommand{\SetFirstPageTop}{% +\newcommand{\HTMLFirstPageTop}{% \catcode`\_=12 \LWR@setfirstpagetopb } % \end{macrocode} +% +% % \end{macro} % \begin{macrocode} \newcommand{\LWR@setpagetopb}[1]{% @@ -6933,23 +9715,35 @@ top=1in,bottom=1in,% \catcode`\_=8 } % \end{macrocode} -% \begin{macro}{\SetPageTop} \marg{text and logos} +% +% +% \begin{macro}{\HTMLPageTop} \marg{text and logos} +% +% \changes{v0.30}{2017/04/28}{Renamed from \cs{SetPageTop}.} +% % \begin{macrocode} -\newcommand{\SetPageTop}{% +\newcommand{\HTMLPageTop}{% \catcode`\_=12 \LWR@setpagetopb } % \end{macrocode} % \end{macro} +% +% % \begin{macrocode} \newcommand{\LWR@setpagebottomb}[1]{% \renewcommand{\LWR@pagebottom}{#1} \catcode`\_=8 } % \end{macrocode} -% \begin{macro}{\SetPageBottom} \marg{text and logos} +% +% +% \begin{macro}{\HTMLPageBottom} \marg{text and logos} +% +% \changes{v0.30}{2017/04/28}{Renamed from \cs{SetPageBottom}.} +% % \begin{macrocode} -\newcommand{\SetPageBottom}{% +\newcommand{\HTMLPageBottom}{% \catcode`\_=12 \LWR@setpagebottomb } @@ -6970,7 +9764,7 @@ top=1in,bottom=1in,% % \end{macrocode} % \begin{macro}{\LWR@currentcss} The \CSS\ filename to use. -% This may be changed mid-document using \cs{NewCSS}, +% This may be changed mid-document using \cs{CSSFilename}, % allowing different \CSS\ files to be used % for different sections of the document. @@ -6979,16 +9773,18 @@ top=1in,bottom=1in,% % \end{macrocode} % \end{macro} -% \begin{macro}{\NewCSS} \marg{new-css-filename.css} -% +% \begin{macro}{\CSSFilename} \marg{new-css-filename.css} \qquad % Assigns the \CSS\ file to be used by the following \HTML\ pages. +% +% \changes{v0.30}{2017/04/28}{Renamed from \cs{NewCSS}.} +% % \begin{macrocode} \newcommand*{\LWR@newcssb}[1]{% \renewcommand*{\LWR@currentcss}{#1} \catcode`\_=8 } -\newcommand*{\NewCSS}{ +\newcommand*{\CSSFilename}{ \catcode`\_=12 \LWR@newcssb } @@ -6998,7 +9794,7 @@ top=1in,bottom=1in,% % \codeprint % \begin{macrocode} \begin{warpprint} -\newcommand*{\NewCSS}[1]{} +\newcommand*{\CSSFilename}[1]{} \end{warpprint} % \end{macrocode} % \end{macro} @@ -7007,8 +9803,6 @@ top=1in,bottom=1in,% % \section{HTML meta description and author} % -% \changes{v0.20}{2016/06/27}{Added \cs{NewHTMLdescription}.} -% \changes{v0.28}{2017/04/06}{Added \cs{HTMLauthor}.} % \codeall @@ -7016,16 +9810,19 @@ top=1in,bottom=1in,% \begin{warpall} % \end{macrocode} -% \begin{macro}{\HTMLauthor} \marg{authorname} \qquad The author to place into an \HTML\ meta tag. +% \begin{macro}{\HTMLAuthor} \marg{authorname} \qquad The author to place into an \HTML\ meta tag. % % \index{HTML>meta tag>author} % \index{author>HTML meta tag} % \index{meta tag, HTML>author} % +% \changes{v0.28}{2017/04/06}{Added \cs{HTMLauthor}. (Renamed in v0.30.)} +% \changes{v0.30}{2017/04/28}{Renamed from \cs{HTMLauthor}.} +% % \begin{macrocode} -\newcommand{\theHTMLauthor}{\theauthor} +\newcommand{\theHTMLAuthor}{\theauthor} -\newcommand{\HTMLauthor}[1]{\renewcommand{\theHTMLauthor}{#1}} +\newcommand{\HTMLAuthor}[1]{\renewcommand{\theHTMLAuthor}{#1}} % \end{macrocode} % \end{macro} @@ -7040,24 +9837,27 @@ top=1in,bottom=1in,% % \end{macrocode} % This is placed inside an \HTML\ meta tag at the start of each file. -% This may be changed mid-document using \cs{NewHTMLdescription}, +% This may be changed mid-document using \cs{HTMLDescription}, % allowing different \HTML\ descriptions to be used % for different sections of the document. % % Do not use double quotes, and do not exceed 150 characters.\watchout -% \begin{macro}{\NewHTMLdescription} \marg{New \HTML\ meta description.} \qquad +% \begin{macro}{\HTMLDescription} \marg{New \HTML\ meta description.} \qquad % Assigns the \HTML\ file's description meta tag. % % \index{HTML>meta tag>description} % \index{description>HTML meta tag} % \index{meta tag, HTML>description} % +% \changes{v0.20}{2016/06/27}{Added \cs{NewHTMLdescription}. (Renamed in v0.30.)} +% \changes{v0.30}{2017/04/28}{Renamed from \cs{NewHTMLdescription}.} +% % \begin{macrocode} -\newcommand{\LWR@currentHTMLdescription}{} +\newcommand{\LWR@currentHTMLDescription}{} -\newcommand{\NewHTMLdescription}[1]{% -\renewcommand{\LWR@currentHTMLdescription}{#1} +\newcommand{\HTMLDescription}[1]{% +\renewcommand{\LWR@currentHTMLDescription}{#1} } \end{warpall} @@ -8011,18 +10811,34 @@ top=1in,bottom=1in,% % \section{Starting a new file} % \label{sec:startingfile} -% \codehtml +% \codeall % \begin{macrocode} -\begin{warpHTML} +\begin{warpall} % \end{macrocode} -% \begin{macro}{\MetaLanguage} Default language for the \HTML\ |lang| tag. +% \begin{macro}{\HTMLLanguage} Default language for the \HTML\ |lang| tag. % \index{language HTML metadata} +% +% \changes{v0.30}{2017/04/28}{Renamed from \cs{MetaLanguage}.} +% % \begin{macrocode} -\newcommand*{\MetaLanguage}{en-US} +\newcommand*{\LWR@currentHTMLLanguage}{en-US} + +\newcommand*{\HTMLLanguage}[1]{% +\renewcommand*{\LWR@currentHTMLLanguage}{#1}% +} % \end{macrocode} % \end{macro} +% \begin{macrocode} +\end{warpall} +% \end{macrocode} + + +% \codehtml +% \begin{macrocode} +\begin{warpHTML} +% \end{macrocode} % \begin{macro}{\LWR@filestart} \marg{title\_suffix} @@ -8058,7 +10874,7 @@ top=1in,bottom=1in,% % \end{macrocode} % The language is user-adjustable: % \begin{macrocode} -\LWR@htmltag{html lang="\MetaLanguage"{}}\LWR@orignewline +\LWR@htmltag{html lang="\LWR@currentHTMLLanguage"{}}\LWR@orignewline % \end{macrocode} % Start of the meta data: % \begin{macrocode} @@ -8071,8 +10887,8 @@ top=1in,bottom=1in,% % % Author: % \begin{macrocode} -\ifcsempty{theHTMLauthor}{}{ -\LWR@htmltag{meta name="author" content="\theHTMLauthor" /}\LWR@orignewline +\ifcsempty{theHTMLAuthor}{}{ +\LWR@htmltag{meta name="author" content="\theHTMLAuthor" /}\LWR@orignewline } % \end{macrocode} % @@ -8086,9 +10902,9 @@ top=1in,bottom=1in,% % \end{macrocode} % If there is a description, add it now: % \begin{macrocode} -\ifdefempty{\LWR@currentHTMLdescription}{}{% +\ifdefempty{\LWR@currentHTMLDescription}{}{% \LWR@htmltag{% -meta name="description" content="\LWR@currentHTMLdescription" /}% +meta name="description" content="\LWR@currentHTMLDescription" /}% \LWR@orignewline }% % \end{macrocode} @@ -8184,12 +11000,12 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% }{} % \end{macrocode} % -% Expand and detokenize \cs{HomeHTMLFileName} and \cs{HTMLFileName}: +% Expand and detokenize \cs{HomeHTMLFilename} and \cs{HTMLFilename}: % \begin{macrocode} -\edef\LWR@strresult{\HomeHTMLFileName} -\edef\HomeHTMLFileName{\detokenize\expandafter{\LWR@strresult}} -\edef\LWR@strresult{\HTMLfiveName} -\edef\HTMLfiveName{\detokenize\expandafter{\LWR@strresult}} +\edef\LWR@strresult{\HomeHTMLFilename} +\edef\HomeHTMLFilename{\detokenize\expandafter{\LWR@strresult}} +\edef\LWR@strresult{\HTMLFilename} +\edef\HTMLFilename{\detokenize\expandafter{\LWR@strresult}} % \end{macrocode} % Force onecolumn: % \begin{macrocode} @@ -8530,9 +11346,9 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% % wishes to refer to the document's title and such. One practical use for this % is to place the authors at the bottom of each \HTML\ page, such as: % -% \DescribeMacro{\SetPageBottom} \marg{text} +% \DescribeMacro{\HTMLPageBottom} \marg{text} % \begin{Verbatim}[gobble=2,frame=lines,obeytabs,tabsize=4] -% \SetPageBottom{ +% \HTMLPageBottom{ % \begin{center}\textcopyright~2016 \theauthor\end{center} % } % \end{Verbatim} @@ -13007,14 +15823,12 @@ class="#3"\LWR@orignewline}#2\LWR@htmltag{/a}% % \begin{macro}{\hyperindexref} \marg{autosecnumber} % % |\hyperindexref{web address}| is inserted into |*.ind| by -% the xindy style file |lwarp_html.xdy| +% the xindy style file |lwarp.xdy| % % \changes{v0.20}{2016/12/19}{Print mode provided in case hyperref not used.} % \changes{v0.28}{2017/04/13}{Improved indexing.} % \begin{macrocode} -\newcommand*{\hyperindexref}[1]{ -\nameref{LWRindex-#1}% -} +\newcommand*{\hyperindexref}[1]{\nameref{LWRindex-#1}} % \end{macrocode} % \end{macro} @@ -16112,70 +18926,6 @@ display:inline-block;"% -% \clearpage - -% \section{lwarpmk.conf} - -% \DescribeFile{lwarpmk.conf} -% |lwarpmk.conf| is automatically (re-)created by the \pkg{lwarp} package when -% executing\\ -% \hspace*{2ex} |pdflatex <project.tex>|,\\ -% or similar for |xelatex| or |lualatex|, in print-document generation mode, -% which is the default unless the |warpHTML| option is given. -% |lwarpmk.conf| is then used by the utility |lwarpmk|. -% -% An example |lwarpmk.conf|: -% \begin{Verbatim}[gobble=2,frame=lines,obeytabs,tabsize=4,formatcom={\unskip}] -% opsystem = "Unix" -- or "Windows" -% latexname = "pdflatex" -- or "lualatex" or "xelatex" -% sourcename = "projectname" -- your .tex source -% homehtmlfilename = "index" -- or "projectname" -% htmlfilename = "" -- or "projectname" if numbered HTML files -% \end{Verbatim} -% -% \changes{v0.29}{2017/04/15}{File \protect\texttt{lwarpmk.conf}: Add: \protect\texttt{language} option for config files.} -% -% Defaults unless already over-ridden by the user: -% \begin{macrocode} -\providecommand*{\HomeHTMLFileName}{\BaseJobname} -\providecommand*{\HTMLfiveName}{} -\providecommand*{\UseLatexmk}{false} -% \end{macrocode} - - -% \codeprint -% \begin{macrocode} -\begin{warpprint} -\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} -\immediate\openout\LWR@file=lwarpmk.conf -\ifwindows -\immediate\write\LWR@file{opsystem = "Windows"} -\else -\immediate\write\LWR@file{opsystem = "Unix"} -\fi -\ifPDFTeX -\immediate\write\LWR@file{latexname = "pdflatex"} -\fi -\ifXeTeX -\immediate\write\LWR@file{latexname = "xelatex"} -\fi -\ifLuaTeX -\immediate\write\LWR@file{latexname = "lualatex"} -\fi -\immediate\write\LWR@file{sourcename = "\jobname"} -\immediate\write\LWR@file{% -homehtmlfilename = "\HomeHTMLFileName"% -} -\immediate\write\LWR@file{htmlfilename = "\HTMLfiveName"} -\immediate\write\LWR@file{uselatexmk = "\UseLatexmk"} -\immediate\write\LWR@file{language = "\LWR@lwarpmklang"} -\immediate\closeout\LWR@file -\end{warpprint} -% \end{macrocode} - - - - @@ -16207,2555 +18957,7 @@ homehtmlfilename = "\HomeHTMLFileName"% % % % -% \clearpage -% -% -% \iffalse -%<*lwarp-newproject> -% \fi -% -% \part{lwarp-newproject.sty} -% -% \changes{v0.20}{2016/12/20}{\pkg{lwarp-newproject}: Added.} -% -% \section{lwarp-newproject} -% -% \DescribePackage{lwarp-newproject} -% \pkg{lwarp-newproject} is used to create lwarp-specific -% system files in a new project. -% -% \DescribeOption[lwarp-newproject]{warpprint} Configuration files are only -% created if the |warpprint| option was used. When this is the case, -% \pkg{lwarp-newproject} knows that \cs{jobname} is the source code's filename -% (as opposed to the |<project>_html.tex| filename). -% -% \DescribeOption[lwarp-newproject]{warpHTML} Does not create configuration files. -% |warpprint| or |warpHTML| are passed to both \pkg{lwarp} and -% \pkg{lwarp-newproject} by |lwarpmk|, depending on whether |lwarpmk print| -% or |lwarpmk html| was used. -% -% \DescribeOption[lwarp-newproject]{BaseJobName} |BaseJobname=somename| sets -% \cs{BaseJobname} to |somename|, which is used to set \cs{HomeHTMLFileName}, -% which is then written to the |lwarpmk.conf| and |<project>.lwarpmkconf| -% configuration files. -% -% \cs{BaseJobname} is also written to |<project>_html.tex| as an option -% given for the \pkg{lwarp} and \pkg{lwarp-newproject} packages during the -% creation of \HTML\ output. -% -% \cs{BaseJobname} is the \cs{jobname} of the printed version, even while compiling -% the \HTML\ version, where \cs{jobname} has |_html| appended. -% -% \DescribeOption[lwarp-newproject]{lwarpmk} Tells |lwarp-newproject| to -% generate a local copy of |lwarpmk| called |lwarpmk.lua|. -% Useful for archiving for future use. -% This file may be made executable and acts just like |lwarpmk|. -% -% \DescribeOption[lwarp-newproject]{lwarpmklang} Sets the language to be assigned -% in |lwarpmk|'s configuration files. This is then used by |lwarpmk| while -% processing the glossary. -% -% In the document source: -% \begin{Verbatim}[gobble=2,frame=lines,obeytabs,tabsize=4,formatcom={\unskip}] -% \documentclass{article} % or book, report -% ... -% (font selection, input encoding) -% ... -% \newcommand*{\HomeHTMLFileName}{index}, or {projectname} -% \newcommand*{\HTMLfiveName}{} -% \usepackage{lwarp-newproject} -% \usepackage{lwarp} -% ... -% (load other packages, the rest of the preamble) -% ... -% \NewCSS{project.css} -% \NewHTMLdescription{Summarize this webpage.} -% ... -% \begin{document} -% ... -% \end{document} -% \end{Verbatim} -% -% Place |\usepackage{lwarp-newproject}| just before |\usepackage{lwarp}| in the -% document source. The operating system and \TeX\ engine will be auto-detected, -% and a customized |lwarpmk.conf| file will be generated, along with -% the other support files (|*.css|, |lwarp_html.xdy|, |lwarp_mathjax.txt|). -% Rename |sample_project.css| to your own custom |projectname.css| and -% edit it if desired. -% -% After the first compile, |\usepackage{lwarp-newproject}| -% may be commented out unless the configuration changes. -% For example, it may be re-enabled -% to switch between |pdflatex|, |xelatex|, and |lualatex|, in which case -% a new manual compile (without using |lwarpmk|) will auto-configure and -% regenerate the files. It may also be left enabled at all times, in which case -% the configuration files will be regenerated each time. Note that your own -% |projectname.css| file will not be over-written by the newly regenerated -% |sample_project.css|. -% - -% Discard all options for \pkg{lwarp-newproject}: -% \begin{macrocode} -\ProvidesPackage{lwarp-newproject} - -\RequirePackage{etoolbox} -\RequirePackage{comment} -\RequirePackage{fancyvrb} -\RequirePackage{ifplatform}% sense op-system platform -\RequirePackage{iftex}% sense pdflatex/lualatex/xelatex -\RequirePackage{kvoptions} -\SetupKeyvalOptions{family=LWRNP,prefix=LWRNP@} -% \end{macrocode} - - -% Generate config files? -% \begin{macrocode} -\newbool{LWRNP@genconf} -\boolfalse{LWRNP@genconf} -% \end{macrocode} - -% Optionally generate a local copy of |lwarpmk|. Default to no: -% \begin{macrocode} -\excludecomment{LWR@createlwarpmk} -% \end{macrocode} - -% Process options: -% -% \changes{v0.29}{2017/04/15}{Add: \protect\texttt{lwarpmklang} option for \pkg{lwarp-newproject}.} -% -% \begin{macrocode} -\DeclareVoidOption{warpprint}{\booltrue{LWRNP@genconf}} -\DeclareVoidOption{warpHTML}{\boolfalse{LWRNP@genconf}} -\DeclareVoidOption{lwarpmk}{\includecomment{LWR@createlwarpmk}} -\DeclareStringOption[\jobname]{BaseJobname} -\DeclareStringOption[english]{lwarpmklang} - -\booltrue{LWRNP@genconf}% warpprint - -\ProcessKeyvalOptions*\relax -% \end{macrocode} - - -% Assign the \cs{BaseJobname} if the user hasn't provided one: -% \begin{macrocode} -\providecommand*{\BaseJobname}{\LWRNP@BaseJobname} -% \end{macrocode} - -% Defaults unless already over-ridden by the user: -% \begin{macrocode} -% \ifbool{LWRNP@genconf}{ -\providecommand*{\HomeHTMLFileName}{\BaseJobname} -% }{} -\providecommand*{\HTMLfiveName}{} -\providecommand*{\UseLatexmk}{false} -% \end{macrocode} -% -% - - -\ifbool{LWRNP@genconf}{\typeout{lwarp-newproject: generating configuration files}}{} - - -% \subsection{project\_html.tex} -% -% \DescribeFile{project_html.tex} Used to allow an \HTML\ version of the -% document to exist alongside the print version. -% -% Only write |\jobname_html.tex| if generating the print version. -% \begin{macrocode} -\ifbool{LWRNP@genconf}{ -\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} -\immediate\openout\LWR@file=\jobname_html.tex -\immediate\write\LWR@file{% -\detokenize{\PassOptionsToPackage}% -{warpHTML,BaseJobname=\jobname}{lwarp}% -} -\immediate\write\LWR@file{% -\detokenize{\PassOptionsToPackage}% -{warpHTML,BaseJobname=\jobname}{lwarp-newproject}% -} -\immediate\write\LWR@file{% -\detokenize{\input}\string{\jobname.tex\string }% -} -\immediate\closeout\LWR@file -}{} -% \end{macrocode} - - -% \subsection{project.lwarpmkconf} -% -% \DescribeFile{project.lwarpmkconf} The configuration file for |lwarpmk|. -% -% \changes{v0.29}{2017/04/15}{File \protect\texttt{*.lwarpmkconf}: Add: \protect\texttt{language} option for config files.} -% -% \begin{macrocode} -\ifbool{LWRNP@genconf}{ -\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} -\immediate\openout\LWR@file=\jobname.lwarpmkconf -\ifwindows -\immediate\write\LWR@file{opsystem = "Windows"} -\else -\immediate\write\LWR@file{opsystem = "Unix"} -\fi -\ifPDFTeX -\immediate\write\LWR@file{latexname = "pdflatex"} -\fi -\ifXeTeX -\immediate\write\LWR@file{latexname = "xelatex"} -\fi -\ifLuaTeX -\immediate\write\LWR@file{latexname = "lualatex"} -\fi -\immediate\write\LWR@file{sourcename = "\jobname"} -\immediate\write\LWR@file{% -homehtmlfilename = "\HomeHTMLFileName"% -} -\immediate\write\LWR@file{htmlfilename = "\HTMLfiveName"} -\immediate\write\LWR@file{uselatexmk = "\UseLatexmk"} -\immediate\write\LWR@file{language = "\LWRNP@lwarpmklang"} -\immediate\closeout\LWR@file -}{} -% \end{macrocode} - - - - -% \subsection{lwarp.css} - -% \DescribeFile{lwarp.css} -% This is the base \CSS\ layer used by \pkg{lwarp}. -% -% This must be present both when compiling the project -% and also when distributing the \HTML\ files. -% -% \changes{v0.26}{2017/03/30}{\texttt{lwarp.css}: Improved responsive -% \texttt{marginpar} and \texttt{marginblock}.} -% -% \begin{macrocode} -\begin{VerbatimOut}{lwarp.css} -/* - CSS stylesheet for the LaTeX lwarp package - Copyright 2016-2017 Brian Dunn — BD Tech Concepts LLC -*/ - - -/* a fix for older browsers: */ -header, section, footer, aside, nav, main, - article, figure { display: block; } - - -A:link {color:#000080 ; text-decoration: none ; } -A:visited {color:#800000 ; } -A:hover {color:#000080 ; text-decoration: underline ;} -A:active {color:#800000 ; } - -a.tocpart {display: inline-block ; margin-left: 0em ; - font-weight: bold ;} -a.tocchapter {display: inline-block ; margin-left: 0em ; - font-weight: bold ;} -a.tocsection {display: inline-block ; margin-left: 1em ; - text-indent: -.5em ; font-weight: bold ; } -a.tocsubsection {display: inline-block ; margin-left: 2em ; - text-indent: -.5em ; } -a.tocsubsubsection {display: inline-block ; margin-left: 3em ; - text-indent: -.5em ; } -a.tocparagraph {display: inline-block ; margin-left: 4em ; - text-indent: -.5em ; } -a.tocsubparagraph {display: inline-block ; margin-left: 5em ; - text-indent: -.5em ; } -a.tocfigure {margin-left: 0em} -a.tocsubfigure {margin-left: 2em} -a.toctable {margin-left: 0em} -a.tocsubtable {margin-left: 2em} -a.toctheorem {margin-left: 0em} -a.toclstlisting {margin-left: 0em} - - -body { - font-family: "DejaVu Serif", "Bitstream Vera Serif", - "Lucida Bright", Georgia, serif; - background: #FAF7F4 ; - color: black ; - margin:0em ; - padding:0em ; - font-size: 100% ; - line-height: 1.2 ; -} - -p {margin: 1.5ex 0em 1.5ex 0em ;} - -/* Holds a section number to add space between it and the name */ -span.sectionnumber { margin-right: .6em } - -/* Inserted in front of index lines */ -span.indexitem {margin-left: 0em} -span.indexsubitem {margin-left: 2em} -span.indexsubsubitem {margin-left: 4em} - -div.hidden { display: none ; } - -kbd { - font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", - "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", - "Courier New", monospace; - font-size: 100% ; -} - -span.strong { font-weight: bold; } - -span.textmd { font-weight: normal; } - -span.textsc { font-variant: small-caps; } - -span.textup { font-variant: normal; } - -span.textrm { - font-family: "DejaVu Serif", "Bitstream Vera Serif", - "Lucida Bright", Georgia, serif; -} - -span.textsf { - font-family: "DejaVu Sans", "Bitstream Vera Sans", - Geneva, Verdana, sans-serif ; -} - -span.attribution { - margin-left: 1em ; font-size: 80% ; font-variant: small-caps; -} - -span.citetitle { - margin-left: 1em ; font-size: 80% ; font-style: oblique; -} - -span.poemtitle { - font-size: 120% ; font-weight: bold; -} - -blockquote { - margin-left: 0px ; - margin-right: 0px ; -} - -blockquote p { - line-height: 1.5; - text-align: left ; - font-size: .85em ; - margin-left: 3em ; - margin-right: 3em ; -} - -blockquotation { - margin-left: 0px ; - margin-right: 0px ; -} - -blockquotation p { - line-height: 1.5; - text-align: left ; - font-size: .85em ; - margin-left: 3em ; - margin-right: 3em ; -} - -div.epigraph { - line-height: 1.2; - text-align: left ; - padding: 3ex 1em 0ex 1em ; -/* margin: 3ex auto 3ex auto ; */ /* Epigraph centered */ - margin: 3ex 1em 3ex auto ; /* Epigraph to the right */ -/* margin: 3ex 1em 3ex 1em ; */ /* Epigraph to the left */ - font-size: .85em ; - max-width: 27em ; -} - - - -div.epigraphsource{ - text-align:right ; - margin-left:auto ; -/* max-width: 50% ; */ - border-top: 1px solid #A0A0A0 ; - padding-bottom: 3ex ; - line-height: 1.2; -} - -div.epigraph p { padding: .5ex ; margin: 0ex ;} -div.epigraphsource p { padding: .5ex 0ex 0ex 0ex ; margin: 0ex ;} - - -/* lettrine package: */ -span.lettrine { font-size: 3ex ; float: left ; } -span.lettrinetext { font-variant: small-caps ; } - -/* ulem and soul packages: */ -span.uline { - text-decoration: underline ; - text-decoration-skip ; -} - -span.uuline { - text-decoration: underline ; - text-decoration-skip ; - text-decoration-style: double ; -} - -span.uwave { - text-decoration: underline ; - text-decoration-skip ; - text-decoration-style: wavy ; -} - -span.sout { - text-decoration: line-through ; -} - -span.xout { - text-decoration: line-through ; -} - -span.dashuline { - text-decoration: underline ; - text-decoration-skip ; - text-decoration-style: dashed ; -} - -span.dotuline { - text-decoration: underline ; - text-decoration-skip ; - text-decoration-style: dotted ; -} - -span.letterspacing { letter-spacing: .2ex ; } - -span.capsspacing { - font-variant: small-caps ; - letter-spacing: .1ex ; -} - -span.highlight { background: #F8E800 ; } - - - - -html body { - margin: 0 ; - line-height: 1.2; -} - - -body div { - margin: 0ex; -} - - -h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph -{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - font-style: normal ; - font-weight: bold ; - text-align: left ; -} - -h1 { /* title of the entire website, used on each page */ - text-align: center ; - font-size: 2.5em ; - padding: .4ex 0em 0ex 0em ; -} -h2 { font-size: 2.25em } -h3 { font-size: 2em } -h4 { font-size: 1.75em } -h5 { font-size: 1.5em } -h6 { font-size: 1.25em } -span.paragraph {font-size: 1em ; font-variant: normal ; - margin-right: 1em ; } -span.subparagraph {font-size: 1em ; font-variant: normal ; - margin-right: 1em ; } - - - -/* Title of the file */ -h1 { - margin: 0ex 0em 0ex 0em ; - line-height: 1.3; - text-align: center ; -} - -/* Part */ -h2 { - margin: 1ex 0em 1ex 0em ; - line-height: 1.3; - text-align: center ; -} - -/* Chapter */ -h3 { - margin: 3ex 0em 1ex 0em ; - line-height: 1.3; -} - -/* Section */ -h4 { - margin: 3ex 0em 1ex 0em ; - line-height: 1.3; -} - -/* Sub-Section */ -h5 { - margin: 3ex 0em 1ex 0em ; - line-height: 1.3; -} - -/* Sub-Sub-Section */ -h6 { - margin: 3ex 0em 1ex 0em ; - line-height: 1.3; -} - - -div.titlepage { - text-align: center ; -} - -.footnotes { - font-size: .85em ; - margin: 3ex 1em 0ex 1em ; - padding-bottom: 1ex ; - border-top: 1px solid silver ; -} - -.marginpar { - max-width:50%; - float:right; - text-align:left; - margin: 1ex 0.5em 1ex 1em ; - padding: 1ex 0.5em 1ex 0.5em ; - font-size: 85% ; - border-top: 1px solid silver ; - border-bottom: 1px solid silver ; - overflow-x: auto; -} - -.marginpar br { margin-bottom: 2ex ; } - -div.marginblock { - max-width:50%; - float:right; - text-align:left; - margin: 1ex 0.5em 1ex 1em ; - padding: 1ex 0.5em 1ex 0.5em ; - overflow-x: auto; -} - -div.marginblock div.minipage { - display: block ; - margin: 0pt auto 0pt auto ; -} - -div.marginblock div.minipage p { font-size: 85%} - -div.marginblock br { margin-bottom: 2ex ; } - - -section.textbody div.footnotes{ - margin: 3ex 0em 0ex 0em ; - border-bottom: 2px solid silver ; -} - -.footnoteheader { - border-top: 2px solid silver ; - margin-top: 3ex ; - padding-top: 1ex ; - font-weight: bold ; -} - -.mpfootnotes { - text-align: left ; - font-size: .85em ; - margin-left: 1em ; - border-top: 1px solid silver ; -} - -/* Remove footnote top border in the title page. */ -div.titlepage div.mpfootnotes { - border-top: none ; -} - - - -ol { - margin: 1ex 1em 1ex 0em; - line-height: 1.2; -} - -ul, body dir, body menu { - margin: 1ex 1em 1ex 0em; - line-height: 1.2; -} - -li { margin: 0ex 0em 1ex 0em; } - -html { - margin: 0; - padding: 0; -} - -.programlisting { - font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", - "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", - "Courier New", monospace; - margin: 1ex 0ex 1ex 0ex ; - padding: .5ex 0pt .5ex 0pt ; - overflow-x: auto; -} - -section.textbody>pre.programlisting { -border-top: 1px solid silver ; -border-bottom: 1px solid silver ; -} - - -.inlineprogramlisting { - font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", - "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", - "Courier New", monospace; - overflow-x: auto; -} - - -div.abstract { - margin: 2em 5% 2em 5% ; - padding: 1ex 1em 1ex 1em ; -/* font-weight: bold ; */ - font-size: 90% ; -} - -div.abstract dl {line-height:1.5;} -div.abstract dt {color:#304070;} - -div.abstracttitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-size:1.25em; - text-align: center ; -} - -span.abstractrunintitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; -} - - -.verbatim { - overflow-x: auto ; -} - -.alltt { - overflow-x: auto ; -} - - -.bverbatim { - margin: 1ex 0pt 1ex 0pt ; - padding: .5ex 0pt .5ex 0pt ; - overflow-x: auto ; -} - -.lverbatim { - margin: 1ex 0pt 1ex 0pt ; - padding: .5ex 0pt .5ex 0pt ; - overflow-x: auto ; -} - -.fancyvrb { - font-size:.85em ; - margin: 3ex 0pt 3ex 0pt -} - -.fancyvrblabel { - font-weight:bold; - text-align: center ; -} - - -.verse { - font-family: "Linux Libertine Mono O", "Lucida Console", - "Droid Sans Mono", "DejaVu Mono", "Bitstream Vera Mono", - "Liberation Mono", "FreeMono", "Andale Mono", - "Nimbus Mono L", "Courier New", monospace; - margin-left: 1em ; -} - - -div.singlespace { line-height: 1.2 ; } -div.onehalfspace { line-height: 1.5 ; } -div.doublespace { line-height: 2 ; } - - - - - -/* Minipage environments, vertically aligned to top, center, bottom: */ -.minipage { - /* display: inline-block ; */ - /* Mini pages which follow each other will be tiled. */ - margin: .25em .25em .25em .25em; - padding: .25em .25em .25em .25em; - display: inline-flex; - flex-direction: column ; - overflow: auto; -} - -/* Paragraphs in the flexbox did not collapse their margins. */ -/* Have not yet researched this. */ -.minipage p {margin: .75ex 0em .75ex 0em ;} - - - -.framebox { - margin: 0ex ; - padding: 0ex ; - border: 1px solid black; - border-radius: 0px ; - padding: .3ex .2em 0ex .2em ; - margin: .1ex ; - display: inline-block ; -} - - -.mdframed { -/* padding: 0ex ; */ -/* border: 1px solid blafck; */ -/* border-radius: 0px ; */ - padding: 0ex ; - margin: 3ex 5% 3ex 5% ; -/* display: inline-block ; */ -} - -.mdframed p { padding: 0ex .5em 0ex .5em ; } - -.mdframed dl { padding: 0ex .5em 0ex .5em ; } - -.mdframedtitle { - padding: .5em ; - display: block ; - font-size: 130% -} - -.mdframedsubtitle { - padding: 0ex .5em 0ex .5em ; - display: block ; - font-size: 115% ; -} - -.mdframedsubsubtitle { - padding: 0ex .5em 0ex .5em ; - display: block ; -} - -.mdtheorem { - padding: 0ex .5em 0ex .5em ; - margin: 3ex 5% 3ex 5% ; -/* display: inline-block ; */ -} - - -/* framed package */ -.framed { - margin: 3ex 0em 3ex 0em ; - border: 1px solid black; - border-radius: 0px ; - padding: .3ex 1em 0ex 1em ; - display: block ; -} - -.snugframed { - margin: 3ex 0em 3ex 0em ; - border: 1px solid black; - border-radius: 0px ; - display: block ; -} - -.framedleftbar { - margin: 3ex 0em 3ex 0em ; - border-left: 3pt solid black; - border-radius: 0px ; - padding: .3ex .2em .3ex 1em ; - display: block ; -} - -.framedtitle { - margin: 0em ; - padding: 0em ; - font-size: 130% -} - -.framedtitle p { padding: .3em } - - - -dl { - margin: 1ex 2em 1ex 0em; - line-height: 1.3; -} - -dl dt { - margin-top: 1ex; - font-weight: bold; -} - -dl dd p { margin-top: 0em; } - - -nav.toc, nav.lof, nav.lot, nav.lol, nav.lothm { - font-family: "URW Classico", Optima, "Linux Biolinum O", - "DejaVu Sans", "Bitstream Vera Sans", - Geneva, Verdana, sans-serif ; - margin-bottom: 4ex ; -} - -nav.toc p, nav.lof p, nav.lot p, nav.lol p, nav.lothm p { - line-height: 1.2 ; - margin-top:.5ex ; - margin-bottom:.5ex; - font-size: .9em ; -} - - - -img, img.hyperimage, img.borderimage { - max-width: 600px; - border: 1px solid silver; - box-shadow: 3px 3px 3px #808080 ; - padding: .5% ; - margin: .5% ; - background: none ; -} - -img.inlineimage{ - padding: 0px ; - box-shadow: none ; - border: none ; - background: none ; - margin: 0px ; - display: inline-block ; - border-radius: 0px ; -} - -img.logoimage{ - max-width: 300px ; - box-shadow: 3px 3px 3px #808080 ; - border: 1px solid black ; - background:none ; - padding:0 ; - margin:.5ex ; - border-radius: 10px ; -} - - -.section { -/* - To have each section float relative to each other: -*/ -/* - display: block ; - float: left ; - position: relative ; - background: white ; - border: 1px solid silver ; - padding: .5em ; -*/ - margin: 0ex .5em 0ex .5em ; - padding: 0 ; -} - - -figure { - margin: 3ex auto 3ex auto ; - padding: 1ex 1em 1ex 1em ; - overflow-x: auto ; -} - - -/* To automatically center images in figures: */ -/* -figure img.inlineimage { - margin: 0ex auto 0ex auto ; - display: block ; -} -*/ - -/* To automatically center minipages in figures: */ -/* -figure div.minipage, figure div.minipage div.minipage { - margin: 1ex auto 1ex auto ; - display: block ; -} -*/ - -figure div.minipage p { font-size: 85% ; } - -figure.subfigure, figure.subtable { - display: inline-block ; margin: 3ex 1em 3ex 1em ; -} - -figcaption .minipage { margin:0 ; padding: 0 } - -div.floatrow { text-align: center; } - -div.floatrow figure { display: inline-block ; margin: 1ex 2% ; } - -div.floatfoot { font-size: .85em ; - border-top: 1px solid silver ; line-height: 1.2 ; } - -figcaption , .lstlistingtitle { - font-size: .85em ; - text-align: center ; - font-weight: bold ; - margin-top: 1ex ; - margin-bottom: 1ex ; -} - -figure.subfigure figcaption, figure.subtable figcaption { - border-bottom: none ; background: none ; -} - -div.nonfloatcaption { - margin: 1ex auto 1ex auto ; - font-size: .85em ; - text-align: center ; - font-weight: bold ; -} - -/* For a \RawCaption inside a minipage inside a figure's floatrow: */ -figure div.floatrow div.minipage figcaption { - border: none ; - background: none ; -} - - -table { - margin: 1ex auto 1ex auto ; - border-collapse: collapse ; - border-spacing: 0px ; - line-height: 1.3 ; - } - -tr.hline {border-top: 1px solid silver ; margin-top: 0ex ; - margin-bottom: 0ex ; } /* for \hline */ - -tr.tbrule {border-top: 1px solid black ; margin-top: 0ex ; - margin-bottom: 0ex ; } /* for \toprule, \bottomrule */ - -td {padding: 1ex .5em 1ex .5em ;} - -table td.tdl { text-align: left ; vertical-align: middle ; } -table td.tdc { text-align: center ; vertical-align: middle ; } -table td.tdr { text-align: right ; vertical-align: middle ; } -table td.tdp { text-align: left ; vertical-align: bottom ; } -table td.tdm { text-align: left ; vertical-align: middle ; } -table td.tdb { text-align: left ; vertical-align: top ; } -table td.tdP { text-align: center ; vertical-align: bottom ; } -table td.tdM { text-align: center ; vertical-align: middle ; } -table td.tdB { text-align: center ; vertical-align: top ; } -table td.tdlrule { text-align: left ; border-top: 1px solid silver ; - vertical-align: middle ; } /* for cmidrule */ -table td.tdcrule { text-align: center ; border-top: 1px solid silver ; - vertical-align: middle ; } -table td.tdrrule { text-align: right ; border-top: 1px solid silver ; - vertical-align: middle ; } -table td.tdprule { text-align: left ; border-top: 1px solid silver ; - vertical-align: bottom ; } -table td.tdmrule { text-align: left ; border-top: 1px solid silver ; - vertical-align: middle ; } -table td.tdbrule { text-align: left ; border-top: 1px solid silver ; - vertical-align: top ; } -table td.tdPrule { text-align: center ; border-top: 1px solid silver ; - vertical-align: bottom ; } -table td.tdMrule { text-align: center ; border-top: 1px solid silver ; - vertical-align: middle ; } -table td.tdBrule { text-align: center ; border-top: 1px solid silver ; - vertical-align: top ; } - -/* Margins of paragraphs inside table cells: */ -td.tdp p , td.tdprule p , td.tdP p , td.tdPrule p { padding-top: 1ex ; - padding-bottom: 1ex ; margin: 0ex ; } -td.tdm p , td.tmbrule p , td.tdM p , td.tdMrule p { padding-top: 1ex ; - padding-bottom: 1ex ; margin: 0ex ; } -td.tdb p , td.tdbrule p , td.tdB p , td.tdBrule p { padding-top: 1ex ; - padding-bottom: 1ex ; margin: 0ex ; } - -td.tdp , td.tdprule , td.tdP , td.tdPrule - { padding: 0ex .5em 0ex .5em ; } -td.tdm , td.tdmrule , td.tdM , td.tdMrule - { padding: 0ex .5em 0ex .5em ; } -td.tdb , td.tdbrule , td.tdB , td.tdBrule - { padding: 0ex .5em 0ex .5em ; } - - -/* table notes: */ -.tnotes { - margin: 0ex 5% 1ex 5% ; - padding: 0.5ex 1em 0.5ex 1em; - font-size:.85em; - text-align: left ; -} - -.tnotes dl dt p {margin-bottom:0px;} - -.tnoteitemheader {margin-right: 1em;} - - - -/* center, flushleft, flushright environments */ -div.center{text-align:center;} -div.center table {margin-left:auto;margin-right:auto;} -div.flushleft{text-align:left;} -div.flushleft table {margin-left:0em ; margin-right:auto;} -div.flushright{text-align:right;} -div.flushright table {margin-left:auto ; margin-right: 0em ;} - - - - -/* program listing callouts: */ -span.callout { - font-family: "DejaVu Sans", "Bitstream Vera Sans", - Geneva, Verdana, sans-serif ; - border-radius: .5em; - background-color:black; - color:white; - padding:0px .25em 0px .25em; - margin: 0 ; - font-weight: bold; - font-size:.72em ; -} - -div.programlisting pre.verbatim span.callout{ - font-size: .85em ; -} - - - - - -div.published -{ - text-align: center ; - font-variant: normal ; - font-style: italic ; - font-size: 1em ; - margin: 3ex 0em 3ex 0em ; -} - -div.subtitle -{ - text-align: center ; - font-variant: normal ; - font-style: italic ; - font-size: 1.25em ; - margin: 3ex 0em 3ex 0em ; -} - -div.subtitle p { margin: 1ex ; } - -div.author -{ - font-variant: normal ; - font-style: normal ; - font-size: 1em ; - margin: 3ex 0em 3ex 0em ; -} - -div.author table { - margin: 3ex auto 0ex auto ; - background: none ; -} - -div.author table tbody tr td { padding: .25ex ; } - -span.affiliation {font-size: .85em ; font-variant: small-caps; } - -div.titledate { - text-align: center ; - font-size: .85em ; - font-style: italic; - margin: 6ex 0em 6ex 0em ; -} - - -nav.topnavigation{ - text-align: left ; - padding: 0.5ex 1em 0.5ex 1em ; -/* margin: 2ex 0em 3ex 0em ; */ - margin: 0 ; - border-bottom: 1px solid silver ; - border-top: 1px solid silver ; - clear:right ; -} - -nav.botnavigation{ - text-align: left ; - padding: 0.5ex 1em 0.5ex 1em ; -/* margin: 3ex 0em 2ex 0em ; */ - margin: 0 ; - border-top: 1px solid silver ; - border-bottom: 1px solid silver ; - clear:right ; -} - - -header{ - line-height: 1.2 ; - font-size: 1em ; -/* border-bottom: 2px solid silver ; */ - margin: 0px ; - padding: 0ex 1em 0ex 1em ; - text-align:center ; -} - -header p {margin:0ex;padding:4ex 0em 2ex 0em ;text-align:center;} - - -footer{ - font-size: .85em ; - line-height: 1.2 ; - margin-top: 1ex ; - border-top: 2px solid silver ; - padding: 2ex 1em 2ex 1em ; - clear:right ; - text-align:left ; -} - - -a.linkhome { font-weight:bold ; font-size: 1em ;} - - -div.lateximagesource { padding: 0px ; margin: 0px ; display: none; } - -img.lateximage{ - padding: 0px 0px 0px 0px ; - box-shadow: none ; - border: none ; - background: none ; - margin: 0px 0px -.15ex 0px ; - /* pdfcrop leaves a slight margin, adjust to baseline */ - max-width: 100% ; - border-radius: 0ex ; - border: none ; -} - - - -nav.sidetoc { - font-family: "DejaVu Serif", "Bitstream Vera Serif", - "Lucida Bright", Georgia, serif; - float:right ; - width: 20%; - border-left: 1px solid silver; - border-top: 1px solid silver; - border-bottom: 1px solid silver; -/* border-top: 2px solid #808080 ; */ - background: #FAF7F4 ; - padding: 2ex 0em 2ex 1em ; - margin: 0ex 0em 2ex 1em ; - font-size:.9em ; - border-radius: 20px 0px 0px 20px ; - } - -div.sidetoccontents { -/* border-top: 1px solid silver ; */ - overflow-y: auto ; - width: 100% ; - text-align: left ; -} - -nav.sidetoc p {line-height:1.2 ; margin: 1ex .5em 1ex .5em ; - text-indent: 0 ; } -nav.sidetoc p a {color:black ; font-size: .7em ;} -div.sidetoctitle {font-size: 1.2em; font-weight:bold; text-align:center; - border-bottom: 1px solid silver ; } -nav.sidetoc a:hover {text-decoration: underline ; } - - - -section.textbody { margin: 0ex 1em 0ex 1em ;} - - -div.multicolsheading { -webkit-column-span: all; - -moz-column-span: all; column-span: all; } -div.multicols { -webkit-columns: 3 380px ; - -moz-columns: 3 380px ; columns: 3 380px ; } -div.multicols p {margin-top: 0ex} - - - -/* Used to support algorithmicx: */ -span.floatright { float: right ; } - - - - -/* Native LaTeX theorems: */ - -.theoremcontents { font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ; } -.theoremlabel { font-style: normal; font-weight: bold ; margin-right: .5em ; } - - -/* theorem, amsthm, and ntheorem packages */ - -span.theoremheader, -span.theoremheaderplain, -span.theoremheaderdefinition, -span.theoremheaderbreak, -span.theoremheadermarginbreak, -span.theoremheaderchangebreak, -span.theoremheaderchange, -span.theoremheadermargin -{ - font-style:normal ; font-weight: bold ; margin-right: 1em ; -} - -span.amsthmnameplain, -span.amsthmnamedefinition, -span.amsthmnumberplain, -span.amsthmnumberdefinition -{ - font-style:normal ; font-weight: bold ; -} - - -span.amsthmnameremark, -span.amsthmnumberremark -{font-style:italic ; font-weight: normal ; } - - -span.amsthmnoteplain, -span.amsthmnotedefinition -{font-style:normal ;} - - -span.theoremheaderremark, -span.theoremheaderproof, -span.amsthmproofname -{font-style:italic ; font-weight: normal ; margin-right: 1em ; } - -span.theoremheadersc -{ - font-style:normal ; - font-variant: small-caps ; - font-weight: normal ; - margin-right: 1em ; -} - -.theoremendmark {float:right} - -div.amsthmbodyplain, div.theorembodyplain, div.theorembodynonumberplain, -div.theorembodybreak, div.theorembodynonumberbreak, -div.theorembodymarginbreak, -div.theorembodychangebreak, -div.theorembodychange, -div.theorembodymargin -{ - font-style:italic; - margin-top: 3ex ; margin-bottom: 3ex ; -} - -div.theorembodydefinition, div.theorembodyremark, div.theorembodyproof, -div.theorembodyplainupright, nonumberplainuprightsc, -div.amsthmbodydefinition, div.amsthmbodyremark, -div.amsthmproof -{ - font-style: normal ; - margin-top: 3ex ; margin-bottom: 3ex ; -} - -span.amsthmnoteremark {} - - - -/* -For CSS LaTeX and related logos: -Based on: -http://edward.oconnor.cx/2007/08/tex-poshlet -http://nitens.org/taraborelli/texlogo -*/ - -.latexlogofont { - font-family: "Linux Libertine O", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-variant: normal ; -} - -.latexlogo { - font-family: "Linux Libertine O", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - letter-spacing: .03em ; - font-size: 1.1em; -} - -.latexlogo sup { - text-transform: uppercase; - letter-spacing: .03em ; - font-size: 0.85em; - vertical-align: 0.15em; - margin-left: -0.36em; - margin-right: -0.15em; -} - -.latexlogo sub { - text-transform: uppercase; - vertical-align: -0.5ex; - margin-left: -0.1667em; - margin-right: -0.125em; - font-size: 1em; -} - -.xetexlogo { - font-family: "Linux Libertine O", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - letter-spacing: .03em ; - font-size: 1.1em; -} - -/* A smaller gap between Xe and Tex v.s. LaTeX: */ -.xetexlogo sub { - text-transform: uppercase; - vertical-align: -0.5ex; - margin-left: -0.0667em; - margin-right: -0.2em; - font-size: 1em; - letter-spacing: .03em ; -} - -/* A large gap between Xe and LaTeX v.s. TeX: */ -.xelatexlogo sub { - text-transform: uppercase; - vertical-align: -0.5ex; - margin-left: -0.0667em; - margin-right: -.05em; - font-size: 1em; - letter-spacing: .03em ; -} - -.amslogo { - font-family: "TeXGyreChorus","URW Chancery L", - "Apple Chancery","ITC Zapf Chancery","Monotype Corsiva", - "Linux Libertine O", "Nimbus Roman No 9 L", "FreeSerif", - "Hoefler Text", Times, "Times New Roman", serif; - font-style: italic; -} - -.lyxlogo { - font-family: "URW Classico", Optima, "Linux Biolinum O", - "DejaVu Sans", "Bitstream Vera Sans", Geneva, - Verdana, sans-serif ; -} - - - - -/* Only display top and bottom navigation if a small screen: */ -/* Hide the sidetoc if a small screen: */ -nav.topnavigation { display:none; } -nav.botnavigation { display:none; } - -@media screen and (max-width: 45em) { -/* nav.sidetoc {display:none;} */ - nav.sidetoc { - float: none ; - width: 100% ; - margin: 5ex 0px 5ex 0px ; - padding: 0 ; - border-radius: 0 ; - border-bottom: 1px solid black ; - border-top: 1px solid black ; - box-shadow: none ; - } -/* nav.topnavigation { display:block } */ - nav.botnavigation { display:block } - .marginpar { - max-width: 100%; - float: none; - display:block ; - margin: 1ex 1em 1ex 1em ; - } -} - -@media print { - body { - font-family: "Linux Libertine O", - "DejaVu Serif", "Bitstream Vera Serif", - "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - } - nav.sidetoc { display:none; } - nav.topnavigation { display: none; } - nav.botnavigation { display: none; } -} - -@media handheld { - nav.sidetoc { display:none; } - nav.topnavigation { display:block } - nav.botnavigation { display:block } -} - -@media projection { - nav.sidetoc { display:none; } - nav.topnavigation { display:block } - nav.botnavigation { display:block } -} -\end{VerbatimOut} -% \end{Verbatim}% for syntax highlighting -% \end{macrocode} - - - - -% \subsection{lwarp\_sagebrush.css} - -% \DescribeFile{lwarp_sagebrush.css} -% An optional \CSS\ which may be used for -% a semi-modern appearance. -% -% If used, this must be present both when compiling the project -% and also when distributing the \HTML\ files. -% -% \begin{macrocode} -\begin{VerbatimOut}{lwarp_sagebrush.css} -@import url("lwarp.css") ; - - -A:link {color:#105030 ; text-decoration: none ; } -A:visited {color:#705030 ; text-shadow:1px 1px 2px #a0a0a0;} -A:hover {color:#006000 ; text-decoration: underline ; text-shadow:0px 0px 2px #a0a0a0;} -A:active {color:#00C000 ; text-shadow:1px 1px 2px #a0a0a0;} - - - -h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph -{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", - "Nimbus Roman No 9 L", "FreeSerif", - "Hoefler Text", Times, "Times New Roman", serif; - font-variant: small-caps ; - font-weight: normal ; - color: #304070 ; - text-shadow: 2px 2px 3px #808080; -} - -h1 { /* title of the entire website, used on each page */ - font-variant: small-caps ; - color: #304070 ; - text-shadow: 2px 2px 3px #808080; - background-color: #F7F7F0 ; - background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C4); -} - -h1 { - border-bottom: 1px solid #304070; - border-top: 2px solid #304070; -} - -h2 { - border-bottom: 1px solid #304070; - border-top: 2px solid #304070; - background-color: #F7F7F0 ; - background-image: linear-gradient(to bottom, #F7F7F0, #DAD0C0); -} - - - -div.abstract { - background: #f5f5eb ; - background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); - - border: 1px solid silver; - border-radius: 1em ; -} - -div.abstract dl {line-height:1.5;} -div.abstract dt {color:#304070;} - -div.abstracttitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-variant: small-caps ; - font-size:1.5em; - border-bottom: 1px solid silver ; - color: #304070 ; - text-align: center ; - text-shadow: 1px 1px 2px #808080; -} - -span.abstractrunintitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; -} - - -div.epigraph { - background: #f5f5eb ; - background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); - - border: 1px solid silver ; - border-radius: 1ex ; - box-shadow: 3px 3px 3px #808080 ; -} - - -.example { - background-color: #f5f5eb ; - background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); - -} - -div.exampletitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-variant: small-caps ; - border-bottom: 1px solid silver ; - color: #304070 ; - text-align: center ; - text-shadow: 1px 1px 2px #808080; -} - - -.sidebar { - background-color: #f5f5eb ; - background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); - -} - -div.sidebartitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-variant: small-caps ; - border-bottom: 1px solid silver ; - color: #304070 ; - text-align: center ; - text-shadow: 1px 1px 2px #808080; -} - - -.fancyvrblabel { - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-variant: small-caps ; - font-size: 1.5em ; - color: #304070 ; - text-align: center ; - text-shadow: 1px 1px 2px #808080; -} - - - -.minipage { - background-color: #eeeee7 ; - border: 1px solid silver ; - border-radius: 1ex ; -} - -.framed .minipage , .framedleftbar .minipage { - border: none ; - background: none ; - padding: 0ex ; - margin: 0ex ; -} - -figure.figure .minipage, figcaption .minipage { border: none; } - -div.marginblock div.minipage { border: none; } - -figure , div.marginblock { - background-color: #eeeee7 ; - border: 1px solid silver ; - border-radius: 1ex ; - box-shadow: 3px 3px 3px #808080 ; -} - -figure figure { - border: 1px solid silver ; - margin: 0em ; - box-shadow: none ; -} - -/* -figcaption { - border-top: 1px solid silver ; - border-bottom: 1px solid silver ; - background-color: #e8e8e8 ; -} -*/ - - -div.table { - box-shadow: 3px 3px 3px #808080 ; -} - -/* -.tnotes { - background: #e8e8e8; - border: 1px solid silver; -} -*/ - - -nav.topnavigation{ - background-color: #b0b8b0 ; - background-image: linear-gradient(to bottom,#e0e0e0,#b0b8b0) ; -} - -nav.botnavigation{ - background-color: #b0b8b0 ; - background-image: linear-gradient(to top,#e0e0e0,#b0b8b0) ; -} - - - -header{ - background-color: #F7F7F0 ; - background-image: linear-gradient(to top, #F7F7F0, #b0b8b0); -} - -footer{ - background-color: #F7F7F0 ; - background-image: linear-gradient(to bottom, #F7F7F0, #b0b8b0); -} - - - -nav.sidetoc { - background-color: #F7F7F0 ; - background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C0); - box-shadow: 3px 3px 3px #808080 ; - border-radius: 0px 0px 0px 20px ; - } - -div.sidetoctitle {color: #304070 ; } -nav.sidetoc a:hover {color:#006000 ; text-decoration: none ; text-shadow:0px 0px 2px #a0a0a0;} - - -@media screen and (max-width: 45em) { - nav.sidetoc { border-radius: 0 ; } -} - - -\end{VerbatimOut} -% \end{Verbatim}% for syntax highlighting -% \end{macrocode} - - - - -% \subsection{lwarp\_formal.css} - -% \DescribeFile{lwarp_formal.css} -% An optional \CSS\ which may be used for -% a more formal appearance. -% -% If used, this must be present both when compiling the project -% and also when distributing the \HTML\ files. % -% \begin{macrocode} -\begin{VerbatimOut}{lwarp_formal.css} -@import url("lwarp.css") ; - - - -A:link {color:#802020 ; text-decoration:none; } -A:visited {color:#802020 ; text-shadow:none ;} -A:hover {color:#400000 ; text-shadow:none ;} -A:active {color:#C00000 ; text-shadow:none ;} - - -body { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - background: #fffcf5; -} - -span.textrm { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; -} - -span.textsf { - font-family: "DejaVu Sans", "Bitstream Vera Sans", - Geneva, Verdana, sans-serif ; -} - - - -h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph -{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: #800000 ; - text-shadow: none ; -} - -h1, h2 { - background-color: #fffcf5 ; - background-image: none ; - border-bottom: 1px solid #808080; - border-top: 2px solid #808080; -} - -div.abstracttitle { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: black ; - text-shadow: none ; -} - -span.abstractrunintitle { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: black ; - text-shadow: none ; -} - -div.abstract { font-size: 100% } - -.sidebar { - background: #fffcf5; - background-image: none ; - margin: 2em 5% 2em 5%; - padding: 0.5em 1em; - border: none ; - border-top : 1px solid silver; - border-bottom : 1px solid silver; - font-size: 90% ; -} - -div.sidebartitle{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: #800000 ; - text-shadow: none ; - border: none ; -} - -.example { - background: #fffcf5; - background-image: none ; - margin: 2em 5% 2em 5%; - padding: 0.5em 1em; - border: none ; - border-top : 1px solid silver; - border-bottom : 1px solid silver; -} - -div.exampletitle{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: #800000 ; - text-shadow: none ; - border: none ; -} - -div.fancyvrblabel{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: #800000 ; - text-shadow: none ; - border: none ; -} - - - -.verse { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; -} - - -figure { - margin: 3ex 5% 3ex 5% ; - padding: 1ex 1em 1ex 1em ; - background-color: #fffcf5 ; - overflow-x: auto ; - border: none ; -/* border-top: 1px solid silver; */ -/* border-bottom: 1px solid silver; */ -} - - -figcaption , .lstlisting { - border: none ; -/* border-top: 1px solid silver ; */ -/* border-bottom: 1px solid silver ; */ - background-color: #fffcf5 ; -} - -.tnotes { - background: #fffcf5 ; -} - -.theorem { - background: none ; -} - -.minipage { - background-color: #fffcf5 ; - border: none ; -} - -div.floatrow figure { border: none ; } - -figure figure { border: none ; } - - -nav.toc, nav.lof, nav.lot, nav.lol { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; -} - -nav.sidetoc { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - background-image: linear-gradient(to bottom, #fffcf5, #C0C0C0); - border-radius: 0px 0px 0px 20px ; -} - -div.sidetoctitle{ - color: #800000 ; -} - -header{ - background-color: #e0e0e0 ; - background-image: linear-gradient(to top, #fffcf5, #b0b0b0); - text-align:center ; -} - -footer{ - background-color: #e0e0e0 ; - background-image: linear-gradient(to bottom, #fffcf5, #b0b0b0); - padding: 2ex 1em 2ex 1em ; - clear:right ; - text-align:left ; -} - -nav.botnavigation { - background: #dedcd5 ; - border-top: 1px solid black ; -} -\end{VerbatimOut} -% \end{Verbatim}% for syntax highlighting -% \end{macrocode} - - - -% \subsection{sample\_project.css} - -% \DescribeFile{sample_project.css} -% The project-specific \CSS\ file. Use with \cs{NewCSS}. -% -% If used, this must be present both when compiling the project -% and also when distributing the \HTML\ files. -% -% \begin{macrocode} -\begin{VerbatimOut}{sample_project.css} -/* ( --- Start of project.css --- ) */ -/* A sample project-specific CSS file for lwarp --- ) */ - -/* Load default lwarp settings: */ -@import url("lwarp.css") ; -/* or lwarp_formal.css, lwarp_sagebrush.css */ - -/* Project-specific CSS setting follow here. */ -/* . . . */ - -/* ( --- End of project.css --- ) */ -\end{VerbatimOut} -% \end{Verbatim}% for syntax highlighting -% \end{macrocode} - - - -% \subsection{lwarp\_html.xdy} - -% \DescribeFile{lwarp_html.xdy} -% Used to modify the index for \pkg{lwarp}. -% -% This must be present when compiling the project, -% but does not need to be present when distributing -% the resulting \HTML\ files. -% -% \begin{macrocode} -\begin{VerbatimOut}{lwarp_html.xdy} -(require "tex/inputenc/latin.xdy") -(merge-rule "\\PS *" "Postscript") -(require "texindy.xdy") -(require "page-ranges.xdy") -(require "book-order.xdy") -(markup-locref :open "\hyperindexref{" :close "}") -\end{VerbatimOut} -% \end{Verbatim}% for syntax highlighting -% \end{macrocode} - - - -% \subsection{lwarp\_mathjax.txt} - -% \DescribeFile{lwarp_mathjax.txt} -% Used by \pkg{lwarp} when using MathJax. -% -% This must be present when compiling the project, -% but does not need to be present when distributing -% the resulting \HTML\ files. -% -% \changes{v0.28}{2017/04/11}{File lwarp\_mathjax.txt: Updated CDN repository.} -% -% -% \begin{macrocode} -\begin{VerbatimOut}{lwarp_mathjax.txt} -<!-- https://groups.google.com/forum/#!topic/ - mathjax-users/jUtewUcE2bY --> -<script type="text/x-mathjax-config"> -MathJax.Hub.Register.StartupHook("TeX AMSmath Ready",function () { - var seteqsectionDefault = {name: "", num: 0}; - var seteqsections = {}, seteqsection = seteqsectionDefault; - var TEX = MathJax.InputJax.TeX, PARSE = TEX.Parse; - var AMS = MathJax.Extension["TeX/AMSmath"]; - TEX.Definitions.Add({ - macros: { - seteqsection: "mySection", - seteqnumber: "mySetEqNumber" - } - }); - - PARSE.Augment({ - mySection: function (name) { - seteqsection.num = AMS.number; - var n = this.GetArgument(name); - if (n === "") { - seteqsection = seteqsectionDefault; - } else { - if (!seteqsections["_"+n]) - seteqsections["_"+n] = {name:n, num:0}; - seteqsection = seteqsections["_"+n]; - } - AMS.number = seteqsection.num; - }, - mySetEqNumber: function (name) { - var n = this.GetArgument(name); - if (!n || !n.match(/^ *[0-9]+ *$/)) - n = ""; else n = parseInt(n)-1; - <!-- $ syntax highlighting --> - if (n === "" || n < 1) - TEX.Error - ("Argument to "+name+" should be a positive integer"); - AMS.number = n; - } - }); - MathJax.Hub.Config({ - TeX: { - equationNumbers: { - formatTag: function (n) - {return "("+(seteqsection.name+"."+n).replace(/^\./,"")+")"}, - formatID: function (n) { - n = (seteqsection.name+'.'+n).replace - (/[:"'<>&]/g,"").replace(/^\./,""); - return 'mjx-eqn-' + n; - } - } - } - }); -}); -</script> - -<!-- http://docs.mathjax.org/en/latest/options/ThirdParty.html --> -<script type="text/x-mathjax-config"> - MathJax.Ajax.config.path["Contrib"] = - "https://cdn.mathjax.org/mathjax/contrib"; -</script> - -<!-- https://github.com/mathjax/MathJax-third-party-extensions/ - tree/master/siunitx --> -<script type="text/x-mathjax-config"> - MathJax.Hub.Config({ - extensions: ["tex2jax.js","[Contrib]/siunitx/siunitx.js"], - jax: ["input/TeX","output/HTML-CSS"], - tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}, - TeX: {extensions: ["AMSmath.js","AMSsymbols.js", "sinuitx.js"]} - }); - </script> - -<script type="text/x-mathjax-config"> -MathJax.Hub.Config({ - TeX: { - equationNumbers: { - autoNumber: "AMS" - } - } -}); -</script> - -<!-- Alternative CDN provider: --> -<script type="text/javascript" async - src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML-full"> -</script> - -<!-- No longer supported after April 30, 2017: --> -<!-- -<script - src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full"> -</script> ---> - -\end{VerbatimOut} -% \end{Verbatim}% for syntax highlighting -% \end{macrocode} - - - -% \subsection{Lwarpmk option} - -% The following is only generated if the |lwarpmk| option -% was given to \pkg{lwarp-newproject}. -% \begin{macrocode} -\begin{LWR@createlwarpmk} -% \end{macrocode} - -% \DescribeProgram{lwarpmk} Creates a local copy of |lwarpmk|: -% -% \changes{v0.21}{2017/02/11}{lwarpmk: Fix: \protect\texttt{lwarpmk again} for Windows.} -% \changes{v0.21}{2017/02/22}{lwarpmk: Fix: \protect\texttt{lwarpmk limages} for Windows.} -% \changes{v0.21}{2017/02/22}{lwarpmk: Fix: \protect\texttt{lwarpmk} uses \texttt{lateximages} text file instead of shell script.} -% \changes{v0.28}{2017/04/14}{lwarpmk: Add: \protect\texttt{printglossary} and \protect\texttt{htmlglossary} commands.} -% \changes{v0.29}{2017/04/15}{lwarpmk: Add: \protect\texttt{language} option for config files.} -% -% \begin{macrocode} -\begin{VerbatimOut}{lwarpmk.lua} -#!/usr/bin/env texlua - --- Copyright 2016-2017 Brian Dunn - --- Print the usage of the lwarpmk command: - -printversion = "v0.29" - -function printhelp () -print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ; -end - -function printusage () -print ( [[ - -lwarpmk print [project]: Compile a print version. -lwarpmk printindex [project]: Process the index for the print version. -lwarpmk printglossary [project]: Process the glossary for the print version. -lwarpmk html [project]: Compile an HTML version. -lwarpmk htmlindex [project]: Process the index for the html version. -lwarpmk htmlglossary [project]: Process the glossary for the html version. -lwarpmk again [project]: Touch the source code to trigger recompiles. -lwarpmk limages [project]: Process the "lateximages" created by lwarp.sty. -lwarpmk pdftohtml [project]: - For use with latexmk or a Makefile: - Convert project_html.pdf to project_html.html and - individual HTML files. -lwarpmk clean [project]: Remove project.aux, .toc, .lof/t, .idx, .ind, .log, .gl* -lwarpmk cleanall [project]: Remove auxiliary files and also project.pdf, *.html -lwarpmk -h: Print this help message. -lwarpmk --help: Print this help message. - -]] ) -printconf () -end - --- Print the format of the configuration file lwarpmk.conf: - -function printconf () -print ( [[ -An example lwarpmk.conf or <project>.lwarpmkconf project file: --- -opsystem = "Unix" (or "Windows") -latexname = "pdflatex" (or "lualatex", or "xelatex") -sourcename = "projectname" (the source-code filename w/o .tex) -homehtmlfilename = "index" (or perhaps the project name) -htmlfilename = "" (or "projectname" - filename prefix) -uselatexmk = "false" (or "true" to use latexmk to build PDFs) -languge = "english" (use a language supported by xindy) --- -Filenames must contain only letters, numbers, underscore, or dash. -Values must be in "quotes". - -]] ) ; -end - - --- Split one large sourcefile into a number of files, --- starting with destfile. --- The file is split at each occurance of <!--|Start file|newfilename|* - -function splitfile (destfile,sourcefile) -print ("lwarpmk: Splitting " .. sourcefile .. " into " .. destfile) ; -io.input(sourcefile) -io.output(destfile) -for line in io.lines() do -i,j,copen,cstart,newfilename = string.find (line,"(.*)|(.*)|(.*)|") ; -if ( (i~= nil) and (copen == "<!--") and (cstart == "Start file")) then -- split the file -io.output(newfilename) ; -else -- not a splitpoint -io.write (line .. "\n") ; -end -end -- do -end -- function - --- Incorrect value, so print an error and exit. - -function cvalueerror ( line, linenum , cvalue ) - print ( linenum .. " : " .. line ) ; - print ("lwarpmk: incorrect variable value \"" .. cvalue .. "\" in lwarpmk.conf.\n" ) ; - printconf () ; - os.exit(1) ; -end - --- Load settings from the project's "lwarpmk.conf" file: - -function loadconf () --- Default configuration filename: -local conffile = "lwarpmk.conf" --- Optional configuration filename: -if arg[2] ~= nil then conffile = arg[2]..".lwarpmkconf" end --- Default language: -language = "english" --- Verify the file exists: -if (lfs.attributes(conffile,"mode")==nil) then -- file not exists -print("lwarpmk: " .. conffile .." does not exist.") -print("lwarpmk: " .. arg[2] .. " does not appear to be a project name.\n") -printhelp () ; -os.exit(1) -- exit the entire lwarpmk script -else -- file exists --- Read the file: -print ("lwarpmk: Reading " .. conffile ..".") -io.input(conffile) ; --- Scan each line: -local linenum = 0 -for line in io.lines() do -- scan lines -linenum = linenum + 1 -i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*\"([%w-_]*)\"") ; --- Error if incorrect enclosing characters: -if ( i == nil ) then -print ( linenum .. " : " .. line ) ; -print ( "lwarpmk: Incorrect entry in " .. conffile ..".\n" ) ; -printconf () ; -os.exit(1) ; -end -if ( cvarname == "opsystem" ) then - -- Verify choice of opsystem: - if ( (cvalue == "Unix") or (cvalue == "Windows") ) then - opsystem = cvalue - else - cvalueerror ( line, linenum , cvalue ) - end -elseif ( cvarname == "latexname" ) then - -- Verify choice of LaTeX compiler: - if ( - (cvalue == "pdflatex") or - (cvalue == "xelatex") or - (cvalue == "lualatex") - ) then - latexname = cvalue - else - cvalueerror ( line, linenum , cvalue ) - end -elseif ( cvarname == "sourcename" ) then sourcename = cvalue -elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue -elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue -elseif ( cvarname == "uselatexmk" ) then uselatexmk = cvalue -elseif ( cvarname == "language" ) then language = cvalue -else -print ( linenum .. " : " .. line ) ; -print ("lwarpmk: Incorrect variable name \"" .. cvarname .. "\" in " .. conffile ..".\n" ) ; -printconf () ; -os.exit(1) ; -end -end -- do scan lines -end -- file exists --- Select some operating-system commands: -if opsystem=="Unix" then -- For Unix / Linux / Mac OS: -rmname = "rm" -mvname = "mv" -touchnamepre = "touch" -touchnamepost = "" -dirslash = "/" -opquote= "\'" -elseif opsystem=="Windows" then -- For Windows -rmname = "DEL" -mvname = "MOVE" -touchnamepre = "COPY /b" -touchnamepost = "+,," -dirslash = "\\" -opquote= "\"" -else print ( "lwarpmk: Select Unix or Windows for opsystem" ) -end --- for Windows -end -- loadconf - - -function refreshdate () -os.execute(touchnamepre .. " " .. sourcename .. ".tex " .. touchnamepost) -end - - --- Scan the LaTeX log file for the phrase "Rerun to get", --- indicating that the file should be compiled again. --- Return true if found. - -function reruntoget (filesource) -io.input(filesource) -for line in io.lines() do -if ( string.find(line,"Rerun to get") ~= nil ) then return true end -end -return false -end - --- Compile one time, return true if should compile again. --- fsuffix is "" for print, "_html" for HTML output. - -function onetime (fsuffix) -print("lwarpmk: Compiling with " .. latexname .. " " .. sourcename..fsuffix) -err = os.execute( --- "echo " .. - latexname .. " " .. sourcename..fsuffix ) -if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end -return (reruntoget(sourcename .. fsuffix .. ".log") ) ; -end - --- Compile up to five times. --- fsuffix is "" for print, "_html" for HTML output - -function manytimes (fsuffix) -if onetime(fsuffix) == true then -if onetime(fsuffix) == true then -if onetime(fsuffix) == true then -if onetime(fsuffix) == true then -if onetime(fsuffix) == true then -end end end end end -end - --- Exit if the given file does not exist. - -function verifyfileexists (filename) -if (lfs.attributes ( filename , "modification" ) == nil ) then -print ( "lwarpmk: " .. filename .. " not found." ) ; -os.exit (1) ; -end -end - --- Convert <project>_html.pdf into HTML files: - -function pdftohtml () - -- Convert to text: - print ("lwarpmk: Converting " .. sourcename .."_html.pdf to " .. sourcename .. "_html.html") - os.execute("pdftotext -enc UTF-8 -nopgbrk -layout " .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") - -- Split the result into individual HTML files: - splitfile (homehtmlfilename .. ".html" , sourcename .. "_html.html") -end - --- Remove auxiliary files: - -function removeaux () - os.execute ( rmname .. " " .. - sourcename ..".aux " .. sourcename .. "_html.aux " .. - sourcename ..".toc " .. sourcename .. "_html.toc " .. - sourcename ..".lof " .. sourcename .. "_html.lof " .. - sourcename ..".lot " .. sourcename .. "_html.lot " .. - sourcename ..".idx " .. sourcename .. "_html.idx " .. - sourcename ..".ind " .. sourcename .. "_html.ind " .. - sourcename ..".log " .. sourcename .. "_html.log " .. - sourcename ..".gl* " .. sourcename .. "_html.gl* " - ) -end - - - --- Create lateximages based on lateximages.txt: -function createlateximages () -print ("lwarpmk: Creating lateximages.") -io.input("lateximages.txt") --- Create the lateximages directory, ignore error if alreadt exists -err = os.execute("mkdir lateximages") --- Scan lateximages.txt -for line in io.lines() do --- lwimgpage is the page number in the PDF which has the image --- lwimgnum is the sequential lateximage number to assign for the image -i,j,lwimgpage,lwimgnum = string.find (line,"|(.*)|(.*)|") --- For each entry: -if ( (i~=nil) ) then --- Separate out the image into its own single-page pdf: -err = os.execute( -"pdfseparate -f " .. lwimgpage .. " -l " .. - lwimgpage .. " " .. sourcename .."_html.pdf lateximagetemp-%d.pdf") --- Crop the image: -err = os.execute( -"pdfcrop --hires lateximagetemp-" .. lwimgpage ..".pdf lateximage-" .. lwimgnum ..".pdf") -if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end --- Convert the image to svg: -err = os.execute( -"pdftocairo -svg lateximage-" .. lwimgnum ..".pdf lateximage-" .. lwimgnum ..".svg") -if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end --- Move the result into lateximages/: -err = os.execute( -mvname .. " lateximage-" .. lwimgnum ..".svg lateximages" .. dirslash ) -if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end --- Remove the temporary files: -err = os.execute( -rmname .. " lateximage-" .. lwimgnum ..".pdf lateximagetemp-" .. lwimgpage ..".pdf") -if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end -end -end -- do -end -- function - - - - --- lwarpmk --version : - -if (arg[1] == "--version") then -print ( "lwarpmk: " .. printversion ) - -else -- not -- version - --- print intro: - -print ("lwarpmk: " .. printversion .. " Automated make for the LaTeX lwarp package.") - --- lwarpmk print: - -if arg[1] == "print" then -loadconf () -if ( uselatexmk == "true" ) then - os.execute ( "latexmk -pdf -dvi- -ps- -pdflatex=\"" .. latexname .." %O %S\" " .. sourcename ..".tex" ) ; - print ("lwarpmk: Done.") -else -- not latexmk - verifyfileexists (sourcename .. ".tex") ; - -- See if up to date: - if ( - ( lfs.attributes ( sourcename .. ".pdf" , "modification" ) == nil ) or - ( - lfs.attributes ( sourcename .. ".tex" , "modification" ) > - lfs.attributes ( sourcename .. ".pdf" , "modification" ) - ) - ) then - -- Recompile if not yet up to date: - manytimes("") - print ("lwarpmk: Done.") ; - else - print ("lwarpmk: " .. sourcename .. ".pdf is up to date.") ; - end -end -- not latexmk - --- lwarp printindex: --- Compile the index then touch the source --- to trigger a recompile of the document: - -elseif arg[1] == "printindex" then -loadconf () -print ("lwarpmk: Processing the index.") -os.execute("texindy -M lwarp_html.xdy " .. sourcename .. ".idx") -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarp printglossary: --- Compile the glossary then touch the source --- to trigger a recompile of the document: - -elseif arg[1] == "printglossary" then -loadconf () -print ("lwarpmk: Processing the glossary.") - -os.execute("xindy -L " .. language .. " -C utf8 -I xindy -M " .. sourcename .. - " -t " .. sourcename .. ".glg -o " .. sourcename .. ".gls " - .. sourcename .. ".glo") -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk html: - -elseif arg[1] == "html" then -loadconf () -if ( uselatexmk == "true" ) then - -- 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 " - .. "-e " - .. opquote .. "$makeindex = q/texindy -M lwarp_html.xdy/" .. opquote - .. " -pdflatex=\"" .. latexname .." %O %S\" " - .. sourcename .."_html.tex" ) ; - if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end - pdftohtml () - print ("lwarpmk: Done.") -else -- not latexmk - verifyfileexists ( sourcename .. ".tex" ) ; - -- See if exists and is up to date: - if ( - ( lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) == nil ) or - ( - lfs.attributes ( sourcename .. ".tex" , "modification" ) > - lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) - ) - ) then - -- Recompile if not yet up to date: - manytimes("_html") - pdftohtml () - print ("lwarpmk: Done.") - else - print ("lwarpmk: " .. homehtmlfilename .. ".html is up to date.") - end -end -- not latexmk - -elseif arg[1] == "pdftohtml" then - loadconf () - pdftohtml () - --- lwarpmk htmlindex: --- Compile the index then touch the source --- to trigger a recompile of the document: - -elseif arg[1] == "htmlindex" then -loadconf () -print ("lwarpmk: Processing the index.") -os.execute("texindy -M lwarp_html.xdy " .. sourcename .. "_html.idx") -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk htmlglossary: --- Compile the glossary then touch the source --- to trigger a recompile of the document: - -elseif arg[1] == "htmlglossary" then -loadconf () -print ("lwarpmk: Processing the glossary.") - -os.execute("xindy -L " .. language .. " -C utf8 -I xindy -M " ..sourcename .. - "_html -t " .. sourcename .. "_html.glg -o " ..sourcename .. - "_html.gls " ..sourcename .. "_html.glo") - -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk limages: --- Scan the lateximages.txt file to create lateximages, --- then touch the source to trigger a recompile. - -elseif arg[1] == "limages" then -loadconf () -print ("lwarpmk: Processing images.") -createlateximages () -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk again: --- Touch the source to trigger a recompile. - -elseif arg[1] == "again" then -loadconf () -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk clean: --- Remove project.aux, .toc, .lof, .lot, .idx, .ind, .log, .gl* - -elseif arg[1] == "clean" then -loadconf () -removeaux () -print ("lwarpmk: Done.") - --- lwarpmk cleanall --- Remove project.aux, .toc, .lof, .lot, .idx, .ind, .log, .gl* --- and also project.pdf, *.html - -elseif arg[1] == "cleanall" then -loadconf () -removeaux () -os.execute ( rmname .. " " .. - sourcename .. ".pdf " .. sourcename .. "_html.pdf " .. - "*.html" - ) -print ("lwarpmk: Done.") - --- lwarpmk with no argument : - -elseif (arg[1] == nil) then -printhelp () - --- lwarpmk -h or lwarpmk --help : - -elseif (arg[1] == "-h" ) or (arg[1] == "--help") then -printusage () - -else -print ("lwarpmk: Unknown command \""..arg[1].."\".\n") -printhelp () -end - -end -- not --version -\end{VerbatimOut} -% \end{Verbatim}% for syntax highlighting -% \end{macrocode} - -% \begin{macrocode} -\end{LWR@createlwarpmk} -% \end{macrocode} - - -% \iffalse -%</lwarp-newproject> -% \fi % % % @@ -18766,6 +18968,7 @@ end -- not --version % % % +% % \clearpage % % \iffalse @@ -26208,7 +26411,7 @@ style="width:\rndprintlength{\LWR@wrapwidth} ; % % ^^A \begin{macro}{\pagecolor} % \cs{pagecolor} % \oarg{model} \marg{color} -% is ignored. Use |\NewCSS| instead. +% is ignored. Use |\CSSFilename| instead. % \begin{macrocode} \newcommand*{\LWR@pagecolor}[2][named]{} % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/lwarp/lwarp.ins b/Master/texmf-dist/source/latex/lwarp/lwarp.ins index 8811bb697af..5b07dcdb134 100644 --- a/Master/texmf-dist/source/latex/lwarp/lwarp.ins +++ b/Master/texmf-dist/source/latex/lwarp/lwarp.ins @@ -33,7 +33,6 @@ version 2005/12/01 or later. \askforoverwritefalse \generate{ \file{lwarp.sty}{\from{lwarp.dtx}{package}} -\file{lwarp-newproject.sty}{\from{lwarp.dtx}{lwarp-newproject}} \file{lwarp-abstract.sty}{\from{lwarp.dtx}{abstract}} \file{lwarp-afterpage.sty}{\from{lwarp.dtx}{afterpage}} \file{lwarp-algorithmicx.sty}{\from{lwarp.dtx}{algorithmicx}} diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-newproject.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-newproject.sty deleted file mode 100644 index dadda5adcd6..00000000000 --- a/Master/texmf-dist/tex/latex/lwarp/lwarp-newproject.sty +++ /dev/null @@ -1,2217 +0,0 @@ -%% -%% This is file `lwarp-newproject.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% lwarp.dtx (with options: `lwarp-newproject') -%% This is a generated file. -%% Copyright 2016-2017 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. - -\ProvidesPackage{lwarp-newproject} - -\RequirePackage{etoolbox} -\RequirePackage{comment} -\RequirePackage{fancyvrb} -\RequirePackage{ifplatform}% sense op-system platform -\RequirePackage{iftex}% sense pdflatex/lualatex/xelatex -\RequirePackage{kvoptions} -\SetupKeyvalOptions{family=LWRNP,prefix=LWRNP@} - -\newbool{LWRNP@genconf} -\boolfalse{LWRNP@genconf} - -\excludecomment{LWR@createlwarpmk} - -\DeclareVoidOption{warpprint}{\booltrue{LWRNP@genconf}} -\DeclareVoidOption{warpHTML}{\boolfalse{LWRNP@genconf}} -\DeclareVoidOption{lwarpmk}{\includecomment{LWR@createlwarpmk}} -\DeclareStringOption[\jobname]{BaseJobname} -\DeclareStringOption[english]{lwarpmklang} - -\booltrue{LWRNP@genconf}% warpprint - -\ProcessKeyvalOptions*\relax - -\providecommand*{\BaseJobname}{\LWRNP@BaseJobname} - -\providecommand*{\HomeHTMLFileName}{\BaseJobname} -\providecommand*{\HTMLfiveName}{} -\providecommand*{\UseLatexmk}{false} - -\ifbool{LWRNP@genconf}{\typeout{lwarp-newproject: generating configuration files}}{} - -\ifbool{LWRNP@genconf}{ -\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} -\immediate\openout\LWR@file=\jobname_html.tex -\immediate\write\LWR@file{% -\detokenize{\PassOptionsToPackage}% -{warpHTML,BaseJobname=\jobname}{lwarp}% -} -\immediate\write\LWR@file{% -\detokenize{\PassOptionsToPackage}% -{warpHTML,BaseJobname=\jobname}{lwarp-newproject}% -} -\immediate\write\LWR@file{% -\detokenize{\input}\string{\jobname.tex\string }% -} -\immediate\closeout\LWR@file -}{} - -\ifbool{LWRNP@genconf}{ -\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} -\immediate\openout\LWR@file=\jobname.lwarpmkconf -\ifwindows -\immediate\write\LWR@file{opsystem = "Windows"} -\else -\immediate\write\LWR@file{opsystem = "Unix"} -\fi -\ifPDFTeX -\immediate\write\LWR@file{latexname = "pdflatex"} -\fi -\ifXeTeX -\immediate\write\LWR@file{latexname = "xelatex"} -\fi -\ifLuaTeX -\immediate\write\LWR@file{latexname = "lualatex"} -\fi -\immediate\write\LWR@file{sourcename = "\jobname"} -\immediate\write\LWR@file{% -homehtmlfilename = "\HomeHTMLFileName"% -} -\immediate\write\LWR@file{htmlfilename = "\HTMLfiveName"} -\immediate\write\LWR@file{uselatexmk = "\UseLatexmk"} -\immediate\write\LWR@file{language = "\LWRNP@lwarpmklang"} -\immediate\closeout\LWR@file -}{} - - -\begin{VerbatimOut}{lwarp.css} -/* - CSS stylesheet for the LaTeX lwarp package - Copyright 2016-2017 Brian Dunn — BD Tech Concepts LLC -*/ - -/* a fix for older browsers: */ -header, section, footer, aside, nav, main, - article, figure { display: block; } - -A:link {color:#000080 ; text-decoration: none ; } -A:visited {color:#800000 ; } -A:hover {color:#000080 ; text-decoration: underline ;} -A:active {color:#800000 ; } - -a.tocpart {display: inline-block ; margin-left: 0em ; - font-weight: bold ;} -a.tocchapter {display: inline-block ; margin-left: 0em ; - font-weight: bold ;} -a.tocsection {display: inline-block ; margin-left: 1em ; - text-indent: -.5em ; font-weight: bold ; } -a.tocsubsection {display: inline-block ; margin-left: 2em ; - text-indent: -.5em ; } -a.tocsubsubsection {display: inline-block ; margin-left: 3em ; - text-indent: -.5em ; } -a.tocparagraph {display: inline-block ; margin-left: 4em ; - text-indent: -.5em ; } -a.tocsubparagraph {display: inline-block ; margin-left: 5em ; - text-indent: -.5em ; } -a.tocfigure {margin-left: 0em} -a.tocsubfigure {margin-left: 2em} -a.toctable {margin-left: 0em} -a.tocsubtable {margin-left: 2em} -a.toctheorem {margin-left: 0em} -a.toclstlisting {margin-left: 0em} - -body { - font-family: "DejaVu Serif", "Bitstream Vera Serif", - "Lucida Bright", Georgia, serif; - background: #FAF7F4 ; - color: black ; - margin:0em ; - padding:0em ; - font-size: 100% ; - line-height: 1.2 ; -} - -p {margin: 1.5ex 0em 1.5ex 0em ;} - -/* Holds a section number to add space between it and the name */ -span.sectionnumber { margin-right: .6em } - -/* Inserted in front of index lines */ -span.indexitem {margin-left: 0em} -span.indexsubitem {margin-left: 2em} -span.indexsubsubitem {margin-left: 4em} - -div.hidden { display: none ; } - -kbd { - font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", - "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", - "Courier New", monospace; - font-size: 100% ; -} - -span.strong { font-weight: bold; } - -span.textmd { font-weight: normal; } - -span.textsc { font-variant: small-caps; } - -span.textup { font-variant: normal; } - -span.textrm { - font-family: "DejaVu Serif", "Bitstream Vera Serif", - "Lucida Bright", Georgia, serif; -} - -span.textsf { - font-family: "DejaVu Sans", "Bitstream Vera Sans", - Geneva, Verdana, sans-serif ; -} - -span.attribution { - margin-left: 1em ; font-size: 80% ; font-variant: small-caps; -} - -span.citetitle { - margin-left: 1em ; font-size: 80% ; font-style: oblique; -} - -span.poemtitle { - font-size: 120% ; font-weight: bold; -} - -blockquote { -margin-left: 0px ; -margin-right: 0px ; -} - -blockquote p { - line-height: 1.5; - text-align: left ; - font-size: .85em ; - margin-left: 3em ; -margin-right: 3em ; -} - -blockquotation { -margin-left: 0px ; -margin-right: 0px ; -} - -blockquotation p { - line-height: 1.5; - text-align: left ; - font-size: .85em ; - margin-left: 3em ; -margin-right: 3em ; -} - -div.epigraph { - line-height: 1.2; - text-align: left ; - padding: 3ex 1em 0ex 1em ; -/* margin: 3ex auto 3ex auto ; */ /* Epigraph centered */ - margin: 3ex 1em 3ex auto ; /* Epigraph to the right */ -/* margin: 3ex 1em 3ex 1em ; */ /* Epigraph to the left */ - font-size: .85em ; - max-width: 27em ; -} - -div.epigraphsource{ - text-align:right ; - margin-left:auto ; -/* max-width: 50% ; */ - border-top: 1px solid #A0A0A0 ; - padding-bottom: 3ex ; - line-height: 1.2; -} - -div.epigraph p { padding: .5ex ; margin: 0ex ;} -div.epigraphsource p { padding: .5ex 0ex 0ex 0ex ; margin: 0ex ;} - -/* lettrine package: */ -span.lettrine { font-size: 3ex ; float: left ; } -span.lettrinetext { font-variant: small-caps ; } - -/* ulem and soul packages: */ -span.uline { - text-decoration: underline ; - text-decoration-skip ; -} - -span.uuline { - text-decoration: underline ; - text-decoration-skip ; - text-decoration-style: double ; -} - -span.uwave { - text-decoration: underline ; - text-decoration-skip ; - text-decoration-style: wavy ; -} - -span.sout { - text-decoration: line-through ; -} - -span.xout { - text-decoration: line-through ; -} - -span.dashuline { - text-decoration: underline ; - text-decoration-skip ; - text-decoration-style: dashed ; -} - -span.dotuline { - text-decoration: underline ; - text-decoration-skip ; - text-decoration-style: dotted ; -} - -span.letterspacing { letter-spacing: .2ex ; } - -span.capsspacing { - font-variant: small-caps ; - letter-spacing: .1ex ; -} - -span.highlight { background: #F8E800 ; } - -html body { - margin: 0 ; - line-height: 1.2; -} - -body div { - margin: 0ex; -} - -h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph -{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - font-style: normal ; - font-weight: bold ; - text-align: left ; -} - -h1 { /* title of the entire website, used on each page */ - text-align: center ; - font-size: 2.5em ; - padding: .4ex 0em 0ex 0em ; -} -h2 { font-size: 2.25em } -h3 { font-size: 2em } -h4 { font-size: 1.75em } -h5 { font-size: 1.5em } -h6 { font-size: 1.25em } -span.paragraph {font-size: 1em ; font-variant: normal ; - margin-right: 1em ; } -span.subparagraph {font-size: 1em ; font-variant: normal ; - margin-right: 1em ; } - -/* Title of the file */ -h1 { - margin: 0ex 0em 0ex 0em ; - line-height: 1.3; - text-align: center ; -} - -/* Part */ -h2 { - margin: 1ex 0em 1ex 0em ; - line-height: 1.3; - text-align: center ; -} - -/* Chapter */ -h3 { - margin: 3ex 0em 1ex 0em ; - line-height: 1.3; -} - -/* Section */ -h4 { - margin: 3ex 0em 1ex 0em ; - line-height: 1.3; -} - -/* Sub-Section */ -h5 { - margin: 3ex 0em 1ex 0em ; - line-height: 1.3; -} - -/* Sub-Sub-Section */ -h6 { - margin: 3ex 0em 1ex 0em ; - line-height: 1.3; -} - -div.titlepage { - text-align: center ; -} - -.footnotes { - font-size: .85em ; - margin: 3ex 1em 0ex 1em ; - padding-bottom: 1ex ; -border-top: 1px solid silver ; -} - -.marginpar { - max-width:50%; - float:right; - text-align:left; - margin: 1ex 0.5em 1ex 1em ; - padding: 1ex 0.5em 1ex 0.5em ; - font-size: 85% ; - border-top: 1px solid silver ; - border-bottom: 1px solid silver ; - overflow-x: auto; -} - -.marginpar br { margin-bottom: 2ex ; } - -div.marginblock { - max-width:50%; - float:right; - text-align:left; - margin: 1ex 0.5em 1ex 1em ; - padding: 1ex 0.5em 1ex 0.5em ; - overflow-x: auto; -} - -div.marginblock div.minipage { - display: block ; - margin: 0pt auto 0pt auto ; -} - -div.marginblock div.minipage p { font-size: 85%} - -div.marginblock br { margin-bottom: 2ex ; } - -section.textbody div.footnotes{ - margin: 3ex 0em 0ex 0em ; - border-bottom: 2px solid silver ; -} - -.footnoteheader { - border-top: 2px solid silver ; - margin-top: 3ex ; - padding-top: 1ex ; - font-weight: bold ; -} - -.mpfootnotes { - text-align: left ; - font-size: .85em ; - margin-left: 1em ; - border-top: 1px solid silver ; -} - -/* Remove footnote top border in the title page. */ -div.titlepage div.mpfootnotes { - border-top: none ; -} - -ol { - margin: 1ex 1em 1ex 0em; - line-height: 1.2; -} - -ul, body dir, body menu { - margin: 1ex 1em 1ex 0em; - line-height: 1.2; -} - -li { margin: 0ex 0em 1ex 0em; } - -html { - margin: 0; - padding: 0; -} - -.programlisting { - font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", - "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", - "Courier New", monospace; - margin: 1ex 0ex 1ex 0ex ; - padding: .5ex 0pt .5ex 0pt ; - overflow-x: auto; -} - -section.textbody>pre.programlisting { -border-top: 1px solid silver ; -border-bottom: 1px solid silver ; -} - -.inlineprogramlisting { - font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", - "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", - "Courier New", monospace; - overflow-x: auto; -} - -div.abstract { - margin: 2em 5% 2em 5% ; - padding: 1ex 1em 1ex 1em ; -/* font-weight: bold ; */ - font-size: 90% ; -} - -div.abstract dl {line-height:1.5;} -div.abstract dt {color:#304070;} - -div.abstracttitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-size:1.25em; - text-align: center ; -} - -span.abstractrunintitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; -} - -.verbatim { - overflow-x: auto ; -} - -.alltt { - overflow-x: auto ; -} - -.bverbatim { - margin: 1ex 0pt 1ex 0pt ; - padding: .5ex 0pt .5ex 0pt ; - overflow-x: auto ; -} - -.lverbatim { - margin: 1ex 0pt 1ex 0pt ; - padding: .5ex 0pt .5ex 0pt ; - overflow-x: auto ; -} - -.fancyvrb { - font-size:.85em ; - margin: 3ex 0pt 3ex 0pt -} - -.fancyvrblabel { - font-weight:bold; - text-align: center ; -} - -.verse { - font-family: "Linux Libertine Mono O", "Lucida Console", - "Droid Sans Mono", "DejaVu Mono", "Bitstream Vera Mono", - "Liberation Mono", "FreeMono", "Andale Mono", - "Nimbus Mono L", "Courier New", monospace; - margin-left: 1em ; -} - -div.singlespace { line-height: 1.2 ; } -div.onehalfspace { line-height: 1.5 ; } -div.doublespace { line-height: 2 ; } - -/* Minipage environments, vertically aligned to top, center, bottom: */ -.minipage { - /* display: inline-block ; */ - /* Mini pages which follow each other will be tiled. */ - margin: .25em .25em .25em .25em; - padding: .25em .25em .25em .25em; - display: inline-flex; - flex-direction: column ; - overflow: auto; -} - -/* Paragraphs in the flexbox did not collapse their margins. */ -/* Have not yet researched this. */ -.minipage p {margin: .75ex 0em .75ex 0em ;} - -.framebox { - margin: 0ex ; - padding: 0ex ; - border: 1px solid black; - border-radius: 0px ; - padding: .3ex .2em 0ex .2em ; - margin: .1ex ; - display: inline-block ; -} - -.mdframed { -/* padding: 0ex ; */ -/* border: 1px solid blafck; */ -/* border-radius: 0px ; */ - padding: 0ex ; - margin: 3ex 5% 3ex 5% ; -/* display: inline-block ; */ -} - -.mdframed p { padding: 0ex .5em 0ex .5em ; } - -.mdframed dl { padding: 0ex .5em 0ex .5em ; } - -.mdframedtitle { - padding: .5em ; - display: block ; - font-size: 130% -} - -.mdframedsubtitle { - padding: 0ex .5em 0ex .5em ; - display: block ; - font-size: 115% ; -} - -.mdframedsubsubtitle { - padding: 0ex .5em 0ex .5em ; - display: block ; -} - -.mdtheorem { - padding: 0ex .5em 0ex .5em ; - margin: 3ex 5% 3ex 5% ; -/* display: inline-block ; */ -} - -/* framed package */ -.framed { - margin: 3ex 0em 3ex 0em ; - border: 1px solid black; - border-radius: 0px ; - padding: .3ex 1em 0ex 1em ; - display: block ; -} - -.snugframed { - margin: 3ex 0em 3ex 0em ; - border: 1px solid black; - border-radius: 0px ; - display: block ; -} - -.framedleftbar { - margin: 3ex 0em 3ex 0em ; - border-left: 3pt solid black; - border-radius: 0px ; - padding: .3ex .2em .3ex 1em ; - display: block ; -} - -.framedtitle { -margin: 0em ; -padding: 0em ; - font-size: 130% -} - -.framedtitle p { padding: .3em } - -dl { - margin: 1ex 2em 1ex 0em; - line-height: 1.3; -} - -dl dt { - margin-top: 1ex; - font-weight: bold; -} - -dl dd p { margin-top: 0em; } - -nav.toc, nav.lof, nav.lot, nav.lol, nav.lothm { - font-family: "URW Classico", Optima, "Linux Biolinum O", - "DejaVu Sans", "Bitstream Vera Sans", - Geneva, Verdana, sans-serif ; - margin-bottom: 4ex ; -} - -nav.toc p, nav.lof p, nav.lot p, nav.lol p, nav.lothm p { - line-height: 1.2 ; - margin-top:.5ex ; - margin-bottom:.5ex; - font-size: .9em ; -} - -img, img.hyperimage, img.borderimage { - max-width: 600px; - border: 1px solid silver; - box-shadow: 3px 3px 3px #808080 ; - padding: .5% ; - margin: .5% ; - background: none ; -} - -img.inlineimage{ - padding: 0px ; - box-shadow: none ; - border: none ; - background: none ; - margin: 0px ; - display: inline-block ; - border-radius: 0px ; -} - -img.logoimage{ - max-width: 300px ; - box-shadow: 3px 3px 3px #808080 ; - border: 1px solid black ; - background:none ; - padding:0 ; - margin:.5ex ; - border-radius: 10px ; -} - -.section { -/* - To have each section float relative to each other: -*/ -/* - display: block ; - float: left ; - position: relative ; - background: white ; - border: 1px solid silver ; - padding: .5em ; -*/ - margin: 0ex .5em 0ex .5em ; - padding: 0 ; -} - -figure { - margin: 3ex auto 3ex auto ; - padding: 1ex 1em 1ex 1em ; - overflow-x: auto ; -} - -/* To automatically center images in figures: */ -/* -figure img.inlineimage { - margin: 0ex auto 0ex auto ; - display: block ; -} -*/ - -/* To automatically center minipages in figures: */ -/* -figure div.minipage, figure div.minipage div.minipage { - margin: 1ex auto 1ex auto ; - display: block ; -} -*/ - -figure div.minipage p { font-size: 85% ; } - -figure.subfigure, figure.subtable { - display: inline-block ; margin: 3ex 1em 3ex 1em ; -} - -figcaption .minipage { margin:0 ; padding: 0 } - -div.floatrow { text-align: center; } - -div.floatrow figure { display: inline-block ; margin: 1ex 2% ; } - -div.floatfoot { font-size: .85em ; - border-top: 1px solid silver ; line-height: 1.2 ; } - -figcaption , .lstlistingtitle { - font-size: .85em ; - text-align: center ; - font-weight: bold ; -margin-top: 1ex ; -margin-bottom: 1ex ; -} - -figure.subfigure figcaption, figure.subtable figcaption { - border-bottom: none ; background: none ; -} - -div.nonfloatcaption { - margin: 1ex auto 1ex auto ; - font-size: .85em ; - text-align: center ; - font-weight: bold ; -} - -/* For a \RawCaption inside a minipage inside a figure's floatrow: */ -figure div.floatrow div.minipage figcaption { -border: none ; -background: none ; -} - -table { - margin: 1ex auto 1ex auto ; - border-collapse: collapse ; - border-spacing: 0px ; - line-height: 1.3 ; - } - -tr.hline {border-top: 1px solid silver ; margin-top: 0ex ; - margin-bottom: 0ex ; } /* for \hline */ - -tr.tbrule {border-top: 1px solid black ; margin-top: 0ex ; - margin-bottom: 0ex ; } /* for \toprule, \bottomrule */ - -td {padding: 1ex .5em 1ex .5em ;} - -table td.tdl { text-align: left ; vertical-align: middle ; } -table td.tdc { text-align: center ; vertical-align: middle ; } -table td.tdr { text-align: right ; vertical-align: middle ; } -table td.tdp { text-align: left ; vertical-align: bottom ; } -table td.tdm { text-align: left ; vertical-align: middle ; } -table td.tdb { text-align: left ; vertical-align: top ; } -table td.tdP { text-align: center ; vertical-align: bottom ; } -table td.tdM { text-align: center ; vertical-align: middle ; } -table td.tdB { text-align: center ; vertical-align: top ; } -table td.tdlrule { text-align: left ; border-top: 1px solid silver ; - vertical-align: middle ; } /* for cmidrule */ -table td.tdcrule { text-align: center ; border-top: 1px solid silver ; - vertical-align: middle ; } -table td.tdrrule { text-align: right ; border-top: 1px solid silver ; - vertical-align: middle ; } -table td.tdprule { text-align: left ; border-top: 1px solid silver ; - vertical-align: bottom ; } -table td.tdmrule { text-align: left ; border-top: 1px solid silver ; - vertical-align: middle ; } -table td.tdbrule { text-align: left ; border-top: 1px solid silver ; - vertical-align: top ; } -table td.tdPrule { text-align: center ; border-top: 1px solid silver ; - vertical-align: bottom ; } -table td.tdMrule { text-align: center ; border-top: 1px solid silver ; - vertical-align: middle ; } -table td.tdBrule { text-align: center ; border-top: 1px solid silver ; - vertical-align: top ; } - -/* Margins of paragraphs inside table cells: */ -td.tdp p , td.tdprule p , td.tdP p , td.tdPrule p { padding-top: 1ex ; - padding-bottom: 1ex ; margin: 0ex ; } -td.tdm p , td.tmbrule p , td.tdM p , td.tdMrule p { padding-top: 1ex ; - padding-bottom: 1ex ; margin: 0ex ; } -td.tdb p , td.tdbrule p , td.tdB p , td.tdBrule p { padding-top: 1ex ; - padding-bottom: 1ex ; margin: 0ex ; } - -td.tdp , td.tdprule , td.tdP , td.tdPrule - { padding: 0ex .5em 0ex .5em ; } -td.tdm , td.tdmrule , td.tdM , td.tdMrule - { padding: 0ex .5em 0ex .5em ; } -td.tdb , td.tdbrule , td.tdB , td.tdBrule - { padding: 0ex .5em 0ex .5em ; } - -/* table notes: */ -.tnotes { - margin: 0ex 5% 1ex 5% ; - padding: 0.5ex 1em 0.5ex 1em; - font-size:.85em; - text-align: left ; -} - -.tnotes dl dt p {margin-bottom:0px;} - -.tnoteitemheader {margin-right: 1em;} - -/* center, flushleft, flushright environments */ -div.center{text-align:center;} -div.center table {margin-left:auto;margin-right:auto;} -div.flushleft{text-align:left;} -div.flushleft table {margin-left:0em ; margin-right:auto;} -div.flushright{text-align:right;} -div.flushright table {margin-left:auto ; margin-right: 0em ;} - -/* program listing callouts: */ -span.callout { - font-family: "DejaVu Sans", "Bitstream Vera Sans", - Geneva, Verdana, sans-serif ; - border-radius: .5em; - background-color:black; - color:white; - padding:0px .25em 0px .25em; -margin: 0 ; - font-weight: bold; - font-size:.72em ; -} - -div.programlisting pre.verbatim span.callout{ -font-size: .85em ; -} - -div.published -{ - text-align: center ; - font-variant: normal ; - font-style: italic ; - font-size: 1em ; - margin: 3ex 0em 3ex 0em ; -} - -div.subtitle -{ - text-align: center ; - font-variant: normal ; - font-style: italic ; - font-size: 1.25em ; - margin: 3ex 0em 3ex 0em ; -} - -div.subtitle p { margin: 1ex ; } - -div.author -{ - font-variant: normal ; - font-style: normal ; - font-size: 1em ; - margin: 3ex 0em 3ex 0em ; -} - -div.author table { - margin: 3ex auto 0ex auto ; - background: none ; -} - -div.author table tbody tr td { padding: .25ex ; } - -span.affiliation {font-size: .85em ; font-variant: small-caps; } - -div.titledate { - text-align: center ; - font-size: .85em ; - font-style: italic; - margin: 6ex 0em 6ex 0em ; -} - -nav.topnavigation{ - text-align: left ; - padding: 0.5ex 1em 0.5ex 1em ; -/* margin: 2ex 0em 3ex 0em ; */ - margin: 0 ; - border-bottom: 1px solid silver ; - border-top: 1px solid silver ; - clear:right ; -} - -nav.botnavigation{ - text-align: left ; - padding: 0.5ex 1em 0.5ex 1em ; -/* margin: 3ex 0em 2ex 0em ; */ - margin: 0 ; - border-top: 1px solid silver ; - border-bottom: 1px solid silver ; - clear:right ; -} - -header{ - line-height: 1.2 ; - font-size: 1em ; -/* border-bottom: 2px solid silver ; */ - margin: 0px ; - padding: 0ex 1em 0ex 1em ; - text-align:center ; -} - -header p {margin:0ex;padding:4ex 0em 2ex 0em ;text-align:center;} - -footer{ - font-size: .85em ; - line-height: 1.2 ; - margin-top: 1ex ; - border-top: 2px solid silver ; - padding: 2ex 1em 2ex 1em ; - clear:right ; - text-align:left ; -} - -a.linkhome { font-weight:bold ; font-size: 1em ;} - -div.lateximagesource { padding: 0px ; margin: 0px ; display: none; } - -img.lateximage{ - padding: 0px 0px 0px 0px ; - box-shadow: none ; - border: none ; - background: none ; - margin: 0px 0px -.15ex 0px ; - /* pdfcrop leaves a slight margin, adjust to baseline */ - max-width: 100% ; - border-radius: 0ex ; - border: none ; -} - -nav.sidetoc { - font-family: "DejaVu Serif", "Bitstream Vera Serif", - "Lucida Bright", Georgia, serif; - float:right ; - width: 20%; - border-left: 1px solid silver; - border-top: 1px solid silver; - border-bottom: 1px solid silver; -/* border-top: 2px solid #808080 ; */ - background: #FAF7F4 ; - padding: 2ex 0em 2ex 1em ; - margin: 0ex 0em 2ex 1em ; - font-size:.9em ; - border-radius: 20px 0px 0px 20px ; - } - -div.sidetoccontents { -/* border-top: 1px solid silver ; */ - overflow-y: auto ; - width: 100% ; - text-align: left ; -} - -nav.sidetoc p {line-height:1.2 ; margin: 1ex .5em 1ex .5em ; - text-indent: 0 ; } -nav.sidetoc p a {color:black ; font-size: .7em ;} -div.sidetoctitle {font-size: 1.2em; font-weight:bold; text-align:center; - border-bottom: 1px solid silver ; } -nav.sidetoc a:hover {text-decoration: underline ; } - -section.textbody { margin: 0ex 1em 0ex 1em ;} - -div.multicolsheading { -webkit-column-span: all; - -moz-column-span: all; column-span: all; } -div.multicols { -webkit-columns: 3 380px ; - -moz-columns: 3 380px ; columns: 3 380px ; } -div.multicols p {margin-top: 0ex} - -/* Used to support algorithmicx: */ -span.floatright { float: right ; } - -/* Native LaTeX theorems: */ - -.theoremcontents { font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ; } -.theoremlabel { font-style: normal; font-weight: bold ; margin-right: .5em ; } - -/* theorem, amsthm, and ntheorem packages */ - -span.theoremheader, -span.theoremheaderplain, -span.theoremheaderdefinition, -span.theoremheaderbreak, -span.theoremheadermarginbreak, -span.theoremheaderchangebreak, -span.theoremheaderchange, -span.theoremheadermargin -{ -font-style:normal ; font-weight: bold ; margin-right: 1em ; -} - -span.amsthmnameplain, -span.amsthmnamedefinition, -span.amsthmnumberplain, -span.amsthmnumberdefinition -{ -font-style:normal ; font-weight: bold ; -} - -span.amsthmnameremark, -span.amsthmnumberremark -{font-style:italic ; font-weight: normal ; } - -span.amsthmnoteplain, -span.amsthmnotedefinition -{font-style:normal ;} - -span.theoremheaderremark, -span.theoremheaderproof, -span.amsthmproofname -{font-style:italic ; font-weight: normal ; margin-right: 1em ; } - -span.theoremheadersc -{ -font-style:normal ; -font-variant: small-caps ; -font-weight: normal ; -margin-right: 1em ; -} - -.theoremendmark {float:right} - -div.amsthmbodyplain, div.theorembodyplain, div.theorembodynonumberplain, -div.theorembodybreak, div.theorembodynonumberbreak, -div.theorembodymarginbreak, -div.theorembodychangebreak, -div.theorembodychange, -div.theorembodymargin -{ -font-style:italic; -margin-top: 3ex ; margin-bottom: 3ex ; -} - -div.theorembodydefinition, div.theorembodyremark, div.theorembodyproof, -div.theorembodyplainupright, nonumberplainuprightsc, -div.amsthmbodydefinition, div.amsthmbodyremark, -div.amsthmproof -{ -font-style: normal ; -margin-top: 3ex ; margin-bottom: 3ex ; -} - -span.amsthmnoteremark {} - -/* -For CSS LaTeX and related logos: -Based on: -http://edward.oconnor.cx/2007/08/tex-poshlet -http://nitens.org/taraborelli/texlogo -*/ - -.latexlogofont { - font-family: "Linux Libertine O", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-variant: normal ; -} - -.latexlogo { - font-family: "Linux Libertine O", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - letter-spacing: .03em ; - font-size: 1.1em; -} - -.latexlogo sup { - text-transform: uppercase; - letter-spacing: .03em ; - font-size: 0.85em; - vertical-align: 0.15em; - margin-left: -0.36em; - margin-right: -0.15em; -} - -.latexlogo sub { - text-transform: uppercase; - vertical-align: -0.5ex; - margin-left: -0.1667em; - margin-right: -0.125em; - font-size: 1em; -} - -.xetexlogo { - font-family: "Linux Libertine O", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - letter-spacing: .03em ; - font-size: 1.1em; -} - -/* A smaller gap between Xe and Tex v.s. LaTeX: */ -.xetexlogo sub { - text-transform: uppercase; - vertical-align: -0.5ex; - margin-left: -0.0667em; - margin-right: -0.2em; - font-size: 1em; - letter-spacing: .03em ; -} - -/* A large gap between Xe and LaTeX v.s. TeX: */ -.xelatexlogo sub { - text-transform: uppercase; - vertical-align: -0.5ex; - margin-left: -0.0667em; - margin-right: -.05em; - font-size: 1em; - letter-spacing: .03em ; -} - -.amslogo { - font-family: "TeXGyreChorus","URW Chancery L", - "Apple Chancery","ITC Zapf Chancery","Monotype Corsiva", - "Linux Libertine O", "Nimbus Roman No 9 L", "FreeSerif", - "Hoefler Text", Times, "Times New Roman", serif; - font-style: italic; -} - -.lyxlogo { - font-family: "URW Classico", Optima, "Linux Biolinum O", - "DejaVu Sans", "Bitstream Vera Sans", Geneva, -Verdana, sans-serif ; -} - -/* Only display top and bottom navigation if a small screen: */ -/* Hide the sidetoc if a small screen: */ -nav.topnavigation { display:none; } -nav.botnavigation { display:none; } - -@media screen and (max-width: 45em) { -/* nav.sidetoc {display:none;} */ - nav.sidetoc { - float: none ; - width: 100% ; - margin: 5ex 0px 5ex 0px ; - padding: 0 ; - border-radius: 0 ; - border-bottom: 1px solid black ; - border-top: 1px solid black ; - box-shadow: none ; - } -/* nav.topnavigation { display:block } */ - nav.botnavigation { display:block } - .marginpar { - max-width: 100%; - float: none; - display:block ; - margin: 1ex 1em 1ex 1em ; - } -} - -@media print { - body { - font-family: "Linux Libertine O", - "DejaVu Serif", "Bitstream Vera Serif", - "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - } - nav.sidetoc { display:none; } - nav.topnavigation { display: none; } - nav.botnavigation { display: none; } -} - -@media handheld { - nav.sidetoc { display:none; } - nav.topnavigation { display:block } - nav.botnavigation { display:block } -} - -@media projection { - nav.sidetoc { display:none; } - nav.topnavigation { display:block } - nav.botnavigation { display:block } -} -\end{VerbatimOut} - - -\begin{VerbatimOut}{lwarp_sagebrush.css} -@import url("lwarp.css") ; - -A:link {color:#105030 ; text-decoration: none ; } -A:visited {color:#705030 ; text-shadow:1px 1px 2px #a0a0a0;} -A:hover {color:#006000 ; text-decoration: underline ; text-shadow:0px 0px 2px #a0a0a0;} -A:active {color:#00C000 ; text-shadow:1px 1px 2px #a0a0a0;} - -h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph -{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", - "Nimbus Roman No 9 L", "FreeSerif", - "Hoefler Text", Times, "Times New Roman", serif; - font-variant: small-caps ; -font-weight: normal ; - color: #304070 ; - text-shadow: 2px 2px 3px #808080; -} - -h1 { /* title of the entire website, used on each page */ - font-variant: small-caps ; - color: #304070 ; - text-shadow: 2px 2px 3px #808080; - background-color: #F7F7F0 ; - background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C4); -} - -h1 { - border-bottom: 1px solid #304070; - border-top: 2px solid #304070; -} - -h2 { - border-bottom: 1px solid #304070; - border-top: 2px solid #304070; - background-color: #F7F7F0 ; - background-image: linear-gradient(to bottom, #F7F7F0, #DAD0C0); -} - -div.abstract { - background: #f5f5eb ; - background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); - - border: 1px solid silver; - border-radius: 1em ; -} - -div.abstract dl {line-height:1.5;} -div.abstract dt {color:#304070;} - -div.abstracttitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-variant: small-caps ; - font-size:1.5em; - border-bottom: 1px solid silver ; - color: #304070 ; - text-align: center ; - text-shadow: 1px 1px 2px #808080; -} - -span.abstractrunintitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; -} - -div.epigraph { - background: #f5f5eb ; - background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); - - border: 1px solid silver ; - border-radius: 1ex ; - box-shadow: 3px 3px 3px #808080 ; -} - -.example { - background-color: #f5f5eb ; - background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); - -} - -div.exampletitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-variant: small-caps ; - border-bottom: 1px solid silver ; - color: #304070 ; - text-align: center ; - text-shadow: 1px 1px 2px #808080; -} - -.sidebar { - background-color: #f5f5eb ; - background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); - -} - -div.sidebartitle{ - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-variant: small-caps ; - border-bottom: 1px solid silver ; - color: #304070 ; - text-align: center ; - text-shadow: 1px 1px 2px #808080; -} - -.fancyvrblabel { - font-family: "URW Classico", Optima, "Linux Biolinum O", - "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", - "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; - font-weight:bold; - font-variant: small-caps ; -font-size: 1.5em ; - color: #304070 ; - text-align: center ; - text-shadow: 1px 1px 2px #808080; -} - -.minipage { - background-color: #eeeee7 ; - border: 1px solid silver ; -border-radius: 1ex ; -} - -.framed .minipage , .framedleftbar .minipage { -border: none ; -background: none ; -padding: 0ex ; -margin: 0ex ; -} - -figure.figure .minipage, figcaption .minipage { border: none; } - -div.marginblock div.minipage { border: none; } - -figure , div.marginblock { - background-color: #eeeee7 ; - border: 1px solid silver ; - border-radius: 1ex ; - box-shadow: 3px 3px 3px #808080 ; -} - -figure figure { - border: 1px solid silver ; - margin: 0em ; -box-shadow: none ; -} - -/* -figcaption { - border-top: 1px solid silver ; - border-bottom: 1px solid silver ; - background-color: #e8e8e8 ; -} -*/ - -div.table { - box-shadow: 3px 3px 3px #808080 ; -} - -/* -.tnotes { - background: #e8e8e8; - border: 1px solid silver; -} -*/ - -nav.topnavigation{ - background-color: #b0b8b0 ; - background-image: linear-gradient(to bottom,#e0e0e0,#b0b8b0) ; -} - -nav.botnavigation{ - background-color: #b0b8b0 ; - background-image: linear-gradient(to top,#e0e0e0,#b0b8b0) ; -} - -header{ - background-color: #F7F7F0 ; - background-image: linear-gradient(to top, #F7F7F0, #b0b8b0); -} - -footer{ - background-color: #F7F7F0 ; - background-image: linear-gradient(to bottom, #F7F7F0, #b0b8b0); -} - -nav.sidetoc { - background-color: #F7F7F0 ; - background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C0); - box-shadow: 3px 3px 3px #808080 ; - border-radius: 0px 0px 0px 20px ; - } - -div.sidetoctitle {color: #304070 ; } -nav.sidetoc a:hover {color:#006000 ; text-decoration: none ; text-shadow:0px 0px 2px #a0a0a0;} - -@media screen and (max-width: 45em) { - nav.sidetoc { border-radius: 0 ; } -} - -\end{VerbatimOut} - - -\begin{VerbatimOut}{lwarp_formal.css} -@import url("lwarp.css") ; - -A:link {color:#802020 ; text-decoration:none; } -A:visited {color:#802020 ; text-shadow:none ;} -A:hover {color:#400000 ; text-shadow:none ;} -A:active {color:#C00000 ; text-shadow:none ;} - -body { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - background: #fffcf5; -} - -span.textrm { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; -} - -span.textsf { - font-family: "DejaVu Sans", "Bitstream Vera Sans", - Geneva, Verdana, sans-serif ; -} - -h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph -{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: #800000 ; - text-shadow: none ; -} - -h1, h2 { - background-color: #fffcf5 ; - background-image: none ; - border-bottom: 1px solid #808080; - border-top: 2px solid #808080; -} - -div.abstracttitle { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: black ; - text-shadow: none ; -} - -span.abstractrunintitle { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: black ; - text-shadow: none ; -} - -div.abstract { font-size: 100% } - -.sidebar { - background: #fffcf5; - background-image: none ; - margin: 2em 5% 2em 5%; - padding: 0.5em 1em; - border: none ; - border-top : 1px solid silver; - border-bottom : 1px solid silver; - font-size: 90% ; -} - -div.sidebartitle{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: #800000 ; - text-shadow: none ; - border: none ; -} - -.example { - background: #fffcf5; - background-image: none ; - margin: 2em 5% 2em 5%; - padding: 0.5em 1em; - border: none ; - border-top : 1px solid silver; - border-bottom : 1px solid silver; -} - -div.exampletitle{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: #800000 ; - text-shadow: none ; - border: none ; -} - -div.fancyvrblabel{ - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - color: #800000 ; - text-shadow: none ; - border: none ; -} - -.verse { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; -} - -figure { - margin: 3ex 5% 3ex 5% ; - padding: 1ex 1em 1ex 1em ; - background-color: #fffcf5 ; - overflow-x: auto ; - border: none ; -/* border-top: 1px solid silver; */ -/* border-bottom: 1px solid silver; */ -} - -figcaption , .lstlisting { - border: none ; -/* border-top: 1px solid silver ; */ -/* border-bottom: 1px solid silver ; */ - background-color: #fffcf5 ; -} - -.tnotes { - background: #fffcf5 ; -} - -.theorem { - background: none ; -} - -.minipage { - background-color: #fffcf5 ; - border: none ; -} - -div.floatrow figure { border: none ; } - -figure figure { border: none ; } - -nav.toc, nav.lof, nav.lot, nav.lol { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; -} - -nav.sidetoc { - font-family: "Linux Libertine O", "Hoefler Text", "Garamond", - "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", - "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, - "Times New Roman", serif; - background-image: linear-gradient(to bottom, #fffcf5, #C0C0C0); - border-radius: 0px 0px 0px 20px ; -} - -div.sidetoctitle{ - color: #800000 ; -} - -header{ - background-color: #e0e0e0 ; - background-image: linear-gradient(to top, #fffcf5, #b0b0b0); - text-align:center ; -} - -footer{ - background-color: #e0e0e0 ; - background-image: linear-gradient(to bottom, #fffcf5, #b0b0b0); - padding: 2ex 1em 2ex 1em ; - clear:right ; - text-align:left ; -} - -nav.botnavigation { - background: #dedcd5 ; - border-top: 1px solid black ; -} -\end{VerbatimOut} - - -\begin{VerbatimOut}{sample_project.css} -/* ( --- Start of project.css --- ) */ -/* A sample project-specific CSS file for lwarp --- ) */ - -/* Load default lwarp settings: */ -@import url("lwarp.css") ; -/* or lwarp_formal.css, lwarp_sagebrush.css */ - -/* Project-specific CSS setting follow here. */ -/* . . . */ - -/* ( --- End of project.css --- ) */ -\end{VerbatimOut} - - -\begin{VerbatimOut}{lwarp_html.xdy} -(require "tex/inputenc/latin.xdy") -(merge-rule "\\PS *" "Postscript") -(require "texindy.xdy") -(require "page-ranges.xdy") -(require "book-order.xdy") -(markup-locref :open "\hyperindexref{" :close "}") -\end{VerbatimOut} - - -\begin{VerbatimOut}{lwarp_mathjax.txt} -<!-- https://groups.google.com/forum/#!topic/ - mathjax-users/jUtewUcE2bY --> -<script type="text/x-mathjax-config"> -MathJax.Hub.Register.StartupHook("TeX AMSmath Ready",function () { - var seteqsectionDefault = {name: "", num: 0}; - var seteqsections = {}, seteqsection = seteqsectionDefault; - var TEX = MathJax.InputJax.TeX, PARSE = TEX.Parse; - var AMS = MathJax.Extension["TeX/AMSmath"]; - TEX.Definitions.Add({ - macros: { - seteqsection: "mySection", - seteqnumber: "mySetEqNumber" - } - }); - - PARSE.Augment({ - mySection: function (name) { - seteqsection.num = AMS.number; - var n = this.GetArgument(name); - if (n === "") { - seteqsection = seteqsectionDefault; - } else { - if (!seteqsections["_"+n]) - seteqsections["_"+n] = {name:n, num:0}; - seteqsection = seteqsections["_"+n]; - } - AMS.number = seteqsection.num; - }, - mySetEqNumber: function (name) { - var n = this.GetArgument(name); - if (!n || !n.match(/^ *[0-9]+ *$/)) - n = ""; else n = parseInt(n)-1; - <!-- $ syntax highlighting --> - if (n === "" || n < 1) - TEX.Error - ("Argument to "+name+" should be a positive integer"); - AMS.number = n; - } - }); - MathJax.Hub.Config({ - TeX: { - equationNumbers: { - formatTag: function (n) - {return "("+(seteqsection.name+"."+n).replace(/^\./,"")+")"}, - formatID: function (n) { - n = (seteqsection.name+'.'+n).replace - (/[:"'<>&]/g,"").replace(/^\./,""); - return 'mjx-eqn-' + n; - } - } - } - }); -}); -</script> - -<!-- http://docs.mathjax.org/en/latest/options/ThirdParty.html --> -<script type="text/x-mathjax-config"> - MathJax.Ajax.config.path["Contrib"] = - "https://cdn.mathjax.org/mathjax/contrib"; -</script> - -<!-- https://github.com/mathjax/MathJax-third-party-extensions/ - tree/master/siunitx --> -<script type="text/x-mathjax-config"> - MathJax.Hub.Config({ - extensions: ["tex2jax.js","[Contrib]/siunitx/siunitx.js"], - jax: ["input/TeX","output/HTML-CSS"], - tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}, - TeX: {extensions: ["AMSmath.js","AMSsymbols.js", "sinuitx.js"]} - }); - </script> - -<script type="text/x-mathjax-config"> -MathJax.Hub.Config({ - TeX: { - equationNumbers: { - autoNumber: "AMS" - } - } -}); -</script> - -<!-- Alternative CDN provider: --> -<script type="text/javascript" async - src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML-full"> -</script> - -<!-- No longer supported after April 30, 2017: --> -<!-- -<script - src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full"> -</script> ---> - -\end{VerbatimOut} - - -\begin{LWR@createlwarpmk} - -\begin{VerbatimOut}{lwarpmk.lua} -#!/usr/bin/env texlua - --- Copyright 2016-2017 Brian Dunn - --- Print the usage of the lwarpmk command: - -printversion = "v0.29" - -function printhelp () -print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ; -end - -function printusage () -print ( [[ - -lwarpmk print [project]: Compile a print version. -lwarpmk printindex [project]: Process the index for the print version. -lwarpmk printglossary [project]: Process the glossary for the print version. -lwarpmk html [project]: Compile an HTML version. -lwarpmk htmlindex [project]: Process the index for the html version. -lwarpmk htmlglossary [project]: Process the glossary for the html version. -lwarpmk again [project]: Touch the source code to trigger recompiles. -lwarpmk limages [project]: Process the "lateximages" created by lwarp.sty. -lwarpmk pdftohtml [project]: - For use with latexmk or a Makefile: - Convert project_html.pdf to project_html.html and - individual HTML files. -lwarpmk clean [project]: Remove project.aux, .toc, .lof/t, .idx, .ind, .log, .gl* -lwarpmk cleanall [project]: Remove auxiliary files and also project.pdf, *.html -lwarpmk -h: Print this help message. -lwarpmk --help: Print this help message. - -]] ) -printconf () -end - --- Print the format of the configuration file lwarpmk.conf: - -function printconf () -print ( [[ -An example lwarpmk.conf or <project>.lwarpmkconf project file: --- -opsystem = "Unix" (or "Windows") -latexname = "pdflatex" (or "lualatex", or "xelatex") -sourcename = "projectname" (the source-code filename w/o .tex) -homehtmlfilename = "index" (or perhaps the project name) -htmlfilename = "" (or "projectname" - filename prefix) -uselatexmk = "false" (or "true" to use latexmk to build PDFs) -languge = "english" (use a language supported by xindy) --- -Filenames must contain only letters, numbers, underscore, or dash. -Values must be in "quotes". - -]] ) ; -end - --- Split one large sourcefile into a number of files, --- starting with destfile. --- The file is split at each occurance of <!--|Start file|newfilename|* - -function splitfile (destfile,sourcefile) -print ("lwarpmk: Splitting " .. sourcefile .. " into " .. destfile) ; -io.input(sourcefile) -io.output(destfile) -for line in io.lines() do -i,j,copen,cstart,newfilename = string.find (line,"(.*)|(.*)|(.*)|") ; -if ( (i~= nil) and (copen == "<!--") and (cstart == "Start file")) then -- split the file -io.output(newfilename) ; -else -- not a splitpoint -io.write (line .. "\n") ; -end -end -- do -end -- function - --- Incorrect value, so print an error and exit. - -function cvalueerror ( line, linenum , cvalue ) - print ( linenum .. " : " .. line ) ; - print ("lwarpmk: incorrect variable value \"" .. cvalue .. "\" in lwarpmk.conf.\n" ) ; - printconf () ; - os.exit(1) ; -end - --- Load settings from the project's "lwarpmk.conf" file: - -function loadconf () --- Default configuration filename: -local conffile = "lwarpmk.conf" --- Optional configuration filename: -if arg[2] ~= nil then conffile = arg[2]..".lwarpmkconf" end --- Default language: -language = "english" --- Verify the file exists: -if (lfs.attributes(conffile,"mode")==nil) then -- file not exists -print("lwarpmk: " .. conffile .." does not exist.") -print("lwarpmk: " .. arg[2] .. " does not appear to be a project name.\n") -printhelp () ; -os.exit(1) -- exit the entire lwarpmk script -else -- file exists --- Read the file: -print ("lwarpmk: Reading " .. conffile ..".") -io.input(conffile) ; --- Scan each line: -local linenum = 0 -for line in io.lines() do -- scan lines -linenum = linenum + 1 -i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*\"([%w-_]*)\"") ; --- Error if incorrect enclosing characters: -if ( i == nil ) then -print ( linenum .. " : " .. line ) ; -print ( "lwarpmk: Incorrect entry in " .. conffile ..".\n" ) ; -printconf () ; -os.exit(1) ; -end -if ( cvarname == "opsystem" ) then - -- Verify choice of opsystem: - if ( (cvalue == "Unix") or (cvalue == "Windows") ) then - opsystem = cvalue - else - cvalueerror ( line, linenum , cvalue ) - end -elseif ( cvarname == "latexname" ) then - -- Verify choice of LaTeX compiler: - if ( - (cvalue == "pdflatex") or - (cvalue == "xelatex") or - (cvalue == "lualatex") - ) then - latexname = cvalue - else - cvalueerror ( line, linenum , cvalue ) - end -elseif ( cvarname == "sourcename" ) then sourcename = cvalue -elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue -elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue -elseif ( cvarname == "uselatexmk" ) then uselatexmk = cvalue -elseif ( cvarname == "language" ) then language = cvalue -else -print ( linenum .. " : " .. line ) ; -print ("lwarpmk: Incorrect variable name \"" .. cvarname .. "\" in " .. conffile ..".\n" ) ; -printconf () ; -os.exit(1) ; -end -end -- do scan lines -end -- file exists --- Select some operating-system commands: -if opsystem=="Unix" then -- For Unix / Linux / Mac OS: -rmname = "rm" -mvname = "mv" -touchnamepre = "touch" -touchnamepost = "" -dirslash = "/" -opquote= "\'" -elseif opsystem=="Windows" then -- For Windows -rmname = "DEL" -mvname = "MOVE" -touchnamepre = "COPY /b" -touchnamepost = "+,," -dirslash = "\\" -opquote= "\"" -else print ( "lwarpmk: Select Unix or Windows for opsystem" ) -end --- for Windows -end -- loadconf - -function refreshdate () -os.execute(touchnamepre .. " " .. sourcename .. ".tex " .. touchnamepost) -end - --- Scan the LaTeX log file for the phrase "Rerun to get", --- indicating that the file should be compiled again. --- Return true if found. - -function reruntoget (filesource) -io.input(filesource) -for line in io.lines() do -if ( string.find(line,"Rerun to get") ~= nil ) then return true end -end -return false -end - --- Compile one time, return true if should compile again. --- fsuffix is "" for print, "_html" for HTML output. - -function onetime (fsuffix) -print("lwarpmk: Compiling with " .. latexname .. " " .. sourcename..fsuffix) -err = os.execute( --- "echo " .. - latexname .. " " .. sourcename..fsuffix ) -if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end -return (reruntoget(sourcename .. fsuffix .. ".log") ) ; -end - --- Compile up to five times. --- fsuffix is "" for print, "_html" for HTML output - -function manytimes (fsuffix) -if onetime(fsuffix) == true then -if onetime(fsuffix) == true then -if onetime(fsuffix) == true then -if onetime(fsuffix) == true then -if onetime(fsuffix) == true then -end end end end end -end - --- Exit if the given file does not exist. - -function verifyfileexists (filename) -if (lfs.attributes ( filename , "modification" ) == nil ) then -print ( "lwarpmk: " .. filename .. " not found." ) ; -os.exit (1) ; -end -end - --- Convert <project>_html.pdf into HTML files: - -function pdftohtml () - -- Convert to text: - print ("lwarpmk: Converting " .. sourcename .."_html.pdf to " .. sourcename .. "_html.html") - os.execute("pdftotext -enc UTF-8 -nopgbrk -layout " .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") - -- Split the result into individual HTML files: - splitfile (homehtmlfilename .. ".html" , sourcename .. "_html.html") -end - --- Remove auxiliary files: - -function removeaux () - os.execute ( rmname .. " " .. - sourcename ..".aux " .. sourcename .. "_html.aux " .. - sourcename ..".toc " .. sourcename .. "_html.toc " .. - sourcename ..".lof " .. sourcename .. "_html.lof " .. - sourcename ..".lot " .. sourcename .. "_html.lot " .. - sourcename ..".idx " .. sourcename .. "_html.idx " .. - sourcename ..".ind " .. sourcename .. "_html.ind " .. - sourcename ..".log " .. sourcename .. "_html.log " .. - sourcename ..".gl* " .. sourcename .. "_html.gl* " - ) -end - --- Create lateximages based on lateximages.txt: -function createlateximages () -print ("lwarpmk: Creating lateximages.") -io.input("lateximages.txt") --- Create the lateximages directory, ignore error if alreadt exists -err = os.execute("mkdir lateximages") --- Scan lateximages.txt -for line in io.lines() do --- lwimgpage is the page number in the PDF which has the image --- lwimgnum is the sequential lateximage number to assign for the image -i,j,lwimgpage,lwimgnum = string.find (line,"|(.*)|(.*)|") --- For each entry: -if ( (i~=nil) ) then --- Separate out the image into its own single-page pdf: -err = os.execute( -"pdfseparate -f " .. lwimgpage .. " -l " .. - lwimgpage .. " " .. sourcename .."_html.pdf lateximagetemp-%d.pdf") --- Crop the image: -err = os.execute( -"pdfcrop --hires lateximagetemp-" .. lwimgpage ..".pdf lateximage-" .. lwimgnum ..".pdf") -if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end --- Convert the image to svg: -err = os.execute( -"pdftocairo -svg lateximage-" .. lwimgnum ..".pdf lateximage-" .. lwimgnum ..".svg") -if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end --- Move the result into lateximages/: -err = os.execute( -mvname .. " lateximage-" .. lwimgnum ..".svg lateximages" .. dirslash ) -if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end --- Remove the temporary files: -err = os.execute( -rmname .. " lateximage-" .. lwimgnum ..".pdf lateximagetemp-" .. lwimgpage ..".pdf") -if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end -end -end -- do -end -- function - --- lwarpmk --version : - -if (arg[1] == "--version") then -print ( "lwarpmk: " .. printversion ) - -else -- not -- version - --- print intro: - -print ("lwarpmk: " .. printversion .. " Automated make for the LaTeX lwarp package.") - --- lwarpmk print: - -if arg[1] == "print" then -loadconf () -if ( uselatexmk == "true" ) then - os.execute ( "latexmk -pdf -dvi- -ps- -pdflatex=\"" .. latexname .." %O %S\" " .. sourcename ..".tex" ) ; - print ("lwarpmk: Done.") -else -- not latexmk - verifyfileexists (sourcename .. ".tex") ; - -- See if up to date: - if ( - ( lfs.attributes ( sourcename .. ".pdf" , "modification" ) == nil ) or - ( - lfs.attributes ( sourcename .. ".tex" , "modification" ) > - lfs.attributes ( sourcename .. ".pdf" , "modification" ) - ) - ) then - -- Recompile if not yet up to date: - manytimes("") - print ("lwarpmk: Done.") ; - else - print ("lwarpmk: " .. sourcename .. ".pdf is up to date.") ; - end -end -- not latexmk - --- lwarp printindex: --- Compile the index then touch the source --- to trigger a recompile of the document: - -elseif arg[1] == "printindex" then -loadconf () -print ("lwarpmk: Processing the index.") -os.execute("texindy -M lwarp_html.xdy " .. sourcename .. ".idx") -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarp printglossary: --- Compile the glossary then touch the source --- to trigger a recompile of the document: - -elseif arg[1] == "printglossary" then -loadconf () -print ("lwarpmk: Processing the glossary.") - -os.execute("xindy -L " .. language .. " -C utf8 -I xindy -M " .. sourcename .. - " -t " .. sourcename .. ".glg -o " .. sourcename .. ".gls " - .. sourcename .. ".glo") -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk html: - -elseif arg[1] == "html" then -loadconf () -if ( uselatexmk == "true" ) then - -- 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 " - .. "-e " - .. opquote .. "$makeindex = q/texindy -M lwarp_html.xdy/" .. opquote - .. " -pdflatex=\"" .. latexname .." %O %S\" " - .. sourcename .."_html.tex" ) ; - if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end - pdftohtml () - print ("lwarpmk: Done.") -else -- not latexmk - verifyfileexists ( sourcename .. ".tex" ) ; - -- See if exists and is up to date: - if ( - ( lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) == nil ) or - ( - lfs.attributes ( sourcename .. ".tex" , "modification" ) > - lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) - ) - ) then - -- Recompile if not yet up to date: - manytimes("_html") - pdftohtml () - print ("lwarpmk: Done.") - else - print ("lwarpmk: " .. homehtmlfilename .. ".html is up to date.") - end -end -- not latexmk - -elseif arg[1] == "pdftohtml" then - loadconf () - pdftohtml () - --- lwarpmk htmlindex: --- Compile the index then touch the source --- to trigger a recompile of the document: - -elseif arg[1] == "htmlindex" then -loadconf () -print ("lwarpmk: Processing the index.") -os.execute("texindy -M lwarp_html.xdy " .. sourcename .. "_html.idx") -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk htmlglossary: --- Compile the glossary then touch the source --- to trigger a recompile of the document: - -elseif arg[1] == "htmlglossary" then -loadconf () -print ("lwarpmk: Processing the glossary.") - -os.execute("xindy -L " .. language .. " -C utf8 -I xindy -M " ..sourcename .. - "_html -t " .. sourcename .. "_html.glg -o " ..sourcename .. - "_html.gls " ..sourcename .. "_html.glo") - -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk limages: --- Scan the lateximages.txt file to create lateximages, --- then touch the source to trigger a recompile. - -elseif arg[1] == "limages" then -loadconf () -print ("lwarpmk: Processing images.") -createlateximages () -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk again: --- Touch the source to trigger a recompile. - -elseif arg[1] == "again" then -loadconf () -print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") -refreshdate () -print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") -print ("lwarpmk: Done.") - --- lwarpmk clean: --- Remove project.aux, .toc, .lof, .lot, .idx, .ind, .log, .gl* - -elseif arg[1] == "clean" then -loadconf () -removeaux () -print ("lwarpmk: Done.") - --- lwarpmk cleanall --- Remove project.aux, .toc, .lof, .lot, .idx, .ind, .log, .gl* --- and also project.pdf, *.html - -elseif arg[1] == "cleanall" then -loadconf () -removeaux () -os.execute ( rmname .. " " .. - sourcename .. ".pdf " .. sourcename .. "_html.pdf " .. - "*.html" - ) -print ("lwarpmk: Done.") - --- lwarpmk with no argument : - -elseif (arg[1] == nil) then -printhelp () - --- lwarpmk -h or lwarpmk --help : - -elseif (arg[1] == "-h" ) or (arg[1] == "--help") then -printusage () - -else -print ("lwarpmk: Unknown command \""..arg[1].."\".\n") -printhelp () -end - -end -- not --version -\end{VerbatimOut} - -\end{LWR@createlwarpmk} - -\endinput -%% -%% End of file `lwarp-newproject.sty'. diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp.sty index 92cbbf80d3c..4edb7a40a24 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} - [2017/04/15 v0.29 Allows LaTeX to directly produce HTML5 output.] + [2017/04/29 v0.30 Allows LaTeX to directly produce HTML5 output.] @@ -44,12 +44,30 @@ \RequirePackage{upquote} \else \fi + \RequirePackage{etoolbox}[2011/01/03] \RequirePackage{ifplatform}% sense op-system platform \RequirePackage{comment} \excludecomment{testing} +\newbool{usingOSWindows} +\boolfalse{usingOSWindows} + + +\newcommand*{\OSPathSymbol}{/} + + +\newcommand*{\LWR@setOSWindows} +{ +\booltrue{usingOSWindows} +\renewcommand*{\OSPathSymbol}{\@backslashchar} +} +\ifwindows +\LWR@setOSWindows +\fi + + \RequirePackage{kvoptions} \SetupKeyvalOptions{family=LWR,prefix=LWR@} @@ -88,7 +106,25 @@ \DeclareStringOption[\jobname]{BaseJobname} -\DeclareStringOption[english]{lwarpmklang} +\DeclareStringOption[english]{IndexLanguage} + +\DeclareStringOption[lwarp.xdy]{xdyFilename} + +\DeclareVoidOption{lwarpmk}{ +\PackageInfo{lwarp}{Using option 'lwarpmk'} +\includecomment{LWR@createlwarpmk} +} + +\DeclareVoidOption{OSWindows}{ +\PackageInfo{lwarp}{Using option 'OSWindows'} +\LWR@setOSWindows +} + +\DeclareStringOption[]{HomeHTMLFilename} + +\DeclareStringOption[]{HTMLFilename} + +\DeclareBoolOption[false]{latexmk} \includecomment{warpprint}% \excludecomment{warpHTML}% @@ -96,12 +132,19 @@ \boolfalse{warpingHTML}% \boolfalse{mathjax}% +\excludecomment{LWR@createlwarpmk} \ProcessKeyvalOptions*\relax \providecommand*{\BaseJobname}{\LWR@BaseJobname} -\def\@nameedef#1{\expandafter\edef\csname #1\endcsname} +\ifcsempty{LWR@HomeHTMLFilename}{ +\newcommand*{\HomeHTMLFilename}{\BaseJobname} +}{ +\csedef{HomeHTMLFilename}{\LWR@HomeHTMLFilename} +} + +\csedef{HTMLFilename}{\LWR@HTMLFilename} @@ -498,24 +541,2251 @@ top=1in,bottom=1in,% \end{warpHTML} -\begin{warpall} -\newbool{usingOSwindows} -\boolfalse{usingOSwindows} -\newcommand*{\OSPathSymbol}{/} +\begin{warpprint} +\typeout{lwarp: generating configuration files} +\end{warpprint} +\begin{warpprint} +\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} +\immediate\openout\LWR@file=\jobname_html.tex +\immediate\write\LWR@file{% +\detokenize{\PassOptionsToPackage}% +{warpHTML,BaseJobname=\jobname}{lwarp}% +} +\immediate\write\LWR@file{% +\detokenize{\input}\string{\jobname.tex\string }% +} +\immediate\closeout\LWR@file +\end{warpprint} -\newcommand*{\warpOSwindows} -{ -\booltrue{usingOSwindows} -\renewcommand*{\OSPathSymbol}{\@backslashchar} +\begin{warpprint} +\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} +\immediate\openout\LWR@file=lwarpmk.conf +\ifbool{usingOSWindows}{ +\immediate\write\LWR@file{opsystem = "Windows"} +}{ +\immediate\write\LWR@file{opsystem = "Unix"} } -\ifwindows -\warpOSwindows +\ifPDFTeX +\immediate\write\LWR@file{latexname = "pdflatex"} +\fi +\ifXeTeX +\immediate\write\LWR@file{latexname = "xelatex"} +\fi +\ifLuaTeX +\immediate\write\LWR@file{latexname = "lualatex"} \fi +\immediate\write\LWR@file{sourcename = "\jobname"} +\immediate\write\LWR@file{% +homehtmlfilename = "\HomeHTMLFilename"% +} +\immediate\write\LWR@file{htmlfilename = "\HTMLFilename"} +\immediate\write\LWR@file{latexmk = "\ifbool{LWR@latexmk}{true}{false}"} +\immediate\write\LWR@file{language = "\LWR@IndexLanguage"} +\immediate\write\LWR@file{xdyfile = "\LWR@xdyFilename"} +\immediate\closeout\LWR@file +\end{warpprint} -\end{warpall} +\begin{warpprint} +\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} +\immediate\openout\LWR@file=\jobname.lwarpmkconf +\ifbool{usingOSWindows}{ +\immediate\write\LWR@file{opsystem = "Windows"} +}{ +\immediate\write\LWR@file{opsystem = "Unix"} +} +\ifPDFTeX +\immediate\write\LWR@file{latexname = "pdflatex"} +\fi +\ifXeTeX +\immediate\write\LWR@file{latexname = "xelatex"} +\fi +\ifLuaTeX +\immediate\write\LWR@file{latexname = "lualatex"} +\fi +\immediate\write\LWR@file{sourcename = "\jobname"} +\immediate\write\LWR@file{% +homehtmlfilename = "\HomeHTMLFilename"% +} +\immediate\write\LWR@file{htmlfilename = "\HTMLFilename"} +\immediate\write\LWR@file{latexmk = "\ifbool{LWR@latexmk}{true}{false}"} +\immediate\write\LWR@file{language = "\LWR@IndexLanguage"} +\immediate\write\LWR@file{xdyfile = "\LWR@xdyFilename"} +\immediate\closeout\LWR@file +\end{warpprint} + + +\begin{warpprint} +\begin{VerbatimOut}{lwarp.css} +/* + CSS stylesheet for the LaTeX lwarp package + Copyright 2016-2017 Brian Dunn — BD Tech Concepts LLC +*/ + +/* a fix for older browsers: */ +header, section, footer, aside, nav, main, + article, figure { display: block; } + +A:link {color:#000080 ; text-decoration: none ; } +A:visited {color:#800000 ; } +A:hover {color:#000080 ; text-decoration: underline ;} +A:active {color:#800000 ; } + +a.tocpart {display: inline-block ; margin-left: 0em ; + font-weight: bold ;} +a.tocchapter {display: inline-block ; margin-left: 0em ; + font-weight: bold ;} +a.tocsection {display: inline-block ; margin-left: 1em ; + text-indent: -.5em ; font-weight: bold ; } +a.tocsubsection {display: inline-block ; margin-left: 2em ; + text-indent: -.5em ; } +a.tocsubsubsection {display: inline-block ; margin-left: 3em ; + text-indent: -.5em ; } +a.tocparagraph {display: inline-block ; margin-left: 4em ; + text-indent: -.5em ; } +a.tocsubparagraph {display: inline-block ; margin-left: 5em ; + text-indent: -.5em ; } +a.tocfigure {margin-left: 0em} +a.tocsubfigure {margin-left: 2em} +a.toctable {margin-left: 0em} +a.tocsubtable {margin-left: 2em} +a.toctheorem {margin-left: 0em} +a.toclstlisting {margin-left: 0em} + +body { + font-family: "DejaVu Serif", "Bitstream Vera Serif", + "Lucida Bright", Georgia, serif; + background: #FAF7F4 ; + color: black ; + margin:0em ; + padding:0em ; + font-size: 100% ; + line-height: 1.2 ; +} + +p {margin: 1.5ex 0em 1.5ex 0em ;} + +/* Holds a section number to add space between it and the name */ +span.sectionnumber { margin-right: .6em } + +/* Inserted in front of index lines */ +span.indexitem {margin-left: 0em} +span.indexsubitem {margin-left: 2em} +span.indexsubsubitem {margin-left: 4em} + +div.hidden { display: none ; } + +kbd { + font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", + "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", + "Courier New", monospace; + font-size: 100% ; +} + +span.strong { font-weight: bold; } + +span.textmd { font-weight: normal; } + +span.textsc { font-variant: small-caps; } + +span.textup { font-variant: normal; } + +span.textrm { + font-family: "DejaVu Serif", "Bitstream Vera Serif", + "Lucida Bright", Georgia, serif; +} + +span.textsf { + font-family: "DejaVu Sans", "Bitstream Vera Sans", + Geneva, Verdana, sans-serif ; +} + +span.attribution { + margin-left: 1em ; font-size: 80% ; font-variant: small-caps; +} + +span.citetitle { + margin-left: 1em ; font-size: 80% ; font-style: oblique; +} + +span.poemtitle { + font-size: 120% ; font-weight: bold; +} + +blockquote { +margin-left: 0px ; +margin-right: 0px ; +} + +blockquote p { + line-height: 1.5; + text-align: left ; + font-size: .85em ; + margin-left: 3em ; +margin-right: 3em ; +} + +blockquotation { +margin-left: 0px ; +margin-right: 0px ; +} + +blockquotation p { + line-height: 1.5; + text-align: left ; + font-size: .85em ; + margin-left: 3em ; +margin-right: 3em ; +} + +div.epigraph { + line-height: 1.2; + text-align: left ; + padding: 3ex 1em 0ex 1em ; +/* margin: 3ex auto 3ex auto ; */ /* Epigraph centered */ + margin: 3ex 1em 3ex auto ; /* Epigraph to the right */ +/* margin: 3ex 1em 3ex 1em ; */ /* Epigraph to the left */ + font-size: .85em ; + max-width: 27em ; +} + +div.epigraphsource{ + text-align:right ; + margin-left:auto ; +/* max-width: 50% ; */ + border-top: 1px solid #A0A0A0 ; + padding-bottom: 3ex ; + line-height: 1.2; +} + +div.epigraph p { padding: .5ex ; margin: 0ex ;} +div.epigraphsource p { padding: .5ex 0ex 0ex 0ex ; margin: 0ex ;} + +/* lettrine package: */ +span.lettrine { font-size: 3ex ; float: left ; } +span.lettrinetext { font-variant: small-caps ; } + +/* ulem and soul packages: */ +span.uline { + text-decoration: underline ; + text-decoration-skip ; +} + +span.uuline { + text-decoration: underline ; + text-decoration-skip ; + text-decoration-style: double ; +} + +span.uwave { + text-decoration: underline ; + text-decoration-skip ; + text-decoration-style: wavy ; +} + +span.sout { + text-decoration: line-through ; +} + +span.xout { + text-decoration: line-through ; +} + +span.dashuline { + text-decoration: underline ; + text-decoration-skip ; + text-decoration-style: dashed ; +} + +span.dotuline { + text-decoration: underline ; + text-decoration-skip ; + text-decoration-style: dotted ; +} + +span.letterspacing { letter-spacing: .2ex ; } + +span.capsspacing { + font-variant: small-caps ; + letter-spacing: .1ex ; +} + +span.highlight { background: #F8E800 ; } + +html body { + margin: 0 ; + line-height: 1.2; +} + +body div { + margin: 0ex; +} + +h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph +{ + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + font-style: normal ; + font-weight: bold ; + text-align: left ; +} + +h1 { /* title of the entire website, used on each page */ + text-align: center ; + font-size: 2.5em ; + padding: .4ex 0em 0ex 0em ; +} +h2 { font-size: 2.25em } +h3 { font-size: 2em } +h4 { font-size: 1.75em } +h5 { font-size: 1.5em } +h6 { font-size: 1.25em } +span.paragraph {font-size: 1em ; font-variant: normal ; + margin-right: 1em ; } +span.subparagraph {font-size: 1em ; font-variant: normal ; + margin-right: 1em ; } + +/* Title of the file */ +h1 { + margin: 0ex 0em 0ex 0em ; + line-height: 1.3; + text-align: center ; +} + +/* Part */ +h2 { + margin: 1ex 0em 1ex 0em ; + line-height: 1.3; + text-align: center ; +} + +/* Chapter */ +h3 { + margin: 3ex 0em 1ex 0em ; + line-height: 1.3; +} + +/* Section */ +h4 { + margin: 3ex 0em 1ex 0em ; + line-height: 1.3; +} + +/* Sub-Section */ +h5 { + margin: 3ex 0em 1ex 0em ; + line-height: 1.3; +} + +/* Sub-Sub-Section */ +h6 { + margin: 3ex 0em 1ex 0em ; + line-height: 1.3; +} + +div.titlepage { + text-align: center ; +} + +.footnotes { + font-size: .85em ; + margin: 3ex 1em 0ex 1em ; + padding-bottom: 1ex ; +border-top: 1px solid silver ; +} + +.marginpar { + max-width:50%; + float:right; + text-align:left; + margin: 1ex 0.5em 1ex 1em ; + padding: 1ex 0.5em 1ex 0.5em ; + font-size: 85% ; + border-top: 1px solid silver ; + border-bottom: 1px solid silver ; + overflow-x: auto; +} + +.marginpar br { margin-bottom: 2ex ; } + +div.marginblock { + max-width:50%; + float:right; + text-align:left; + margin: 1ex 0.5em 1ex 1em ; + padding: 1ex 0.5em 1ex 0.5em ; + overflow-x: auto; +} + +div.marginblock div.minipage { + display: block ; + margin: 0pt auto 0pt auto ; +} + +div.marginblock div.minipage p { font-size: 85%} + +div.marginblock br { margin-bottom: 2ex ; } + +section.textbody div.footnotes{ + margin: 3ex 0em 0ex 0em ; + border-bottom: 2px solid silver ; +} + +.footnoteheader { + border-top: 2px solid silver ; + margin-top: 3ex ; + padding-top: 1ex ; + font-weight: bold ; +} + +.mpfootnotes { + text-align: left ; + font-size: .85em ; + margin-left: 1em ; + border-top: 1px solid silver ; +} + +/* Remove footnote top border in the title page. */ +div.titlepage div.mpfootnotes { + border-top: none ; +} + +ol { + margin: 1ex 1em 1ex 0em; + line-height: 1.2; +} + +ul, body dir, body menu { + margin: 1ex 1em 1ex 0em; + line-height: 1.2; +} + +li { margin: 0ex 0em 1ex 0em; } + +html { + margin: 0; + padding: 0; +} + +.programlisting { + font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", + "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", + "Courier New", monospace; + margin: 1ex 0ex 1ex 0ex ; + padding: .5ex 0pt .5ex 0pt ; + overflow-x: auto; +} + +section.textbody>pre.programlisting { +border-top: 1px solid silver ; +border-bottom: 1px solid silver ; +} + +.inlineprogramlisting { + font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console", + "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono", + "Courier New", monospace; + overflow-x: auto; +} + +div.abstract { + margin: 2em 5% 2em 5% ; + padding: 1ex 1em 1ex 1em ; +/* font-weight: bold ; */ + font-size: 90% ; +} + +div.abstract dl {line-height:1.5;} +div.abstract dt {color:#304070;} + +div.abstracttitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-size:1.25em; + text-align: center ; +} + +span.abstractrunintitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; +} + +.verbatim { + overflow-x: auto ; +} + +.alltt { + overflow-x: auto ; +} + +.bverbatim { + margin: 1ex 0pt 1ex 0pt ; + padding: .5ex 0pt .5ex 0pt ; + overflow-x: auto ; +} + +.lverbatim { + margin: 1ex 0pt 1ex 0pt ; + padding: .5ex 0pt .5ex 0pt ; + overflow-x: auto ; +} + +.fancyvrb { + font-size:.85em ; + margin: 3ex 0pt 3ex 0pt +} + +.fancyvrblabel { + font-weight:bold; + text-align: center ; +} + +.verse { + font-family: "Linux Libertine Mono O", "Lucida Console", + "Droid Sans Mono", "DejaVu Mono", "Bitstream Vera Mono", + "Liberation Mono", "FreeMono", "Andale Mono", + "Nimbus Mono L", "Courier New", monospace; + margin-left: 1em ; +} + +div.singlespace { line-height: 1.2 ; } +div.onehalfspace { line-height: 1.5 ; } +div.doublespace { line-height: 2 ; } + +/* Minipage environments, vertically aligned to top, center, bottom: */ +.minipage { + /* display: inline-block ; */ + /* Mini pages which follow each other will be tiled. */ + margin: .25em .25em .25em .25em; + padding: .25em .25em .25em .25em; + display: inline-flex; + flex-direction: column ; + overflow: auto; +} + +/* Paragraphs in the flexbox did not collapse their margins. */ +/* Have not yet researched this. */ +.minipage p {margin: .75ex 0em .75ex 0em ;} + +.framebox { + margin: 0ex ; + padding: 0ex ; + border: 1px solid black; + border-radius: 0px ; + padding: .3ex .2em 0ex .2em ; + margin: .1ex ; + display: inline-block ; +} + +.mdframed { +/* padding: 0ex ; */ +/* border: 1px solid blafck; */ +/* border-radius: 0px ; */ + padding: 0ex ; + margin: 3ex 5% 3ex 5% ; +/* display: inline-block ; */ +} + +.mdframed p { padding: 0ex .5em 0ex .5em ; } + +.mdframed dl { padding: 0ex .5em 0ex .5em ; } + +.mdframedtitle { + padding: .5em ; + display: block ; + font-size: 130% +} + +.mdframedsubtitle { + padding: 0ex .5em 0ex .5em ; + display: block ; + font-size: 115% ; +} + +.mdframedsubsubtitle { + padding: 0ex .5em 0ex .5em ; + display: block ; +} + +.mdtheorem { + padding: 0ex .5em 0ex .5em ; + margin: 3ex 5% 3ex 5% ; +/* display: inline-block ; */ +} + +/* framed package */ +.framed { + margin: 3ex 0em 3ex 0em ; + border: 1px solid black; + border-radius: 0px ; + padding: .3ex 1em 0ex 1em ; + display: block ; +} + +.snugframed { + margin: 3ex 0em 3ex 0em ; + border: 1px solid black; + border-radius: 0px ; + display: block ; +} + +.framedleftbar { + margin: 3ex 0em 3ex 0em ; + border-left: 3pt solid black; + border-radius: 0px ; + padding: .3ex .2em .3ex 1em ; + display: block ; +} + +.framedtitle { +margin: 0em ; +padding: 0em ; + font-size: 130% +} + +.framedtitle p { padding: .3em } + +dl { + margin: 1ex 2em 1ex 0em; + line-height: 1.3; +} + +dl dt { + margin-top: 1ex; + font-weight: bold; +} + +dl dd p { margin-top: 0em; } + +nav.toc, nav.lof, nav.lot, nav.lol, nav.lothm { + font-family: "URW Classico", Optima, "Linux Biolinum O", + "DejaVu Sans", "Bitstream Vera Sans", + Geneva, Verdana, sans-serif ; + margin-bottom: 4ex ; +} + +nav.toc p, nav.lof p, nav.lot p, nav.lol p, nav.lothm p { + line-height: 1.2 ; + margin-top:.5ex ; + margin-bottom:.5ex; + font-size: .9em ; +} + +img, img.hyperimage, img.borderimage { + max-width: 600px; + border: 1px solid silver; + box-shadow: 3px 3px 3px #808080 ; + padding: .5% ; + margin: .5% ; + background: none ; +} + +img.inlineimage{ + padding: 0px ; + box-shadow: none ; + border: none ; + background: none ; + margin: 0px ; + display: inline-block ; + border-radius: 0px ; +} + +img.logoimage{ + max-width: 300px ; + box-shadow: 3px 3px 3px #808080 ; + border: 1px solid black ; + background:none ; + padding:0 ; + margin:.5ex ; + border-radius: 10px ; +} + +.section { +/* + To have each section float relative to each other: +*/ +/* + display: block ; + float: left ; + position: relative ; + background: white ; + border: 1px solid silver ; + padding: .5em ; +*/ + margin: 0ex .5em 0ex .5em ; + padding: 0 ; +} + +figure { + margin: 3ex auto 3ex auto ; + padding: 1ex 1em 1ex 1em ; + overflow-x: auto ; +} + +/* To automatically center images in figures: */ +/* +figure img.inlineimage { + margin: 0ex auto 0ex auto ; + display: block ; +} +*/ + +/* To automatically center minipages in figures: */ +/* +figure div.minipage, figure div.minipage div.minipage { + margin: 1ex auto 1ex auto ; + display: block ; +} +*/ + +figure div.minipage p { font-size: 85% ; } + +figure.subfigure, figure.subtable { + display: inline-block ; margin: 3ex 1em 3ex 1em ; +} + +figcaption .minipage { margin:0 ; padding: 0 } + +div.floatrow { text-align: center; } + +div.floatrow figure { display: inline-block ; margin: 1ex 2% ; } + +div.floatfoot { font-size: .85em ; + border-top: 1px solid silver ; line-height: 1.2 ; } + +figcaption , .lstlistingtitle { + font-size: .85em ; + text-align: center ; + font-weight: bold ; +margin-top: 1ex ; +margin-bottom: 1ex ; +} + +figure.subfigure figcaption, figure.subtable figcaption { + border-bottom: none ; background: none ; +} + +div.nonfloatcaption { + margin: 1ex auto 1ex auto ; + font-size: .85em ; + text-align: center ; + font-weight: bold ; +} + +/* For a \RawCaption inside a minipage inside a figure's floatrow: */ +figure div.floatrow div.minipage figcaption { +border: none ; +background: none ; +} + +table { + margin: 1ex auto 1ex auto ; + border-collapse: collapse ; + border-spacing: 0px ; + line-height: 1.3 ; + } + +tr.hline {border-top: 1px solid silver ; margin-top: 0ex ; + margin-bottom: 0ex ; } /* for \hline */ + +tr.tbrule {border-top: 1px solid black ; margin-top: 0ex ; + margin-bottom: 0ex ; } /* for \toprule, \bottomrule */ + +td {padding: 1ex .5em 1ex .5em ;} + +table td.tdl { text-align: left ; vertical-align: middle ; } +table td.tdc { text-align: center ; vertical-align: middle ; } +table td.tdr { text-align: right ; vertical-align: middle ; } +table td.tdp { text-align: left ; vertical-align: bottom ; } +table td.tdm { text-align: left ; vertical-align: middle ; } +table td.tdb { text-align: left ; vertical-align: top ; } +table td.tdP { text-align: center ; vertical-align: bottom ; } +table td.tdM { text-align: center ; vertical-align: middle ; } +table td.tdB { text-align: center ; vertical-align: top ; } +table td.tdlrule { text-align: left ; border-top: 1px solid silver ; + vertical-align: middle ; } /* for cmidrule */ +table td.tdcrule { text-align: center ; border-top: 1px solid silver ; + vertical-align: middle ; } +table td.tdrrule { text-align: right ; border-top: 1px solid silver ; + vertical-align: middle ; } +table td.tdprule { text-align: left ; border-top: 1px solid silver ; + vertical-align: bottom ; } +table td.tdmrule { text-align: left ; border-top: 1px solid silver ; + vertical-align: middle ; } +table td.tdbrule { text-align: left ; border-top: 1px solid silver ; + vertical-align: top ; } +table td.tdPrule { text-align: center ; border-top: 1px solid silver ; + vertical-align: bottom ; } +table td.tdMrule { text-align: center ; border-top: 1px solid silver ; + vertical-align: middle ; } +table td.tdBrule { text-align: center ; border-top: 1px solid silver ; + vertical-align: top ; } + +/* Margins of paragraphs inside table cells: */ +td.tdp p , td.tdprule p , td.tdP p , td.tdPrule p { padding-top: 1ex ; + padding-bottom: 1ex ; margin: 0ex ; } +td.tdm p , td.tmbrule p , td.tdM p , td.tdMrule p { padding-top: 1ex ; + padding-bottom: 1ex ; margin: 0ex ; } +td.tdb p , td.tdbrule p , td.tdB p , td.tdBrule p { padding-top: 1ex ; + padding-bottom: 1ex ; margin: 0ex ; } + +td.tdp , td.tdprule , td.tdP , td.tdPrule + { padding: 0ex .5em 0ex .5em ; } +td.tdm , td.tdmrule , td.tdM , td.tdMrule + { padding: 0ex .5em 0ex .5em ; } +td.tdb , td.tdbrule , td.tdB , td.tdBrule + { padding: 0ex .5em 0ex .5em ; } + +/* table notes: */ +.tnotes { + margin: 0ex 5% 1ex 5% ; + padding: 0.5ex 1em 0.5ex 1em; + font-size:.85em; + text-align: left ; +} + +.tnotes dl dt p {margin-bottom:0px;} + +.tnoteitemheader {margin-right: 1em;} + +/* center, flushleft, flushright environments */ +div.center{text-align:center;} +div.center table {margin-left:auto;margin-right:auto;} +div.flushleft{text-align:left;} +div.flushleft table {margin-left:0em ; margin-right:auto;} +div.flushright{text-align:right;} +div.flushright table {margin-left:auto ; margin-right: 0em ;} + +/* program listing callouts: */ +span.callout { + font-family: "DejaVu Sans", "Bitstream Vera Sans", + Geneva, Verdana, sans-serif ; + border-radius: .5em; + background-color:black; + color:white; + padding:0px .25em 0px .25em; +margin: 0 ; + font-weight: bold; + font-size:.72em ; +} + +div.programlisting pre.verbatim span.callout{ +font-size: .85em ; +} + +div.published +{ + text-align: center ; + font-variant: normal ; + font-style: italic ; + font-size: 1em ; + margin: 3ex 0em 3ex 0em ; +} + +div.subtitle +{ + text-align: center ; + font-variant: normal ; + font-style: italic ; + font-size: 1.25em ; + margin: 3ex 0em 3ex 0em ; +} + +div.subtitle p { margin: 1ex ; } + +div.author +{ + font-variant: normal ; + font-style: normal ; + font-size: 1em ; + margin: 3ex 0em 3ex 0em ; +} + +div.author table { + margin: 3ex auto 0ex auto ; + background: none ; +} + +div.author table tbody tr td { padding: .25ex ; } + +span.affiliation {font-size: .85em ; font-variant: small-caps; } + +div.titledate { + text-align: center ; + font-size: .85em ; + font-style: italic; + margin: 6ex 0em 6ex 0em ; +} + +nav.topnavigation{ + text-align: left ; + padding: 0.5ex 1em 0.5ex 1em ; +/* margin: 2ex 0em 3ex 0em ; */ + margin: 0 ; + border-bottom: 1px solid silver ; + border-top: 1px solid silver ; + clear:right ; +} + +nav.botnavigation{ + text-align: left ; + padding: 0.5ex 1em 0.5ex 1em ; +/* margin: 3ex 0em 2ex 0em ; */ + margin: 0 ; + border-top: 1px solid silver ; + border-bottom: 1px solid silver ; + clear:right ; +} + +header{ + line-height: 1.2 ; + font-size: 1em ; +/* border-bottom: 2px solid silver ; */ + margin: 0px ; + padding: 0ex 1em 0ex 1em ; + text-align:center ; +} + +header p {margin:0ex;padding:4ex 0em 2ex 0em ;text-align:center;} + +footer{ + font-size: .85em ; + line-height: 1.2 ; + margin-top: 1ex ; + border-top: 2px solid silver ; + padding: 2ex 1em 2ex 1em ; + clear:right ; + text-align:left ; +} + +a.linkhome { font-weight:bold ; font-size: 1em ;} + +div.lateximagesource { padding: 0px ; margin: 0px ; display: none; } + +img.lateximage{ + padding: 0px 0px 0px 0px ; + box-shadow: none ; + border: none ; + background: none ; + margin: 0px 0px -.15ex 0px ; + /* pdfcrop leaves a slight margin, adjust to baseline */ + max-width: 100% ; + border-radius: 0ex ; + border: none ; +} + +nav.sidetoc { + font-family: "DejaVu Serif", "Bitstream Vera Serif", + "Lucida Bright", Georgia, serif; + float:right ; + width: 20%; + border-left: 1px solid silver; + border-top: 1px solid silver; + border-bottom: 1px solid silver; +/* border-top: 2px solid #808080 ; */ + background: #FAF7F4 ; + padding: 2ex 0em 2ex 1em ; + margin: 0ex 0em 2ex 1em ; + font-size:.9em ; + border-radius: 20px 0px 0px 20px ; + } + +div.sidetoccontents { +/* border-top: 1px solid silver ; */ + overflow-y: auto ; + width: 100% ; + text-align: left ; +} + +nav.sidetoc p {line-height:1.2 ; margin: 1ex .5em 1ex .5em ; + text-indent: 0 ; } +nav.sidetoc p a {color:black ; font-size: .7em ;} +div.sidetoctitle {font-size: 1.2em; font-weight:bold; text-align:center; + border-bottom: 1px solid silver ; } +nav.sidetoc a:hover {text-decoration: underline ; } + +section.textbody { margin: 0ex 1em 0ex 1em ;} + +div.multicolsheading { -webkit-column-span: all; + -moz-column-span: all; column-span: all; } +div.multicols { -webkit-columns: 3 380px ; + -moz-columns: 3 380px ; columns: 3 380px ; } +div.multicols p {margin-top: 0ex} + +/* Used to support algorithmicx: */ +span.floatright { float: right ; } + +/* Native LaTeX theorems: */ + +.theoremcontents { font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ; } +.theoremlabel { font-style: normal; font-weight: bold ; margin-right: .5em ; } + +/* theorem, amsthm, and ntheorem packages */ + +span.theoremheader, +span.theoremheaderplain, +span.theoremheaderdefinition, +span.theoremheaderbreak, +span.theoremheadermarginbreak, +span.theoremheaderchangebreak, +span.theoremheaderchange, +span.theoremheadermargin +{ +font-style:normal ; font-weight: bold ; margin-right: 1em ; +} + +span.amsthmnameplain, +span.amsthmnamedefinition, +span.amsthmnumberplain, +span.amsthmnumberdefinition +{ +font-style:normal ; font-weight: bold ; +} + +span.amsthmnameremark, +span.amsthmnumberremark +{font-style:italic ; font-weight: normal ; } + +span.amsthmnoteplain, +span.amsthmnotedefinition +{font-style:normal ;} + +span.theoremheaderremark, +span.theoremheaderproof, +span.amsthmproofname +{font-style:italic ; font-weight: normal ; margin-right: 1em ; } + +span.theoremheadersc +{ +font-style:normal ; +font-variant: small-caps ; +font-weight: normal ; +margin-right: 1em ; +} + +.theoremendmark {float:right} + +div.amsthmbodyplain, div.theorembodyplain, div.theorembodynonumberplain, +div.theorembodybreak, div.theorembodynonumberbreak, +div.theorembodymarginbreak, +div.theorembodychangebreak, +div.theorembodychange, +div.theorembodymargin +{ +font-style:italic; +margin-top: 3ex ; margin-bottom: 3ex ; +} + +div.theorembodydefinition, div.theorembodyremark, div.theorembodyproof, +div.theorembodyplainupright, nonumberplainuprightsc, +div.amsthmbodydefinition, div.amsthmbodyremark, +div.amsthmproof +{ +font-style: normal ; +margin-top: 3ex ; margin-bottom: 3ex ; +} + +span.amsthmnoteremark {} + +/* +For CSS LaTeX and related logos: +Based on: +http://edward.oconnor.cx/2007/08/tex-poshlet +http://nitens.org/taraborelli/texlogo +*/ + +.latexlogofont { + font-family: "Linux Libertine O", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-variant: normal ; +} + +.latexlogo { + font-family: "Linux Libertine O", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + letter-spacing: .03em ; + font-size: 1.1em; +} + +.latexlogo sup { + text-transform: uppercase; + letter-spacing: .03em ; + font-size: 0.85em; + vertical-align: 0.15em; + margin-left: -0.36em; + margin-right: -0.15em; +} + +.latexlogo sub { + text-transform: uppercase; + vertical-align: -0.5ex; + margin-left: -0.1667em; + margin-right: -0.125em; + font-size: 1em; +} + +.xetexlogo { + font-family: "Linux Libertine O", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + letter-spacing: .03em ; + font-size: 1.1em; +} + +/* A smaller gap between Xe and Tex v.s. LaTeX: */ +.xetexlogo sub { + text-transform: uppercase; + vertical-align: -0.5ex; + margin-left: -0.0667em; + margin-right: -0.2em; + font-size: 1em; + letter-spacing: .03em ; +} + +/* A large gap between Xe and LaTeX v.s. TeX: */ +.xelatexlogo sub { + text-transform: uppercase; + vertical-align: -0.5ex; + margin-left: -0.0667em; + margin-right: -.05em; + font-size: 1em; + letter-spacing: .03em ; +} + +.amslogo { + font-family: "TeXGyreChorus","URW Chancery L", + "Apple Chancery","ITC Zapf Chancery","Monotype Corsiva", + "Linux Libertine O", "Nimbus Roman No 9 L", "FreeSerif", + "Hoefler Text", Times, "Times New Roman", serif; + font-style: italic; +} + +.lyxlogo { + font-family: "URW Classico", Optima, "Linux Biolinum O", + "DejaVu Sans", "Bitstream Vera Sans", Geneva, +Verdana, sans-serif ; +} + +/* Only display top and bottom navigation if a small screen: */ +/* Hide the sidetoc if a small screen: */ +nav.topnavigation { display:none; } +nav.botnavigation { display:none; } + +@media screen and (max-width: 45em) { +/* nav.sidetoc {display:none;} */ + nav.sidetoc { + float: none ; + width: 100% ; + margin: 5ex 0px 5ex 0px ; + padding: 0 ; + border-radius: 0 ; + border-bottom: 1px solid black ; + border-top: 1px solid black ; + box-shadow: none ; + } +/* nav.topnavigation { display:block } */ + nav.botnavigation { display:block } + .marginpar { + max-width: 100%; + float: none; + display:block ; + margin: 1ex 1em 1ex 1em ; + } +} + +@media print { + body { + font-family: "Linux Libertine O", + "DejaVu Serif", "Bitstream Vera Serif", + "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + } + nav.sidetoc { display:none; } + nav.topnavigation { display: none; } + nav.botnavigation { display: none; } +} + +@media handheld { + nav.sidetoc { display:none; } + nav.topnavigation { display:block } + nav.botnavigation { display:block } +} + +@media projection { + nav.sidetoc { display:none; } + nav.topnavigation { display:block } + nav.botnavigation { display:block } +} +\end{VerbatimOut} +\end{warpprint} + + +\begin{warpprint} +\begin{VerbatimOut}{lwarp_sagebrush.css} +@import url("lwarp.css") ; + +A:link {color:#105030 ; text-decoration: none ; } +A:visited {color:#705030 ; text-shadow:1px 1px 2px #a0a0a0;} +A:hover {color:#006000 ; text-decoration: underline ; text-shadow:0px 0px 2px #a0a0a0;} +A:active {color:#00C000 ; text-shadow:1px 1px 2px #a0a0a0;} + +h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph +{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", + "Nimbus Roman No 9 L", "FreeSerif", + "Hoefler Text", Times, "Times New Roman", serif; + font-variant: small-caps ; +font-weight: normal ; + color: #304070 ; + text-shadow: 2px 2px 3px #808080; +} + +h1 { /* title of the entire website, used on each page */ + font-variant: small-caps ; + color: #304070 ; + text-shadow: 2px 2px 3px #808080; + background-color: #F7F7F0 ; + background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C4); +} + +h1 { + border-bottom: 1px solid #304070; + border-top: 2px solid #304070; +} + +h2 { + border-bottom: 1px solid #304070; + border-top: 2px solid #304070; + background-color: #F7F7F0 ; + background-image: linear-gradient(to bottom, #F7F7F0, #DAD0C0); +} + +div.abstract { + background: #f5f5eb ; + background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); + + border: 1px solid silver; + border-radius: 1em ; +} + +div.abstract dl {line-height:1.5;} +div.abstract dt {color:#304070;} + +div.abstracttitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-variant: small-caps ; + font-size:1.5em; + border-bottom: 1px solid silver ; + color: #304070 ; + text-align: center ; + text-shadow: 1px 1px 2px #808080; +} + +span.abstractrunintitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; +} + +div.epigraph { + background: #f5f5eb ; + background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); + + border: 1px solid silver ; + border-radius: 1ex ; + box-shadow: 3px 3px 3px #808080 ; +} + +.example { + background-color: #f5f5eb ; + background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); + +} + +div.exampletitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-variant: small-caps ; + border-bottom: 1px solid silver ; + color: #304070 ; + text-align: center ; + text-shadow: 1px 1px 2px #808080; +} + +.sidebar { + background-color: #f5f5eb ; + background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8); + +} + +div.sidebartitle{ + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-variant: small-caps ; + border-bottom: 1px solid silver ; + color: #304070 ; + text-align: center ; + text-shadow: 1px 1px 2px #808080; +} + +.fancyvrblabel { + font-family: "URW Classico", Optima, "Linux Biolinum O", + "Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L", + "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; + font-weight:bold; + font-variant: small-caps ; +font-size: 1.5em ; + color: #304070 ; + text-align: center ; + text-shadow: 1px 1px 2px #808080; +} + +.minipage { + background-color: #eeeee7 ; + border: 1px solid silver ; +border-radius: 1ex ; +} + +.framed .minipage , .framedleftbar .minipage { +border: none ; +background: none ; +padding: 0ex ; +margin: 0ex ; +} + +figure.figure .minipage, figcaption .minipage { border: none; } + +div.marginblock div.minipage { border: none; } + +figure , div.marginblock { + background-color: #eeeee7 ; + border: 1px solid silver ; + border-radius: 1ex ; + box-shadow: 3px 3px 3px #808080 ; +} + +figure figure { + border: 1px solid silver ; + margin: 0em ; +box-shadow: none ; +} + +/* +figcaption { + border-top: 1px solid silver ; + border-bottom: 1px solid silver ; + background-color: #e8e8e8 ; +} +*/ + +div.table { + box-shadow: 3px 3px 3px #808080 ; +} + +/* +.tnotes { + background: #e8e8e8; + border: 1px solid silver; +} +*/ + +nav.topnavigation{ + background-color: #b0b8b0 ; + background-image: linear-gradient(to bottom,#e0e0e0,#b0b8b0) ; +} + +nav.botnavigation{ + background-color: #b0b8b0 ; + background-image: linear-gradient(to top,#e0e0e0,#b0b8b0) ; +} + +header{ + background-color: #F7F7F0 ; + background-image: linear-gradient(to top, #F7F7F0, #b0b8b0); +} + +footer{ + background-color: #F7F7F0 ; + background-image: linear-gradient(to bottom, #F7F7F0, #b0b8b0); +} + +nav.sidetoc { + background-color: #F7F7F0 ; + background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C0); + box-shadow: 3px 3px 3px #808080 ; + border-radius: 0px 0px 0px 20px ; + } + +div.sidetoctitle {color: #304070 ; } + +nav.sidetoc a:hover { + color:#006000 ; + text-decoration: none ; + text-shadow:0px 0px 2px #a0a0a0; +} + +@media screen and (max-width: 45em) { + nav.sidetoc { border-radius: 0 ; } +} + +\end{VerbatimOut} +\end{warpprint} + + +\begin{warpprint} +\begin{VerbatimOut}{lwarp_formal.css} +@import url("lwarp.css") ; + +A:link {color:#802020 ; text-decoration:none; } +A:visited {color:#802020 ; text-shadow:none ;} +A:hover {color:#400000 ; text-shadow:none ;} +A:active {color:#C00000 ; text-shadow:none ;} + +body { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + background: #fffcf5; +} + +span.textrm { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; +} + +span.textsf { + font-family: "DejaVu Sans", "Bitstream Vera Sans", + Geneva, Verdana, sans-serif ; +} + +h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph +{ + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: #800000 ; + text-shadow: none ; +} + +h1, h2 { + background-color: #fffcf5 ; + background-image: none ; + border-bottom: 1px solid #808080; + border-top: 2px solid #808080; +} + +div.abstracttitle { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: black ; + text-shadow: none ; +} + +span.abstractrunintitle { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: black ; + text-shadow: none ; +} + +div.abstract { font-size: 100% } + +.sidebar { + background: #fffcf5; + background-image: none ; + margin: 2em 5% 2em 5%; + padding: 0.5em 1em; + border: none ; + border-top : 1px solid silver; + border-bottom : 1px solid silver; + font-size: 90% ; +} + +div.sidebartitle{ + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: #800000 ; + text-shadow: none ; + border: none ; +} + +.example { + background: #fffcf5; + background-image: none ; + margin: 2em 5% 2em 5%; + padding: 0.5em 1em; + border: none ; + border-top : 1px solid silver; + border-bottom : 1px solid silver; +} + +div.exampletitle{ + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: #800000 ; + text-shadow: none ; + border: none ; +} + +div.fancyvrblabel{ + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + color: #800000 ; + text-shadow: none ; + border: none ; +} + +.verse { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; +} + +figure { + margin: 3ex 5% 3ex 5% ; + padding: 1ex 1em 1ex 1em ; + background-color: #fffcf5 ; + overflow-x: auto ; + border: none ; +/* border-top: 1px solid silver; */ +/* border-bottom: 1px solid silver; */ +} + +figcaption , .lstlisting { + border: none ; +/* border-top: 1px solid silver ; */ +/* border-bottom: 1px solid silver ; */ + background-color: #fffcf5 ; +} + +.tnotes { + background: #fffcf5 ; +} + +.theorem { + background: none ; +} + +.minipage { + background-color: #fffcf5 ; + border: none ; +} + +div.floatrow figure { border: none ; } + +figure figure { border: none ; } + +nav.toc, nav.lof, nav.lot, nav.lol { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; +} + +nav.sidetoc { + font-family: "Linux Libertine O", "Hoefler Text", "Garamond", + "Bembo", "Janson", "TeX Gyre Pagella", "Palatino", + "Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times, + "Times New Roman", serif; + background-image: linear-gradient(to bottom, #fffcf5, #C0C0C0); + border-radius: 0px 0px 0px 20px ; +} + +div.sidetoctitle{ + color: #800000 ; +} + +header{ + background-color: #e0e0e0 ; + background-image: linear-gradient(to top, #fffcf5, #b0b0b0); + text-align:center ; +} + +footer{ + background-color: #e0e0e0 ; + background-image: linear-gradient(to bottom, #fffcf5, #b0b0b0); + padding: 2ex 1em 2ex 1em ; + clear:right ; + text-align:left ; +} + +nav.botnavigation { + background: #dedcd5 ; + border-top: 1px solid black ; +} +\end{VerbatimOut} +\end{warpprint} + + +\begin{warpprint} +\begin{VerbatimOut}{sample_project.css} +/* ( --- Start of project.css --- ) */ +/* A sample project-specific CSS file for lwarp --- ) */ + +/* Load default lwarp settings: */ +@import url("lwarp.css") ; +/* or lwarp_formal.css, lwarp_sagebrush.css */ + +/* Project-specific CSS setting follow here. */ +/* . . . */ + +/* ( --- End of project.css --- ) */ +\end{VerbatimOut} +\end{warpprint} + + +\begin{warpprint} +\begin{VerbatimOut}{lwarp.xdy} +(require "tex/inputenc/latin.xdy") +(merge-rule "\\PS *" "Postscript") +(require "texindy.xdy") +(require "page-ranges.xdy") +(require "book-order.xdy") +(markup-locref :open "\hyperindexref{" :close "}") +\end{VerbatimOut} +\end{warpprint} + + +\begin{warpprint} +\begin{VerbatimOut}{lwarp_mathjax.txt} +<!-- https://groups.google.com/forum/#!topic/ + mathjax-users/jUtewUcE2bY --> +<script type="text/x-mathjax-config"> +MathJax.Hub.Register.StartupHook("TeX AMSmath Ready",function () { + var seteqsectionDefault = {name: "", num: 0}; + var seteqsections = {}, seteqsection = seteqsectionDefault; + var TEX = MathJax.InputJax.TeX, PARSE = TEX.Parse; + var AMS = MathJax.Extension["TeX/AMSmath"]; + TEX.Definitions.Add({ + macros: { + seteqsection: "mySection", + seteqnumber: "mySetEqNumber" + } + }); + + PARSE.Augment({ + mySection: function (name) { + seteqsection.num = AMS.number; + var n = this.GetArgument(name); + if (n === "") { + seteqsection = seteqsectionDefault; + } else { + if (!seteqsections["_"+n]) + seteqsections["_"+n] = {name:n, num:0}; + seteqsection = seteqsections["_"+n]; + } + AMS.number = seteqsection.num; + }, + mySetEqNumber: function (name) { + var n = this.GetArgument(name); + if (!n || !n.match(/^ *[0-9]+ *$/)) + n = ""; else n = parseInt(n)-1; + <!-- $ syntax highlighting --> + if (n === "" || n < 1) + TEX.Error + ("Argument to "+name+" should be a positive integer"); + AMS.number = n; + } + }); + MathJax.Hub.Config({ + TeX: { + equationNumbers: { + formatTag: function (n) + {return "("+(seteqsection.name+"."+n).replace(/^\./,"")+")"}, + formatID: function (n) { + n = (seteqsection.name+'.'+n).replace + (/[:"'<>&]/g,"").replace(/^\./,""); + return 'mjx-eqn-' + n; + } + } + } + }); +}); +</script> + +<!-- http://docs.mathjax.org/en/latest/options/ThirdParty.html --> +<script type="text/x-mathjax-config"> + MathJax.Ajax.config.path["Contrib"] = + "https://cdn.mathjax.org/mathjax/contrib"; +</script> + +<!-- https://github.com/mathjax/MathJax-third-party-extensions/ + tree/master/siunitx --> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js","[Contrib]/siunitx/siunitx.js"], + jax: ["input/TeX","output/HTML-CSS"], + tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}, + TeX: {extensions: ["AMSmath.js","AMSsymbols.js", "sinuitx.js"]} + }); + </script> + +<script type="text/x-mathjax-config"> +MathJax.Hub.Config({ + TeX: { + equationNumbers: { + autoNumber: "AMS" + } + } +}); +</script> + +<!-- Alternative CDN provider: --> +<script type="text/javascript" async +src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML-full"> +</script> + +<!-- No longer supported after April 30, 2017: --> +<!-- +<script + src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full"> +</script> +--> + +\end{VerbatimOut} +\end{warpprint} + + +\begin{LWR@createlwarpmk} + +\begin{VerbatimOut}{lwarpmk.lua} +#!/usr/bin/env texlua + +-- Copyright 2016-2017 Brian Dunn + +-- Print the usage of the lwarpmk command: + +printversion = "v0.30" + +function printhelp () +print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ; +end + +function printusage () +print ( [[ + +lwarpmk print [project]: Compile a print version. +lwarpmk printindex [project]: Process the index for the print version. +lwarpmk printglossary [project]: Process the glossary for the print version. +lwarpmk html [project]: Compile an HTML version. +lwarpmk htmlindex [project]: Process the index for the html version. +lwarpmk htmlglossary [project]: Process the glossary for the html version. +lwarpmk again [project]: Touch the source code to trigger recompiles. +lwarpmk limages [project]: Process the "lateximages" created by lwarp.sty. +lwarpmk pdftohtml [project]: + For use with latexmk or a Makefile: + Convert project_html.pdf to project_html.html and + individual HTML files. +lwarpmk clean [project]: Remove project.aux, .toc, .lof/t, .idx, .ind, .log, .gl* +lwarpmk cleanall [project]: Remove auxiliary files and also project.pdf, *.html +lwarpmk -h: Print this help message. +lwarpmk --help: Print this help message. + +]] ) +printconf () +end + +-- Print the format of the configuration file lwarpmk.conf: + +function printconf () +print ( [[ +An example lwarpmk.conf or <project>.lwarpmkconf project file: +-- +opsystem = "Unix" (or "Windows") +latexname = "pdflatex" (or "lualatex", or "xelatex") +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) +languge = "english" (use a language supported by xindy) +xdyfile = "lwarp.xdy" (or a custom file based on lwarp.xdy) +-- +Filenames must contain only letters, numbers, underscore, or dash. +Values must be in "quotes". + +]] ) ; +end + +-- Split one large sourcefile into a number of files, +-- starting with destfile. +-- The file is split at each occurance of <!--|Start file|newfilename|* + +function splitfile (destfile,sourcefile) +print ("lwarpmk: Splitting " .. sourcefile .. " into " .. destfile) ; +io.input(sourcefile) +io.output(destfile) +for line in io.lines() do +i,j,copen,cstart,newfilename = string.find (line,"(.*)|(.*)|(.*)|") ; +if ( (i~= nil) and (copen == "<!--") and (cstart == "Start file")) then -- split the file +io.output(newfilename) ; +else -- not a splitpoint +io.write (line .. "\n") ; +end +end -- do +end -- function + +-- Incorrect value, so print an error and exit. + +function cvalueerror ( line, linenum , cvalue ) + print ( linenum .. " : " .. line ) ; + print ("lwarpmk: incorrect variable value \"" .. cvalue .. "\" in lwarpmk.conf.\n" ) ; + printconf () ; + os.exit(1) ; +end + +-- Load settings from the project's "lwarpmk.conf" file: + +function loadconf () +-- Default configuration filename: +local conffile = "lwarpmk.conf" +-- Optional configuration filename: +if arg[2] ~= nil then conffile = arg[2]..".lwarpmkconf" end +-- Default language: +language = "english" +-- Default xdyfile: +xdyfile = "lwarp.xdy" +-- Verify the file exists: +if (lfs.attributes(conffile,"mode")==nil) then -- file not exists +print("lwarpmk: " .. conffile .." does not exist.") +print("lwarpmk: " .. arg[2] .. " does not appear to be a project name.\n") +printhelp () ; +os.exit(1) -- exit the entire lwarpmk script +else -- file exists +-- Read the file: +print ("lwarpmk: Reading " .. conffile ..".") +io.input(conffile) ; +-- Scan each line: +local linenum = 0 +for line in io.lines() do -- scan lines +linenum = linenum + 1 +i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*\"([%w%-_%.]*)\"") ; +-- Error if incorrect enclosing characters: +if ( i == nil ) then +print ( linenum .. " : " .. line ) ; +print ( "lwarpmk: Incorrect entry in " .. conffile ..".\n" ) ; +printconf () ; +os.exit(1) ; +end +if ( cvarname == "opsystem" ) then + -- Verify choice of opsystem: + if ( (cvalue == "Unix") or (cvalue == "Windows") ) then + opsystem = cvalue + else + cvalueerror ( line, linenum , cvalue ) + end +elseif ( cvarname == "latexname" ) then + -- Verify choice of LaTeX compiler: + if ( + (cvalue == "pdflatex") or + (cvalue == "xelatex") or + (cvalue == "lualatex") + ) then + latexname = cvalue + else + cvalueerror ( line, linenum , cvalue ) + end +elseif ( cvarname == "sourcename" ) then sourcename = cvalue +elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue +elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue +elseif ( cvarname == "latexmk" ) then latexmk = cvalue +elseif ( cvarname == "language" ) then language = cvalue +elseif ( cvarname == "xdyfile" ) then xdyfile = cvalue +else +print ( linenum .. " : " .. line ) ; +print ("lwarpmk: Incorrect variable name \"" .. cvarname .. "\" in " .. conffile ..".\n" ) ; +printconf () ; +os.exit(1) ; +end +end -- do scan lines +end -- file exists +-- Select some operating-system commands: +if opsystem=="Unix" then -- For Unix / Linux / Mac OS: +rmname = "rm" +mvname = "mv" +touchnamepre = "touch" +touchnamepost = "" +dirslash = "/" +opquote= "\'" +elseif opsystem=="Windows" then -- For Windows +rmname = "DEL" +mvname = "MOVE" +touchnamepre = "COPY /b" +touchnamepost = "+,," +dirslash = "\\" +opquote= "\"" +else print ( "lwarpmk: Select Unix or Windows for opsystem" ) +end --- for Windows + +-- set xindycmd according to pdflatex vs xelatex/lualatex: +if ( latexname == "pdflatex" ) then +xindycmd = "texindy -C utf8" +glossarycmd = "xindy -C utf8" +else +xindycmd = "xindy -M texindy -C utf8" +glossarycmd = "xindy -C utf8" +end + +end -- loadconf + +function refreshdate () +os.execute(touchnamepre .. " " .. sourcename .. ".tex " .. touchnamepost) +end + +-- Scan the LaTeX log file for the phrase "Rerun to get", +-- indicating that the file should be compiled again. +-- Return true if found. + +function reruntoget (filesource) +io.input(filesource) +for line in io.lines() do +if ( string.find(line,"Rerun to get") ~= nil ) then return true end +end +return false +end + +-- Compile one time, return true if should compile again. +-- fsuffix is "" for print, "_html" for HTML output. + +function onetime (fsuffix) +print("lwarpmk: Compiling with " .. latexname .. " " .. sourcename..fsuffix) +err = os.execute( +-- "echo " .. + latexname .. " " .. sourcename..fsuffix ) +if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end +return (reruntoget(sourcename .. fsuffix .. ".log") ) ; +end + +-- Compile up to five times. +-- fsuffix is "" for print, "_html" for HTML output + +function manytimes (fsuffix) +if onetime(fsuffix) == true then +if onetime(fsuffix) == true then +if onetime(fsuffix) == true then +if onetime(fsuffix) == true then +if onetime(fsuffix) == true then +end end end end end +end + +-- Exit if the given file does not exist. + +function verifyfileexists (filename) +if (lfs.attributes ( filename , "modification" ) == nil ) then +print ( "lwarpmk: " .. filename .. " not found." ) ; +os.exit (1) ; +end +end + +-- Convert <project>_html.pdf into HTML files: + +function pdftohtml () + -- Convert to text: + print ("lwarpmk: Converting " .. sourcename + .."_html.pdf to " .. sourcename .. "_html.html") + os.execute("pdftotext -enc UTF-8 -nopgbrk -layout " + .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") + -- Split the result into individual HTML files: + splitfile (homehtmlfilename .. ".html" , sourcename .. "_html.html") +end + +-- Remove auxiliary files: + +function removeaux () + os.execute ( rmname .. " " .. + sourcename ..".aux " .. sourcename .. "_html.aux " .. + sourcename ..".toc " .. sourcename .. "_html.toc " .. + sourcename ..".lof " .. sourcename .. "_html.lof " .. + sourcename ..".lot " .. sourcename .. "_html.lot " .. + sourcename ..".idx " .. sourcename .. "_html.idx " .. + sourcename ..".ind " .. sourcename .. "_html.ind " .. + sourcename ..".log " .. sourcename .. "_html.log " .. + sourcename ..".gl* " .. sourcename .. "_html.gl* " + ) +end + +-- Create lateximages based on lateximages.txt: +function createlateximages () +print ("lwarpmk: Creating lateximages.") +io.input("lateximages.txt") +-- Create the lateximages directory, ignore error if alreadt exists +err = os.execute("mkdir lateximages") +-- Scan lateximages.txt +for line in io.lines() do +-- lwimgpage is the page number in the PDF which has the image +-- lwimgnum is the sequential lateximage number to assign for the image +i,j,lwimgpage,lwimgnum = string.find (line,"|(.*)|(.*)|") +-- For each entry: +if ( (i~=nil) ) then +-- Separate out the image into its own single-page pdf: +err = os.execute( +"pdfseparate -f " .. lwimgpage .. " -l " .. + lwimgpage .. " " .. sourcename .."_html.pdf lateximagetemp-%d.pdf") +-- Crop the image: +err = os.execute( +"pdfcrop --hires lateximagetemp-" .. lwimgpage ..".pdf lateximage-" .. lwimgnum ..".pdf") +if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end +-- Convert the image to svg: +err = os.execute( +"pdftocairo -svg lateximage-" .. lwimgnum ..".pdf lateximage-" .. lwimgnum ..".svg") +if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end +-- Move the result into lateximages/: +err = os.execute( +mvname .. " lateximage-" .. lwimgnum ..".svg lateximages" .. dirslash ) +if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end +-- Remove the temporary files: +err = os.execute( +rmname .. " lateximage-" .. lwimgnum ..".pdf lateximagetemp-" .. lwimgpage ..".pdf") +if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end +end +end -- do +end -- function + +-- Use latexmk to compile source and index: +-- fsuffix is "" for print, or "_html" for HTML +function compilelatexmk ( fsuffix ) + -- 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 " + .. "-e " + .. opquote + .. "$makeindex = q/" + .. xindycmd + .. " -M " .. xdyfile + .. " -L " .. language .. " /" + .. opquote + .. " -pdflatex=\"" .. latexname .." %O %S\" " + .. sourcename..fsuffix ..".tex" ) ; + if ( err ~= 0 ) then print ( "lwarpmk: Compile error.") ; os.exit(1) ; end +end + +-- lwarpmk --version : + +if (arg[1] == "--version") then +print ( "lwarpmk: " .. printversion ) + +else -- not -- version + +-- print intro: + +print ("lwarpmk: " .. printversion .. " Automated make for the LaTeX lwarp package.") + +-- lwarpmk print: + +if arg[1] == "print" then +loadconf () +if ( latexmk == "true" ) then + compilelatexmk ("") + print ("lwarpmk: Done.") +else -- not latexmk + verifyfileexists (sourcename .. ".tex") ; + -- See if up to date: + if ( + ( lfs.attributes ( sourcename .. ".pdf" , "modification" ) == nil ) or + ( + lfs.attributes ( sourcename .. ".tex" , "modification" ) > + lfs.attributes ( sourcename .. ".pdf" , "modification" ) + ) + ) then + -- Recompile if not yet up to date: + manytimes("") + print ("lwarpmk: Done.") ; + else + print ("lwarpmk: " .. sourcename .. ".pdf is up to date.") ; + end +end -- not latexmk + +-- lwarp printindex: +-- Compile the index then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "printindex" then +loadconf () +print ("lwarpmk: Processing the index.") +os.execute( + xindycmd + .. " -M " .. xdyfile + .. " -L " .. language + .. " " .. sourcename .. ".idx") +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarp printglossary: +-- Compile the glossary then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "printglossary" then +loadconf () +print ("lwarpmk: Processing the glossary.") + +os.execute(glossarycmd .. " -L " .. language .. " -I xindy -M " .. sourcename .. + " -t " .. sourcename .. ".glg -o " .. sourcename .. ".gls " + .. sourcename .. ".glo") +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk html: + +elseif arg[1] == "html" then +loadconf () +if ( latexmk == "true" ) then + compilelatexmk ("_html") + pdftohtml () + print ("lwarpmk: Done.") +else -- not latexmk + verifyfileexists ( sourcename .. ".tex" ) ; + -- See if exists and is up to date: + if ( + ( lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) == nil ) or + ( + lfs.attributes ( sourcename .. ".tex" , "modification" ) > + lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) + ) + ) then + -- Recompile if not yet up to date: + manytimes("_html") + pdftohtml () + print ("lwarpmk: Done.") + else + print ("lwarpmk: " .. homehtmlfilename .. ".html is up to date.") + end +end -- not latexmk + +elseif arg[1] == "pdftohtml" then + loadconf () + pdftohtml () + +-- lwarpmk htmlindex: +-- Compile the index then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "htmlindex" then +loadconf () +print ("lwarpmk: Processing the index.") +os.execute( + xindycmd + .. " -M " .. xdyfile + .. " -L " .. language + .. " " .. sourcename .. "_html.idx" +) +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk htmlglossary: +-- Compile the glossary then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "htmlglossary" then +loadconf () +print ("lwarpmk: Processing the glossary.") + +os.execute(glossarycmd .. " -L " .. language .. " -I xindy -M " ..sourcename .. + "_html -t " .. sourcename .. "_html.glg -o " ..sourcename .. + "_html.gls " ..sourcename .. "_html.glo") + +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk limages: +-- Scan the lateximages.txt file to create lateximages, +-- then touch the source to trigger a recompile. + +elseif arg[1] == "limages" then +loadconf () +print ("lwarpmk: Processing images.") +createlateximages () +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk again: +-- Touch the source to trigger a recompile. + +elseif arg[1] == "again" then +loadconf () +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") + +-- lwarpmk clean: +-- Remove project.aux, .toc, .lof, .lot, .idx, .ind, .log, .gl* + +elseif arg[1] == "clean" then +loadconf () +removeaux () +print ("lwarpmk: Done.") + +-- lwarpmk cleanall +-- Remove project.aux, .toc, .lof, .lot, .idx, .ind, .log, .gl* +-- and also project.pdf, *.html + +elseif arg[1] == "cleanall" then +loadconf () +removeaux () +os.execute ( rmname .. " " .. + sourcename .. ".pdf " .. sourcename .. "_html.pdf " .. + "*.html" + ) +print ("lwarpmk: Done.") + +-- lwarpmk with no argument : + +elseif (arg[1] == nil) then +printhelp () + +-- lwarpmk -h or lwarpmk --help : + +elseif (arg[1] == "-h" ) or (arg[1] == "--help") then +printusage () + +else +print ("lwarpmk: Unknown command \""..arg[1].."\".\n") +printhelp () +end + +end -- not --version +\end{VerbatimOut} +\end{LWR@createlwarpmk} \begin{warpHTML} @@ -654,8 +2924,8 @@ top=1in,bottom=1in,% \providecommand*{\BaseJobname}{\jobname} -\providecommand*{\HTMLfiveName}{} -\providecommand*{\HomeHTMLFileName}{\BaseJobname} +\providecommand*{\HTMLFilename}{} +\providecommand*{\HomeHTMLFilename}{\BaseJobname} \newcommand*{\SetHTMLFileNumber}[1]{% \setcounter{LWR@htmlfilenumber}{#1}% @@ -689,18 +2959,18 @@ top=1in,bottom=1in,% \OR \equal{\LWR@tempone}{??}% }% {% -\LWR@traceinfo{LWR@htmlsectionfilename B \HomeHTMLFileName.html}% -\HomeHTMLFileName.html% +\LWR@traceinfo{LWR@htmlsectionfilename B \HomeHTMLFilename.html}% +\HomeHTMLFilename.html% }% {% \LWR@traceinfo{LWR@htmlsectionfilename C \LWR@tempone}% \ifthenelse{% -\equal{\HTMLfiveName}{} \AND \equal{\LWR@tempone}{Index} \OR \equal{\LWR@tempone}{index}% +\equal{\HTMLFilename}{} \AND \equal{\LWR@tempone}{Index} \OR \equal{\LWR@tempone}{index}% }% {% \LWR@traceinfo{prefixing the index name with an underscore.}% \_#1.html}% -{\HTMLfiveName#1.html}% +{\HTMLFilename#1.html}% }% \LWR@traceinfo{LWR@htmlsectionfilename Z}% } @@ -718,7 +2988,7 @@ top=1in,bottom=1in,% \newcommand*{\LinkHome}{% \LWR@subhyperrefclass{% -\HomeHTMLFileName.html}% +\HomeHTMLFilename.html}% {Home}{linkhome}% } @@ -1114,7 +3384,7 @@ top=1in,bottom=1in,% \renewcommand{\LWR@firstpagetop}{#1} \catcode`\_=8 } -\newcommand{\SetFirstPageTop}{% +\newcommand{\HTMLFirstPageTop}{% \catcode`\_=12 \LWR@setfirstpagetopb } @@ -1122,7 +3392,7 @@ top=1in,bottom=1in,% \renewcommand{\LWR@pagetop}{#1} \catcode`\_=8 } -\newcommand{\SetPageTop}{% +\newcommand{\HTMLPageTop}{% \catcode`\_=12 \LWR@setpagetopb } @@ -1130,7 +3400,7 @@ top=1in,bottom=1in,% \renewcommand{\LWR@pagebottom}{#1} \catcode`\_=8 } -\newcommand{\SetPageBottom}{% +\newcommand{\HTMLPageBottom}{% \catcode`\_=12 \LWR@setpagebottomb } @@ -1148,31 +3418,31 @@ top=1in,bottom=1in,% \catcode`\_=8 } -\newcommand*{\NewCSS}{ +\newcommand*{\CSSFilename}{ \catcode`\_=12 \LWR@newcssb } \end{warpHTML} \begin{warpprint} -\newcommand*{\NewCSS}[1]{} +\newcommand*{\CSSFilename}[1]{} \end{warpprint} \begin{warpall} -\newcommand{\theHTMLauthor}{\theauthor} +\newcommand{\theHTMLAuthor}{\theauthor} -\newcommand{\HTMLauthor}[1]{\renewcommand{\theHTMLauthor}{#1}} +\newcommand{\HTMLAuthor}[1]{\renewcommand{\theHTMLAuthor}{#1}} \end{warpall} \begin{warpall} -\newcommand{\LWR@currentHTMLdescription}{} +\newcommand{\LWR@currentHTMLDescription}{} -\newcommand{\NewHTMLdescription}[1]{% -\renewcommand{\LWR@currentHTMLdescription}{#1} +\newcommand{\HTMLDescription}[1]{% +\renewcommand{\LWR@currentHTMLDescription}{#1} } \end{warpall} @@ -1610,9 +3880,17 @@ top=1in,bottom=1in,% \end{warpHTML} -\begin{warpHTML} +\begin{warpall} -\newcommand*{\MetaLanguage}{en-US} +\newcommand*{\LWR@currentHTMLLanguage}{en-US} + +\newcommand*{\HTMLLanguage}[1]{% +\renewcommand*{\LWR@currentHTMLLanguage}{#1}% +} + +\end{warpall} + +\begin{warpHTML} \newcommand*{\LWR@filestart}[1]{ @@ -1631,17 +3909,17 @@ top=1in,bottom=1in,% \RenewDocumentCommand{\LWR@htmlspanclass}{m o +m}{##3} \DeclareExpandableDocumentCommand{\InlineClass}{m o m}{##3} \LWR@htmltag{!DOCTYPE html}\LWR@orignewline -\LWR@htmltag{html lang="\MetaLanguage"{}}\LWR@orignewline +\LWR@htmltag{html lang="\LWR@currentHTMLLanguage"{}}\LWR@orignewline \LWR@htmltag{head}\LWR@orignewline \LWR@htmltag{meta charset="UTF-8" /}\LWR@orignewline -\ifcsempty{theHTMLauthor}{}{ -\LWR@htmltag{meta name="author" content="\theHTMLauthor" /}\LWR@orignewline +\ifcsempty{theHTMLAuthor}{}{ +\LWR@htmltag{meta name="author" content="\theHTMLAuthor" /}\LWR@orignewline } \LWR@htmltag{meta name="generator" content="LaTeX lwarp package" /}% \LWR@orignewline -\ifdefempty{\LWR@currentHTMLdescription}{}{% +\ifdefempty{\LWR@currentHTMLDescription}{}{% \LWR@htmltag{% -meta name="description" content="\LWR@currentHTMLdescription" /}% +meta name="description" content="\LWR@currentHTMLDescription" /}% \LWR@orignewline }% \LWR@htmltag{meta name="viewport" % @@ -1682,10 +3960,10 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \setcounter{FileDepth}{-5}% \boolfalse{HTMLDebugComments}% }{} -\edef\LWR@strresult{\HomeHTMLFileName} -\edef\HomeHTMLFileName{\detokenize\expandafter{\LWR@strresult}} -\edef\LWR@strresult{\HTMLfiveName} -\edef\HTMLfiveName{\detokenize\expandafter{\LWR@strresult}} +\edef\LWR@strresult{\HomeHTMLFilename} +\edef\HomeHTMLFilename{\detokenize\expandafter{\LWR@strresult}} +\edef\LWR@strresult{\HTMLFilename} +\edef\HTMLFilename{\detokenize\expandafter{\LWR@strresult}} \LWR@origonecolumn% \LWR@origscriptsize% \LWR@origraggedright% @@ -3689,9 +5967,7 @@ class="#3"\LWR@orignewline}#2\LWR@htmltag{/a}% \endgroup \@esphack} -\newcommand*{\hyperindexref}[1]{ -\nameref{LWRindex-#1}% -} +\newcommand*{\hyperindexref}[1]{\nameref{LWRindex-#1}} \end{warpHTML} @@ -5011,39 +7287,6 @@ display:inline-block;"% \end{warpHTML} - -\providecommand*{\HomeHTMLFileName}{\BaseJobname} -\providecommand*{\HTMLfiveName}{} -\providecommand*{\UseLatexmk}{false} - -\begin{warpprint} -\ifcsdef{LWR@file}{}{\newwrite{\LWR@file}} -\immediate\openout\LWR@file=lwarpmk.conf -\ifwindows -\immediate\write\LWR@file{opsystem = "Windows"} -\else -\immediate\write\LWR@file{opsystem = "Unix"} -\fi -\ifPDFTeX -\immediate\write\LWR@file{latexname = "pdflatex"} -\fi -\ifXeTeX -\immediate\write\LWR@file{latexname = "xelatex"} -\fi -\ifLuaTeX -\immediate\write\LWR@file{latexname = "lualatex"} -\fi -\immediate\write\LWR@file{sourcename = "\jobname"} -\immediate\write\LWR@file{% -homehtmlfilename = "\HomeHTMLFileName"% -} -\immediate\write\LWR@file{htmlfilename = "\HTMLfiveName"} -\immediate\write\LWR@file{uselatexmk = "\UseLatexmk"} -\immediate\write\LWR@file{language = "\LWR@lwarpmklang"} -\immediate\closeout\LWR@file -\end{warpprint} - - \endinput %% %% End of file `lwarp.sty'. |