texlive[44119] trunk: lwarp (29apr17)

commits+karl at tug.org commits+karl at tug.org
Sun Apr 30 00:24:29 CEST 2017


Revision: 44119
          http://tug.org/svn/texlive?view=revision&revision=44119
Author:   karl
Date:     2017-04-30 00:24:28 +0200 (Sun, 30 Apr 2017)
Log Message:
-----------
lwarp (29apr17)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
    trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
    trunk/Master/texmf-dist/doc/latex/lwarp/README.txt
    trunk/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
    trunk/Master/texmf-dist/doc/latex/lwarp/lwarp_tutorial.txt
    trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
    trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
    trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty

Removed Paths:
-------------
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-newproject.sty

Modified: trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2017-04-29 22:23:07 UTC (rev 44118)
+++ trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2017-04-29 22:24:28 UTC (rev 44119)
@@ -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 @@
 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 @@
 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 @@
 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 == "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 @@
 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 @@
 
 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 -- 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 @@
 
 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 @@
 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 @@
 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 @@
 
 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] == "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 @@
 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")
 

Modified: trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl	2017-04-29 22:23:07 UTC (rev 44118)
+++ trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl	2017-04-29 22:24:28 UTC (rev 44119)
@@ -1,5 +1,5 @@
 #!/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
@@ -6,8 +6,8 @@
 # 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 @@
 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,19 +7151,13 @@
   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.
+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.
 
-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
-
 Warning: The general facility is here, but tinkering with settings in
 this way is strongly discouraged.  Again, no error checking on either
 keys or values is done, so any sort of breakage is possible.

Modified: trunk/Master/texmf-dist/doc/latex/lwarp/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lwarp/README.txt	2017-04-29 22:23:07 UTC (rev 44118)
+++ trunk/Master/texmf-dist/doc/latex/lwarp/README.txt	2017-04-29 22:24:28 UTC (rev 44119)
@@ -1,5 +1,5 @@
 
-LaTeX lwarp package v0.29   README.txt
+LaTeX lwarp package v0.30   README.txt
 
 Files included are:
 

Modified: trunk/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/lwarp/lwarp_tutorial.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lwarp/lwarp_tutorial.txt	2017-04-29 22:23:07 UTC (rev 44118)
+++ trunk/Master/texmf-dist/doc/latex/lwarp/lwarp_tutorial.txt	2017-04-29 22:24:28 UTC (rev 44119)
@@ -6,50 +6,56 @@
 \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.
 
-\tableofcontents \listoffigures % --- MUST BE BEFORE THE FIRST SECTION.
+% An article abstract would go here.
 
+\tableofcontents                % MUST BE BEFORE THE FIRST SECTION BREAK!
+\listoffigures
+
 \chapter{First chapter}
 
 \section{A section}
@@ -68,6 +74,7 @@
 \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}

Modified: trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua	2017-04-29 22:23:07 UTC (rev 44118)
+++ trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua	2017-04-29 22:24:28 UTC (rev 44119)
@@ -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 @@
 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 @@
 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 @@
 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 == "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 @@
 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 @@
 
 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 -- 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 @@
 
 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 @@
 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 @@
 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 @@
 
 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] == "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 @@
 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")
 

Modified: trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2017-04-29 22:23:07 UTC (rev 44118)
+++ trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2017-04-29 22:24:28 UTC (rev 44119)
@@ -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 @@
 }
 
 \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 @@
 \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 @@
 \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 @@
 %<*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 @@
 % \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 @@
 % 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 @@
 %	\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 @@
 % 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 @@
 %
 % (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 @@
 % 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 @@
 %
 % \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 @@
 % 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 @@
 %
 %	Another copy may be found by entering into a command line:
 % \DescribeFile{lwarp_tutorial.txt}
+%	\watchout[Note: |.txt| suffix!]
 %	\userentry{texdoc -l lwarp\_tutorial.txt}
-%	\watchout[Note: |.txt| suffix!]
 %
 %	This should be in the |doc/latex/lwarp/| directory along
 %	with this \PDF\ documentation.
@@ -2170,7 +2272,7 @@
 %	\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 @@
 %
 % (|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 @@
 %
 % \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 @@
 %	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 @@
 % \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 @@
 %
 % \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 @@
 %	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 @@
 %	\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 @@
 %	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 @@
 %	\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,14 +2543,10 @@
 % \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}|
+%	mathjax, \% Use MathJax to display math.
 %	\end{sourcedisplay}
-%	to
-%	\begin{sourcedisplay}
-%	|\usepackage[mathjax]{lwarp}|
-%	\end{sourcedisplay}
 %
 % \item Recompile \userentry{lwarpmk html}
 %
@@ -2537,18 +2567,18 @@
 % \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,
@@ -2555,16 +2585,16 @@
 %	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 @@
 % 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,44 +2619,50 @@
 %
 % 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}
 %
 % \item[Placed in the preamble before \texttt{\cs{begin}\{document\}}:] \
@@ -2715,7 +2753,7 @@
 %
 % \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 @@
 %	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 @@
 %
 %	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 @@
 %	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,16 +2801,44 @@
 %	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}
 %
-% \ItemDescribeMacro{\SetFirstPageTop} \marg{contents} \quad
+%
+% \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{\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.
@@ -2776,7 +2845,7 @@
 %	|\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 @@
 %
 % \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 @@
 % 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 @@
 % \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 @@
 %
 % \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 @@
 % \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 @@
 % \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 @@
 % \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 @@
 % 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 @@
 % \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,17 +3529,59 @@
 % 
 % \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 @@
 %
 % \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 @@
 % \margintag{custom MathJax macros}
 % see page \pageref{ex:mathjaxmacros}.
 %
-% \subsubsection{Ntheorem}
+% \subsubsection{\pkg{ntheorem} package}
 %
 % \limitsntheorem
 %
@@ -3478,7 +3624,7 @@
 % \limitsgraphics
 %
 %
-% \subsubsection{Xcolor}
+% \subsubsection{\pkg{xcolor} package}
 %
 % \limitsxcolor
 %
@@ -3488,7 +3634,7 @@
 % \limitstabular
 %
 %
-% \subsubsection{Longtable}
+% \subsubsection{\pkg{longtable} package}
 %
 % \limitslongtable
 %
@@ -3505,7 +3651,7 @@
 % \limitsminipage
 %
 %
-% \subsubsection{Mdframed}
+% \subsubsection{\pkg{mdframed} package}
 %
 % \limitsmdframed
 %
@@ -3535,13 +3681,6 @@
 % \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 @@
 %
 % 
 % \subsubsection{\pkg{glossaries} package}
+% \label{sec:glossaries}
 %
 % \DescribePackage{glossaries}
 % \limitsglossaries
@@ -3610,7 +3750,7 @@
 % 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 @@
 % \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 @@
 %
 %
 % \subsection{Modifying \protect\texttt{lwarpmk}}
+% \label{sec:modifylwarpmk}
 %
 % \changes{v0.28}{2017/04/14}{Docs: Modfying lwarpmk and index processing.}
 %
@@ -3878,11 +4015,10 @@
 % 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,26 +4032,8 @@
 % 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
 %
 % \section{Troubleshooting}
@@ -3969,6 +4087,8 @@
 %	\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 @@
 % \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 @@
 % \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 @@
 %
 % \clearpage
 %
-%
-%
 % \section{Detecting the \TeX\ Engine — pdflatex, lualatex, xelatex}
 %
 %    \begin{macrocode}
@@ -4242,12 +4365,12 @@
 \fi
 %    \end{macrocode}
 %
+
+
+% \clearpage
 %
+% \section{Early package requirements}
 %
-% \section{Handling package options}
-% \label{sec:handlingpackageoptions}
-%
-%
 % \DescribePackage{etoolbox}
 % Provides |\ifbool| and other functions.
 %
@@ -4276,6 +4399,76 @@
 
 
 
+% \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 at 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 at 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 at setOSWindows
+\fi
+%    \end{macrocode}
+
+
+
+
+
+%
+% \section{Package options}
+% \label{sec:handlingpackageoptions}
+%
+%
+
+
 % \DescribePackage{kvoptions}
 % Allows key/value package options.
 %    \begin{macrocode}
@@ -4334,10 +4527,11 @@
 % \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 @@
 % \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 @@
 
 %
 % \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 @@
 }
 %    \end{macrocode}
 %
-% \DescribeOption[lwarp]{mathjax}
+% \DescribeOption{mathjax}
 % Option |mathjax| selects MathJax math display:
 % \index{math>mathjax option}
 % \index{MathJax>mathjax option}
@@ -4397,13 +4591,15 @@
 }
 %    \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}
@@ -4410,18 +4606,106 @@
 
 
 
-% \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]{lwarpmklang}
+\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[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 at 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 at setOSWindows
+}
+%    \end{macrocode}
+
+
+
+% \DescribeOption{HomeHTMLFilename}
+% The filename of the homepage.
+% The default is the jobname.
+% This option is stored into \cs{LWR at 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 at 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,14 +4713,25 @@
 \booltrue{warpingprint}%
 \boolfalse{warpingHTML}%
 \boolfalse{mathjax}%
+%    \end{macrocode}
 
 
-% \ExecuteOptions{warpprint,mathsvg}
 
+% Optionally generate a local copy of |lwarpmk|.  Default to no:
+%    \begin{macrocode}
+\excludecomment{LWR at createlwarpmk}
+%    \end{macrocode}
+
+
+% 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 at BaseJobname}
@@ -4443,17 +4738,23 @@
 %    \end{macrocode}
 
 
+% Defaults unless already over-ridden by the user:
+%    \begin{macrocode}
+\ifcsempty{LWR at HomeHTMLFilename}{
+\newcommand*{\HomeHTMLFilename}{\BaseJobname}
+}{
+\csedef{HomeHTMLFilename}{\LWR at HomeHTMLFilename}
+}
 
-% \begin{macro}{\@nameedef} \marg{name} \marg{defn}
-%
-% Expands |<defn>| before assigning to |<name>|
-%    \begin{macrocode}
-\def\@nameedef#1{\expandafter\edef\csname #1\endcsname}
+\csedef{HTMLFilename}{\LWR at HTMLFilename}
 %    \end{macrocode}
-% \end{macro}
+% 
 
 
 
+
+
+
 % \section{Misplaced packages}
 %
 % \changes{v0.21}{2017/02/22}{Add: Errors for misplaced packages.}
@@ -5499,75 +5800,2551 @@
 
 
 
-% \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 at file}{}{\newwrite{\LWR at file}}
+\immediate\openout\LWR at file=\jobname_html.tex
+\immediate\write\LWR at file{%
+\detokenize{\PassOptionsToPackage}%
+{warpHTML,BaseJobname=\jobname}{lwarp}%
+}
+\immediate\write\LWR at file{%
+\detokenize{\input}\string{\jobname.tex\string }%
+}
+\immediate\closeout\LWR at 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|.
 %
-% \subsection{Common portability code}
+% 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}
 %
-% \DescribeBoolean{usingOSwindows}Set if \cs{warpOSwindows}.
+% \changes{v0.29}{2017/04/15}{File \protect\texttt{lwarpmk.conf}: Add: \protect\texttt{language} option for config files.}
+%
+% \codeprint
 %    \begin{macrocode}
-\newbool{usingOSwindows}
-\boolfalse{usingOSwindows}
+\begin{warpprint}
+\ifcsdef{LWR at file}{}{\newwrite{\LWR at file}}
+\immediate\openout\LWR at file=lwarpmk.conf
+\ifbool{usingOSWindows}{
+\immediate\write\LWR at file{opsystem = "Windows"}
+}{
+\immediate\write\LWR at file{opsystem = "Unix"}
+}
+\ifPDFTeX
+\immediate\write\LWR at file{latexname = "pdflatex"}
+\fi
+\ifXeTeX
+\immediate\write\LWR at file{latexname = "xelatex"}
+\fi
+\ifLuaTeX
+\immediate\write\LWR at file{latexname = "lualatex"}
+\fi
+\immediate\write\LWR at file{sourcename = "\jobname"}
+\immediate\write\LWR at file{%
+homehtmlfilename = "\HomeHTMLFilename"%
+}
+\immediate\write\LWR at file{htmlfilename = "\HTMLFilename"}
+\immediate\write\LWR at file{latexmk = "\ifbool{LWR at latexmk}{true}{false}"}
+\immediate\write\LWR at file{language = "\LWR at IndexLanguage"}
+\immediate\write\LWR at file{xdyfile = "\LWR at xdyFilename"}
+\immediate\closeout\LWR at file
+\end{warpprint}
 %    \end{macrocode}
 
+
+
+% \subsection{project.lwarpmkconf}
 %
-% \subsection{Unix, Linux, and Mac\,OS}
-
-% \begin{macro}{\OSPathSymbol}
-% Symbol used to separate directories in a path.
+% \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 at file}{}{\newwrite{\LWR at file}}
+\immediate\openout\LWR at file=\jobname.lwarpmkconf
+\ifbool{usingOSWindows}{
+\immediate\write\LWR at file{opsystem = "Windows"}
+}{
+\immediate\write\LWR at file{opsystem = "Unix"}
+}
+\ifPDFTeX
+\immediate\write\LWR at file{latexname = "pdflatex"}
+\fi
+\ifXeTeX
+\immediate\write\LWR at file{latexname = "xelatex"}
+\fi
+\ifLuaTeX
+\immediate\write\LWR at file{latexname = "lualatex"}
+\fi
+\immediate\write\LWR at file{sourcename = "\jobname"}
+\immediate\write\LWR at file{%
+homehtmlfilename = "\HomeHTMLFilename"%
+}
+\immediate\write\LWR at file{htmlfilename = "\HTMLFilename"}
+\immediate\write\LWR at file{latexmk = "\ifbool{LWR at latexmk}{true}{false}"}
+\immediate\write\LWR at file{language = "\LWR at IndexLanguage"}
+\immediate\write\LWR at file{xdyfile = "\LWR at xdyFilename"}
+\immediate\closeout\LWR at 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; }
+
+ at 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 ;
+    }
+}
+
+ at 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; }
+}
+
+ at media handheld {
+    nav.sidetoc { display:none; }
+    nav.topnavigation { display:block }
+    nav.botnavigation { display:block }
+}
+
+ at 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}
+ at 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;
+}
+
+
+ at 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}
+ at 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: */
+ at 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 at 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 at createlwarpmk}
+%    \end{macrocode}
+%
+
+
+
+
+
 % \section{Stacks}
 
 % \codehtml
@@ -5838,8 +8615,8 @@
 % \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,13 +8630,13 @@
 % 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,
@@ -5866,11 +8643,11 @@
 % 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}.
@@ -5877,7 +8654,7 @@
 % See \cref{sec:filenameexamples}.
 %
 %    \begin{macrocode}
-\providecommand*{\HomeHTMLFileName}{\BaseJobname}
+\providecommand*{\HomeHTMLFilename}{\BaseJobname}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -5932,11 +8709,11 @@
 %
 % \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 at htmlsectionfilename}[1]{%
 \LWR at traceinfo{LWR at htmlsectionfilename A}%
@@ -5960,8 +8737,8 @@
 \OR \equal{\LWR at tempone}{??}%
 }%
 {%
-\LWR at traceinfo{LWR at htmlsectionfilename B \HomeHTMLFileName.html}%
-\HomeHTMLFileName.html%
+\LWR at traceinfo{LWR at 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 @@
 {%
 \LWR at traceinfo{LWR at htmlsectionfilename C \LWR at tempone}%
 \ifthenelse{%
-\equal{\HTMLfiveName}{} \AND \equal{\LWR at tempone}{Index} \OR \equal{\LWR at tempone}{index}%
+\equal{\HTMLFilename}{} \AND \equal{\LWR at tempone}{Index} \OR \equal{\LWR at tempone}{index}%
 }%
 {%
 \LWR at traceinfo{prefixing the index name with an underscore.}%
@@ -5978,7 +8755,7 @@
 %    \end{macrocode}
 % Otherwise, create a filename with the chosen prefix:
 %    \begin{macrocode}
-{\HTMLfiveName#1.html}%
+{\HTMLFilename#1.html}%
 }%
 \LWR at traceinfo{LWR at htmlsectionfilename Z}%
 }
@@ -6017,7 +8794,7 @@
 %    \begin{macrocode}
 \newcommand*{\LinkHome}{%
 \LWR at subhyperrefclass{%
-\HomeHTMLFileName.html}%
+\HomeHTMLFilename.html}%
 {Home}{linkhome}%
 }
 %    \end{macrocode}
@@ -6919,13 +9696,18 @@
 \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 at setfirstpagetopb
 }
 %    \end{macrocode}
+%
+%
 % \end{macro}
 %    \begin{macrocode}
 \newcommand{\LWR at setpagetopb}[1]{%
@@ -6933,14 +9715,21 @@
 \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 at setpagetopb
 }
 %    \end{macrocode}
 % \end{macro}
+%
+%
 %    \begin{macrocode}
 \newcommand{\LWR at setpagebottomb}[1]{%
 \renewcommand{\LWR at pagebottom}{#1}
@@ -6947,9 +9736,14 @@
 \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 at setpagebottomb
 }
@@ -6970,7 +9764,7 @@
 %    \end{macrocode}
 
 % \begin{macro}{\LWR at 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,9 +9773,11 @@
 %    \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.
 %
-% 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 at newcssb}[1]{%
 \renewcommand*{\LWR at currentcss}{#1}
@@ -6988,7 +9784,7 @@
 \catcode`\_=8
 }
 
-\newcommand*{\NewCSS}{
+\newcommand*{\CSSFilename}{
 \catcode`\_=12
 \LWR at newcssb
 }
@@ -6998,7 +9794,7 @@
 % \codeprint
 %    \begin{macrocode}
 \begin{warpprint}
-\newcommand*{\NewCSS}[1]{}
+\newcommand*{\CSSFilename}[1]{}
 \end{warpprint}
 %    \end{macrocode}
 % \end{macro}
@@ -7007,8 +9803,6 @@
 
 % \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 @@
 \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,13 +9837,13 @@
 %    \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}
@@ -7053,11 +9850,14 @@
 % \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 at currentHTMLdescription}{}
+\newcommand{\LWR at currentHTMLDescription}{}
 
-\newcommand{\NewHTMLdescription}[1]{%
-\renewcommand{\LWR at currentHTMLdescription}{#1}
+\newcommand{\HTMLDescription}[1]{%
+\renewcommand{\LWR at currentHTMLDescription}{#1}
 }
 
 \end{warpall}
@@ -8011,19 +10811,35 @@
 % \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 at currentHTMLLanguage}{en-US}
+
+\newcommand*{\HTMLLanguage}[1]{%
+\renewcommand*{\LWR at currentHTMLLanguage}{#1}%
+}
 %    \end{macrocode}
 % \end{macro}
 
+%    \begin{macrocode}
+\end{warpall}
+%    \end{macrocode}
 
+
+% \codehtml
+%    \begin{macrocode}
+\begin{warpHTML}
+%    \end{macrocode}
+
 % \begin{macro}{\LWR at filestart} \marg{title\_suffix}
 
 % Creates the opening \HTML\ tags.
@@ -8058,7 +10874,7 @@
 %    \end{macrocode}
 % The language is user-adjustable:
 %    \begin{macrocode}
-\LWR at htmltag{html lang="\MetaLanguage"{}}\LWR at orignewline
+\LWR at htmltag{html lang="\LWR at currentHTMLLanguage"{}}\LWR at orignewline
 %    \end{macrocode}
 % Start of the meta data:
 %    \begin{macrocode}
@@ -8071,8 +10887,8 @@
 %
 % Author:
 %    \begin{macrocode}
-\ifcsempty{theHTMLauthor}{}{
-\LWR at htmltag{meta name="author" content="\theHTMLauthor" /}\LWR at orignewline
+\ifcsempty{theHTMLAuthor}{}{
+\LWR at htmltag{meta name="author" content="\theHTMLAuthor" /}\LWR at orignewline
 }
 %    \end{macrocode}
 %
@@ -8086,9 +10902,9 @@
 %    \end{macrocode}
 % If there is a description, add it now:
 %    \begin{macrocode}
-\ifdefempty{\LWR at currentHTMLdescription}{}{%
+\ifdefempty{\LWR at currentHTMLDescription}{}{%
 \LWR at htmltag{%
-meta name="description" content="\LWR at currentHTMLdescription" /}%
+meta name="description" content="\LWR at currentHTMLDescription" /}%
     \LWR at orignewline
 }%
 %    \end{macrocode}
@@ -8184,12 +11000,12 @@
 }{}
 %    \end{macrocode}
 %
-% Expand and detokenize \cs{HomeHTMLFileName} and \cs{HTMLFileName}:
+% Expand and detokenize \cs{HomeHTMLFilename} and \cs{HTMLFilename}:
 %    \begin{macrocode}
-\edef\LWR at strresult{\HomeHTMLFileName}
-\edef\HomeHTMLFileName{\detokenize\expandafter{\LWR at strresult}}
-\edef\LWR at strresult{\HTMLfiveName}
-\edef\HTMLfiveName{\detokenize\expandafter{\LWR at strresult}}
+\edef\LWR at strresult{\HomeHTMLFilename}
+\edef\HomeHTMLFilename{\detokenize\expandafter{\LWR at strresult}}
+\edef\LWR at strresult{\HTMLFilename}
+\edef\HTMLFilename{\detokenize\expandafter{\LWR at strresult}}
 %    \end{macrocode}
 % Force onecolumn:
 %    \begin{macrocode}
@@ -8530,9 +11346,9 @@
 % 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 @@
 % \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,74 +18926,10 @@
 
 
 
-% \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 at file}{}{\newwrite{\LWR at file}}
-\immediate\openout\LWR at file=lwarpmk.conf
-\ifwindows
-\immediate\write\LWR at file{opsystem = "Windows"}
-\else
-\immediate\write\LWR at file{opsystem = "Unix"}
-\fi
-\ifPDFTeX
-\immediate\write\LWR at file{latexname = "pdflatex"}
-\fi
-\ifXeTeX
-\immediate\write\LWR at file{latexname = "xelatex"}
-\fi
-\ifLuaTeX
-\immediate\write\LWR at file{latexname = "lualatex"}
-\fi
-\immediate\write\LWR at file{sourcename = "\jobname"}
-\immediate\write\LWR at file{%
-homehtmlfilename = "\HomeHTMLFileName"%
-}
-\immediate\write\LWR at file{htmlfilename = "\HTMLfiveName"}
-\immediate\write\LWR at file{uselatexmk = "\UseLatexmk"}
-\immediate\write\LWR at file{language = "\LWR at lwarpmklang"}
-\immediate\closeout\LWR at file
-\end{warpprint}
-%    \end{macrocode}
-
-
-
-
-
-
-
-
 % \clearpage
 % \section{Trademarks}
 %
@@ -16207,2565 +18957,18 @@
 %
 %
 %
-% \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.
+% \changes{v0.20}{2016/12/12}{Code factored into independent \texttt{lwarp\_html} files.}
 %
-% \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 at genconf}
-\boolfalse{LWRNP at genconf}
-%    \end{macrocode}
-
-% Optionally generate a local copy of |lwarpmk|.  Default to no:
-%    \begin{macrocode}
-\excludecomment{LWR at 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 at genconf}}
-\DeclareVoidOption{warpHTML}{\boolfalse{LWRNP at genconf}}
-\DeclareVoidOption{lwarpmk}{\includecomment{LWR at createlwarpmk}}
-\DeclareStringOption[\jobname]{BaseJobname}
-\DeclareStringOption[english]{lwarpmklang}
-
-\booltrue{LWRNP at genconf}% warpprint
-
-\ProcessKeyvalOptions*\relax
-%    \end{macrocode}
-
-
-% Assign the \cs{BaseJobname} if the user hasn't provided one:
-%    \begin{macrocode}
-\providecommand*{\BaseJobname}{\LWRNP at BaseJobname}
-%    \end{macrocode}
-
-% Defaults unless already over-ridden by the user:
-%    \begin{macrocode}
-% \ifbool{LWRNP at genconf}{
-\providecommand*{\HomeHTMLFileName}{\BaseJobname}
-% }{}
-\providecommand*{\HTMLfiveName}{}
-\providecommand*{\UseLatexmk}{false}
-%    \end{macrocode}
-% 
-% 
-
-
-\ifbool{LWRNP at 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 at genconf}{
-\ifcsdef{LWR at file}{}{\newwrite{\LWR at file}}
-\immediate\openout\LWR at file=\jobname_html.tex
-\immediate\write\LWR at file{%
-\detokenize{\PassOptionsToPackage}%
-{warpHTML,BaseJobname=\jobname}{lwarp}%
-}
-\immediate\write\LWR at file{%
-\detokenize{\PassOptionsToPackage}%
-{warpHTML,BaseJobname=\jobname}{lwarp-newproject}%
-}
-\immediate\write\LWR at file{%
-\detokenize{\input}\string{\jobname.tex\string }%
-}
-\immediate\closeout\LWR at 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 at genconf}{
-\ifcsdef{LWR at file}{}{\newwrite{\LWR at file}}
-\immediate\openout\LWR at file=\jobname.lwarpmkconf
-\ifwindows
-\immediate\write\LWR at file{opsystem = "Windows"}
-\else
-\immediate\write\LWR at file{opsystem = "Unix"}
-\fi
-\ifPDFTeX
-\immediate\write\LWR at file{latexname = "pdflatex"}
-\fi
-\ifXeTeX
-\immediate\write\LWR at file{latexname = "xelatex"}
-\fi
-\ifLuaTeX
-\immediate\write\LWR at file{latexname = "lualatex"}
-\fi
-\immediate\write\LWR at file{sourcename = "\jobname"}
-\immediate\write\LWR at file{%
-homehtmlfilename = "\HomeHTMLFileName"%
-}
-\immediate\write\LWR at file{htmlfilename = "\HTMLfiveName"}
-\immediate\write\LWR at file{uselatexmk = "\UseLatexmk"}
-\immediate\write\LWR at file{language = "\LWRNP at lwarpmklang"}
-\immediate\closeout\LWR at 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; }
-
- at 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 ;
-    }
-}
-
- at 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; }
-}
-
- at media handheld {
-    nav.sidetoc { display:none; }
-    nav.topnavigation { display:block }
-    nav.botnavigation { display:block }
-}
-
- at 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}
- at 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;}
-
-
- at 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}
- at 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: */
- at 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 at 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 at createlwarpmk}
-%    \end{macrocode}
-
-
-% \iffalse
-%</lwarp-newproject>
-% \fi
-%
-%
-%
-%
-%
-% \changes{v0.20}{2016/12/12}{Code factored into independent \texttt{lwarp\_html} files.}
-%
-%
-%
-%
 % \clearpage
 %
 % \iffalse
@@ -26208,7 +26411,7 @@
 % ^^A \begin{macro}{\pagecolor}
 % \cs{pagecolor}
 % \oarg{model} \marg{color}
-% is ignored.  Use |\NewCSS| instead.
+% is ignored.  Use |\CSSFilename| instead.
 %    \begin{macrocode}
 \newcommand*{\LWR at pagecolor}[2][named]{}
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2017-04-29 22:23:07 UTC (rev 44118)
+++ trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2017-04-29 22:24:28 UTC (rev 44119)
@@ -33,7 +33,6 @@
 \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}}

Deleted: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-newproject.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-newproject.sty	2017-04-29 22:23:07 UTC (rev 44118)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-newproject.sty	2017-04-29 22:24:28 UTC (rev 44119)
@@ -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 at genconf}
-\boolfalse{LWRNP at genconf}
-
-\excludecomment{LWR at createlwarpmk}
-
-\DeclareVoidOption{warpprint}{\booltrue{LWRNP at genconf}}
-\DeclareVoidOption{warpHTML}{\boolfalse{LWRNP at genconf}}
-\DeclareVoidOption{lwarpmk}{\includecomment{LWR at createlwarpmk}}
-\DeclareStringOption[\jobname]{BaseJobname}
-\DeclareStringOption[english]{lwarpmklang}
-
-\booltrue{LWRNP at genconf}% warpprint
-
-\ProcessKeyvalOptions*\relax
-
-\providecommand*{\BaseJobname}{\LWRNP at BaseJobname}
-
-\providecommand*{\HomeHTMLFileName}{\BaseJobname}
-\providecommand*{\HTMLfiveName}{}
-\providecommand*{\UseLatexmk}{false}
-
-\ifbool{LWRNP at genconf}{\typeout{lwarp-newproject: generating configuration files}}{}
-
-\ifbool{LWRNP at genconf}{
-\ifcsdef{LWR at file}{}{\newwrite{\LWR at file}}
-\immediate\openout\LWR at file=\jobname_html.tex
-\immediate\write\LWR at file{%
-\detokenize{\PassOptionsToPackage}%
-{warpHTML,BaseJobname=\jobname}{lwarp}%
-}
-\immediate\write\LWR at file{%
-\detokenize{\PassOptionsToPackage}%
-{warpHTML,BaseJobname=\jobname}{lwarp-newproject}%
-}
-\immediate\write\LWR at file{%
-\detokenize{\input}\string{\jobname.tex\string }%
-}
-\immediate\closeout\LWR at file
-}{}
-
-\ifbool{LWRNP at genconf}{
-\ifcsdef{LWR at file}{}{\newwrite{\LWR at file}}
-\immediate\openout\LWR at file=\jobname.lwarpmkconf
-\ifwindows
-\immediate\write\LWR at file{opsystem = "Windows"}
-\else
-\immediate\write\LWR at file{opsystem = "Unix"}
-\fi
-\ifPDFTeX
-\immediate\write\LWR at file{latexname = "pdflatex"}
-\fi
-\ifXeTeX
-\immediate\write\LWR at file{latexname = "xelatex"}
-\fi
-\ifLuaTeX
-\immediate\write\LWR at file{latexname = "lualatex"}
-\fi
-\immediate\write\LWR at file{sourcename = "\jobname"}
-\immediate\write\LWR at file{%
-homehtmlfilename = "\HomeHTMLFileName"%
-}
-\immediate\write\LWR at file{htmlfilename = "\HTMLfiveName"}
-\immediate\write\LWR at file{uselatexmk = "\UseLatexmk"}
-\immediate\write\LWR at file{language = "\LWRNP at lwarpmklang"}
-\immediate\closeout\LWR at 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; }
-
- at 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 ;
-    }
-}
-
- at 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; }
-}
-
- at media handheld {
-    nav.sidetoc { display:none; }
-    nav.topnavigation { display:block }
-    nav.botnavigation { display:block }
-}
-
- at media projection {
-    nav.sidetoc { display:none; }
-    nav.topnavigation { display:block }
-    nav.botnavigation { display:block }
-}
-\end{VerbatimOut}
-
-
-\begin{VerbatimOut}{lwarp_sagebrush.css}
- at 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;}
-
- at media screen and (max-width: 45em) {
-    nav.sidetoc { border-radius: 0 ; }
-}
-
-\end{VerbatimOut}
-
-
-\begin{VerbatimOut}{lwarp_formal.css}
- at 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: */
- at 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 at 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 at createlwarpmk}
-
-\endinput
-%%
-%% End of file `lwarp-newproject.sty'.

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty	2017-04-29 22:23:07 UTC (rev 44118)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty	2017-04-29 22:24:28 UTC (rev 44119)
@@ -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,6 +44,7 @@
 \RequirePackage{upquote}
 \else
 \fi
+
 \RequirePackage{etoolbox}[2011/01/03]
 
 \RequirePackage{ifplatform}% sense op-system platform
@@ -50,6 +51,23 @@
 \RequirePackage{comment}
 \excludecomment{testing}
 
+\newbool{usingOSWindows}
+\boolfalse{usingOSWindows}
+
+
+\newcommand*{\OSPathSymbol}{/}
+
+
+\newcommand*{\LWR at setOSWindows}
+{
+\booltrue{usingOSWindows}
+\renewcommand*{\OSPathSymbol}{\@backslashchar}
+}
+\ifwindows
+\LWR at setOSWindows
+\fi
+
+
 \RequirePackage{kvoptions}
 \SetupKeyvalOptions{family=LWR,prefix=LWR@}
 
@@ -88,8 +106,26 @@
 
 \DeclareStringOption[\jobname]{BaseJobname}
 
-\DeclareStringOption[english]{lwarpmklang}
+\DeclareStringOption[english]{IndexLanguage}
 
+\DeclareStringOption[lwarp.xdy]{xdyFilename}
+
+\DeclareVoidOption{lwarpmk}{
+\PackageInfo{lwarp}{Using option 'lwarpmk'}
+\includecomment{LWR at createlwarpmk}
+}
+
+\DeclareVoidOption{OSWindows}{
+\PackageInfo{lwarp}{Using option 'OSWindows'}
+\LWR at setOSWindows
+}
+
+\DeclareStringOption[]{HomeHTMLFilename}
+
+\DeclareStringOption[]{HTMLFilename}
+
+\DeclareBoolOption[false]{latexmk}
+
 \includecomment{warpprint}%
 \excludecomment{warpHTML}%
 \booltrue{warpingprint}%
@@ -96,15 +132,22 @@
 \boolfalse{warpingHTML}%
 \boolfalse{mathjax}%
 
+\excludecomment{LWR at createlwarpmk}
 
 \ProcessKeyvalOptions*\relax
 
 \providecommand*{\BaseJobname}{\LWR at BaseJobname}
 
-\def\@nameedef#1{\expandafter\edef\csname #1\endcsname}
+\ifcsempty{LWR at HomeHTMLFilename}{
+\newcommand*{\HomeHTMLFilename}{\BaseJobname}
+}{
+\csedef{HomeHTMLFilename}{\LWR at HomeHTMLFilename}
+}
 
+\csedef{HTMLFilename}{\LWR at HTMLFilename}
 
 
+
 \newcommand*{\LWR at loadafter}[1]{%
 \@ifpackageloaded{#1}
 {
@@ -498,26 +541,2253 @@
 
 \end{warpHTML}
 
-\begin{warpall}
-\newbool{usingOSwindows}
-\boolfalse{usingOSwindows}
 
 
-\newcommand*{\OSPathSymbol}{/}
+\begin{warpprint}
+\typeout{lwarp: generating configuration files}
+\end{warpprint}
 
+\begin{warpprint}
+\ifcsdef{LWR at file}{}{\newwrite{\LWR at file}}
+\immediate\openout\LWR at file=\jobname_html.tex
+\immediate\write\LWR at file{%
+\detokenize{\PassOptionsToPackage}%
+{warpHTML,BaseJobname=\jobname}{lwarp}%
+}
+\immediate\write\LWR at file{%
+\detokenize{\input}\string{\jobname.tex\string }%
+}
+\immediate\closeout\LWR at file
+\end{warpprint}
 
-\newcommand*{\warpOSwindows}
-{
-\booltrue{usingOSwindows}
-\renewcommand*{\OSPathSymbol}{\@backslashchar}
+\begin{warpprint}
+\ifcsdef{LWR at file}{}{\newwrite{\LWR at file}}
+\immediate\openout\LWR at file=lwarpmk.conf
+\ifbool{usingOSWindows}{
+\immediate\write\LWR at file{opsystem = "Windows"}
+}{
+\immediate\write\LWR at file{opsystem = "Unix"}
 }
-\ifwindows
-\warpOSwindows
+\ifPDFTeX
+\immediate\write\LWR at file{latexname = "pdflatex"}
 \fi
+\ifXeTeX
+\immediate\write\LWR at file{latexname = "xelatex"}
+\fi
+\ifLuaTeX
+\immediate\write\LWR at file{latexname = "lualatex"}
+\fi
+\immediate\write\LWR at file{sourcename = "\jobname"}
+\immediate\write\LWR at file{%
+homehtmlfilename = "\HomeHTMLFilename"%
+}
+\immediate\write\LWR at file{htmlfilename = "\HTMLFilename"}
+\immediate\write\LWR at file{latexmk = "\ifbool{LWR at latexmk}{true}{false}"}
+\immediate\write\LWR at file{language = "\LWR at IndexLanguage"}
+\immediate\write\LWR at file{xdyfile = "\LWR at xdyFilename"}
+\immediate\closeout\LWR at file
+\end{warpprint}
 
-\end{warpall}
+\begin{warpprint}
+\ifcsdef{LWR at file}{}{\newwrite{\LWR at file}}
+\immediate\openout\LWR at file=\jobname.lwarpmkconf
+\ifbool{usingOSWindows}{
+\immediate\write\LWR at file{opsystem = "Windows"}
+}{
+\immediate\write\LWR at file{opsystem = "Unix"}
+}
+\ifPDFTeX
+\immediate\write\LWR at file{latexname = "pdflatex"}
+\fi
+\ifXeTeX
+\immediate\write\LWR at file{latexname = "xelatex"}
+\fi
+\ifLuaTeX
+\immediate\write\LWR at file{latexname = "lualatex"}
+\fi
+\immediate\write\LWR at file{sourcename = "\jobname"}
+\immediate\write\LWR at file{%
+homehtmlfilename = "\HomeHTMLFilename"%
+}
+\immediate\write\LWR at file{htmlfilename = "\HTMLFilename"}
+\immediate\write\LWR at file{latexmk = "\ifbool{LWR at latexmk}{true}{false}"}
+\immediate\write\LWR at file{language = "\LWR at IndexLanguage"}
+\immediate\write\LWR at file{xdyfile = "\LWR at xdyFilename"}
+\immediate\closeout\LWR at 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; }
+
+ at 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 ;
+    }
+}
+
+ at 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; }
+}
+
+ at media handheld {
+    nav.sidetoc { display:none; }
+    nav.topnavigation { display:block }
+    nav.botnavigation { display:block }
+}
+
+ at 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}
+ at 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;
+}
+
+ at media screen and (max-width: 45em) {
+    nav.sidetoc { border-radius: 0 ; }
+}
+
+\end{VerbatimOut}
+\end{warpprint}
+
+
+\begin{warpprint}
+\begin{VerbatimOut}{lwarp_formal.css}
+ at 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: */
+ at 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 at 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 at createlwarpmk}
+
+
 \begin{warpHTML}
 
 
@@ -654,8 +2924,8 @@
 
 \providecommand*{\BaseJobname}{\jobname}
 
-\providecommand*{\HTMLfiveName}{}
-\providecommand*{\HomeHTMLFileName}{\BaseJobname}
+\providecommand*{\HTMLFilename}{}
+\providecommand*{\HomeHTMLFilename}{\BaseJobname}
 
 \newcommand*{\SetHTMLFileNumber}[1]{%
 \setcounter{LWR at htmlfilenumber}{#1}%
@@ -689,18 +2959,18 @@
 \OR \equal{\LWR at tempone}{??}%
 }%
 {%
-\LWR at traceinfo{LWR at htmlsectionfilename B \HomeHTMLFileName.html}%
-\HomeHTMLFileName.html%
+\LWR at traceinfo{LWR at htmlsectionfilename B \HomeHTMLFilename.html}%
+\HomeHTMLFilename.html%
 }%
 {%
 \LWR at traceinfo{LWR at htmlsectionfilename C \LWR at tempone}%
 \ifthenelse{%
-\equal{\HTMLfiveName}{} \AND \equal{\LWR at tempone}{Index} \OR \equal{\LWR at tempone}{index}%
+\equal{\HTMLFilename}{} \AND \equal{\LWR at tempone}{Index} \OR \equal{\LWR at tempone}{index}%
 }%
 {%
 \LWR at traceinfo{prefixing the index name with an underscore.}%
 \_#1.html}%
-{\HTMLfiveName#1.html}%
+{\HTMLFilename#1.html}%
 }%
 \LWR at traceinfo{LWR at htmlsectionfilename Z}%
 }
@@ -718,7 +2988,7 @@
 
 \newcommand*{\LinkHome}{%
 \LWR at subhyperrefclass{%
-\HomeHTMLFileName.html}%
+\HomeHTMLFilename.html}%
 {Home}{linkhome}%
 }
 
@@ -1114,7 +3384,7 @@
 \renewcommand{\LWR at firstpagetop}{#1}
 \catcode`\_=8
 }
-\newcommand{\SetFirstPageTop}{%
+\newcommand{\HTMLFirstPageTop}{%
 \catcode`\_=12
 \LWR at setfirstpagetopb
 }
@@ -1122,7 +3392,7 @@
 \renewcommand{\LWR at pagetop}{#1}
 \catcode`\_=8
 }
-\newcommand{\SetPageTop}{%
+\newcommand{\HTMLPageTop}{%
 \catcode`\_=12
 \LWR at setpagetopb
 }
@@ -1130,7 +3400,7 @@
 \renewcommand{\LWR at pagebottom}{#1}
 \catcode`\_=8
 }
-\newcommand{\SetPageBottom}{%
+\newcommand{\HTMLPageBottom}{%
 \catcode`\_=12
 \LWR at setpagebottomb
 }
@@ -1148,21 +3418,21 @@
 \catcode`\_=8
 }
 
-\newcommand*{\NewCSS}{
+\newcommand*{\CSSFilename}{
 \catcode`\_=12
 \LWR at 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}
 
@@ -1169,10 +3439,10 @@
 \begin{warpall}
 
 
-\newcommand{\LWR at currentHTMLdescription}{}
+\newcommand{\LWR at currentHTMLDescription}{}
 
-\newcommand{\NewHTMLdescription}[1]{%
-\renewcommand{\LWR at currentHTMLdescription}{#1}
+\newcommand{\HTMLDescription}[1]{%
+\renewcommand{\LWR at currentHTMLDescription}{#1}
 }
 
 \end{warpall}
@@ -1610,11 +3880,19 @@
 \end{warpHTML}
 
 
+\begin{warpall}
+
+\newcommand*{\LWR at currentHTMLLanguage}{en-US}
+
+\newcommand*{\HTMLLanguage}[1]{%
+\renewcommand*{\LWR at currentHTMLLanguage}{#1}%
+}
+
+\end{warpall}
+
 \begin{warpHTML}
 
-\newcommand*{\MetaLanguage}{en-US}
 
-
 \newcommand*{\LWR at filestart}[1]{
 \begingroup
 \renewcommand{\textit}[1]{##1}% not used in filenames
@@ -1631,17 +3909,17 @@
 \RenewDocumentCommand{\LWR at htmlspanclass}{m o +m}{##3}
 \DeclareExpandableDocumentCommand{\InlineClass}{m o m}{##3}
 \LWR at htmltag{!DOCTYPE html}\LWR at orignewline
-\LWR at htmltag{html lang="\MetaLanguage"{}}\LWR at orignewline
+\LWR at htmltag{html lang="\LWR at currentHTMLLanguage"{}}\LWR at orignewline
 \LWR at htmltag{head}\LWR at orignewline
 \LWR at htmltag{meta charset="UTF-8" /}\LWR at orignewline
-\ifcsempty{theHTMLauthor}{}{
-\LWR at htmltag{meta name="author" content="\theHTMLauthor" /}\LWR at orignewline
+\ifcsempty{theHTMLAuthor}{}{
+\LWR at htmltag{meta name="author" content="\theHTMLAuthor" /}\LWR at orignewline
 }
 \LWR at htmltag{meta name="generator" content="LaTeX lwarp package" /}%
     \LWR at orignewline
-\ifdefempty{\LWR at currentHTMLdescription}{}{%
+\ifdefempty{\LWR at currentHTMLDescription}{}{%
 \LWR at htmltag{%
-meta name="description" content="\LWR at currentHTMLdescription" /}%
+meta name="description" content="\LWR at currentHTMLDescription" /}%
     \LWR at orignewline
 }%
 \LWR at htmltag{meta name="viewport" %
@@ -1682,10 +3960,10 @@
 \setcounter{FileDepth}{-5}%
 \boolfalse{HTMLDebugComments}%
 }{}
-\edef\LWR at strresult{\HomeHTMLFileName}
-\edef\HomeHTMLFileName{\detokenize\expandafter{\LWR at strresult}}
-\edef\LWR at strresult{\HTMLfiveName}
-\edef\HTMLfiveName{\detokenize\expandafter{\LWR at strresult}}
+\edef\LWR at strresult{\HomeHTMLFilename}
+\edef\HomeHTMLFilename{\detokenize\expandafter{\LWR at strresult}}
+\edef\LWR at strresult{\HTMLFilename}
+\edef\HTMLFilename{\detokenize\expandafter{\LWR at strresult}}
 \LWR at origonecolumn%
 \LWR at origscriptsize%
 \LWR at origraggedright%
@@ -3689,9 +5967,7 @@
 \endgroup
 \@esphack}
 
-\newcommand*{\hyperindexref}[1]{
-\nameref{LWRindex-#1}%
-}
+\newcommand*{\hyperindexref}[1]{\nameref{LWRindex-#1}}
 
 \end{warpHTML}
 
@@ -5011,39 +7287,6 @@
 \end{warpHTML}
 
 
-
-\providecommand*{\HomeHTMLFileName}{\BaseJobname}
-\providecommand*{\HTMLfiveName}{}
-\providecommand*{\UseLatexmk}{false}
-
-\begin{warpprint}
-\ifcsdef{LWR at file}{}{\newwrite{\LWR at file}}
-\immediate\openout\LWR at file=lwarpmk.conf
-\ifwindows
-\immediate\write\LWR at file{opsystem = "Windows"}
-\else
-\immediate\write\LWR at file{opsystem = "Unix"}
-\fi
-\ifPDFTeX
-\immediate\write\LWR at file{latexname = "pdflatex"}
-\fi
-\ifXeTeX
-\immediate\write\LWR at file{latexname = "xelatex"}
-\fi
-\ifLuaTeX
-\immediate\write\LWR at file{latexname = "lualatex"}
-\fi
-\immediate\write\LWR at file{sourcename = "\jobname"}
-\immediate\write\LWR at file{%
-homehtmlfilename = "\HomeHTMLFileName"%
-}
-\immediate\write\LWR at file{htmlfilename = "\HTMLfiveName"}
-\immediate\write\LWR at file{uselatexmk = "\UseLatexmk"}
-\immediate\write\LWR at file{language = "\LWR at lwarpmklang"}
-\immediate\closeout\LWR at file
-\end{warpprint}
-
-
 \endinput
 %%
 %% End of file `lwarp.sty'.



More information about the tex-live-commits mailing list