summaryrefslogtreecommitdiff
path: root/macros/xmltex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/xmltex
Initial commit
Diffstat (limited to 'macros/xmltex')
-rw-r--r--macros/xmltex/base/englishutf16.xmlbin0 -> 194 bytes
-rw-r--r--macros/xmltex/base/englishutf8.xml6
-rw-r--r--macros/xmltex/base/iso-8859-1.xmt29
-rw-r--r--macros/xmltex/base/iso-8859-2.xmt96
-rw-r--r--macros/xmltex/base/koi8-r.xmt131
-rw-r--r--macros/xmltex/base/langtest.tex5
-rw-r--r--macros/xmltex/base/langtest.xml21
-rw-r--r--macros/xmltex/base/langtest.xmt32
-rw-r--r--macros/xmltex/base/manual.html882
-rw-r--r--macros/xmltex/base/manual.tex4
-rw-r--r--macros/xmltex/base/manual.xml799
-rw-r--r--macros/xmltex/base/manual.xsl29
-rw-r--r--macros/xmltex/base/mathml2.xmt190
-rw-r--r--macros/xmltex/base/portugeselatin1.xml7
-rw-r--r--macros/xmltex/base/readme.txt123
-rw-r--r--macros/xmltex/base/russiankoi8.xml9
-rw-r--r--macros/xmltex/base/russianutf8.xml7
-rw-r--r--macros/xmltex/base/sec.xmt42
-rw-r--r--macros/xmltex/base/tei.xmt142
-rw-r--r--macros/xmltex/base/testascii.cfg159
-rw-r--r--macros/xmltex/base/testascii.tex4
-rw-r--r--macros/xmltex/base/testascii.xml22
-rw-r--r--macros/xmltex/base/testsec.tex5
-rw-r--r--macros/xmltex/base/testsec.xml77
-rw-r--r--macros/xmltex/base/utf-16.xmt4
-rw-r--r--macros/xmltex/base/windows-1250.xmt123
-rw-r--r--macros/xmltex/base/xmltex.cfg177
-rw-r--r--macros/xmltex/base/xmltex.tex2400
-rw-r--r--macros/xmltex/contrib/passivetex/dummyels.sty136
-rw-r--r--macros/xmltex/contrib/passivetex/fotex.sty1724
-rw-r--r--macros/xmltex/contrib/passivetex/fotex.xmt1644
-rw-r--r--macros/xmltex/contrib/passivetex/mlnames.sty439
-rw-r--r--macros/xmltex/contrib/passivetex/tei.xmt219
-rw-r--r--macros/xmltex/contrib/passivetex/teiprintslides.xmt316
-rw-r--r--macros/xmltex/contrib/passivetex/teislides.xmt298
-rw-r--r--macros/xmltex/contrib/passivetex/teixml.sty40
-rw-r--r--macros/xmltex/contrib/passivetex/teixmlslides.sty63
-rw-r--r--macros/xmltex/contrib/passivetex/ucharacters.sty2377
-rw-r--r--macros/xmltex/contrib/passivetex/unicode.sty577
39 files changed, 13358 insertions, 0 deletions
diff --git a/macros/xmltex/base/englishutf16.xml b/macros/xmltex/base/englishutf16.xml
new file mode 100644
index 0000000000..c51d565faf
--- /dev/null
+++ b/macros/xmltex/base/englishutf16.xml
Binary files differ
diff --git a/macros/xmltex/base/englishutf8.xml b/macros/xmltex/base/englishutf8.xml
new file mode 100644
index 0000000000..6710da9b14
--- /dev/null
+++ b/macros/xmltex/base/englishutf8.xml
@@ -0,0 +1,6 @@
+<document att="english">
+ <section>
+ <head>Test</head>
+ Hello World!
+ </section>
+</document>
diff --git a/macros/xmltex/base/iso-8859-1.xmt b/macros/xmltex/base/iso-8859-1.xmt
new file mode 100644
index 0000000000..a8ae88d109
--- /dev/null
+++ b/macros/xmltex/base/iso-8859-1.xmt
@@ -0,0 +1,29 @@
+
+
+ \count@128\relax
+
+ \loop
+ \bgroup
+ \uccode`\~\count@
+ \uppercase{
+ \egroup
+ \xdef~{\noexpand\utfeightb\string^^c2\string~}
+ }
+ \ifnum\count@<191\relax
+ \advance\count@\@ne
+ \repeat
+
+ \count@192\relax
+ \loop
+ \bgroup
+ \uccode`\~\count@
+ \advance\count@-64
+ \uccode`\!\count@
+ \uppercase{
+ \egroup
+ \xdef~{\noexpand\utfeightb\string^^c3\string!}
+ }
+ \ifnum\count@<255\relax
+ \advance\count@\@ne
+ \repeat
+
diff --git a/macros/xmltex/base/iso-8859-2.xmt b/macros/xmltex/base/iso-8859-2.xmt
new file mode 100644
index 0000000000..a48a5a8fdf
--- /dev/null
+++ b/macros/xmltex/base/iso-8859-2.xmt
@@ -0,0 +1,96 @@
+\InputCharacter{xA0}{x00A0}
+\InputCharacter{xA1}{x0104}
+\InputCharacter{xA2}{x02D8}
+\InputCharacter{xA3}{x0141}
+\InputCharacter{xA4}{x00A4}
+\InputCharacter{xA5}{x013D}
+\InputCharacter{xA6}{x015A}
+\InputCharacter{xA7}{x00A7}
+\InputCharacter{xA8}{x00A8}
+\InputCharacter{xA9}{x0160}
+\InputCharacter{xAA}{x015E}
+\InputCharacter{xAB}{x0164}
+\InputCharacter{xAC}{x0179}
+\InputCharacter{xAD}{x00AD}
+\InputCharacter{xAE}{x017D}
+\InputCharacter{xAF}{x017B}
+\InputCharacter{xB0}{x00B0}
+\InputCharacter{xB1}{x0105}
+\InputCharacter{xB2}{x02DB}
+\InputCharacter{xB3}{x0142}
+\InputCharacter{xB4}{x00B4}
+\InputCharacter{xB5}{x013E}
+\InputCharacter{xB6}{x015B}
+\InputCharacter{xB7}{x02C7}
+\InputCharacter{xB8}{x00B8}
+\InputCharacter{xB9}{x0161}
+\InputCharacter{xBA}{x015F}
+\InputCharacter{xBB}{x0165}
+\InputCharacter{xBC}{x017A}
+\InputCharacter{xBD}{x02DD}
+\InputCharacter{xBE}{x017E}
+\InputCharacter{xBF}{x017C}
+\InputCharacter{xC0}{x0154}
+\InputCharacter{xC1}{x00C1}
+\InputCharacter{xC2}{x00C2}
+\InputCharacter{xC3}{x0102}
+\InputCharacter{xC4}{x00C4}
+\InputCharacter{xC5}{x0139}
+\InputCharacter{xC6}{x0106}
+\InputCharacter{xC7}{x00C7}
+\InputCharacter{xC8}{x010C}
+\InputCharacter{xC9}{x00C9}
+\InputCharacter{xCA}{x0118}
+\InputCharacter{xCB}{x00CB}
+\InputCharacter{xCC}{x011A}
+\InputCharacter{xCD}{x00CD}
+\InputCharacter{xCE}{x00CE}
+\InputCharacter{xCF}{x010E}
+\InputCharacter{xD0}{x0110}
+\InputCharacter{xD1}{x0143}
+\InputCharacter{xD2}{x0147}
+\InputCharacter{xD3}{x00D3}
+\InputCharacter{xD4}{x00D4}
+\InputCharacter{xD5}{x0150}
+\InputCharacter{xD6}{x00D6}
+\InputCharacter{xD7}{x00D7}
+\InputCharacter{xD8}{x0158}
+\InputCharacter{xD9}{x016E}
+\InputCharacter{xDA}{x00DA}
+\InputCharacter{xDB}{x0170}
+\InputCharacter{xDC}{x00DC}
+\InputCharacter{xDD}{x00DD}
+\InputCharacter{xDE}{x0162}
+\InputCharacter{xDF}{x00DF}
+\InputCharacter{xE0}{x0155}
+\InputCharacter{xE1}{x00E1}
+\InputCharacter{xE2}{x00E2}
+\InputCharacter{xE3}{x0103}
+\InputCharacter{xE4}{x00E4}
+\InputCharacter{xE5}{x013A}
+\InputCharacter{xE6}{x0107}
+\InputCharacter{xE7}{x00E7}
+\InputCharacter{xE8}{x010D}
+\InputCharacter{xE9}{x00E9}
+\InputCharacter{xEA}{x0119}
+\InputCharacter{xEB}{x00EB}
+\InputCharacter{xEC}{x011B}
+\InputCharacter{xED}{x00ED}
+\InputCharacter{xEE}{x00EE}
+\InputCharacter{xEF}{x010F}
+\InputCharacter{xF0}{x0111}
+\InputCharacter{xF1}{x0144}
+\InputCharacter{xF2}{x0148}
+\InputCharacter{xF3}{x00F3}
+\InputCharacter{xF4}{x00F4}
+\InputCharacter{xF5}{x0151}
+\InputCharacter{xF6}{x00F6}
+\InputCharacter{xF7}{x00F7}
+\InputCharacter{xF8}{x0159}
+\InputCharacter{xF9}{x016F}
+\InputCharacter{xFA}{x00FA}
+\InputCharacter{xFB}{x0171}
+\InputCharacter{xFC}{x00FC}
+\InputCharacter{xFD}{x00FD}
+\InputCharacter{xFE}{x0163}
+\InputCharacter{xFF}{x02D9}
diff --git a/macros/xmltex/base/koi8-r.xmt b/macros/xmltex/base/koi8-r.xmt
new file mode 100644
index 0000000000..1abaae5fef
--- /dev/null
+++ b/macros/xmltex/base/koi8-r.xmt
@@ -0,0 +1,131 @@
+\global\tracingmacros2
+\global\tracingcommands2
+
+\InputCharacter{x80}{x2500}
+\InputCharacter{x81}{x2502}
+\InputCharacter{x82}{x250C}
+\InputCharacter{x83}{x2510}
+\InputCharacter{x84}{x2514}
+\InputCharacter{x85}{x2518}
+\InputCharacter{x86}{x251C}
+\InputCharacter{x87}{x2524}
+\InputCharacter{x88}{x252C}
+\InputCharacter{x89}{x2534}
+\InputCharacter{x8A}{x253C}
+\InputCharacter{x8B}{x2580}
+\InputCharacter{x8C}{x2584}
+\InputCharacter{x8D}{x2588}
+\InputCharacter{x8E}{x258C}
+\InputCharacter{x8F}{x2590}
+\InputCharacter{x90}{x2591}
+\InputCharacter{x91}{x2592}
+\InputCharacter{x92}{x2593}
+\InputCharacter{x93}{x2320}
+\InputCharacter{x94}{x25A0}
+\InputCharacter{x95}{x2022}
+\InputCharacter{x96}{x221A}
+\InputCharacter{x97}{x2248}
+\InputCharacter{x98}{x2264}
+\InputCharacter{x99}{x2265}
+\InputCharacter{x9A}{x00A0}
+\InputCharacter{x9B}{x2321}
+\InputCharacter{x9C}{x00B0}
+\InputCharacter{x9D}{x00B2}
+\InputCharacter{x9E}{x00B7}
+\InputCharacter{x9F}{x00F7}
+\InputCharacter{xA0}{x2550}
+\InputCharacter{xA1}{x2551}
+\InputCharacter{xA2}{x2552}
+\InputCharacter{xA3}{x0451}
+\InputCharacter{xA4}{x2553}
+\InputCharacter{xA5}{x2554}
+\InputCharacter{xA6}{x2555}
+\InputCharacter{xA7}{x2556}
+\InputCharacter{xA8}{x2557}
+\InputCharacter{xA9}{x2558}
+\InputCharacter{xAA}{x2559}
+\InputCharacter{xAB}{x255A}
+\InputCharacter{xAC}{x255B}
+\InputCharacter{xAD}{x255C}
+\InputCharacter{xAE}{x255D}
+\InputCharacter{xAF}{x255E}
+\InputCharacter{xB0}{x255F}
+\InputCharacter{xB1}{x2560}
+\InputCharacter{xB2}{x2561}
+\InputCharacter{xB3}{x0401}
+\InputCharacter{xB4}{x2562}
+\InputCharacter{xB5}{x2563}
+\InputCharacter{xB6}{x2564}
+\InputCharacter{xB7}{x2565}
+\InputCharacter{xB8}{x2566}
+\InputCharacter{xB9}{x2567}
+\InputCharacter{xBA}{x2568}
+\InputCharacter{xBB}{x2569}
+\InputCharacter{xBC}{x256A}
+\InputCharacter{xBD}{x256B}
+\InputCharacter{xBE}{x256C}
+\InputCharacter{xBF}{x00A9}
+\InputCharacter{xC0}{x044E}
+\InputCharacter{xC1}{x0430}
+\InputCharacter{xC2}{x0431}
+\InputCharacter{xC3}{x0446}
+\InputCharacter{xC4}{x0434}
+\InputCharacter{xC5}{x0435}
+\InputCharacter{xC6}{x0444}
+\InputCharacter{xC7}{x0433}
+\InputCharacter{xC8}{x0445}
+\InputCharacter{xC9}{x0438}
+\InputCharacter{xCA}{x0439}
+\InputCharacter{xCB}{x043A}
+\InputCharacter{xCC}{x043B}
+\InputCharacter{xCD}{x043C}
+\InputCharacter{xCE}{x043D}
+\InputCharacter{xCF}{x043E}
+\InputCharacter{xD0}{x043F}
+\InputCharacter{xD1}{x044F}
+\InputCharacter{xD2}{x0440}
+\InputCharacter{xD3}{x0441}
+\InputCharacter{xD4}{x0442}
+\InputCharacter{xD5}{x0443}
+\InputCharacter{xD6}{x0436}
+\InputCharacter{xD7}{x0432}
+\InputCharacter{xD8}{x044C}
+\InputCharacter{xD9}{x044B}
+\InputCharacter{xDA}{x0437}
+\InputCharacter{xDB}{x0448}
+\InputCharacter{xDC}{x044D}
+\InputCharacter{xDD}{x0449}
+\InputCharacter{xDE}{x0447}
+\InputCharacter{xDF}{x044A}
+\InputCharacter{xE0}{x042E}
+\InputCharacter{xE1}{x0410}
+\InputCharacter{xE2}{x0411}
+\InputCharacter{xE3}{x0426}
+\InputCharacter{xE4}{x0414}
+\InputCharacter{xE5}{x0415}
+\InputCharacter{xE6}{x0424}
+\InputCharacter{xE7}{x0413}
+\InputCharacter{xE8}{x0425}
+\InputCharacter{xE9}{x0418}
+\InputCharacter{xEA}{x0419}
+\InputCharacter{xEB}{x041A}
+\InputCharacter{xEC}{x041B}
+\InputCharacter{xED}{x041C}
+\InputCharacter{xEE}{x041D}
+\InputCharacter{xEF}{x041E}
+\InputCharacter{xF0}{x041F}
+\InputCharacter{xF1}{x042F}
+\InputCharacter{xF2}{x0420}
+\InputCharacter{xF3}{x0421}
+\InputCharacter{xF4}{x0422}
+\InputCharacter{xF5}{x0423}
+\InputCharacter{xF6}{x0416}
+\InputCharacter{xF7}{x0412}
+\InputCharacter{xF8}{x042C}
+\InputCharacter{xF9}{x042B}
+\InputCharacter{xFA}{x0417}
+\InputCharacter{xFB}{x0428}
+\InputCharacter{xFC}{x042D}
+\InputCharacter{xFD}{x0429}
+\InputCharacter{xFE}{x0427}
+\InputCharacter{xFF}{x042A}
diff --git a/macros/xmltex/base/langtest.tex b/macros/xmltex/base/langtest.tex
new file mode 100644
index 0000000000..5293b3d2f4
--- /dev/null
+++ b/macros/xmltex/base/langtest.tex
@@ -0,0 +1,5 @@
+
+\def\xmlfile{langtest.xml}
+\input xmltex.tex
+
+
diff --git a/macros/xmltex/base/langtest.xml b/macros/xmltex/base/langtest.xml
new file mode 100644
index 0000000000..081cfe0683
--- /dev/null
+++ b/macros/xmltex/base/langtest.xml
@@ -0,0 +1,21 @@
+
+<!DOCTYPE langtest [
+
+<!ENTITY englishutf8 SYSTEM "englishutf8.xml">
+<!ENTITY portugeselatin1 SYSTEM "portugeselatin1.xml">
+<!ENTITY englishutf16 SYSTEM "englishutf16.xml">
+<!ENTITY russiankoi8 SYSTEM "russiankoi8.xml">
+<!ENTITY russianutf8 SYSTEM "russianutf8.xml">
+
+]>
+
+<langtest>
+
+&englishutf8;
+&englishutf16;
+&portugeselatin1;
+&russiankoi8;
+&russianutf8;
+
+
+</langtest>
diff --git a/macros/xmltex/base/langtest.xmt b/macros/xmltex/base/langtest.xmt
new file mode 100644
index 0000000000..ff4d8a4624
--- /dev/null
+++ b/macros/xmltex/base/langtest.xmt
@@ -0,0 +1,32 @@
+
+\XMLelement{langtest}
+{}
+ {\documentclass{article}
+ \usepackage[OT2,OT1]{fontenc}
+ \pagestyle{headings}
+ \begin{document}
+ \tableofcontents}
+ {\end{document}}
+
+
+\XMLelement{document}
+ {\XMLattribute{att}{\langatt}{}}{}{}
+
+\XMLelement{head}
+ {}{\xmlgrab}{\section{#1 (\langatt)}}
+
+
+\XMLelement{documento}
+ {\XMLattribute{att}{\langatt}{}}{}{}
+
+\XMLelement{cabeçalho}
+ {}{\xmlgrab}{\section{#1 (\langatt)}}
+
+
+\XMLelement{документ}
+ {\XMLattribute{атт}{\langatt}{}}{\fontencoding{OT2}\selectfont}{}
+
+\XMLelement{голова}
+ {}{\xmlgrab}{\section{\fontencoding{OT2}\selectfont#1 (\langatt)}}
+
+
diff --git a/macros/xmltex/base/manual.html b/macros/xmltex/base/manual.html
new file mode 100644
index 0000000000..2c88af23df
--- /dev/null
+++ b/macros/xmltex/base/manual.html
@@ -0,0 +1,882 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns:lxslt="http://xml.apache.org/xslt" xmlns:saxon="http://icl.com/saxon" xmlns:xalan="org.apache.xalan.xslt.extensions.Xalan">
+<head>
+<title>
+ xmltex: A non validating (and not 100%
+ conforming) namespace aware XML parser implemented in TeX
+ </title>
+<link rel="stylesheet" type="text/css" href="http://www.oucs.ox.ac.uk/stylesheets/tei-oucs.css">
+</head>
+<body>
+<table width="100%">
+<tr>
+<td rowspan="2"></td><td align="left">
+<h2>Numerical Algorithms Group: NAG</h2>
+</td>
+</tr>
+<tr>
+<td align="left">
+<h1>
+ xmltex: A non validating (and not 100%
+ conforming) namespace aware XML parser implemented in TeX
+ </h1>
+</td>
+</tr>
+</table>
+<hr>
+ <h2>
+ xmltex: A non validating (and not 100%
+ conforming) namespace aware XML parser implemented in TeX
+ </h2>
+ Date: 2000-02-02
+ <h2>
+<it>davidc@nag.co.uk</it>
+</h2>
+ <h2>
+<it>David Carlisle</it>
+</h2>
+<h2>Contents</h2>
+<p>
+<div class="subtoc">
+<ul>
+<li>
+<a class="subtoc" href="#intro">Introduction</a>
+</li>
+<li>
+<a class="subtoc" href="#manualN211">Installation</a>
+</li>
+<li>
+<a class="subtoc" href="#manualN343">Using xmltex</a>
+</li>
+<li>
+<a class="subtoc" href="#stopping">Stopping xmltex</a>
+</li>
+<li>
+<a class="subtoc" href="#manualN651">xmltex package files</a>
+</li>
+<li>
+<a class="subtoc" href="#manualN1004">XML processing</a>
+</li>
+<li>
+<a class="subtoc" href="#manualN1059">Accessing TeX</a>
+</li>
+<li>
+<a class="subtoc" href="#manualN1146">Bugs</a>
+</li>
+<li>
+<a class="subtoc" href="#manualN1161">Don't Read Past This Point</a>
+</li>
+</ul>
+</div>
+</p>
+<h2>
+<a name="intro"></a>Introduction</h2>
+
+<p>
+xmltex implements
+a non validating parser for documents matching the
+W3C XML Namespaces Recommendation.
+
+
+The system may just be used to parse the file (expanding entity
+references and normalising namespace declarations) in which case it
+records a trace of the parse on the terminal. Normally however the
+information from the parse is used to trigger TeX typesetting code.
+Declarations (in TeX syntax) are provided as part of xmltex to
+associate TeX code with the start and end of each XML element,
+attributes, processing instructions, and with unicode character data.
+</p>
+
+
+<h2>
+<a name="manualN211"></a>Installation</h2>
+
+<p>The xmltex parser itself does not require LaTeX. It may be loaded
+into initex to produce a format capable of parsing XML files. However
+such a format would have no convenient commands for typesetting, and
+so normally xmltex will be used on top of an existing format, normally
+LaTeX. In this section we assume that the document to be
+processed is called <tt>document.xml</tt>.
+</p>
+<h3>
+<a name="manualN228"></a>Using xmltex as an input to the LaTeX command</h3>
+
+<p>LaTeX requires a document in TeX syntax, not XML. To process
+<tt>document.xml</tt>, first produce a two line file called
+<tt>document.tex</tt> of the following form:
+<pre>
+\def\xmlfile{document.xml}
+\input xmltex.tex
+</pre>
+
+Do <em>not</em> put any other commands in this file!</p>
+<p>You may then process the document with either of the commands:
+<tt>latex document</tt> or <tt>latex document.tex</tt>
+or the equivalent procedure in your TeX environment.
+</p>
+
+<h3>
+<a name="manualN267"></a>Using xmltex as a TeX format built on LaTeX</h3>
+
+<p>
+You may prefer to set up xmltex as a format in its own right.
+This may speed things up slightly (as <tt>xmltex.tex</tt> does not
+have to be read each time) but more importantly perhaps it allows the
+XML file to be processed directly without needing to make the
+<tt>.tex</tt> wrapper.</p>
+<p>To make a format you will need a command such as the following,
+depending on your TeX system.
+<pre>
+initex &amp;latex xmltex
+initex \&amp;latex xmltex
+tex -ini &amp;latex xmltex
+tex -ini \&amp;latex xmltex
+</pre>
+</p>
+<p>This will produce a format file <tt>xmltex.fmt</tt>. You should then
+be able to make a <tt>xmltex</tt> command by copying the way the
+<tt>latex</tt> command is defined in terms of
+<tt>latex.fmt</tt>. Depending on the TeX system, this might be a
+symbolic link, or a shell script, or batch file, or a configuration
+option in a setup menu.
+
+</p>
+
+<h3>
+<a name="manualN311"></a> Making an xmltex format `from scratch'</h3>
+
+<p>
+Whilst it may be convenient to build an xmltex format as above, starting
+from the LaTeX format. You may prefer to instead work with an initex
+with no existing format file. Even if you wish to use a standard LaTeX
+it may be preferable to make a TeX input file that first inputs
+<tt>latex.ltx</tt> then <tt>xmltex.tex</tt>. In particular this
+will allow you to have a different hyphenation and language
+customisation for xmltex than for LaTeX. Many of the features of
+the language support in LaTeX are related to modifying the input
+syntax to be more convenient. Such changes are not needed in xmltex as
+the input syntax is always XML. Some language files may change the
+meaning of such characters as &lt; which would break the xmltex parser.
+Also, rather than using <tt>latex.ltx</tt> you could in principle
+use a modified <tt>docstrip</tt> install file and produce a
+`cut down' latex that did not have features that are not going to be
+used in xmltex.
+</p>
+<p>
+Unfortunately the support for this method of building xmltex (and access
+to non English hyphenation generally) is not fully designed and totally
+undocumented.</p>
+
+
+<h2>
+<a name="manualN343"></a>Using xmltex</h2>
+
+<p>
+xmltex by default `knows' nothing about any particular type of XML
+file, and so needs to load external files containing specific
+information. This section describes how the information in the XML
+file determines which files will be loaded.
+
+<ol>
+<li> If the file begins with a Byte Order Mark, the default encoding
+ is set to utf-16. Otherwise the default encoding is utf-8.
+</li>
+<li> If (after an optional BOM) the document begins with an XML
+ declaration that specifies an encoding, this encoding will be used,
+ otherwise the default encoding will be used. A file with name of the
+ form <em>encoding</em><tt>.xmt</tt> will be loaded that maps the
+ requested encoding to Unicode positions. (It is an error if this
+ file does not exist for the requested encoding.)
+</li>
+<li> If the document has a <tt>DOCTYPE</tt> declaration that includes
+ a local subset then this will be parsed. If any external DTD entity
+ is referenced (by declaring and then referencing a parameter entity)
+ then the SYSTEM and PUBLIC identifiers of this entity will be looked
+ up in a catalogue (to be described below). If either identifier is
+ known in the catalogue the corresponding xmltex package (often with
+ <tt>.xmt</tt> extension) will be loaded.
+</li>
+<li> After any local subset has been processed, if the DOCTYPE
+ specifies an external entity, the PUBLIC and/or SYSTEM identifiers
+ of the external dtd file will be similarly looked up, and a
+ corresponding xmltex file loaded if known.
+</li>
+<li> As each element is processed, it may be `known' to xmltex by
+ virtue of one of the packages loaded, or it may be unknown. If it is
+ unknown then if it is in a declared namespace, the namespace URI
+ (not the prefix) is looked up in the xmltex catalogue. If the
+ catalogue specifies an xmltex package for this namespace it will be
+ loaded. If the element is not in a namespace, then the element name
+ will be looked up in the catalogue.
+</li>
+<li> If after all these steps the element is still unknown then
+ depending on the configuration setting either a warning or an error
+ will be displayed. (Currently only warning implemented.)
+</li>
+</ol>
+</p>
+<h3>
+<a name="manualN398"></a>The xmltex Catalogue</h3>
+<p>As discussed above, xmltex requires a mapping between PUBLIC and
+SYSTEM identifiers, namespace URI, and element names, to files of
+TeX code. This mapping is implemented by the following commands:
+<pre>
+<tt>\NAMESPACE</tt>{<em>URI</em>}{<em>xmt-file</em>}
+<tt>\PUBLIC</tt>{<em>FPI</em>}{<em>file</em>}
+<tt>\SYSTEM</tt>{<em>URI</em>}{<em>file</em>}
+<tt>\NAME</tt>{<em>element-name</em>}{<em>xmt-file</em>}
+<tt>\XMLNS</tt>{<em>element-name</em>}{<em>URI</em>}
+</pre>
+As described above, if the first argument of one of these commands
+matches the string specified in the XML source file, the corresponding
+TeX commands in the file specified in the second argument are
+loaded. The PUBLIC and SYSTEM catalogue entries may also be used
+to control which XML files should be input in response to external
+entity references. The <tt>\XMLNS</tt> is rather different,
+if an element in the null namespace does not have any definition
+attatched to it, this declaration forces the default namespace to the
+given URI. The catalogue lookup is then repeated. This allows for
+example documents beginning <tt>&lt;html&gt;</tt> to be coerced into
+the xhtml namespace.</p>
+<p>These commands may be placed in a configuration file, either
+<tt>xmltex.cfg</tt>, in which case they apply to all documents,
+or in a configuration file `<tt>\jobname.cfg</tt>' (eg
+<tt>document.cfg</tt> in the example in the Introduction) in which
+case the commands just apply to the specified document.
+</p>
+
+
+<h3>
+<a name="manualN490"></a>Configuring xmltex</h3>
+
+<p>In addition to the `catalogue' commands described earlier there are
+other commands that may be placed in the configuration files.
+
+<ul>
+<li> <p>
+<tt>\xmltraceonly</tt>
+</p>
+<p> This stops xml from trying to typeset the
+ document. The external files specified in the catalogue are still
+ loaded, so that the trace may report any elements for which no code
+ is defined, but no actual typesetting takes place. In the event of
+ unknown errors it is always worth using xmltex in this mode to
+ isolate any problems.</p>
+<p>It may be noted that if an xmltex format is built just using initex
+without any typesetting commands, the resulting format should still
+be able to parse any XML file if xmltex.cfg just specifies
+<tt>\xmltraceonly</tt> and \jobname.cfg is empty.</p>
+</li>
+<li> <p>
+<tt>\xmltraceoff</tt>
+</p>
+<p>By default xmltex provides a trace of its XML parse, displaying
+ each element begin and end. This command used in xmltex.cfg or
+ `\jobname.cfg' will stop this trace being produced.</p>
+</li>
+
+<li>
+<p> <tt>\inputonce</tt>{<em>xmt-file</em>}</p>
+<p>The catalogue entries specify that
+ certain files should be loaded if XML constructs are met.
+ Alternatively the files may just always be loaded. The system will
+ ignore any later requests to load. This is especially useful if an
+ xmltex format is being made.</p>
+</li>
+<li>
+<p>
+<tt>\UnicodeCharacter</tt>{<em>hex-or-dec</em>}{<em>tex-code</em>}</p>
+<p>The first argument specifies a unicode character number, in the same
+format as used for XML character entities, namely either a decimal
+number, or an upper case Hex number preceded by a lower case
+`<tt>x</tt>'.</p>
+<p>The second argument specifies arbitrary TeX code to be used when
+typesetting this character. Any code in the XML
+range may be specified (ie up to x10FFFF). Although codes in the
+`ASCII' range, below 128, may be specified, the definitions supplied
+for such characters will not be default be used. The definition will
+howeverbe stored and used if the character is activated using the
+command described below.</p>
+</li>
+<li> <p>
+<tt>\ActivateASCII</tt>{<em>hex-or-dec</em>}</p>
+<p>The argument to this command should be a number less than 128.
+If a character us activated by this command in a configuration file
+then any special typesetting instructions specified for the character
+will be executed whenever the character appears as character data.</p>
+<p>Some ASCII characters are activated by default. The list is
+essentially those characters with special meanings to either TeX or
+XML.</p>
+</li>
+
+</ul>
+</p>
+<p>
+If a format is being made, there are essentially two copies of
+<tt>xmltex.cfg</tt> that may play a role. The configuration file
+input when the format is made will control catalogue entries and
+packages built into the format. A possibly different
+<tt>xmltex.cfg</tt> may be used in the input path of `normal' TeX,
+this will then be used for additional information loaded each run.</p>
+<p>In either case, a separate configuration file specific to the given
+XML document may also be used (which is loaded immediately after
+<tt>xmltex.cfg</tt>).
+</p>
+
+
+
+<h2>
+<a name="stopping"></a>Stopping xmltex</h2>
+
+<p>xmltex should stop after the end of the document
+element has been processed. If things go wrong and
+you end up at the interactive
+<tt>*</tt> prompt you might want to exit with
+<tt>&lt;?xmltex \stop?&gt;</tt>).
+</p>
+
+
+<h2>
+<a name="manualN651"></a>xmltex package files</h2>
+
+<p>
+xmltex package files are the link between the XML markup and TeX
+typesetting code. They are written in TeX (rather than XML) syntax
+and may load directly or indirectly other files, including LaTeX
+class and package files. For example a file loaded for a particular
+document type may directly execute <tt>\LoadClass{article}</tt>, or
+alternatively it may cause some XML element in the document to
+execute <tt>\documentclass{article}</tt>. In either case the document will
+suffer the dubious benefit of being formatted based on the style
+implemented in <tt>article.cls</tt>. Beware though that the package
+files may be loaded at strange times, the first time a given namespace
+is declared in a document, and so the code should be written to work
+if loaded inside a local group.</p>
+<p>Characters in xmltex package files have their normal LaTeX meanings
+except that line endings are ignored so that you do not need to add
+a % to the end of lines in macro code. Unlike fd file conventions, other
+white space is <em>not</em> ignored.</p>
+<p>The available commands are:
+
+<ul>
+<li>
+<p>
+<tt>\FileEncoding</tt>{<em>encoding</em>}</p>
+<p>This is the analogue for TeX syntax files of the encoding specification
+in the XML or text declaration of XML files. If it is not specified the
+file will be assumed to be in UTF-8.</p>
+</li>
+
+<li>
+<p>
+<tt>\DeclareNamespace</tt>{<em>prefix</em>}{<em>URI</em>}</p>
+<p>This declares a prefix to be used <em>in this file</em> for referring to
+elements in the specified namespace. If the prefix is empty then this
+declares the default namespace (otherwise, unprefixed element names
+refer to elements that are not in a namespace).</p>
+<p>Note that the elements in the XML document instance may use a
+different prefix, or no prefix at all to access this namespace.
+In order to resolve these different prefixes for the same namespace,
+each time a namespace is encountered for the first time (either
+by <tt>\DeclareNamespace</tt> in a preloaded package, or in a namespace
+declaration in the XML instance) then it is allocated a new number
+and any further namespace declaration for the same URI just locally
+associates a prefix with this number. It is these numbers that are
+displayed when the XML trace of the parse of the document is shown,
+and also if any element is written out to an external file it will
+have a normalised prefix of a number whichever prefix it had
+originally. (Numeric prefixes are not legal XML, but this is an
+advantage, it ensures these internal forms can not clash with any
+prefix actually used in the document.)</p>
+<p>Three namespaces are predeclared. The null namespace (0), the XML
+namespace (<tt>http://www.w3.org/1998/xml</tt>) (1) which is predeclaed
+with prefix <tt>xml</tt> as specified in the Namespace Recommendation,
+and the xmltex namespace
+(<tt>http://www.dcarlisle.demon.co.uk/xmltex</tt>) (2) which is not
+given a default prefix, but may be used to have XML syntax for some
+internal commands (eg to have .aux files fully in XML, currently they
+are a hybrid mixture of some TeX and some XML syntax).
+</p>
+</li>
+<li>
+<p>
+ <tt>\XMLelement</tt>{<em>element-qname</em>}{<em>attribute-spec</em>}
+{<em>begin-code</em>}{<em>end-code</em>}</p>
+<p> This is similar to a LaTeX <tt>\newenvironment</tt> command.</p>
+<p> Declare the code to execute at the start and end of each instance of
+this element type. This code will be executed in a local group (like a
+LaTeX environment). The second argument declares a list of attributes
+and their default values using the <tt>\XMLattribute</tt> command
+described below.
+</p>
+</li>
+<li>
+<p>
+ <tt>\XMLelement</tt>{<em>element-qname</em>}
+{<em>attribute-spec</em>}
+<tt>{\xmlgrab}</tt>{<em>end-code</em>}</p>
+<p> A special case of the above command (which may be better made into a
+ separate declaration) is to make the <em>start-code</em> just be the command
+ <tt>\xmlgrab</tt>. In this case the <em>end-code</em> has access to the
+ element content (in XML syntax) as <tt>#1</tt>. This content isn't
+ literally the same as the original document, namespaces, white space
+ and attribute quote symbols will all have been normalised.
+</p>
+</li>
+<li> <p>
+ <tt>\XMLattribute</tt>{<em>attribute-qname</em>}
+{<em>command-name</em>}{<em>default</em>}</p>
+<p>This command may only be used in the argument to
+<tt>\XMLelement</tt>.
+ The first argument specifies the name of an attribute (using any
+ namespace prefixes current for this package file, which need not
+ be the same as the prefixes used in the document).
+ The second argument gives a TeX command name that will be used to
+ access the value of this attribute in the begin and end code for the
+ element. (Note using TeX syntax here provides a name independednt of
+ the namespace declarations that are in scope when this code is executed).
+ The third argument provides a default value that wil be used if the
+attribute is not used on an instance of this element.
+ </p>
+<p>The special token <tt>\inherit</tt> may be used which will cause
+the command to have a value set in an ancestor element if this element
+does not specify any value.</p>
+<p>If a TeX token such as <tt>\relax</tt> is used as the default
+the element code may distinguish the case that the attribute is not used
+in the document.</p>
+</li>
+<li> <p>
+ <tt>\XMLnamespaceattribute</tt>
+{<em>prefix</em>}{<em>attribute-qname</em>}
+{<em>command-name</em>}{<em>default</em>}</p>
+<p>This command is similar to <tt>\XMLattribute</tt>
+ but is used at the top level of the package file, not in the argument
+to <tt>\XMLelement</tt>. It is equivalent to specifying the
+attribute in <em>every</em> element in the namespace specified by
+the first argument. As usual the prefix (which may be {} to denote the
+default namespace) refers to the namespace declarations in the xmltex
+package: the prefixes used in the document may be different.</p>
+</li>
+
+<li>
+<p>
+<tt>\XMLentity</tt>{<em>name</em>}{<em>code</em>}</p>
+<p>Declare an (internal parsed) entity, this is equivalent to a
+<tt>&lt;!ENTITY</tt> declaration, except that the
+replacement text is specified in TeX syntax.</p>
+</li>
+
+<li>
+<p>
+<tt>\XMLname</tt>{<em>name</em>}{<em>command-name</em>}</p>
+<p>Declare the TeX command to hold the (normalised, internal form) of
+the XML name given in the first argument. This allows the code specified in
+<tt>\XMLelement</tt> to refer to XML element names without knowing
+the encodings or namespace prefixes used in the document. Of particular
+use might be to compare such a name with <tt>\ifx\XML@parent</tt>
+which will allow element code to take different actions depending on
+the parent of the current element.</p>
+</li>
+
+
+<li>
+<p>
+<tt>\XMLstring</tt>{<em>command-name</em>}&lt;&gt;<em>XML Data</em>&lt;/&gt;</p>
+<p>This saves the XML fragment as the TeX command given in the first
+argument. It may be particularly useful for redefining `fixed strings'
+that are generated by LaTeX document classes to use any special
+typesetting rules specified for individual characters.</p>
+<p>It should also be used for defining any strings used to
+in comparison tests with strings occurring in the XML document.
+Using <tt>\XMLstring</tt> rather than <tt>\def</tt> ensures
+that the characters and encodings in the string are correctly normalised.</p>
+</li>
+
+
+</ul>
+
+</p>
+
+<h2>
+<a name="manualN1004"></a>XML processing</h2>
+
+<p>
+xmltex tries as far as possible to be a fully conforming non
+validating parser. It fails in the following respects.
+<ul>
+<li> Error reporting is virtually non existent. Names are not checked
+ against the list of allowed characters, and various other
+ constraints are not enforced.
+</li>
+<li>
+<p> A non validating parser is not forced to read external dtd
+ entities (and this one does not) It is obliged to read the local
+ subset and process entity definitions and attribute declarations.
+ Entity declarations are reasonably well handled: External parameter
+ entities are handled as above, loading a corresponding xmltex file
+ if known. External entities are similarly processed, inputting
+ the XML file, a difference in this case is that if the entity is not
+ found in the catalogue, the SYSTEM identifier will be used directly
+ to <tt>\input</tt> as often this is a local file reference. Internal
+ parsed entities and parameter entities are essentially treated as
+ TeX macros, and nonparsed entities are saved along with their
+ NDATA type, for use presumably by <tt>\includegraphics</tt>.</p>
+<p>Attribute defaults are processed in the local subset of the dtd, however
+ note that this is `namespace unaware' defaulting and only applies to
+ elements using the same prefix and local name, unlike the defaulting
+ done by <tt>\XMLattribute</tt>. </p>
+</li>
+<li>
+<p> Support for encodings depends on having an encoding mapping
+ file. Any 8bit encoding that matches Unicode for the first 127 positions
+ may be used by making a trivial mapping file. (The one for latin1
+ looks over complicated as it programs a loop rather than having 127
+ declarations saying that latin1 and Unicode are identical in this
+ range).</p>
+<p> UTF-8 is supported, but support for UTF-16 is minimal. Currently
+ only latin-1 values work: (In this range UTF-16 is just latin-1 with
+ a null byte inserted after (or before, depending on endedness)
+ each latin-1 byte. The UTF-16 implementation just ignores this null
+ byte then processes as for latin-1. Probably the first few 8bit
+ pages could be similarly supported by making the low ascii control
+ characters activate UTF-16 processing but this will never be
+ satisfactory using a standard TeX. Hopefully a setup for a 16bit
+ TeX such as Omega will correct this.</p>
+</li>
+</ul>
+
+</p>
+
+<h2>
+<a name="manualN1059"></a>Accessing TeX</h2>
+
+<p>In theory you should be able to control the document just be suitable
+code specified by <tt>\XMLelement</tt> and friends, but sometimes it may be
+necessary to `tweak' the output by placing commands directly in the
+source.</p>
+<p>Two mechanisms are availalable to do this.
+<ul>
+<li>
+<p> Using the xmltex namespace. The xmltex namespace conatins a
+ small (currently empty) set of useful TeX constructs that are
+ accessed by XML syntax. For example if xmltex provides a mechanism
+ for having XML (rather than LaTeX) syntax toc files, it will need
+ an analogue of <tt>\contentsline</tt> which might be an element
+ accessed by <tt>&lt;xmltex:contentsline&gt;</tt>&hellip; where the xmltex
+ prefix is declared on this or a parent element to be
+ <tt>xmlns:xmltex="http://www.dcarlisle.demon.co.uk/xmltex"</tt>.</p>
+<p> As the xmltex namespace is declared but currently empty, a more
+ useful variant of this might be:</p>
+</li>
+<li> Declare your own namespace for TeX tweaks, and load a suitable
+ package file that attatches TeX code to the elements in this
+ namespace (or at least specify the correspondence between the
+ namespace and the package using <tt>\NAMESPACE</tt>).
+ For instance if you put <tt>&lt;clearpage xmlns="/my/tex/tweak"/&gt;</tt>
+ in your document, this will force a page break if you have at
+ suitable points, <tt>\NAMESPACE{/my/tex/tweak}{tweak.xmt}</tt>
+ and
+<pre>
+\DeclareNamespace{tweak}{"/my/tex/tweak"}
+\XMLelement{tweak:clearpage}{\clearpage}
+</pre>
+</li>
+<li>
+<p> A second different mechanism is available, to use XML processing
+ instructions. A Processing Instruction of the form:
+<tt>&lt;?xmltex&gt;</tt> <em>TeX commands</em> <tt>?&gt;</tt>
+will execute the TeX commands.</p>
+</li>
+</ul>
+
+</p>
+
+
+<h2>
+<a name="manualN1146"></a>Bugs</h2>
+
+<p>None, of course.</p>
+
+
+<h2>
+<a name="manualN1161"></a>Don't Read Past This Point</h2>
+
+<p>Thus section discusses some of the more experimental features of xmltex
+that may get a cleaner syntax (or be removed, as a bad idea) in later releases,
+and also describes some of the internal interfaces (which are also
+subject to change)</p>
+
+<h3>
+<a name="manualN1175"></a>Input Encodings and States</h3>
+
+<p>At any point while processing a document, xmltex is in one of two
+<em>states</em>: <em>tex</em> or <em>xml</em>.</p>
+<h4>
+<a name="manualN1201"></a>States</h4>
+<p>In the xml <em>state</em>,
+ &lt; and &amp; are the only two characters that
+trigger special markup codes. Other characters, such as !, &gt;, =,
+&hellip; may be used in certain XML constructs as markup but unless
+some code has been triggered by &lt; they are treated simply as
+character data. All characters above 127 are `active' to TeX
+and are used to translate the input encoding to UTF-8. All internal
+character handling is based on UTF-8, as described below. Some
+characters in the ASCII range, below 127 are also active by default
+(mainly punctuation characters used in XML constructs, such as
+the ones listed above). Some or all of the others may be activated
+using the <tt>\ActivateASCII</tt> command, which allows special
+typesetting rules to be activated for the characters, at some cost in
+processing speed.</p>
+<p>In the tex <em>state</em>,
+characters in the ASCII range have their usual
+TeX meanings, so letters are `catcode 11' and may be used in TeX
+control sequences, \ is the escape character, &amp; the table cell
+separator, etc. Characters above 127 have the meanings current for the
+current encoding just as for the xml state, probably this means that
+they are unusable in TeX code, except for the special case of
+referring to XML element names in the first argument to
+<tt>\XMLelement</tt> and releated commands.</p>
+
+<h4>
+<a name="manualN1233"></a>Encodings</h4>
+<p>Whenever a new (XML or TeX) file is input by the xmltex system the
+<em>encoding</em> is first switched to UTF-8. At the end of the
+input the encoding is returned to whatever was the current encoding.
+The encoding current while the file is read is determined by the
+encoding pseudo-attribute on the XML or text declaration in the case
+of XML files, or by the <tt>\FileEncoding</tt> command for TeX
+files. Note that the encoding mechanism <em>only</em> is triggered
+by xmltex file includes. Once an xmltex package file is loaded it may
+include other TeX files by <tt>\input</tt> or
+<tt>\includepackage</tt> these input command swill be transparent
+to the xmltex encoding system. The vast majority of TeX macro
+packages only use ASCII characters so this should not be a
+problem.</p>
+<p>Note that if the <tt>\includepackage</tt> occurs directly in
+the xmltex package file, the TeX code will be included with a known
+encoding, the one specified in the xmltex package, or UTF-8. If
+however the <tt>\includepackage</tt> is included in code specified
+by <tt>\XMLelement</tt>, then it will be executed with whatever
+encoding is current in the document at the point that element is
+reached. Before xmltex executes the code for that element it will
+switch to the tex state, thus normalising the ascii characters
+but characters above 127 will not have predefined definitions in this
+case.</p>
+<p>Internally eveything is stored as UTF-8. So `aux' and `toc' files
+will be in UTF-8 even if the document (or parts of the document) used
+different encodings.</p>
+<p>To specify a new encoding, if it is an 8 bit encoding that matches
+ASCII in the printable ASCII range, then one just needs to produce a
+file with name <em>encoding</em><tt>.xmt</tt> (in lowercase,
+on case sensitive systems) this should consist of a series of
+<tt>\InputCharacter</tt> commands, giving the input character slot
+and the equivalent Unicode. If an encoding is specified in this manner
+character data will be converted to UTF-8 by <em>expansion</em>
+and so ligatures and inter letter kerns will be preserved. (Conversely
+if characers are accessed by character references, &amp;#1234; then
+TeX arithmetic is used to decode the information and ligature
+information will be lost. For some large character sets, especially
+for Asian languages, these mechanisms will probably not prove to be
+sufficient, some mechanisms are being investigated, but in the short
+term it may be necessary to always use UTF-8 if the input encoding
+is not strictly a ine byte extension of the ASCII code page.
+</p>
+
+
+
+<h3>
+<a name="manualN1298"></a>xmltex Package Commands</h3>
+
+<p>You can use arbitrary TeX commands in an xmltex package,
+althought you should be aware that the file may be input into a local
+group, at the point in a document that a particular namespace is first
+used, for example. There are however some specific commands designed
+to be used in the begin or end code of <tt>\XMLElement</tt>.
+<ul>
+
+<li>
+<p>
+<tt>\ignorespaces</tt>
+</p>
+<p>This is actually a TeX primitive
+(for the moment!)</p>
+</li>
+
+<li>
+<p>
+<tt>\obeyspaces</tt>
+</p>
+<p>Obey consecutive space characters,
+rather than treating consecutive runs as a single space.
+(A command of this name, but not this definition is in plain TeX.)</p>
+</li>
+
+<li>
+<p>
+<tt>\obeylines</tt>
+</p>
+<p>Obey end of line characters,
+rather than treating then as a space, force a line break.
+(A command of this name, but not this definition is in plain TeX.)</p>
+</li>
+
+<li>
+<p>
+<tt>\xmltexfirstchild#1\@</tt>
+</p>
+<p>If the <em>start-code</em> for an element is specified as
+<tt>\xmlgrab</tt> then the <em>end-code</em> may use
+<tt>#1</tt> in order to execute the element content. Sometimes you
+do not want all of the content. The a construction (with currently
+unpleasant syntax) <tt>\xmltexfirstchild#1\@</tt> will just evaluate
+the first child element of the content, discarding the remaining
+elements.</p>
+</li>
+
+<li>
+<p>
+<tt>\xmltextwochildren\csa\csb#1</tt>
+</p>
+<p>If you know that the content will be exactly two child elements (for
+examle a MathML frac or sub element) then this command may be used.
+It will execute the TeX code
+<tt>\csa{</tt><em>child-1</em><tt>}\csb{</tt><em>child-2</em>
+So either two TeX command smay be supplied, one will be applied to
+each child, or the second argument may be <tt>{}</tt> in which case
+the first argument may be a TeX command that takes two arguments.
+For example the code for MathMl frac might be
+<pre>
+\XMLelement{m:mfrac}
+ {}
+ {\xmlgrab}
+ {\xmltextwochildren\frac{}#1}
+</pre>
+</p>
+</li>
+
+<li>
+<p>
+<tt>\xmltexthreechildren\csa\csb\csc#1</tt>
+</p>
+<p>As above, but more so.</p>
+</li>
+
+<li>
+<p>
+<tt>\xmltexforall\csa{#1}</tt>
+</p>
+<p>The TeX command <tt>\csa</tt> is called repeatedly,
+taking each child element of the current element as argument
+on each iteration. As a convenience the command <tt>\xml@name</tt>
+is defined before each iteration to have the (internal, normalised)
+name of the element being processed.</p>
+</li>
+
+<li>
+<p>
+<tt>\NDATAEntity\csa\csb\attvalue</tt>
+</p>
+<p>If the XML parser encounters an internalor external entity reference
+it expands it without executing any special hook that may be defined in
+an xmltex package. However NDATA entites are never directly encountered
+in an entity reference. They may only be used as an attribute value.
+If <tt>\attvalue</tt>. is a TeX command holding the value of an
+attribute, as declared in <tt>\XMLattribute</tt> then
+<tt>\NDATAEntity\csa\csb\attvalue</tt> applies the two TeX
+commands <tt>\csa</tt> and <tt>\csb</tt> to the notation type
+and the value, in a way exactly corresponding to
+<tt>\xmltextwochildren</tt> so for example the XML document for this
+manual specifies
+<pre>
+ &lt;!NOTATION URL SYSTEM "" &gt;
+ &lt;!ENTITY lppl SYSTEM "http://www.latex-project.org/lppl.txt" NDATA URL&gt;
+</pre>
+and this is handled by the following xmltex code
+<pre>
+\XMLelement{xptr}
+ {\XMLattribute{doc}{\xptrdoc}{}}
+ {\NDATAEntity\xptrdoc\@gobble\url}
+ {}
+</pre>
+which saves the attribute value in <tt>\xptrdoc</tt> and then
+discards the notation name (URL) and applies the command
+<tt>\url</tt> to typeset the supplied URL.
+</p>
+</li>
+
+</ul>
+</p>
+
+
+
+<h3>
+<a name="manualN1489"></a>Character Data Internals</h3>
+
+<p>
+<div align="center">
+<table>
+<tr>
+<td></td> <td>int.</td><td>ext. xml</td>
+<td>ext. mixed</td><td>csn typeout</td>
+<td></td>
+</tr>
+<tr>
+<td>d</td><td>xabc</td><td>xabc</td>
+<td>xabc (12)</td><td>xabc (12)</td><td>xabc (12)</td>
+<td></td>
+</tr>
+<tr>
+<td>c</td><td>xab</td><td>xab</td>
+<td>xab (12)</td><td>xab (12)</td><td>xab (12)</td>
+<td></td>
+</tr>
+<tr>
+<td>b</td><td>xa</td><td>xa</td>
+<td>xa (12)</td><td>xa (12)</td><td>xa (12)</td>
+<td></td>
+</tr>
+<tr>
+<td>ax</td><td>x</td><td>x</td>
+<td>x</td><td>x</td><td>x (12)</td>
+<td>(!)</td>
+</tr>
+<tr>
+<td>ay</td><td>x</td><td>x</td>
+<td>x</td><td>&amp;#123;</td><td>x (12)</td>
+<td>(e)</td>
+</tr>
+<tr>
+<td>az</td><td>x</td><td>\az x</td>
+<td>&amp;#123;</td><td>&amp;#123;</td><td>x (12)</td>
+<td>(&amp;lt;)</td>
+</tr>
+<tr>
+<td>&lt;</td><td>&lt;</td><td>&lt;</td>
+<td>&lt;</td><td>&lt;</td><td>&lt; (12)</td>
+<td>(&lt;)</td>
+</tr>
+</table>
+</div>
+
+</p>
+
+
+
+
+
+
+<hr>
+<div align="center">
+[<a href="http://www.tei-c.org/">NAG</a>
+| <a href="http://www.nag.co.uk/">NAG</a>
+]
+ </div>
+<hr>
+<address>
+ Last updated: Date: 2000-02-02.
+ <br> Copyright 2000 David Carlisle, NAG
+
+<!--Created by a version 1
+ XSLT stylesheet by James Clark--></address>
+</body>
+</html>
diff --git a/macros/xmltex/base/manual.tex b/macros/xmltex/base/manual.tex
new file mode 100644
index 0000000000..d788efe2fe
--- /dev/null
+++ b/macros/xmltex/base/manual.tex
@@ -0,0 +1,4 @@
+\def\xmlfile{manual.xml}
+\input xmltex
+
+
diff --git a/macros/xmltex/base/manual.xml b/macros/xmltex/base/manual.xml
new file mode 100644
index 0000000000..610938913f
--- /dev/null
+++ b/macros/xmltex/base/manual.xml
@@ -0,0 +1,799 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE TEI.2 SYSTEM "http://www.oucs.ox.ac.uk/dtds/tei-oucs.dtd" [
+
+ <!NOTATION URL SYSTEM "" >
+ <!ENTITY lppl SYSTEM "http://www.latex-project.org/lppl.txt" NDATA URL>
+
+ <!ENTITY ldots "&#x2026;">
+
+ <!ENTITY TeX "TeX">
+ <!ENTITY LaTeX "LaTeX">
+
+]>
+<TEI.2>
+ <teiHeader>
+ <fileDesc>
+ <titleStmt>
+ <title>xmltex</title>
+ </titleStmt>
+ <publicationStmt>
+ <availability>
+ <p>
+ This file is distributed under the LaTeX Project Public License
+ (LPPL) as found at <xptr doc="lppl"/>.
+ Either version 1.0, or at your option, any later version.
+ </p>
+ </availability>
+ </publicationStmt>
+ <sourceDesc>
+ <p></p>
+ </sourceDesc>
+ </fileDesc>
+ <profileDesc>
+ </profileDesc>
+ <revisionDesc>
+ <list>
+ <head></head>
+ <item><date>February 2nd 2000</date>
+ <name>David Carlisle</name>Updated)</item>
+ <item><date>January 24th 2000</date>
+ <name>David Carlisle</name>Updated)</item>
+ <item><date>January 19th 2000</date>
+ <name>David Carlisle</name>Updated)</item>
+ <item><date>January 18th 2000</date>
+ <name>David Carlisle</name>Updated)</item>
+ <item><date>January 15th 2000</date>
+ <name>David Carlisle</name>Updated)</item>
+ <item><date>January 10th 2000</date>
+ <name>Sebastian Rahtz</name>corrections</item>
+ <item><date>January 10th 2000</date>
+ <name>David Carlisle</name>Updated (in XML)</item>
+ <item><date>January 6th 2000</date>
+ <name>Sebastian Rahtz</name>Converted to TEI XML</item>
+ <item><date>January 6th 2000</date>
+ <name>David Carlisle</name>written in LaTeX</item>
+ </list>
+ </revisionDesc>
+ </teiHeader>
+ <text>
+<front>
+ <docTitle>
+ <titlePart type="main">xmltex: A non validating (and not 100%
+ conforming) namespace aware XML parser implemented in &TeX;</titlePart>
+ </docTitle>
+ <docDate>Date: 2000-02-02</docDate>
+ <docAuthor rend="email">davidc@nag.co.uk</docAuthor>
+ <docAuthor>David Carlisle</docAuthor>
+</front>
+<body>
+<div id="intro">
+<head>Introduction</head>
+<p>
+xmltex implements
+a non validating parser for documents matching the
+W3C XML Namespaces Recommendation.
+
+
+The system may just be used to parse the file (expanding entity
+references and normalising namespace declarations) in which case it
+records a trace of the parse on the terminal. Normally however the
+information from the parse is used to trigger &TeX; typesetting code.
+Declarations (in &TeX; syntax) are provided as part of xmltex to
+associate &TeX; code with the start and end of each XML element,
+attributes, processing instructions, and with unicode character data.
+</p>
+</div>
+
+<div>
+<head>Installation</head>
+<p>The xmltex parser itself does not require &LaTeX;. It may be loaded
+into initex to produce a format capable of parsing XML files. However
+such a format would have no convenient commands for typesetting, and
+so normally xmltex will be used on top of an existing format, normally
+&LaTeX;. In this section we assume that the document to be
+processed is called <code>document.xml</code>.
+</p>
+<div>
+<head>Using xmltex as an input to the &LaTeX; command</head>
+<p>&LaTeX; requires a document in &TeX; syntax, not XML. To process
+<code>document.xml</code>, first produce a two line file called
+<code>document.tex</code> of the following form:
+<eg>
+\def\xmlfile{document.xml}
+\input xmltex.tex
+</eg>
+
+Do <emph>not</emph> put any other commands in this file!</p>
+<p>You may then process the document with either of the commands:
+<code>latex document</code> or <code>latex document.tex</code>
+or the equivalent procedure in your &TeX; environment.
+</p>
+</div>
+<div>
+<head>Using xmltex as a &TeX; format built on &LaTeX;</head>
+<p>
+You may prefer to set up xmltex as a format in its own right.
+This may speed things up slightly (as <code>xmltex.tex</code> does not
+have to be read each time) but more importantly perhaps it allows the
+XML file to be processed directly without needing to make the
+<code>.tex</code> wrapper.</p>
+<p>To make a format you will need a command such as the following,
+depending on your &TeX; system.
+<eg>
+initex &amp;latex xmltex
+initex \&amp;latex xmltex
+tex -ini &amp;latex xmltex
+tex -ini \&amp;latex xmltex
+</eg></p>
+<p>This will produce a format file <code>xmltex.fmt</code>. You should then
+be able to make a <code>xmltex</code> command by copying the way the
+<code>latex</code> command is defined in terms of
+<code>latex.fmt</code>. Depending on the &TeX; system, this might be a
+symbolic link, or a shell script, or batch file, or a configuration
+option in a setup menu.
+
+</p>
+</div>
+<div>
+<head> Making an xmltex format `from scratch'</head>
+<p>
+Whilst it may be convenient to build an xmltex format as above, starting
+from the &LaTeX; format. You may prefer to instead work with an initex
+with no existing format file. Even if you wish to use a standard &LaTeX;
+it may be preferable to make a &TeX; input file that first inputs
+<code>latex.ltx</code> then <code>xmltex.tex</code>. In particular this
+will allow you to have a different hyphenation and language
+customisation for xmltex than for &LaTeX;. Many of the features of
+the language support in &LaTeX; are related to modifying the input
+syntax to be more convenient. Such changes are not needed in xmltex as
+the input syntax is always XML. Some language files may change the
+meaning of such characters as &lt; which would break the xmltex parser.
+Also, rather than using <code>latex.ltx</code> you could in principle
+use a modified <code>docstrip</code> install file and produce a
+`cut down' latex that did not have features that are not going to be
+used in xmltex.
+</p>
+<p>
+Unfortunately the support for this method of building xmltex (and access
+to non English hyphenation generally) is not fully designed and totally
+undocumented.</p>
+</div>
+</div>
+<div>
+<head>Using xmltex</head>
+<p>
+xmltex by default `knows' nothing about any particular type of XML
+file, and so needs to load external files containing specific
+information. This section describes how the information in the XML
+file determines which files will be loaded.
+
+<list type="ordered">
+<item> If the file begins with a Byte Order Mark, the default encoding
+ is set to utf-16. Otherwise the default encoding is utf-8.
+</item>
+<item> If (after an optional BOM) the document begins with an XML
+ declaration that specifies an encoding, this encoding will be used,
+ otherwise the default encoding will be used. A file with name of the
+ form <emph>encoding</emph><code>.xmt</code> will be loaded that maps the
+ requested encoding to Unicode positions. (It is an error if this
+ file does not exist for the requested encoding.)
+</item>
+<item> If the document has a <code>DOCTYPE</code> declaration that includes
+ a local subset then this will be parsed. If any external DTD entity
+ is referenced (by declaring and then referencing a parameter entity)
+ then the SYSTEM and PUBLIC identifiers of this entity will be looked
+ up in a catalogue (to be described below). If either identifier is
+ known in the catalogue the corresponding xmltex package (often with
+ <code>.xmt</code> extension) will be loaded.
+</item>
+<item> After any local subset has been processed, if the DOCTYPE
+ specifies an external entity, the PUBLIC and/or SYSTEM identifiers
+ of the external dtd file will be similarly looked up, and a
+ corresponding xmltex file loaded if known.
+</item>
+<item> As each element is processed, it may be `known' to xmltex by
+ virtue of one of the packages loaded, or it may be unknown. If it is
+ unknown then if it is in a declared namespace, the namespace URI
+ (not the prefix) is looked up in the xmltex catalogue. If the
+ catalogue specifies an xmltex package for this namespace it will be
+ loaded. If the element is not in a namespace, then the element name
+ will be looked up in the catalogue.
+</item>
+<item> If after all these steps the element is still unknown then
+ depending on the configuration setting either a warning or an error
+ will be displayed. (Currently only warning implemented.)
+</item>
+</list>
+</p>
+<div><head>The xmltex Catalogue</head>
+<p>As discussed above, xmltex requires a mapping between PUBLIC and
+SYSTEM identifiers, namespace URI, and element names, to files of
+&TeX; code. This mapping is implemented by the following commands:
+<eg>
+<code>\NAMESPACE</code>{<emph>URI</emph>}{<emph>xmt-file</emph>}
+<code>\PUBLIC</code>{<emph>FPI</emph>}{<emph>file</emph>}
+<code>\SYSTEM</code>{<emph>URI</emph>}{<emph>file</emph>}
+<code>\NAME</code>{<emph>element-name</emph>}{<emph>xmt-file</emph>}
+<code>\XMLNS</code>{<emph>element-name</emph>}{<emph>URI</emph>}
+</eg>
+As described above, if the first argument of one of these commands
+matches the string specified in the XML source file, the corresponding
+&TeX; commands in the file specified in the second argument are
+loaded. The PUBLIC and SYSTEM catalogue entries may also be used
+to control which XML files should be input in response to external
+entity references. The <code>\XMLNS</code> is rather different,
+if an element in the null namespace does not have any definition
+attatched to it, this declaration forces the default namespace to the
+given URI. The catalogue lookup is then repeated. This allows for
+example documents beginning <code>&lt;html&gt;</code> to be coerced into
+the xhtml namespace.</p>
+<p>These commands may be placed in a configuration file, either
+<code>xmltex.cfg</code>, in which case they apply to all documents,
+or in a configuration file `<code>\jobname.cfg</code>' (eg
+<code>document.cfg</code> in the example in the Introduction) in which
+case the commands just apply to the specified document.
+</p>
+</div>
+
+<div>
+<head>Configuring xmltex</head>
+<p>In addition to the `catalogue' commands described earlier there are
+other commands that may be placed in the configuration files.
+
+<list type="unordered">
+<item> <p><code>\xmltraceonly</code></p>
+<p> This stops xml from trying to typeset the
+ document. The external files specified in the catalogue are still
+ loaded, so that the trace may report any elements for which no code
+ is defined, but no actual typesetting takes place. In the event of
+ unknown errors it is always worth using xmltex in this mode to
+ isolate any problems.</p>
+<p>It may be noted that if an xmltex format is built just using initex
+without any typesetting commands, the resulting format should still
+be able to parse any XML file if xmltex.cfg just specifies
+<code>\xmltraceonly</code> and \jobname.cfg is empty.</p>
+</item>
+<item> <p><code>\xmltraceoff</code></p>
+<p>By default xmltex provides a trace of its XML parse, displaying
+ each element begin and end. This command used in xmltex.cfg or
+ `\jobname.cfg' will stop this trace being produced.</p>
+</item>
+
+<item><p> <code>\inputonce</code>{<emph>xmt-file</emph>}</p>
+<p>The catalogue entries specify that
+ certain files should be loaded if XML constructs are met.
+ Alternatively the files may just always be loaded. The system will
+ ignore any later requests to load. This is especially useful if an
+ xmltex format is being made.</p>
+</item>
+<item><p><code>\UnicodeCharacter</code>{<emph>hex-or-dec</emph>}{<emph>tex-code</emph>}</p>
+<p>The first argument specifies a unicode character number, in the same
+format as used for XML character entities, namely either a decimal
+number, or an upper case Hex number preceded by a lower case
+`<code>x</code>'.</p>
+<p>The second argument specifies arbitrary &TeX; code to be used when
+typesetting this character. Any code in the XML
+range may be specified (ie up to x10FFFF). Although codes in the
+`ASCII' range, below 128, may be specified, the definitions supplied
+for such characters will not be default be used. The definition will
+howeverbe stored and used if the character is activated using the
+command described below.</p>
+</item>
+<item> <p><code>\ActivateASCII</code>{<emph>hex-or-dec</emph>}</p>
+<p>The argument to this command should be a number less than 128.
+If a character us activated by this command in a configuration file
+then any special typesetting instructions specified for the character
+will be executed whenever the character appears as character data.</p>
+<p>Some ASCII characters are activated by default. The list is
+essentially those characters with special meanings to either &TeX; or
+XML.</p>
+</item>
+
+</list>
+</p>
+<p>
+If a format is being made, there are essentially two copies of
+<code>xmltex.cfg</code> that may play a role. The configuration file
+input when the format is made will control catalogue entries and
+packages built into the format. A possibly different
+<code>xmltex.cfg</code> may be used in the input path of `normal' &TeX;,
+this will then be used for additional information loaded each run.</p>
+<p>In either case, a separate configuration file specific to the given
+XML document may also be used (which is loaded immediately after
+<code>xmltex.cfg</code>).
+</p>
+</div>
+</div>
+
+<div id="stopping">
+<head>Stopping xmltex</head>
+<p>xmltex should stop after the end of the document
+element has been processed. If things go wrong and
+you end up at the interactive
+<code>*</code> prompt you might want to exit with
+<code><![CDATA[<?xmltex \stop?>]]></code>).
+</p>
+</div>
+
+<div>
+<head>xmltex package files</head>
+<p>
+xmltex package files are the link between the XML markup and &TeX;
+typesetting code. They are written in &TeX; (rather than XML) syntax
+and may load directly or indirectly other files, including &LaTeX;
+class and package files. For example a file loaded for a particular
+document type may directly execute <code>\LoadClass{article}</code>, or
+alternatively it may cause some XML element in the document to
+execute <code>\documentclass{article}</code>. In either case the document will
+suffer the dubious benefit of being formatted based on the style
+implemented in <code>article.cls</code>. Beware though that the package
+files may be loaded at strange times, the first time a given namespace
+is declared in a document, and so the code should be written to work
+if loaded inside a local group.</p>
+<p>Characters in xmltex package files have their normal &LaTeX; meanings
+except that line endings are ignored so that you do not need to add
+a % to the end of lines in macro code. Unlike fd file conventions, other
+white space is <emph>not</emph> ignored.</p>
+<p>The available commands are:
+
+<list type="unordered">
+<item><p><code>\FileEncoding</code>{<emph>encoding</emph>}</p>
+<p>This is the analogue for &TeX; syntax files of the encoding specification
+in the XML or text declaration of XML files. If it is not specified the
+file will be assumed to be in UTF-8.</p>
+</item>
+
+<item><p><code>\DeclareNamespace</code>{<emph>prefix</emph>}{<emph>URI</emph>}</p>
+<p>This declares a prefix to be used <emph>in this file</emph> for referring to
+elements in the specified namespace. If the prefix is empty then this
+declares the default namespace (otherwise, unprefixed element names
+refer to elements that are not in a namespace).</p>
+<p>Note that the elements in the XML document instance may use a
+different prefix, or no prefix at all to access this namespace.
+In order to resolve these different prefixes for the same namespace,
+each time a namespace is encountered for the first time (either
+by <code>\DeclareNamespace</code> in a preloaded package, or in a namespace
+declaration in the XML instance) then it is allocated a new number
+and any further namespace declaration for the same URI just locally
+associates a prefix with this number. It is these numbers that are
+displayed when the XML trace of the parse of the document is shown,
+and also if any element is written out to an external file it will
+have a normalised prefix of a number whichever prefix it had
+originally. (Numeric prefixes are not legal XML, but this is an
+advantage, it ensures these internal forms can not clash with any
+prefix actually used in the document.)</p>
+<p>Three namespaces are predeclared. The null namespace (0), the XML
+namespace (<code>http://www.w3.org/1998/xml</code>) (1) which is predeclaed
+with prefix <code>xml</code> as specified in the Namespace Recommendation,
+and the xmltex namespace
+(<code>http://www.dcarlisle.demon.co.uk/xmltex</code>) (2) which is not
+given a default prefix, but may be used to have XML syntax for some
+internal commands (eg to have .aux files fully in XML, currently they
+are a hybrid mixture of some &TeX; and some XML syntax).
+</p>
+</item>
+<item><p>
+ <code>\XMLelement</code>{<emph>element-qname</emph>}{<emph>attribute-spec</emph>}
+{<emph>begin-code</emph>}{<emph>end-code</emph>}</p>
+<p> This is similar to a &LaTeX; <code>\newenvironment</code> command.</p>
+<p> Declare the code to execute at the start and end of each instance of
+this element type. This code will be executed in a local group (like a
+&LaTeX; environment). The second argument declares a list of attributes
+and their default values using the <code>\XMLattribute</code> command
+described below.
+</p>
+</item>
+<item><p>
+ <code>\XMLelement</code>{<emph>element-qname</emph>}
+{<emph>attribute-spec</emph>}
+<code>{\xmlgrab}</code>{<emph>end-code</emph>}</p>
+<p> A special case of the above command (which may be better made into a
+ separate declaration) is to make the <emph>start-code</emph> just be the command
+ <code>\xmlgrab</code>. In this case the <emph>end-code</emph> has access to the
+ element content (in XML syntax) as <code>#1</code>. This content isn't
+ literally the same as the original document, namespaces, white space
+ and attribute quote symbols will all have been normalised.
+</p>
+</item>
+<item> <p>
+ <code>\XMLattribute</code>{<emph>attribute-qname</emph>}
+{<emph>command-name</emph>}{<emph>default</emph>}</p>
+<p>This command may only be used in the argument to
+<code>\XMLelement</code>.
+ The first argument specifies the name of an attribute (using any
+ namespace prefixes current for this package file, which need not
+ be the same as the prefixes used in the document).
+ The second argument gives a &TeX; command name that will be used to
+ access the value of this attribute in the begin and end code for the
+ element. (Note using &TeX; syntax here provides a name independednt of
+ the namespace declarations that are in scope when this code is executed).
+ The third argument provides a default value that wil be used if the
+attribute is not used on an instance of this element.
+ </p>
+<p>The special token <code>\inherit</code> may be used which will cause
+the command to have a value set in an ancestor element if this element
+does not specify any value.</p>
+<p>If a &TeX; token such as <code>\relax</code> is used as the default
+the element code may distinguish the case that the attribute is not used
+in the document.</p>
+</item>
+<item> <p>
+ <code>\XMLnamespaceattribute</code>
+{<emph>prefix</emph>}{<emph>attribute-qname</emph>}
+{<emph>command-name</emph>}{<emph>default</emph>}</p>
+<p>This command is similar to <code>\XMLattribute</code>
+ but is used at the top level of the package file, not in the argument
+to <code>\XMLelement</code>. It is equivalent to specifying the
+attribute in <emph>every</emph> element in the namespace specified by
+the first argument. As usual the prefix (which may be {} to denote the
+default namespace) refers to the namespace declarations in the xmltex
+package: the prefixes used in the document may be different.</p>
+</item>
+
+<item><p><code>\XMLentity</code>{<emph>name</emph>}{<emph>code</emph>}</p>
+<p>Declare an (internal parsed) entity, this is equivalent to a
+<code><![CDATA[<!ENTITY]]></code> declaration, except that the
+replacement text is specified in &TeX; syntax.</p>
+</item>
+
+<item><p><code>\XMLname</code>{<emph>name</emph>}{<emph>command-name</emph>}</p>
+<p>Declare the &TeX; command to hold the (normalised, internal form) of
+the XML name given in the first argument. This allows the code specified in
+<code>\XMLelement</code> to refer to XML element names without knowing
+the encodings or namespace prefixes used in the document. Of particular
+use might be to compare such a name with <code>\ifx\XML@parent</code>
+which will allow element code to take different actions depending on
+the parent of the current element.</p>
+</item>
+
+
+<item><p><code>\XMLstring</code>{<emph>command-name</emph>}&lt;&gt;<emph>XML Data</emph>&lt;/&gt;</p>
+<p>This saves the XML fragment as the &TeX; command given in the first
+argument. It may be particularly useful for redefining `fixed strings'
+that are generated by &LaTeX; document classes to use any special
+typesetting rules specified for individual characters.</p>
+<p>It should also be used for defining any strings used to
+in comparison tests with strings occurring in the XML document.
+Using <code>\XMLstring</code> rather than <code>\def</code> ensures
+that the characters and encodings in the string are correctly normalised.</p>
+</item>
+
+
+</list>
+
+</p>
+</div>
+<div>
+<head>XML processing</head>
+<p>
+xmltex tries as far as possible to be a fully conforming non
+validating parser. It fails in the following respects.
+<list type="unordered">
+<item> Error reporting is virtually non existent. Names are not checked
+ against the list of allowed characters, and various other
+ constraints are not enforced.
+</item>
+<item><p> A non validating parser is not forced to read external dtd
+ entities (and this one does not) It is obliged to read the local
+ subset and process entity definitions and attribute declarations.
+ Entity declarations are reasonably well handled: External parameter
+ entities are handled as above, loading a corresponding xmltex file
+ if known. External entities are similarly processed, inputting
+ the XML file, a difference in this case is that if the entity is not
+ found in the catalogue, the SYSTEM identifier will be used directly
+ to <code>\input</code> as often this is a local file reference. Internal
+ parsed entities and parameter entities are essentially treated as
+ &TeX; macros, and nonparsed entities are saved along with their
+ NDATA type, for use presumably by <code>\includegraphics</code>.</p>
+<p>Attribute defaults are processed in the local subset of the dtd, however
+ note that this is `namespace unaware' defaulting and only applies to
+ elements using the same prefix and local name, unlike the defaulting
+ done by <code>\XMLattribute</code>. </p>
+</item>
+<item><p> Support for encodings depends on having an encoding mapping
+ file. Any 8bit encoding that matches Unicode for the first 127 positions
+ may be used by making a trivial mapping file. (The one for latin1
+ looks over complicated as it programs a loop rather than having 127
+ declarations saying that latin1 and Unicode are identical in this
+ range).</p>
+<p> UTF-8 is supported, but support for UTF-16 is minimal. Currently
+ only latin-1 values work: (In this range UTF-16 is just latin-1 with
+ a null byte inserted after (or before, depending on endedness)
+ each latin-1 byte. The UTF-16 implementation just ignores this null
+ byte then processes as for latin-1. Probably the first few 8bit
+ pages could be similarly supported by making the low ascii control
+ characters activate UTF-16 processing but this will never be
+ satisfactory using a standard &TeX;. Hopefully a setup for a 16bit
+ &TeX; such as Omega will correct this.</p>
+</item>
+</list>
+
+</p>
+</div>
+<div>
+<head>Accessing &TeX;</head>
+<p>In theory you should be able to control the document just be suitable
+code specified by <code>\XMLelement</code> and friends, but sometimes it may be
+necessary to `tweak' the output by placing commands directly in the
+source.</p>
+<p>Two mechanisms are availalable to do this.
+<list type="unordered">
+<item><p> Using the xmltex namespace. The xmltex namespace conatins a
+ small (currently empty) set of useful &TeX; constructs that are
+ accessed by XML syntax. For example if xmltex provides a mechanism
+ for having XML (rather than &LaTeX;) syntax toc files, it will need
+ an analogue of <code>\contentsline</code> which might be an element
+ accessed by <gi>xmltex:contentsline</gi>&ldots; where the xmltex
+ prefix is declared on this or a parent element to be
+ <code>xmlns:xmltex="http://www.dcarlisle.demon.co.uk/xmltex"</code>.</p>
+<p> As the xmltex namespace is declared but currently empty, a more
+ useful variant of this might be:</p>
+</item>
+<item> Declare your own namespace for &TeX; tweaks, and load a suitable
+ package file that attatches &TeX; code to the elements in this
+ namespace (or at least specify the correspondence between the
+ namespace and the package using <code>\NAMESPACE</code>).
+ For instance if you put <gi>clearpage xmlns="/my/tex/tweak"/</gi>
+ in your document, this will force a page break if you have at
+ suitable points, <code>\NAMESPACE{/my/tex/tweak}{tweak.xmt}</code>
+ and
+<eg>
+\DeclareNamespace{tweak}{"/my/tex/tweak"}
+\XMLelement{tweak:clearpage}{\clearpage}
+</eg>
+</item>
+<item><p> A second different mechanism is available, to use XML processing
+ instructions. A Processing Instruction of the form:
+<gi>?xmltex</gi> <emph>&TeX; commands</emph> <code>?></code>
+will execute the &TeX; commands.</p>
+</item>
+</list>
+
+</p>
+</div>
+
+<div>
+<head>Bugs</head>
+<p>None, of course.</p>
+</div>
+
+<div>
+<head>Don't Read Past This Point</head>
+<p>Thus section discusses some of the more experimental features of xmltex
+that may get a cleaner syntax (or be removed, as a bad idea) in later releases,
+and also describes some of the internal interfaces (which are also
+subject to change)</p>
+
+<div>
+<head>Input Encodings and States</head>
+<p>At any point while processing a document, xmltex is in one of two
+<emph>states</emph>: <emph>tex</emph> or <emph>xml</emph>.</p>
+<div><head>States</head>
+<p>In the xml <emph>state</emph>,
+ &lt; and &amp; are the only two characters that
+trigger special markup codes. Other characters, such as !, &gt;, =,
+&ldots; may be used in certain XML constructs as markup but unless
+some code has been triggered by &lt; they are treated simply as
+character data. All characters above 127 are `active' to &TeX;
+and are used to translate the input encoding to UTF-8. All internal
+character handling is based on UTF-8, as described below. Some
+characters in the ASCII range, below 127 are also active by default
+(mainly punctuation characters used in XML constructs, such as
+the ones listed above). Some or all of the others may be activated
+using the <code>\ActivateASCII</code> command, which allows special
+typesetting rules to be activated for the characters, at some cost in
+processing speed.</p>
+<p>In the tex <emph>state</emph>,
+characters in the ASCII range have their usual
+&TeX; meanings, so letters are `catcode 11' and may be used in &TeX;
+control sequences, \ is the escape character, &amp; the table cell
+separator, etc. Characters above 127 have the meanings current for the
+current encoding just as for the xml state, probably this means that
+they are unusable in &TeX; code, except for the special case of
+referring to XML element names in the first argument to
+<code>\XMLelement</code> and releated commands.</p>
+</div>
+<div><head>Encodings</head>
+<p>Whenever a new (XML or &TeX;) file is input by the xmltex system the
+<emph>encoding</emph> is first switched to UTF-8. At the end of the
+input the encoding is returned to whatever was the current encoding.
+The encoding current while the file is read is determined by the
+encoding pseudo-attribute on the XML or text declaration in the case
+of XML files, or by the <code>\FileEncoding</code> command for &TeX;
+files. Note that the encoding mechanism <emph>only</emph> is triggered
+by xmltex file includes. Once an xmltex package file is loaded it may
+include other &TeX; files by <code>\input</code> or
+<code>\includepackage</code> these input command swill be transparent
+to the xmltex encoding system. The vast majority of &TeX; macro
+packages only use ASCII characters so this should not be a
+problem.</p>
+<p>Note that if the <code>\includepackage</code> occurs directly in
+the xmltex package file, the &TeX; code will be included with a known
+encoding, the one specified in the xmltex package, or UTF-8. If
+however the <code>\includepackage</code> is included in code specified
+by <code>\XMLelement</code>, then it will be executed with whatever
+encoding is current in the document at the point that element is
+reached. Before xmltex executes the code for that element it will
+switch to the tex state, thus normalising the ascii characters
+but characters above 127 will not have predefined definitions in this
+case.</p>
+<p>Internally eveything is stored as UTF-8. So `aux' and `toc' files
+will be in UTF-8 even if the document (or parts of the document) used
+different encodings.</p>
+<p>To specify a new encoding, if it is an 8 bit encoding that matches
+ASCII in the printable ASCII range, then one just needs to produce a
+file with name <emph>encoding</emph><code>.xmt</code> (in lowercase,
+on case sensitive systems) this should consist of a series of
+<code>\InputCharacter</code> commands, giving the input character slot
+and the equivalent Unicode. If an encoding is specified in this manner
+character data will be converted to UTF-8 by <emph>expansion</emph>
+and so ligatures and inter letter kerns will be preserved. (Conversely
+if characers are accessed by character references, &amp;#1234; then
+&TeX; arithmetic is used to decode the information and ligature
+information will be lost. For some large character sets, especially
+for Asian languages, these mechanisms will probably not prove to be
+sufficient, some mechanisms are being investigated, but in the short
+term it may be necessary to always use UTF-8 if the input encoding
+is not strictly a ine byte extension of the ASCII code page.
+</p></div>
+
+</div>
+
+<div>
+<head>xmltex Package Commands</head>
+<p>You can use arbitrary &TeX; commands in an xmltex package,
+althought you should be aware that the file may be input into a local
+group, at the point in a document that a particular namespace is first
+used, for example. There are however some specific commands designed
+to be used in the begin or end code of <code>\XMLElement</code>.
+<list type="unordered">
+
+<item><p><code>\ignorespaces</code></p>
+<p>This is actually a &TeX; primitive
+(for the moment!)</p>
+</item>
+
+<item><p><code>\obeyspaces</code></p>
+<p>Obey consecutive space characters,
+rather than treating consecutive runs as a single space.
+(A command of this name, but not this definition is in plain &TeX;.)</p>
+</item>
+
+<item><p><code>\obeylines</code></p>
+<p>Obey end of line characters,
+rather than treating then as a space, force a line break.
+(A command of this name, but not this definition is in plain &TeX;.)</p>
+</item>
+
+<item><p><code>\xmltexfirstchild#1\@</code></p>
+<p>If the <emph>start-code</emph> for an element is specified as
+<code>\xmlgrab</code> then the <emph>end-code</emph> may use
+<code>#1</code> in order to execute the element content. Sometimes you
+do not want all of the content. The a construction (with currently
+unpleasant syntax) <code>\xmltexfirstchild#1\@</code> will just evaluate
+the first child element of the content, discarding the remaining
+elements.</p>
+</item>
+
+<item><p><code>\xmltextwochildren\csa\csb#1</code></p>
+<p>If you know that the content will be exactly two child elements (for
+examle a MathML frac or sub element) then this command may be used.
+It will execute the &TeX; code
+<code>\csa{</code><emph>child-1</emph><code>}\csb{</code><emph>child-2</emph>
+So either two &TeX; command smay be supplied, one will be applied to
+each child, or the second argument may be <code>{}</code> in which case
+the first argument may be a &TeX; command that takes two arguments.
+For example the code for MathMl frac might be
+<eg>
+\XMLelement{m:mfrac}
+ {}
+ {\xmlgrab}
+ {\xmltextwochildren\frac{}#1}
+</eg>
+</p>
+</item>
+
+<item><p><code>\xmltexthreechildren\csa\csb\csc#1</code></p>
+<p>As above, but more so.</p></item>
+
+<item><p><code>\xmltexforall\csa{#1}</code></p>
+<p>The &TeX; command <code>\csa</code> is called repeatedly,
+taking each child element of the current element as argument
+on each iteration. As a convenience the command <code>\xml@name</code>
+is defined before each iteration to have the (internal, normalised)
+name of the element being processed.</p>
+</item>
+
+<item><p><code>\NDATAEntity\csa\csb\attvalue</code></p>
+<p>If the XML parser encounters an internalor external entity reference
+it expands it without executing any special hook that may be defined in
+an xmltex package. However NDATA entites are never directly encountered
+in an entity reference. They may only be used as an attribute value.
+If <code>\attvalue</code>. is a &TeX; command holding the value of an
+attribute, as declared in <code>\XMLattribute</code> then
+<code>\NDATAEntity\csa\csb\attvalue</code> applies the two &TeX;
+commands <code>\csa</code> and <code>\csb</code> to the notation type
+and the value, in a way exactly corresponding to
+<code>\xmltextwochildren</code> so for example the XML document for this
+manual specifies
+<eg><![CDATA[
+ <!NOTATION URL SYSTEM "" >
+ <!ENTITY lppl SYSTEM "http://www.latex-project.org/lppl.txt" NDATA URL>]]>
+</eg>
+and this is handled by the following xmltex code
+<eg><![CDATA[
+\XMLelement{xptr}
+ {\XMLattribute{doc}{\xptrdoc}{}}
+ {\NDATAEntity\xptrdoc\@gobble\url}
+ {}]]>
+</eg>
+which saves the attribute value in <code>\xptrdoc</code> and then
+discards the notation name (URL) and applies the command
+<code>\url</code> to typeset the supplied URL.
+</p>
+</item>
+
+</list>
+</p>
+
+</div>
+
+<div>
+<head>Character Data Internals</head>
+<p>
+<table>
+<row>
+<cell/> <cell>int.</cell><cell>ext. xml</cell>
+<cell>ext. mixed</cell><cell>csn typeout</cell>
+<cell/>
+</row>
+<row>
+<cell>d</cell><cell>xabc</cell><cell>xabc</cell>
+<cell>xabc (12)</cell><cell>xabc (12)</cell><cell>xabc (12)</cell>
+<cell/>
+</row>
+<row>
+<cell>c</cell><cell>xab</cell><cell>xab</cell>
+<cell>xab (12)</cell><cell>xab (12)</cell><cell>xab (12)</cell>
+<cell/>
+</row>
+<row>
+<cell>b</cell><cell>xa</cell><cell>xa</cell>
+<cell>xa (12)</cell><cell>xa (12)</cell><cell>xa (12)</cell>
+<cell/>
+</row>
+<row>
+<cell>ax</cell><cell>x</cell><cell>x</cell>
+<cell>x</cell><cell>x</cell><cell>x (12)</cell>
+<cell>(!)</cell>
+</row>
+<row>
+<cell>ay</cell><cell>x</cell><cell>x</cell>
+<cell>x</cell><cell>&amp;#123;</cell><cell>x (12)</cell>
+<cell>(e)</cell>
+</row>
+<row>
+<cell>az</cell><cell>x</cell><cell>\az x</cell>
+<cell>&amp;#123;</cell><cell>&amp;#123;</cell><cell>x (12)</cell>
+<cell>(&amp;lt;)</cell>
+</row>
+<row>
+<cell>&lt;</cell><cell>&lt;</cell><cell>&lt;</cell>
+<cell>&lt;</cell><cell>&lt;</cell><cell>&lt; (12)</cell>
+<cell>(&lt;)</cell>
+</row>
+</table>
+
+</p>
+</div>
+
+
+</div>
+
+
+</body>
+</text>
+</TEI.2>
+
+
diff --git a/macros/xmltex/base/manual.xsl b/macros/xmltex/base/manual.xsl
new file mode 100644
index 0000000000..0bf8a7234e
--- /dev/null
+++ b/macros/xmltex/base/manual.xsl
@@ -0,0 +1,29 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+version="1.0">
+<xsl:import href="http://www.oucs.ox.ac.uk/stylesheets/teihtml.xsl"/>
+<xsl:variable name="subTocDepth">-2</xsl:variable>
+<xsl:variable name="masterFile">manual</xsl:variable>
+<xsl:variable name="splitLevel">-1</xsl:variable>
+<xsl:variable name="alignNavigationPanel">center</xsl:variable>
+<xsl:variable name="topNavigationPanel"></xsl:variable>
+<xsl:variable name="bottomNavigationPanel">true</xsl:variable>
+<xsl:variable name="institution">Numerical Algorithms Group: NAG</xsl:variable>
+<xsl:variable name="homeURL">http://www.nag.co.uk/</xsl:variable>
+<xsl:variable name="homeWords">NAG</xsl:variable>
+<xsl:variable name="parentURL">http://www.tei-c.org/</xsl:variable>
+<xsl:variable name="parentWords">NAG</xsl:variable>
+<xsl:variable name="feedbackURL">http://www.nag.co.uk/</xsl:variable>
+<xsl:variable name="feedbackWords">NAG</xsl:variable>
+<xsl:variable name="searchURL"></xsl:variable>
+<xsl:variable name="searchWords"></xsl:variable>
+<xsl:variable name="showTitleAuthor">true</xsl:variable>
+<xsl:template name="logoPicture"/>
+<xsl:template name="copyrightStatement"> Copyright 2000 David Carlisle, NAG
+
+</xsl:template>
+
+
+
+</xsl:stylesheet>
+
+
diff --git a/macros/xmltex/base/mathml2.xmt b/macros/xmltex/base/mathml2.xmt
new file mode 100644
index 0000000000..218daedd2f
--- /dev/null
+++ b/macros/xmltex/base/mathml2.xmt
@@ -0,0 +1,190 @@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% mathml2.xmt
+
+%% Copyright 2000 David Carlisle
+
+%% This file is distributed under the LaTeX Project Public License
+%% (LPPL) as found at http://www.latex-project.org/lppl.txt
+%% Either version 1.0, or at your option, any later version.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\DeclareNamespace{m}{http://www.w3.org/1998/Math/MathML}
+
+
+\XMLstring\att@BLOCK<>block</>
+\XMLstring\att@PREFIX<>prefix</>
+\XMLstring\att@EQUATION<>equation</>
+
+\XMLname{m:math}{\MATH}
+\XMLname{m:mlabeledtr}{\LABELEDTR}
+
+\XMLnamespaceattribute{m}{open}{\XML@fenceopen}{(}
+\XMLnamespaceattribute{m}{close}{\XML@fenceclose}{)}
+\XMLnamespaceattribute{m}{width}{\XML@mspacewidth}{0}
+
+\XMLelement{m:math}
+ {\XMLattribute{display}{\XML@mathmlmode}{foo}
+ }
+ {\def\GATHER{1}%
+ \ifx\XML@mathmlmode\att@BLOCK\[\else\(\fi
+ }
+ {
+ \ifx\XML@mathmlmode\att@BLOCK\]\else\)\fi
+ }
+
+
+\XMLelement{m:mi}
+ {}
+ {\xmlgrab}
+ {\def\a{#1}\mi@test#1\relax}
+
+\gdef\mi@test#1#2\relax{
+ \ifx\mi@test#2\mi@test
+ \expandafter#1
+ \else
+ \mathrm{#1#2}
+ \fi}
+
+\XMLelement{m:mn}
+ {}
+ {\xmlgrab}
+ {\mathrm{#1}}
+
+\XMLelement{m:mo}
+ {\XMLattribute{form}{\XML@mathmlform}{inline}}
+ {\xmlgrab}
+ {\ifx\XML@mathmlform\att@PREFIX
+ \mathop{{\operator@font #1}}%
+ \else
+ #1%
+ \fi
+ }
+
+\XMLelement{m:mrow}
+ {}
+ {}
+ {}
+
+
+\XMLelement{m:msub}
+ {}
+ {\xmlgrab}
+ {\xmltextwochildren\@firstofone\sb#1}
+
+\XMLelement{m:msup}
+ {}
+ {\xmlgrab}
+ {\xmltextwochildren\@firstofone\sp#1}
+
+
+\XMLelement{m:msubsup}
+ {}
+ {\xmlgrab}
+ {\xmltexthreechildren\@firstofone\sb\sp#1}
+
+\XMLelement{m:mroot}
+ {}
+ {\xmlgrab}
+ {\xmltextwochildren\mathmlroot{}#1}
+
+\gdef\mathmlroot#1#2{\root#2\of{#1}}
+
+
+\XMLelement{m:mfrac}
+ {}
+ {\xmlgrab}
+ {\xmltextwochildren\frac{}#1}
+
+
+\XMLelement{m:msqrt}
+ {}
+ {\xmlgrab}
+ {\sqrt{#1}}
+
+\XMLelement{m:mtext}
+ {}
+ {\xmlgrab}
+ {\hbox{#1}}
+
+
+% accent? stackrel?
+\XMLelement{m:mover}
+ {}
+ {}
+ {}
+
+% \DeclareMathDelimiter{{}{\mathopen} {operators}{"28}{largesymbols}{"00}
+\global\delcode`{"66308
+\global\delcode`}"67309
+
+\XMLelement{m:mfenced}
+ { }
+ {\left\XML@fenceopen}
+ {\right\XML@fenceclose}
+
+\XMLelement{m:mtable}
+ {\XMLattribute{class}{\XML@mtableclass}{}}
+ {
+ \def\StartTable{1}%
+ \def\LABELED{0}%
+ \ifx\XML@mtableclass\att@EQUATION
+ \def\GATHER{1}%
+ \begin{gathered}
+ \else
+ \def\GATHER{0}%
+ \begin{array}{*{99}{c}}
+ \fi
+ }
+ {
+ \ifx\XML@mtableclass\att@EQUATION
+ \end{gathered}
+ \else
+ \end{array}
+ \fi
+ }
+
+
+\XMLelement{m:mtr}
+ {}
+ {\xmlgrab}
+ {\ifnum\StartTable=1
+ \gdef\temp{#1\def\StartTable{0}}%
+ \else
+ \gdef\temp{\\#1}%
+ \fi
+ \aftergroup\temp}
+
+\XMLelement{m:mlabeledtr}
+ {}
+ {\xmlgrab}
+ {\xmltextwochildren{\tag*}\@firstofone#1\gdef\temp{\\}\aftergroup\temp}
+
+\XMLelement{m:mtd}
+ {}
+ {\xmlgrab}
+ {\ifnum\GATHER=1
+ \gdef\temp{#1}%
+ \else
+ \gdef\temp{#1\tabcellsep}%
+ \fi
+ \aftergroup\temp
+ }
+
+\XMLelement{m:munderover}
+ {}
+ {}
+ {}
+
+\XMLelement{m:mover}
+ {}
+ {}
+ {}
+
+\XMLelement{m:mspace}
+ {}
+ {}
+ {\@defaultunits\dimen@\XML@mspacewidth pt\relax\@nnil
+ \ifnum\dimen@=\z@\else\kern\dimen@\fi}
+
diff --git a/macros/xmltex/base/portugeselatin1.xml b/macros/xmltex/base/portugeselatin1.xml
new file mode 100644
index 0000000000..a13fb0b4f3
--- /dev/null
+++ b/macros/xmltex/base/portugeselatin1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1" ?>
+<documento att="portugus">
+ <seco>
+ <cabealho>Teste</cabealho>
+ Ol Mundo!
+ </seco>
+</documento>
diff --git a/macros/xmltex/base/readme.txt b/macros/xmltex/base/readme.txt
new file mode 100644
index 0000000000..fb2ddfcc08
--- /dev/null
+++ b/macros/xmltex/base/readme.txt
@@ -0,0 +1,123 @@
+
+ xmltex.tex
+ ==========
+
+Copyright 2000 David Carlisle
+
+This collection of files is distributed under the LaTeX Project Public
+License a (LPPL) as found at http://www.latex-project.org/lppl.txt
+Either version 1.0, or at your option, any later version.
+
+
+xmltex is a system for typesetting XML files with TeX. It may be used
+on its own or in conjunction with another TeX format. (LaTeX is
+assumed for most examples).
+
+xmltex supports the XML Namespace Recommendation. Arbitrary prefixes
+may be used in document instances, and in definition files. It
+supports any encoding that matches ASCII in the first 127 positions.
+UTF-8, latin-1 and KOI8-R are included in the distribution, other
+encodings may be trivially added.
+
+Further documentation may be obtained by running manual.tex through
+LaTeX.
+
+The distribution of 2000-01-18 consists of:
+
+* readme.txt
+ This file.
+
+
+
+* xmltex.tex
+ The source code for xmltex.
+
+* xmltex.cfg
+ Configuration file for xmltex, with sufficient information about
+ Unicode to typeset the latin-1 and Cyrillic examples in the
+ distribution, and information about the namespaces and dtd used in the
+ examples.
+
+* iso-8859-1.xmt
+ internal file defining latin-1 input encoding
+
+* utf-16.xmt
+ place holder for a file supporting UTF-16 (not really possible with
+ standard TeX).
+
+* koi8-r.xmt
+ internal file defining the Cyrillic encoding KOI8-R.
+ Support for any 8 bit encoding that matches ASCII for the first 127
+ positions may be added by copying the format of file.
+
+
+
+* manual.xml
+ The manual for xmltex (marked up in TEI XML).
+
+* manual.tex
+ Support files for processing the manual.
+ LaTeX manual.tex with your standard LaTeX format, to obtain
+ the typeset documentation.
+
+* manual.html manual.xsl
+ HTML version of manual, generated via XSL (thanks to Sebastian Rahtz).
+
+
+* tei.xmt
+ xmltex package file for TEI XML markup as used in the xmltex manual.
+ (The much of this file was implemented by Sebastian Rahtz)
+
+* mathml2.xmt
+ A small start towards an xmltex package for MathML2.
+ Used in one of the test files.
+
+* sec.xmt
+ A package for a small XML document language used in sone of the test
+ files.
+
+
+
+* langtest.xml langtest.tex
+ This test example file demonstrates a small `hello world' document in
+ different languages and different encodings all input into the same
+ document. Note that the table of contents is constructed correctly
+ despite the fact taht different encodings are used. Also note that
+ typesetting commands only need to be defined once, irrespective of
+ encoding. So the Cyrillic command for `document' looks quite different
+ in the utf-8 and koi8-r files, but the same definitions work in both
+ cases.
+
+* englishutf8.xml
+ English markup in utf-8, used by langtest.xml
+
+* English markup in utf-16, used by langtest.xml.
+ Note that utf-16 support is limited to the latin-1 range (it just
+ consists of ignoring the null byte).
+
+* portugeselatin1.xml
+ Portugese example, note that the markup is in latin 1, but the
+ definitions (in langtest.cfg are in utf-8).
+
+* russiankoi8.xml
+ Russian Example, KOI8-R. This test file typesets Cyrillic letters
+ This assumes the AMS `OT2' encoded cyrillic fonts are present on your
+ system. (Better support for cyrillic is available with the T2 encoded
+ fonts but these are not used in this example to enable the example
+ to be run on as many sites as possible.)
+
+* russiankutf8.xml
+ Russian Example, utf-8.
+
+
+* testsec.xml testsec.tex
+ A small example testing varius features.
+ The final section includes some tests of MathML.
+ Note that the elements defined in this file use a namespace prefix
+ even though the elements in the XML document (testsec) do not.
+
+* testascii.xml testascii.tex testascii.cfg
+ A test file in which all characters are activated, allowing for some
+ special effects. (Here vowels are red and numbers are old style.)
+
+ \ No newline at end of file
diff --git a/macros/xmltex/base/russiankoi8.xml b/macros/xmltex/base/russiankoi8.xml
new file mode 100644
index 0000000000..2404d9535b
--- /dev/null
+++ b/macros/xmltex/base/russiankoi8.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="KOI8-R"?>
+
+< ="">
+ <>
+ <></>
+ !
+ </>
+</>
+
diff --git a/macros/xmltex/base/russianutf8.xml b/macros/xmltex/base/russianutf8.xml
new file mode 100644
index 0000000000..735c915164
--- /dev/null
+++ b/macros/xmltex/base/russianutf8.xml
@@ -0,0 +1,7 @@
+<документ атт="русский" >
+ <раздел>
+ <голова>Тест</голова>
+ Здравствуй Мир!
+ </раздел>
+</документ>
+
diff --git a/macros/xmltex/base/sec.xmt b/macros/xmltex/base/sec.xmt
new file mode 100644
index 0000000000..74f44231be
--- /dev/null
+++ b/macros/xmltex/base/sec.xmt
@@ -0,0 +1,42 @@
+
+\DeclareNamespace{dpcsec}{http://www.dcarlisle.demon.co.uk/sec}
+
+
+\XMLelement{dpcsec:doc}
+{}
+ {\documentclass{article}
+ \usepackage[TS1,T1]{fontenc}
+ \usepackage{color,textcomp}
+ \textheight15\baselineskip
+ \parskip1\baselineskip plus \baselineskip
+ \pagestyle{headings}
+ \begin{document}
+ \tableofcontents}
+ {\end{document}}
+
+\XMLelement{dpcsec:sec}
+{}
+ {}
+ {}
+
+\XMLelement{dpcsec:head}
+{}
+ {\xmlgrab}
+ {\section{{\tt aaa} #1}}
+
+\XMLelement{dpcsec:p}
+{}
+{\par}
+ {\par}
+
+
+\XMLelement{dpcsec:tt}
+{}
+{\ttfamily}
+{}
+
+\XMLelement{dpcsec:it}
+{}
+{\itshape}
+{\/}
+
diff --git a/macros/xmltex/base/tei.xmt b/macros/xmltex/base/tei.xmt
new file mode 100644
index 0000000000..94ffede237
--- /dev/null
+++ b/macros/xmltex/base/tei.xmt
@@ -0,0 +1,142 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% tei.xmt
+
+%% Copyright 2000 Sebastian Rahtz, David Carlisle
+
+%% This file is distributed under the LaTeX Project Public License
+%% (LPPL) as found at http://www.latex-project.org/lppl.txt
+%% Either version 1.0, or at your option, any later version.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\XMLelement{TEI.2}{}
+ { \documentclass{article}
+ \usepackage{ifthen,url}
+ \begin{document} }
+ {\end{document}}
+
+\XMLelement{p}{}
+ {\par}
+ {}
+
+\newcount\SCOUNT
+\global\SCOUNT-1\relax
+
+
+
+
+\XMLelement{div}{
+ \XMLattribute{id}{\idval}{\@nil}}
+ {\advance\SCOUNT\@ne}
+ {}
+
+\XMLelement{head}{ }
+ {\xmlgrab}
+ {\protected@xdef\temp{
+ \expandafter\noexpand\ifcase\SCOUNT
+ \section\or\subsection\or\subsubsection\fi
+ {#1}\ifx\idval\@nnil\else\noexpand\label{\idval}
+ \fi}
+ \aftergroup\temp
+}
+
+
+\XMLelement{emph}{}
+ {\itshape}
+ {}
+
+\XMLelement{code}{}
+ {\ttfamily}
+ {}
+
+\XMLelement{gi}{}
+ {\ttfamily\textless}
+ {\textgreater}
+
+\XMLelement{eg}{}
+ {\begin{quote}\ttfamily\obeylines}
+ {\end{quote}}
+
+\XMLelement{teiHeader}{}
+ {\xmlgrab}
+ {\xmltexfirstchild#1\@empty\@}
+
+\XMLelement{fileDesc}{}
+ {}
+ {}
+
+\XMLelement{titleStmt}{}
+ {\xmlgrab}
+ {}
+
+\XMLelement{availability}{}
+ {\xmlgrab}
+ {\gdef\header@availability{#1}}
+
+\XMLelement{docTitle}{}
+ {\xmlgrab}
+ {\gdef\nopar{\let\par\relax}
+ \title{#1\unskip\thanks{\protect\nopar\ignorespaces\header@availability}}}
+
+\XMLelement{xptr}
+ {\XMLattribute{doc}{\xptrdoc}{}}
+ {\NDATAEntity\xptrdoc\@gobble\url}
+ {}
+
+\XMLelement{docDate}{}
+ {\xmlgrab}
+ {\date{#1}}
+
+\XMLelement{docAuthor}{}
+ {\xmlgrab}
+ {\author{#1}}
+
+\XMLelement{front}{}
+ {}
+ {\maketitle\tableofcontents}
+
+\XMLelement{item}{}
+ {\item}
+ {}
+
+\XMLelement{list}{
+ \XMLattribute{type}{\listtype}{itemize}}
+ {\ifthenelse{\equal{\listtype}{ordered}}
+ {\begin{enumerate}}{\begin{itemize}}}
+ {\ifthenelse{\equal{\listtype}{ordered}}
+ {\end{enumerate}}{\end{itemize}}}
+
+
+\XMLelement{q}{
+ \XMLattribute{rend}{\qrend}{}}
+ {\begin{quote}
+ \ifthenelse{\equal{\qrend}{eg}}{\ttfamily\obeylines}{}}
+ {\end{quote}}
+
+\XMLelement{ptr}{
+ \XMLattribute{target}{\ptrtarget}{}}
+ {\ref{\ptrtarget}}{}
+
+\XMLelement{ref}{
+ \XMLattribute{target}{\ptrtarget}{}}
+ {\ref{\ptrtarget}}{}
+
+
+
+
+\XMLelement{table}{}
+ {\begin{tabular}{*{20}{l}}}
+ {\end{tabular}}
+
+\XMLelement{row}{}
+ {\xmlgrab}
+ {\gdef\temp{#1\\}\aftergroup\temp}
+
+\XMLelement{cell}{}
+ {\xmlgrab}
+ {\gdef\temp{#1\tabcellsep}\aftergroup\temp}
+
+
+% cheating, a bit
+\XMLentity{TeX}{\TeX}
+\XMLentity{LaTeX}{\LaTeX} \ No newline at end of file
diff --git a/macros/xmltex/base/testascii.cfg b/macros/xmltex/base/testascii.cfg
new file mode 100644
index 0000000000..2fc2494465
--- /dev/null
+++ b/macros/xmltex/base/testascii.cfg
@@ -0,0 +1,159 @@
+
+\ActivateASCII{0}
+\ActivateASCII{1}
+\ActivateASCII{2}
+\ActivateASCII{3}
+\ActivateASCII{4}
+\ActivateASCII{5}
+\ActivateASCII{6}
+\ActivateASCII{7}
+\ActivateASCII{8}
+\ActivateASCII{9}
+\ActivateASCII{0}
+\ActivateASCII{11}
+\ActivateASCII{12}
+\ActivateASCII{13}
+\ActivateASCII{14}
+\ActivateASCII{15}
+\ActivateASCII{16}
+\ActivateASCII{17}
+\ActivateASCII{18}
+\ActivateASCII{19}
+\ActivateASCII{20}
+\ActivateASCII{21}
+\ActivateASCII{22}
+\ActivateASCII{23}
+\ActivateASCII{24}
+\ActivateASCII{25}
+\ActivateASCII{26}
+\ActivateASCII{27}
+\ActivateASCII{28}
+\ActivateASCII{29}
+\ActivateASCII{30}
+\ActivateASCII{31}
+\ActivateASCII{32}
+\ActivateASCII{33}
+\ActivateASCII{34}
+\ActivateASCII{35}
+\ActivateASCII{36}
+\ActivateASCII{37}
+\ActivateASCII{38}
+\ActivateASCII{39}
+\ActivateASCII{30}
+\ActivateASCII{31}
+\ActivateASCII{32}
+\ActivateASCII{33}
+\ActivateASCII{34}
+\ActivateASCII{35}
+\ActivateASCII{36}
+\ActivateASCII{37}
+\ActivateASCII{38}
+\ActivateASCII{39}
+\ActivateASCII{40}
+\ActivateASCII{41}
+\ActivateASCII{42}
+\ActivateASCII{43}
+\ActivateASCII{44}
+\ActivateASCII{45}
+\ActivateASCII{46}
+\ActivateASCII{47}
+\ActivateASCII{48}
+\ActivateASCII{49}
+\ActivateASCII{50}
+\ActivateASCII{51}
+\ActivateASCII{52}
+\ActivateASCII{53}
+\ActivateASCII{54}
+\ActivateASCII{55}
+\ActivateASCII{56}
+\ActivateASCII{57}
+\ActivateASCII{58}
+\ActivateASCII{59}
+\ActivateASCII{60}
+\ActivateASCII{61}
+\ActivateASCII{62}
+\ActivateASCII{63}
+\ActivateASCII{64}
+\ActivateASCII{65}
+\ActivateASCII{66}
+\ActivateASCII{67}
+\ActivateASCII{68}
+\ActivateASCII{69}
+\ActivateASCII{70}
+\ActivateASCII{71}
+\ActivateASCII{72}
+\ActivateASCII{73}
+\ActivateASCII{74}
+\ActivateASCII{75}
+\ActivateASCII{76}
+\ActivateASCII{77}
+\ActivateASCII{78}
+\ActivateASCII{79}
+\ActivateASCII{80}
+\ActivateASCII{81}
+\ActivateASCII{82}
+\ActivateASCII{83}
+\ActivateASCII{84}
+\ActivateASCII{85}
+\ActivateASCII{86}
+\ActivateASCII{87}
+\ActivateASCII{88}
+\ActivateASCII{89}
+\ActivateASCII{90}
+\ActivateASCII{91}
+\ActivateASCII{92}
+\ActivateASCII{93}
+\ActivateASCII{94}
+\ActivateASCII{95}
+\ActivateASCII{96}
+\ActivateASCII{97}
+\ActivateASCII{98}
+\ActivateASCII{99}
+\ActivateASCII{100}
+\ActivateASCII{101}
+\ActivateASCII{102}
+\ActivateASCII{103}
+\ActivateASCII{104}
+\ActivateASCII{105}
+\ActivateASCII{106}
+\ActivateASCII{107}
+\ActivateASCII{108}
+\ActivateASCII{109}
+\ActivateASCII{110}
+\ActivateASCII{111}
+\ActivateASCII{112}
+\ActivateASCII{113}
+\ActivateASCII{114}
+\ActivateASCII{115}
+\ActivateASCII{116}
+\ActivateASCII{117}
+\ActivateASCII{118}
+\ActivateASCII{119}
+\ActivateASCII{120}
+\ActivateASCII{121}
+\ActivateASCII{122}
+\ActivateASCII{123}
+\ActivateASCII{124}
+\ActivateASCII{125}
+\ActivateASCII{126}
+\ActivateASCII{127}
+
+
+\UnicodeCharacter{105}{\textcolor{red}{i}}
+\UnicodeCharacter{97}{\textcolor{red}{a}}
+\UnicodeCharacter{101}{\textcolor{red}{e}}
+\UnicodeCharacter{105}{\textcolor{red}{i}}
+\UnicodeCharacter{111}{\textcolor{red}{o}}
+\UnicodeCharacter{117}{\textcolor{red}{u}}
+
+\UnicodeCharacter{48}{\textzerooldstyle}
+\UnicodeCharacter{49}{\textoneoldstyle}
+\UnicodeCharacter{50}{\texttwooldstyle}
+\UnicodeCharacter{51}{\textthreeoldstyle}
+\UnicodeCharacter{52}{\textfouroldstyle}
+\UnicodeCharacter{53}{\textfiveoldstyle}
+\UnicodeCharacter{54}{\textsixoldstyle}
+\UnicodeCharacter{55}{\textsevenoldstyle}
+\UnicodeCharacter{56}{\texteightoldstyle}
+\UnicodeCharacter{57}{\textnineoldstyle}
+
diff --git a/macros/xmltex/base/testascii.tex b/macros/xmltex/base/testascii.tex
new file mode 100644
index 0000000000..fccb7db53c
--- /dev/null
+++ b/macros/xmltex/base/testascii.tex
@@ -0,0 +1,4 @@
+\def\xmlfile{testascii.xml}
+\input xmltex
+
+
diff --git a/macros/xmltex/base/testascii.xml b/macros/xmltex/base/testascii.xml
new file mode 100644
index 0000000000..32a23354a6
--- /dev/null
+++ b/macros/xmltex/base/testascii.xml
@@ -0,0 +1,22 @@
+
+<doc xmlns="http://www.dcarlisle.demon.co.uk/sec">
+
+<sec><head>Heading <it>iii</it> example (123) </head>
+<p>
+This is an example of an experimental mode in which some
+of the characters in the standard `ascii' range are given special
+definitions. Vowels are made red, and digits (0123456789) are typeset in
+oldstyle form. Note that you may still use the sepcial letters as part
+of XML names, for example the follwoin word is set using the element `it':
+<it>italic</it>.
+</p>
+<p>
+While the special definitions apply to any text originating in the XML
+document they do not apply to texts coming from the TeX code and in
+particular from LaTeX packages. Note in this example that the
+section numbers are not old style and the vowels in the word `contents'
+are not coloured.
+</p>
+</sec>
+
+</doc>
diff --git a/macros/xmltex/base/testsec.tex b/macros/xmltex/base/testsec.tex
new file mode 100644
index 0000000000..36136d92a3
--- /dev/null
+++ b/macros/xmltex/base/testsec.tex
@@ -0,0 +1,5 @@
+
+\def\xmlfile{testsec.xml}
+\input xmltex.tex
+
+
diff --git a/macros/xmltex/base/testsec.xml b/macros/xmltex/base/testsec.xml
new file mode 100644
index 0000000000..533e2663b4
--- /dev/null
+++ b/macros/xmltex/base/testsec.xml
@@ -0,0 +1,77 @@
+
+<!DOCTYPE doc [
+<!ENTITY xx "<p>some text some text some text.</p>" >
+<!ENTITY xxx "&xx;" >
+]>
+
+<doc xmlns="http://www.dcarlisle.demon.co.uk/sec">
+
+<tt>lll</tt>
+<sec>
+ <head>This+&amp;&lt;&gt; <tt>code 111 {\tt 222} 333</tt></head>
+<p>The first section.</p>
+</sec>
+
+<sec>
+ <head>This+<![CDATA[&<>]]> <tt>code 999 {\tt 222} 333</tt></head>
+<p>The second section.</p>
+</sec>
+
+
+
+<p>abc+xyz &#113; (1:&amp; 2:&#38;)</p>
+
+&xxx;&xxx;&xxx;&xxx;&xxx;
+&xxx;&xxx;&xxx;&xxx;&xxx;
+
+<sec>
+ <head>Some utf8 [áéíóú] and some ascii [^^c3^^a1^^c3^^a9^^c3^^ad^^c3^^b3^^c3^^ba]</head>
+<p>and some more áéíóú</p>
+</sec>
+
+
+&xxx;&xxx;&xxx;&xxx;&xxx;
+&xxx;&xxx;&xxx;&xxx;&xxx;
+
+<sec>
+ <head>The End</head>
+<p>The last section.</p>
+</sec>
+
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<msub><mrow><mi>a</mi> <mo>+</mo> <mi>b</mi></mrow> <mn>2</mn> </msub>
+</math>
+
+
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<mroot><mrow><mi>xxx</mi> <mo>-</mo> <mi>b</mi></mrow> <mn>3</mn> </mroot>
+</math>
+
+
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<msubsup>
+ <mi>xxx</mi>
+ <mrow><mi>j</mi><mo>,</mo><mi>k</mi></mrow>
+ <mn>4</mn>
+</msubsup>
+</math>
+
+
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<mfenced>
+<msup>
+ <mi>xxx</mi>
+ <mn>4</mn>
+</msup>
+</mfenced>
+
+<mfenced open="{" close="]" >
+<msup>
+ <mi>xxx</mi>
+ <mn>4</mn>
+</msup>
+</mfenced>
+
+</math>
+
+</doc> \ No newline at end of file
diff --git a/macros/xmltex/base/utf-16.xmt b/macros/xmltex/base/utf-16.xmt
new file mode 100644
index 0000000000..8efd4363b8
--- /dev/null
+++ b/macros/xmltex/base/utf-16.xmt
@@ -0,0 +1,4 @@
+% not a serious implementation
+
+\input iso-8859-1.xmt
+\catcode0=9 \ No newline at end of file
diff --git a/macros/xmltex/base/windows-1250.xmt b/macros/xmltex/base/windows-1250.xmt
new file mode 100644
index 0000000000..5ce7b9f8af
--- /dev/null
+++ b/macros/xmltex/base/windows-1250.xmt
@@ -0,0 +1,123 @@
+\InputCharacter{x80}{x20AC}
+\InputCharacter{x82}{x201A}
+\InputCharacter{x84}{x201E}
+\InputCharacter{x85}{x2026}
+\InputCharacter{x86}{x2020}
+\InputCharacter{x87}{x2021}
+\InputCharacter{x89}{x2030}
+\InputCharacter{x8A}{x0160}
+\InputCharacter{x8B}{x2039}
+\InputCharacter{x8C}{x015A}
+\InputCharacter{x8D}{x0164}
+\InputCharacter{x8E}{x017D}
+\InputCharacter{x8F}{x0179}
+\InputCharacter{x91}{x2018}
+\InputCharacter{x92}{x2019}
+\InputCharacter{x93}{x201C}
+\InputCharacter{x94}{x201D}
+\InputCharacter{x95}{x2022}
+\InputCharacter{x96}{x2013}
+\InputCharacter{x97}{x2014}
+\InputCharacter{x99}{x2122}
+\InputCharacter{x9A}{x0161}
+\InputCharacter{x9B}{x203A}
+\InputCharacter{x9C}{x015B}
+\InputCharacter{x9D}{x0165}
+\InputCharacter{x9E}{x017E}
+\InputCharacter{x9F}{x017A}
+\InputCharacter{xA0}{x00A0}
+\InputCharacter{xA1}{x02C7}
+\InputCharacter{xA2}{x02D8}
+\InputCharacter{xA3}{x0141}
+\InputCharacter{xA4}{x00A4}
+\InputCharacter{xA5}{x0104}
+\InputCharacter{xA6}{x00A6}
+\InputCharacter{xA7}{x00A7}
+\InputCharacter{xA8}{x00A8}
+\InputCharacter{xA9}{x00A9}
+\InputCharacter{xAA}{x015E}
+\InputCharacter{xAB}{x00AB}
+\InputCharacter{xAC}{x00AC}
+\InputCharacter{xAD}{x00AD}
+\InputCharacter{xAE}{x00AE}
+\InputCharacter{xAF}{x017B}
+\InputCharacter{xB0}{x00B0}
+\InputCharacter{xB1}{x00B1}
+\InputCharacter{xB2}{x02DB}
+\InputCharacter{xB3}{x0142}
+\InputCharacter{xB4}{x00B4}
+\InputCharacter{xB5}{x00B5}
+\InputCharacter{xB6}{x00B6}
+\InputCharacter{xB7}{x00B7}
+\InputCharacter{xB8}{x00B8}
+\InputCharacter{xB9}{x0105}
+\InputCharacter{xBA}{x015F}
+\InputCharacter{xBB}{x00BB}
+\InputCharacter{xBC}{x013D}
+\InputCharacter{xBD}{x02DD}
+\InputCharacter{xBE}{x013E}
+\InputCharacter{xBF}{x017C}
+\InputCharacter{xC0}{x0154}
+\InputCharacter{xC1}{x00C1}
+\InputCharacter{xC2}{x00C2}
+\InputCharacter{xC3}{x0102}
+\InputCharacter{xC4}{x00C4}
+\InputCharacter{xC5}{x0139}
+\InputCharacter{xC6}{x0106}
+\InputCharacter{xC7}{x00C7}
+\InputCharacter{xC8}{x010C}
+\InputCharacter{xC9}{x00C9}
+\InputCharacter{xCA}{x0118}
+\InputCharacter{xCB}{x00CB}
+\InputCharacter{xCC}{x011A}
+\InputCharacter{xCD}{x00CD}
+\InputCharacter{xCE}{x00CE}
+\InputCharacter{xCF}{x010E}
+\InputCharacter{xD0}{x0110}
+\InputCharacter{xD1}{x0143}
+\InputCharacter{xD2}{x0147}
+\InputCharacter{xD3}{x00D3}
+\InputCharacter{xD4}{x00D4}
+\InputCharacter{xD5}{x0150}
+\InputCharacter{xD6}{x00D6}
+\InputCharacter{xD7}{x00D7}
+\InputCharacter{xD8}{x0158}
+\InputCharacter{xD9}{x016E}
+\InputCharacter{xDA}{x00DA}
+\InputCharacter{xDB}{x0170}
+\InputCharacter{xDC}{x00DC}
+\InputCharacter{xDD}{x00DD}
+\InputCharacter{xDE}{x0162}
+\InputCharacter{xDF}{x00DF}
+\InputCharacter{xE0}{x0155}
+\InputCharacter{xE1}{x00E1}
+\InputCharacter{xE2}{x00E2}
+\InputCharacter{xE3}{x0103}
+\InputCharacter{xE4}{x00E4}
+\InputCharacter{xE5}{x013A}
+\InputCharacter{xE6}{x0107}
+\InputCharacter{xE7}{x00E7}
+\InputCharacter{xE8}{x010D}
+\InputCharacter{xE9}{x00E9}
+\InputCharacter{xEA}{x0119}
+\InputCharacter{xEB}{x00EB}
+\InputCharacter{xEC}{x011B}
+\InputCharacter{xED}{x00ED}
+\InputCharacter{xEE}{x00EE}
+\InputCharacter{xEF}{x010F}
+\InputCharacter{xF0}{x0111}
+\InputCharacter{xF1}{x0144}
+\InputCharacter{xF2}{x0148}
+\InputCharacter{xF3}{x00F3}
+\InputCharacter{xF4}{x00F4}
+\InputCharacter{xF5}{x0151}
+\InputCharacter{xF6}{x00F6}
+\InputCharacter{xF7}{x00F7}
+\InputCharacter{xF8}{x0159}
+\InputCharacter{xF9}{x016F}
+\InputCharacter{xFA}{x00FA}
+\InputCharacter{xFB}{x0171}
+\InputCharacter{xFC}{x00FC}
+\InputCharacter{xFD}{x00FD}
+\InputCharacter{xFE}{x0163}
+\InputCharacter{xFF}{x02D9} \ No newline at end of file
diff --git a/macros/xmltex/base/xmltex.cfg b/macros/xmltex/base/xmltex.cfg
new file mode 100644
index 0000000000..aabf83cee6
--- /dev/null
+++ b/macros/xmltex/base/xmltex.cfg
@@ -0,0 +1,177 @@
+% xmltex Catalogue
+\xmltraceoff
+\SYSTEM {http://www.oucs.ox.ac.uk/dtds/tei-oucs.dtd} {tei.xmt}
+\NAMESPACE{http://www.w3.org/1998/Math/MathML} {mathml2.xmt}
+\NAMESPACE{http://www.dcarlisle.demon.co.uk/sec} {sec.xmt}
+\NAME{langtest} {langtest.xmt}
+\NAME{TEI.2} {tei.xmt}
+\NAME{html} {html.xmt}
+\NAMESPACE{http://www.w3.org/1999/XSL/Format} {fotex.xmt}
+
+% latin 1 and cyrillic (using OT2 encoded fonts) only
+
+
+\UnicodeCharacter{160}{\nobreakspace}
+\UnicodeCharacter{161}{\textexclamdown }
+\UnicodeCharacter{162}{\ifmmode \mbox{\textcent}\else \textcent \fi}%
+\UnicodeCharacter{163}{\ifmmode \pounds \else \textsterling \fi}%
+\UnicodeCharacter{164}{\ifmmode \mbox{\textcurrency}\else \textcurrency \fi}%
+\UnicodeCharacter{165}{\ifmmode \yen \else \textyen \fi}%
+\UnicodeCharacter{166}{\ifmmode \textbrokenbar \else \textbrokenbar \fi}%
+\UnicodeCharacter{167}{\ifmmode \S \else \textsection \fi}%
+\UnicodeCharacter{168}{\textasciidieresis }
+\UnicodeCharacter{169}{\ifmmode \copyright \else \textcopyright \fi}%
+\UnicodeCharacter{170}{\textordfeminine }
+\UnicodeCharacter{171}{\ifmmode \mbox{\guillemotleft}\else \guillemotleft \fi}%
+\UnicodeCharacter{172}{\ensuremath{\lnot }}
+\UnicodeCharacter{173}{\ensuremath{\-}}
+\UnicodeCharacter{174}{\ifmmode \circledR \else \textregistered \fi}%
+\UnicodeCharacter{175}{\textasciimacron }
+\UnicodeCharacter{176}{\ifmmode \mbox{\textdegree}\else \textdegree \fi}%
+\UnicodeCharacter{177}{\ensuremath{\pm }}
+\UnicodeCharacter{178}{\ensuremath{{^2}}}
+\UnicodeCharacter{179}{\ensuremath{{^3}}}
+\UnicodeCharacter{180}{\textasciiacute }
+\UnicodeCharacter{181}{\ensuremath{\mathrm{\mu}}}
+\UnicodeCharacter{182}{\ifmmode \P \else \textparagraph \fi}%
+\UnicodeCharacter{183}{\ensuremath{\cdot }}
+\UnicodeCharacter{184}{\ifmmode \mbox{\c{}}\else \c{}\fi}%
+\UnicodeCharacter{185}{\ensuremath{{^1}}}
+\UnicodeCharacter{186}{\textordmasculine }
+\UnicodeCharacter{187}{\ifmmode \mbox{\guillemotright}\else \guillemotright \fi}%
+\UnicodeCharacter{188}{\textonequarter }
+\UnicodeCharacter{189}{\textonehalf }
+\UnicodeCharacter{190}{\textthreequarters }
+\UnicodeCharacter{191}{\textquestiondown }
+\UnicodeCharacter{192}{\ifmmode \grave{A}\else \`{A}\fi}%
+\UnicodeCharacter{193}{\ifmmode \acute{A}\else \'{A}\fi}%
+\UnicodeCharacter{194}{\ifmmode \hat{A}\else \^{A}\fi}%
+\UnicodeCharacter{195}{\ifmmode \tilde{A}\else \~{A}\fi}%
+\UnicodeCharacter{196}{\ifmmode \ddot{A}\else \"{A}\fi}%
+\UnicodeCharacter{197}{\AA }
+\UnicodeCharacter{198}{\AE }
+\UnicodeCharacter{199}{\ifmmode \mbox{\c{C}}\else \c{C}\fi}%
+\UnicodeCharacter{200}{\ifmmode \grave{E}\else \`{E}\fi}%
+\UnicodeCharacter{201}{\ifmmode \acute{E}\else \'{E}\fi}%
+\UnicodeCharacter{202}{\ifmmode \hat{E}\else \^{E}\fi}%
+\UnicodeCharacter{203}{\ifmmode \ddot{E}\else \"{E}\fi}%
+\UnicodeCharacter{204}{\ifmmode \grave{I}\else \`{I}\fi}%
+\UnicodeCharacter{205}{\ifmmode \acute{I}\else \'{I}\fi}%
+\UnicodeCharacter{206}{\ifmmode \hat{I}\else \^{I}\fi}%
+\UnicodeCharacter{207}{\ifmmode \ddot{I}\else \"{I}\fi}%
+\UnicodeCharacter{208}{\DH }
+\UnicodeCharacter{209}{\ifmmode \tilde{N}\else \~{N}\fi}%
+\UnicodeCharacter{210}{\ifmmode \grave{O}\else \`{O}\fi}%
+\UnicodeCharacter{211}{\ifmmode \acute{O}\else \'{O}\fi}%
+\UnicodeCharacter{212}{\ifmmode \hat{O}\else \^{O}\fi}%
+\UnicodeCharacter{213}{\ifmmode \tilde{O}\else \~{O}\fi}%
+\UnicodeCharacter{214}{\ifmmode \ddot{O}\else \"{O}\fi}%
+\UnicodeCharacter{215}{\ifmmode \times \else \texttimes \fi}%
+\UnicodeCharacter{216}{\O }
+\UnicodeCharacter{217}{\ifmmode \grave{U}\else \`{U}\fi}%
+\UnicodeCharacter{218}{\ifmmode \acute{U}\else \'{U}\fi}%
+\UnicodeCharacter{219}{\ifmmode \hat{U}\else \^{U}\fi}%
+\UnicodeCharacter{220}{\ifmmode \ddot{U}\else \"{U}\fi}%
+\UnicodeCharacter{221}{\ifmmode \acute{Y}\else \'{Y}\fi}%
+\UnicodeCharacter{222}{\TH }
+\UnicodeCharacter{223}{\ss }
+\UnicodeCharacter{224}{\ifmmode \grave{a}\else \`{a}\fi}%
+\UnicodeCharacter{225}{\ifmmode \acute{a}\else \'{a}\fi}%
+\UnicodeCharacter{226}{\ifmmode \hat{a}\else \^{a}\fi}%
+\UnicodeCharacter{227}{\ifmmode \tilde{a}\else \~{a}\fi}%
+\UnicodeCharacter{228}{\ifmmode \ddot{a}\else \"{a}\fi}%
+\UnicodeCharacter{229}{\aa }
+\UnicodeCharacter{230}{\ae }
+\UnicodeCharacter{231}{\ifmmode \mbox{\c{c}}\else \c{c}\fi}%
+\UnicodeCharacter{232}{\ifmmode \grave{e}\else \`{e}\fi}%
+\UnicodeCharacter{233}{\ifmmode \acute{e}\else \'{e}\fi}%
+\UnicodeCharacter{234}{\ifmmode \hat{e}\else \^{e}\fi}%
+\UnicodeCharacter{235}{\ifmmode \ddot{e}\else \"{e}\fi}%
+\UnicodeCharacter{236}{\ifmmode \grave{\imath}\else \`{\i}\fi}%
+\UnicodeCharacter{237}{\ifmmode \acute{\imath}\else \'{\i}\fi}%
+\UnicodeCharacter{238}{\ifmmode \hat{\imath}\else \^{\i}\fi}%
+\UnicodeCharacter{239}{\ifmmode \ddot{\imath}\else \"{\i}\fi}%
+\UnicodeCharacter{240}{\dh }
+\UnicodeCharacter{241}{\ifmmode \tilde{n}\else \~{n}\fi}%
+\UnicodeCharacter{242}{\ifmmode \grave{o}\else \`{o}\fi}%
+\UnicodeCharacter{243}{\ifmmode \acute{o}\else \'{o}\fi}%
+\UnicodeCharacter{244}{\ifmmode \hat{o}\else \^{o}\fi}%
+\UnicodeCharacter{245}{\ifmmode \tilde{o}\else \~{o}\fi}%
+\UnicodeCharacter{246}{\ifmmode \ddot{o}\else \"{o}\fi}%
+\UnicodeCharacter{247}{\ensuremath{\div }}
+\UnicodeCharacter{248}{\o }
+\UnicodeCharacter{249}{\ifmmode \grave{u}\else \`{u}\fi}%
+\UnicodeCharacter{250}{\ifmmode \acute{u}\else \'{u}\fi}%
+\UnicodeCharacter{251}{\ifmmode \hat{u}\else \^{u}\fi}%
+\UnicodeCharacter{252}{\ifmmode \ddot{u}\else \"{u}\fi}%
+\UnicodeCharacter{253}{\ifmmode \acute{y}\else \'{y}\fi}%
+\UnicodeCharacter{254}{\th }
+\UnicodeCharacter{255}{\ifmmode \ddot{y}\else \"{y}\fi}%
+
+
+\UnicodeCharacter{x044E}{yu}
+\UnicodeCharacter{x0430}{a}
+\UnicodeCharacter{x0431}{b}
+\UnicodeCharacter{x0446}{ts}
+\UnicodeCharacter{x0434}{d}
+\UnicodeCharacter{x0435}{e}
+\UnicodeCharacter{x0444}{f}
+\UnicodeCharacter{x0433}{g}
+\UnicodeCharacter{x0445}{kh}
+\UnicodeCharacter{x0438}{i}
+\UnicodeCharacter{x0439}{{\u\i}}
+\UnicodeCharacter{x043A}{k}
+\UnicodeCharacter{x043B}{l}
+\UnicodeCharacter{x043C}{m}
+\UnicodeCharacter{x043D}{n}
+\UnicodeCharacter{x043E}{o}
+\UnicodeCharacter{x043F}{p}
+\UnicodeCharacter{x044F}{ya}
+\UnicodeCharacter{x0440}{r}
+\UnicodeCharacter{x0441}{s}
+\UnicodeCharacter{x0442}{t}
+\UnicodeCharacter{x0443}{u}
+\UnicodeCharacter{x0436}{zh}
+\UnicodeCharacter{x0432}{v}
+\UnicodeCharacter{x044C}{{\cprime}}
+\UnicodeCharacter{x044B}{y}
+\UnicodeCharacter{x0437}{z}
+\UnicodeCharacter{x0448}{sh}
+\UnicodeCharacter{x044D}{{\`e}}
+\UnicodeCharacter{x0449}{shch}
+\UnicodeCharacter{x0447}{ch}
+\UnicodeCharacter{x044A}{{\cdprime}}
+\UnicodeCharacter{x042E}{YU}
+\UnicodeCharacter{x0410}{A}
+\UnicodeCharacter{x0411}{B}
+\UnicodeCharacter{x0426}{TS}
+\UnicodeCharacter{x0414}{D}
+\UnicodeCharacter{x0415}{E}
+\UnicodeCharacter{x0424}{F}
+\UnicodeCharacter{x0413}{G}
+\UnicodeCharacter{x0425}{KH}
+\UnicodeCharacter{x0418}{I}
+\UnicodeCharacter{x0419}{{\U\I}}
+\UnicodeCharacter{x041A}{K}
+\UnicodeCharacter{x041B}{L}
+\UnicodeCharacter{x041C}{M}
+\UnicodeCharacter{x041D}{N}
+\UnicodeCharacter{x041E}{O}
+\UnicodeCharacter{x041F}{P}
+\UnicodeCharacter{x042F}{YA}
+\UnicodeCharacter{x0420}{R}
+\UnicodeCharacter{x0421}{S}
+\UnicodeCharacter{x0422}{T}
+\UnicodeCharacter{x0423}{U}
+\UnicodeCharacter{x0416}{ZH}
+\UnicodeCharacter{x0412}{V}
+\UnicodeCharacter{x042C}{{\CPRIME}}
+\UnicodeCharacter{x042B}{Y}
+\UnicodeCharacter{x0417}{Z}
+\UnicodeCharacter{x0428}{SH}
+\UnicodeCharacter{x042D}{{\`E}}
+\UnicodeCharacter{x0429}{SHCH}
+\UnicodeCharacter{x0427}{CH}
+\UnicodeCharacter{x042A}{{\CDPRIME}}
+
+
diff --git a/macros/xmltex/base/xmltex.tex b/macros/xmltex/base/xmltex.tex
new file mode 100644
index 0000000000..70a41b40e1
--- /dev/null
+++ b/macros/xmltex/base/xmltex.tex
@@ -0,0 +1,2400 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% xmltex.tex
+
+%% Copyright 2000 David Carlisle, NAG Ltd.
+%% re-released by Sebastian Rahtz June 2002
+%% This file is distributed under the LaTeX Project Public License
+%% (LPPL) as found at http://www.latex-project.org/lppl.txt
+%% Either version 1.0, or at your option, any later version.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode`\{=1 \catcode`\}=2 \catcode`\@=11 \catcode`\#=6
+
+\gdef\XML@tempa#1: #2.tex,v #3 #4 #5 #6 #7${
+ \def\xmltexversion{#4 v#3 (#6)}}
+
+\XML@tempa
+$Id: xmltex.tex,v 1.9 2002/06/25 rahtz Exp $
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% initial setup so that xmltex independent of any existing format
+% even if normally built on top of latex
+
+\endlinechar-1
+
+\catcode`\&=4
+\catcode`\^=7
+\catcode`\_13
+\catcode`\|=14 %
+\catcode`\~=13 %
+
+\ifx\count@\@undefined
+ \countdef\count@200 % fingers crossed
+ \countdef\XML@ns@count201\relax
+ \expandafter\def\csname newcount\endcsname#1{}
+ \expandafter\def\csname newtoks\endcsname#1{}
+ \toksdef\toks@200\relax
+ \toksdef\XML@catalogue201\relax
+ \toksdef\XML@attribute@toks202\relax
+ \def\maxdimen{16383.99999pt}
+ \def\space{ }
+ \chardef\active13 %
+ \countdef\z@0 %
+\fi
+\ifx\@tempcnta\@undefined
+ \countdef\@tempcnta202 % fingers crossed
+ \countdef\@tempcntb203 % fingers crossed
+ \edef\@spaces{\space\space\space\space}
+ \begingroup
+ \catcode`\>12
+ \gdef\strip@prefix#1>{}
+ \endgroup
+\fi
+
+
+% set up 7bit range
+\count@0
+\catcode0=13
+\gdef\XML@tempa{
+ \begingroup
+ \uccode0\count@
+ \uppercase{\endgroup
+ \edef^^@{
+ \ifnum\catcode\count@=11 %
+ \noexpand\utfeightay\else\noexpand\utfeightax\fi
+ \noexpand^^@}
+ \expandafter\edef\csname 8:\string^^@\endcsname{\string^^@}}
+ \ifnum\count@<127\advance\count@1 \expandafter\XML@tempa\fi}
+\XML@tempa
+\catcode0=9
+
+\begingroup
+\catcode`\^^M=\active\gdef^^M{\utfeightay^^M}
+\catcode`\^=\active\gdef^{\utfeightay^}
+\catcode`\_=\active\gdef_{\utfeightay_}
+\catcode`\~=\active\gdef~{\utfeightay~}
+\catcode`\%=\active\gdef%{\utfeightay%}
+\catcode`\$=\active\gdef${\utfeightay$}
+\catcode`\#=\active\gdef#{\utfeightay#}
+\catcode`\(=1
+\catcode`\)=2
+\catcode`\{=\active\gdef{(\utfeightay{)
+\catcode`\}=\active\gdef}(\utfeightay})
+\catcode`\/0 \catcode`\\=\active /gdef\(/utfeightay\)
+/endgroup
+
+
+
+\long\def\@gobble#1{}
+\def\@empty{}
+
+\ifx\@@end\@undefined
+ \let\@@end\end
+\fi
+
+\ifx\nfss@catcodes\@undefined
+ \def\nfss@catcodes{
+ \catcode`\\0
+ \catcode`\{1
+ \catcode`\}2
+ \catcode`\%14
+ \catcode`\@11
+ \catcode`\#6
+ \catcode`\"12
+ \catcode`\'12
+ \catcode`\<12
+ \catcode`\=12
+ \catcode`\>12
+ \catcode`\^7 %
+ }
+\fi
+
+% This is standard in LaTeX.
+\ifx\zap@space\@undefined
+\def\zap@space#1 {#1}
+\fi
+
+\newlinechar`\^^J
+
+\ifx\@@input\@undefined
+\let\@@input\input
+\def\input#1{\@@input#1 }
+\fi
+\chardef\active=13
+\chardef\@ne=1
+
+%
+\ifx\IfFileExists\@undefined
+ \def\IfFileExists#1#2#3{\def\@filef@und{#1 }#2}
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\immediate\write20{xmltex version: \xmltexversion}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let\tabcellsep&
+
+\def\afterfi#1\fi{\fi#1}
+
+
+% set catcodes of low chars to 12 and hight 10 13.
+\gdef\XML@tempa#1#2{
+ \catcode\count@#2\relax
+ \ifnum\count@<#1\relax
+ \advance\count@\@ne
+ \afterfi
+ \XML@tempa{#1}{#2}
+ \fi
+ }
+\count@0\relax
+\XML@tempa{`\^^K}{12}
+
+\count@127\relax
+\XML@tempa{255}{13}
+
+
+\def\XML@catcodes{
+% white
+ \catcode`\ \active
+ \catcode`\^^M\active
+ \catcode`\^^I\active
+% xml
+ \catcode`\<\active
+ \catcode`\>\active
+ \catcode`\:\active
+ \catcode`\[\active
+ \catcode`\]\active
+ \catcode`\%\active
+ \catcode`\&\active
+ \catcode`\"\active
+ \catcode`\'\active
+ \catcode`\=\active
+% tex
+ \catcode`\/\active
+ \catcode`\!\active
+ \catcode`\?\active
+ \catcode`\-\active
+ \catcode`\$\active
+ \catcode`\{\active
+ \catcode`\}\active
+ \catcode`\#\active
+ \catcode`\_\active
+ \catcode`\\\active
+ \catcode`\~\active\def~{\utfeightay~}
+% and these are not catcodes
+ \let\XML@ns@a@\XML@ns@a@xml
+ \let\XML@ns\XML@ns@xml
+}
+
+
+\catcode`\/\active
+\catcode`\!\active
+\catcode`\?\active
+\catcode`\"\active
+\catcode`\'\active
+\catcode`\<\active
+\catcode`\>\active
+\catcode`\&\active
+\catcode`\_\active
+\catcode`\ 10
+\catcode`\^^M\active
+
+
+
+%% half baked bom and utf-16 support
+\catcode`^^ff\active
+\catcode`^^fe\active
+\catcode0=9
+
+% do this also in everyjob incase a <?xmltex dump?> has turned it iff.
+\def^^ff^^fe{
+ \def\XML@thisencoding{utf-16}}
+\def^^fe^^ff{
+ \def\XML@thisencoding{utf-16}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%% warnings
+\def\XML@warnNI#1{
+ {\let\protect\string\utfeight@protect@typeout\message{^^J#1}}}
+\def\XML@warn#1{
+ {\let\protect\string\utfeight@protect@typeout\message{^^J\XML@w@#1}}}
+\let\XML@trace@warn\XML@warn
+\let\XML@trace@warnNI\XML@warnNI
+\let\XML@trace@warnE\message
+
+\let\XML@w@\@empty
+
+% quoted literals
+% " or '
+% #1 command to call, gets quoted string as #1
+% #2 " or '
+% " and ' assumed active
+\def\XML@quoted#1#2{
+ \ifx#2"\expandafter\XML@qq
+ \else\ifx#2'\expandafter\expandafter\expandafter\XML@q
+ \else
+ \ERROR#2
+ \fi
+ \fi
+ #1}
+
+
+\def\XML@qq#1#2"{#1{#2}}
+\def\XML@q#1#2'{#1{#2}}
+
+
+%%%%%%%%%%%%%%%%%
+
+% < handler
+
+% / ! ? assumed active
+\def\XML@lt@markup#1{
+ \catcode`\^^I=10 %
+ \catcode`\^^M=10 %
+ \catcode`\ =10 %
+ \ifx/#1\XML@getend
+ \else\ifx!#1\XML@getdecl
+ \else\ifx?#1\XML@getpi
+ \else\XML@getname#1\@}
+
+\def\XML@first@lt{
+ \let<\XML@lt@markup
+ \let^^ff\@undefined
+ \let^^fe\@undefined
+ \XML@lt@markup}
+
+
+%% reset catcodes
+\def\XML@reset{
+ \nfss@catcodes
+ \catcode`\$3
+ \catcode`\&4
+ \catcode`\^7
+ \catcode`\_8
+ \catcode`\:12
+ \catcode`\!12
+ \catcode`\=12
+ \catcode`\=12
+ \catcode`\|12
+ \catcode`\ =10
+ \catcode`\~\active\def~{\nobreakspace{}}
+% catcodes?
+ \let\XML@ns@a@\XML@ns@a@tex
+ \let\XML@ns\XML@ns@tex}
+
+
+%% begin tag
+\begingroup
+ \catcode`\^^M\active
+ \catcode`\^^I\active
+ \catcode`\ \active
+%
+% #1 first char of name
+% grab the name into an xdef so that derminating string can
+% be any of whitespace / or >
+\gdef\XML@getname#1\@{
+\fi\fi\fi
+\begingroup
+\catcode`\^^M\active
+\catcode`\^^I\active
+\catcode`\ \active
+\def {\iffalse{\fi}\XML@getname@}
+\let^^M %
+\let^^I %
+\def/{\iffalse{\fi}\XML@getname@/}
+\def>{\iffalse{\fi}\XML@getname@>}
+\unrestored@protected@xdef\XML@tempa{\iffalse}\fi#1}
+
+\endgroup
+
+% finish the special group for the name xdef, start an XML@begingroup
+% for the element, and begin processing any attributes.
+\def\XML@getname@{
+ \endgroup
+ \XML@begingroup
+ \edef\XML@w@{ \XML@w@}
+ \let\begintag\XML@tempa
+ \let\XML@parent\XML@this@element
+ \XML@attribute@toks{}
+ \XML@getattrib}
+
+% elements put in an \XML@begingroup which is a not a group at the
+% outer level to save save stack, but turns itself into a group
+% for nexted elements.
+\def\XML@begingroup{
+ \def\XML@begingroup{
+ \begingroup
+ \let\XML@begingroup\begingroup
+ \let\XML@endgroup\endgroup}}
+
+\let\XML@endgroup\@@end
+
+
+
+%% attributes
+
+% #1 first letter of attribute name, or / or > to finish.
+\def\XML@getattrib#1{
+ \ifx#1/
+ \expandafter\XML@endempty
+ \else
+ \ifx#1>
+ \expandafter\expandafter\expandafter\XML@startelement
+ \else
+ \XML@getattrib@a#1
+ \fi
+ \fi}
+
+\let\XML@@getattrib\XML@getattrib
+
+\begingroup
+\catcode`\:\active
+\catcode`\<12
+\catcode`\>12
+
+% restore normal XML whitespace regime
+% namespace check element name (has to be done after attribute handling)
+% trace the element start then `do' the element which might be
+% noop, execute package code, or grab, depending.
+
+\gdef\XML@startelement{
+ \XML@default@attributes
+ \catcode`\^^M\active
+ \catcode`\^^I\active
+ \catcode`\ \active
+ \XML@ns\begintag
+ \edef\XML@this@element{
+ \csname XMLNS@\XML@this@prefix\expandafter\endcsname\noexpand:
+ \XML@this@local}
+ \XML@trace@warn{<\XML@this@element}
+ \XML@checkknown
+ \XML@attrib@trace
+ \XML@doelement}
+
+\endgroup
+
+% This is a noop if tracing turned off, otherwise loop through
+% attlist with a typeout on each.
+\def\XML@attrib@trace{
+ \begingroup
+ \let\XML@doattribute\XML@doattribute@warn
+ \def\XMLNS@{0}
+ \utfeight@protect@typeout
+ \the\XML@attribute@toks
+ \XML@trace@warnE{ >}
+ \endgroup}
+
+% execute package code for an element start.
+\def\XML@doelement{
+ \csname
+ E:\XML@this@element
+ \endcsname
+}
+
+\begingroup
+\catcode`\:\active
+\uccode`\~`\^^I%
+
+% grab element content into a token register.
+% has to pass through xdef to normalise encodings.
+\uppercase{
+\gdef\XML@grabelement{
+\catcode`\ \active\catcode`\^^M\active\catcode`\^^I\active
+ \global\XMLgrabtoks\expandafter{
+ \the\expandafter\XMLgrabtoks
+ \expandafter<\XML@this@element~}
+% check if I can switch this just once, where grabelement switched.
+ \begingroup
+ \let\XML@doattribute\XML@grabattribute
+ \def\XMLNS@{0}
+ \expandafter\let\csname XMLNS@0\endcsname\XMLNS@
+ \the\XML@attribute@toks
+ \endgroup
+%
+\catcode`\ \active\catcode`\^^M\active\catcode`\^^I\active
+ \global\XMLgrabtoks\expandafter{
+ \the\XMLgrabtoks
+ >}
+ \XMLgrab@}
+}
+
+% #1 namespace
+% #2 local name
+% #3 value
+
+\catcode`\=\active
+\gdef\XML@grabattribute#1#2#3{
+ \protected@xdef\XML@tempa{\csname XMLNS@#1\endcsname:#2}
+ \global\XMLgrabtoks\expandafter{
+ \the\expandafter\XMLgrabtoks
+ \XML@tempa="#3" }}
+\endgroup
+
+% #1 should be empty, between the / and the >
+% probably should put some internal form here rather than literally adding
+% end tag to be reparsed, but this simplifies grab code.
+\def\XML@endempty#1>{
+ \expandafter\XML@startelement
+ \expandafter<\expandafter/\begintag>}
+
+
+%% check we know what to do with an element
+\def\XML@checkknown{
+ \expandafter\ifx
+% catcode :? \csname E:\XML@this@element\endcsname
+ \csname E:\csname XMLNS@\XML@this@prefix\endcsname:\XML@this@local\endcsname
+ \relax
+ \let\XML@use\@empty
+ \ifnum0=\csname XMLNS@\XML@this@prefix\endcsname
+ \let\XML@NAME\XML@this@local
+% prerun catalogue in this case which might coerce element into a new namespace
+ \the\XML@catalogue
+ \else
+ \edef\XML@NAMESPACE{\csname XMLNS@\XML@this@prefix\endcsname}
+ \fi
+ \let\XML@NAME\relax
+ \the\XML@catalogue
+ \inputonce\XML@use
+ \expandafter\ifx\csname E:\csname
+ XMLNS@\XML@this@prefix\endcsname:\XML@this@local\endcsname\relax
+ \XML@trace@warnE{Undefined}
+ \fi
+ \fi}
+
+
+
+%% end tag
+
+\def\XML@getend#1\@#2>{
+ \fi
+\catcode`\ \active
+% removed by Peter Housel housel@acm.org 2000/09/06
+% \catcode`\^^M\active\catcode`\^^I\active
+ \XML@getend@a#2 \@}
+
+\begingroup
+\catcode`\/=12
+\catcode`\<=12
+\catcode`\>=12
+\catcode`\:=12
+
+% namespace normalise element name in end tag.
+\gdef\XML@getend@a#1 #2\@{
+\catcode`\ \active\catcode`\^^M\active\catcode`\^^I\active
+ \def\endtag{#1}
+ \XML@ns\endtag
+ \XML@trace@warn{</\csname XMLNS@\XML@this@prefix\endcsname:\XML@this@local>}
+ \XML@doend
+}
+
+% execute package code for element end.
+\gdef\XML@doend{
+ \csname
+ E/:\csname XMLNS@\XML@this@prefix\endcsname:\XML@this@local
+ \endcsname
+ \XML@endgroup
+% added by Peter Housel housel@acm.org 2000/09/06
+ \catcode`\^^M\active \catcode`\^^I\active \catcode`\ \active}
+\endgroup
+
+% flag children: put \@empty after every child element
+% used by \xmltextwochildren and friends
+
+% need active and non active : and / so...
+\begingroup
+\catcode`\:\active
+\uccode`\*=`\:
+\uccode`\.=`\/
+\uccode`\a\z@
+\uccode`\b\z@
+\uccode`\c\z@
+\uccode`\d\z@
+\uccode`\e\z@
+\uccode`\n\z@
+\uccode`\r\z@
+\uccode`\o\z@
+\uccode`\t\z@
+
+\uppercase{
+\gdef\XML@grabend{
+ \ifx\XML@this@level\XML@w@
+% end inner group to restore \XML@doelement and friends
+ \endgroup
+ \XML@trace@warn{Grabbed content}
+ \csname
+ E.*\csname XMLNS@\XML@this@prefix\endcsname
+ *\XML@this@local
+ \expandafter\endcsname\expandafter{
+ \the\XMLgrabtoks}
+ \XML@trace@warn{End grabbed content}
+ \XML@endgroup
+% \XMLstring usage means catcode restoring varies
+% must fix this one day, for now use ifnum avoidance
+\ifnum\catcode`\^^M=10
+\catcode`\ \active\catcode`\^^M\active\catcode`\^^I\active
+\fi
+ \else
+ \xdef\XML@tempa{\noexpand<\noexpand/
+ \csname XMLNS@\XML@this@prefix\expandafter\endcsname\noexpand:
+ \XML@this@local
+ \noexpand>
+ \ifx\XML@next@level\XML@w@\noexpand\@empty\fi}
+ \global\XMLgrabtoks\expandafter{
+ \the\expandafter\XMLgrabtoks
+ \XML@tempa}
+ \XML@endgroup
+ \expandafter
+ \XMLgrab@
+ \fi}}
+\endgroup
+%%%
+
+% syntax for these will probably change.
+\def\xmltexfirstchild#1\@empty#2\@{
+ #1}
+\def\xmltextwochildren#1#2#3\@empty#4\@empty{
+ #1{#3}#2{#4}}
+\def\xmltexthreechildren#1#2#3#4\@empty#5\@empty#6\@empty{
+ #1{#4}#2{#5}#3{#6}}
+\def\xmltexforall#1#2{
+ \xmltexf@rall#1#2< >\@empty}
+
+\def\xmltexf@rall#1#2<#3 #4>#5\@empty{
+ \ifx\relax#3\relax
+ \else
+ \def\xml@name{#3}#1{<#3 #4>#5}
+ \expandafter\xmltexf@rall\expandafter#1
+ \fi}
+
+% #1 entity name (or tex macro holding same, eg from an attrbute)
+% #2 #3 inserted before each compontent
+% so #2{GIF}#3{xxx/yyy.gif}
+\begingroup
+\catcode`\&12
+\catcode`\+12
+
+\gdef\NDATAEntity#1{
+ \expandafter\expandafter\expandafter
+ \XML@ndataentity\csname+&#1\endcsname}
+
+\gdef\XML@ndataentity#1#2#3#4{
+ #3{#1}#4{#2}}
+
+\endgroup
+
+
+%%%%%%%
+
+% this relies on = being catcode 13.
+\begingroup
+\catcode`\=\active
+
+\gdef\XML@getattrib@a#1\fi\fi#2={
+ \fi\fi
+ \XML@set@this@attribute#1#2 \@
+ \XML@quoted\XML@attribval}
+
+\endgroup
+
+%% remove trailing space from `foo ='
+\def\XML@set@this@attribute#1 #2\@{
+% should probably do an edef at this point, and optimise
+% later code
+ \def\XML@this@attribute{#1}}
+
+% #1 = attribute value
+\def\XML@attribval#1{
+% allow for arbitrary catcodes.
+ \xdef\XML@tempa{\expandafter\strip@prefix\meaning\XML@this@attribute}
+ \ifx\XML@tempa\XML@ns@decl
+ \XML@ns@uri{}{#1}
+ \else
+ \XML@ns\XML@this@attribute
+% catcode avoidance
+ \edef\XML@this@prefix{\expandafter\strip@prefix\meaning\XML@this@prefix}
+ \ifx\XML@this@prefix\XML@ns@decl
+ \XML@ns@uri\XML@this@local{#1}
+ \else
+ \begingroup
+% check if this still needed with protect setting?
+% \def"{\noexpand&quot;}
+ \utfeight@protect@internal
+ \xdef\XML@tempa{
+ \the\XML@attribute@toks
+ \noexpand\XML@doattribute{\XML@this@prefix}{\XML@this@local}{#1}}
+ \endgroup
+ \XML@attribute@toks\expandafter{\XML@tempa}
+ \fi
+ \fi
+ \XML@getattrib}
+
+
+%% activate attributes
+
+% this seems over complicated and perhaps I should re-implement.
+% currently tries to avoid making a csname for each attribute.
+% declaration of attributes provides a normal tex command name
+% to access the value in the element code, could have instead
+% just had declaration of attribute name and default and used something
+% like \attributevalue{html:href} but would need to work out a way
+% of resolving prefixes at definition time if this was embedded in
+% the element code. (The prefix such as `html' used in the definition
+% file isn't known by the time the code is run.)
+\def\XML@doattribute@warn#1#2#3{
+ \XML@trace@warn{\@spaces\csname XMLNS@#1\endcsname:#2 = \string"#3\string"}}
+
+% #1 element specific attribute defaults, first token is
+% macro for namespace-global attributes (hence \expandafter)
+\def\XML@setattributes#1{
+ \let\XMLNS@@\XMLNS@
+ \def\XMLNS@{0}
+ \the\expandafter\XML@attribute@toks#1\relax\relax
+ \let\XMLNS@\XMLNS@@}
+
+% #1 prefix
+% #2 local name
+% #3 value
+\def\XML@doattribute#1#2#3{
+ \xdef\XML@tempa##1{\noexpand##1{
+ \noexpand\XML@attrib\csname XMLNS@#1\endcsname:#2\relax}}
+ \XML@tempa\XML@attrib@x{#3}
+ \XML@tempa\XML@attrib@y}
+
+% #1 \XML@attrib qname\relax
+% #2 value given in document instance
+\def\XML@attrib@x#1#2{
+ \gdef\XML@tempb##1#1##2##3##4\relax\relax{
+ \def##2{#2}
+ ##1##4\relax\relax}}
+
+% #1 \XML@attrib qname\relax
+% #2 original attribute defaults
+\def\XML@attrib@y#1#2\relax\relax{
+ \XML@tempb#2#1\XML@temp@l{6}\relax\relax}
+
+
+% if default is inherit, set it to \relax the first time, otherwise
+% let whatever value it has drop through. Note this is inheritance of the
+% tex csname declared as the internal access, not of the xml attribute name.
+% #1 = junk
+% #2 = tex csname
+% #3 = attribute default (should be encoding neutral: not normalised)
+\def\XML@attrib#1\relax#2#3{
+ \ifx\inherit#3\relax% #3 might be empty
+ \ifx#2\@undefined
+ \def#2{\relax}
+ \fi
+ \else
+ \def#2{#3}
+ \fi}
+
+% any distinguishing value would do...
+\let\inherit\XML@attrib
+
+
+\newtoks\XML@attribute@toks
+
+%%%%% namespace declarations
+
+\newcount\XML@ns@count
+
+% need to protect against active chars
+\def\XML@ns@decl{xmlns}
+\edef\XML@ns@decl{\expandafter\strip@prefix\meaning\XML@ns@decl}
+
+
+% #1 prefix (or empty)
+% #2 uri
+% globally allocate number to uri if new
+% locally alocate prefix to number
+% globally allocate number as a prefix (canonical form)
+\def\XML@ns@uri#1#2{
+ \utfeight@protect@chars
+ \XML@ns@alloc{#2}
+ \expandafter\edef\csname XMLNS@#1\endcsname
+ {\csname XML:#2\endcsname}
+ \XML@trace@warn{xmlns:#1 = \csname XMLNS@#1\endcsname}
+ \unprotect@utfeight
+ }
+
+% and the same without any prefix
+% always use in scope of utfeight protect
+% #1 uri
+\def\XML@ns@alloc#1{
+ \expandafter\ifx\csname XML:#1\endcsname\relax
+ \global\advance\XML@ns@count\@ne
+ \expandafter\xdef\csname XML:#1\endcsname{\the\XML@ns@count}
+ \global\expandafter\let\csname A:\the\XML@ns@count\endcsname\@empty
+ \XML@trace@warnNI{URI: \csname XML:#1\endcsname\space = #1}
+ \expandafter\xdef\csname XMLNS@\the\XML@ns@count\endcsname
+ {\the\XML@ns@count}
+ \fi}
+
+% and version for xmt files
+\let\DeclareNamespace\XML@ns@uri
+
+%% namespace support
+
+%% : is active in xml state but inactive in tex state, so need to do
+%% this twice, grrr...
+\begingroup
+\catcode`\:\active
+
+% #1 = qname to be split on :
+\gdef\XML@ns@xml#1{
+ \expandafter\XML@ns@a@xml#1:\@:\\}
+
+% #1 = prefix (or empty)
+% #2 = local name or \@ if no prefix
+\gdef\XML@ns@a@xml#1:#2:#3\\{
+ \ifx\@#2
+ \XML@ns@b{}{#1}
+ \else
+ \XML@ns@b{#1}{#2}
+ \fi}
+\endgroup
+
+% same with inactive :
+% #1 = qname to be split on :
+\def\XML@ns@tex#1{
+ \expandafter\XML@ns@a@tex#1:\@:\\}
+
+% #1 = prefix (or empty)
+% #2 = local name or \@ if no prefix
+\def\XML@ns@a@tex#1:#2:#3\\{
+ \ifx\@#2
+ \XML@ns@b{}{#1}
+ \else
+ \XML@ns@b{#1}{#2}
+ \fi}
+
+\let\XML@ns@a@\XML@ns@a@tex
+\let\XML@ns\XML@ns@tex
+
+%%%%%%%%%%%%%%%%%%%%
+
+% nullnamespace
+\expandafter\def\csname XML:\endcsname{0}
+\expandafter\let\csname A:0\endcsname\@empty
+\def\XMLNS@{0}
+\expandafter\gdef\csname XMLNS@0\endcsname{0}
+
+% xml namespace
+\let\utfeightax\string
+\expandafter\def\csname XML:http://www.w3.org/1998/xml\endcsname{1}
+\expandafter\let\csname A:1\endcsname\@empty
+\def\XMLNS@xml{1}
+\expandafter\gdef\csname XMLNS@1\endcsname{1}
+\XML@ns@count1
+
+% #1 = prefix or empty
+% #2 = local name
+\def\XML@ns@b#1#2{
+ \begingroup
+ \utfeight@protect@chars
+ \xdef\XML@tempa{#1}
+ \xdef\XML@tempb{#2}
+ \endgroup
+ \let\XML@this@prefix\XML@tempa
+ \let\XML@this@local\XML@tempb
+ }
+
+%%%%%
+% pi
+\begingroup
+\catcode`\?\active
+\catcode`\ \active
+\catcode`\^^M\active
+\catcode`\^^I\active
+
+\gdef\XML@getpi#1\@{
+\fi\fi\fi
+\begingroup
+\utfeight@protect@chars
+\catcode`\ \active
+\catcode`\^^M\active
+\catcode`\^^I\active
+\def?{\endcsname?}
+\let \endcsname
+\let^^M\endcsname
+\let^^I\endcsname
+\expandafter\XML@getpi@\csname
+Q:}
+
+\endgroup
+
+\def\XML@getpi@#1{
+ \endgroup
+ \catcode`\^^M\active
+ \catcode`\^^I\active
+ \catcode`\ \active
+ \ifx#1\@undefined
+ \expandafter\XML@getpi@x
+ \fi
+ #1}
+
+\def\XML@getpi@x#1#2?>{
+ \XML@dopi{Undefined}{}}
+
+% currently ? not reset by XML@reset
+\expandafter\def \csname Q:xmltex\endcsname{
+ \begingroup
+ \XML@reset
+ \catcode`\>\active
+ \XML@xmltexpi}
+
+
+\gdef\XML@xmltexpi#1?>{
+ \endgroup
+ \XML@dopi{xmltex}{#1}}
+
+
+
+% #1 = piname or `piname Undefined'
+\def\XML@dopi#1#2{
+ \XML@trace@warn{\string<?#1?>}
+ #2}
+
+\begingroup
+\catcode`\^^I\active
+
+\gdef\XML@grabpi#1#2{
+ \global\XMLgrabtoks\expandafter{
+ \the\XMLgrabtoks<?#1^^I#2?>}
+ \XMLgrab@}
+
+\endgroup
+
+
+
+%% XML and declarations
+% only care about encoding. Ignore version and standalone.
+
+% #1 content
+% #2 end of test code
+\begingroup
+\catcode`\=\active
+
+\expandafter\gdef \csname Q:xml\endcsname{
+ \catcode`\^^M10
+ \catcode`\^^I10
+ \catcode`\ 10 %
+ \XML@xmldecl}
+
+\gdef\XML@xmldecl#1?>{
+ \catcode`\^^M\active
+ \catcode`\^^I\active
+ \catcode`\ \active
+ \XML@encoding#1 e="utf-8"\relax}
+
+
+% actually encoding supposed to be after version if it comes at all
+% so I could simplify this and get rid of the loop.
+\gdef\XML@encoding#1 #2{
+ \if\noexpand#2e
+ \expandafter\XML@encoding@aux
+ \else
+ \expandafter\XML@encoding
+ \fi}
+
+\gdef\XML@encoding@aux#1={
+ \XML@quoted\XML@setenc}
+
+\endgroup
+
+% do nothing if newly specied encoding is same as old one
+% #1 is name of encoding (upper or lower case, and dubious catcodes
+% #2 is junk
+
+\def\XML@setenc#1#2\relax{
+ \lowercase{\gdef\XML@tempa{#1}}
+ \xdef\XML@tempa{\expandafter\strip@prefix\meaning\XML@tempa}
+ \ifx\XML@tempa\XML@thisencoding
+ \else
+ \ifx\XML@utfeight\XML@tempa
+ \XML@setutfeight
+ \else
+ \let\XML@thisencoding\XML@tempa
+ \XML@trace@warnNI{Encoding = \XML@thisencoding}
+ \begingroup
+ \XML@reset\input{\XML@thisencoding.xmt}
+ \endgroup
+ \fi
+ \fi}
+
+% public version of same
+\def\FileEncoding#1{
+ \XML@setenc{#1}\relax}
+
+% catcode neutral lowercase utf-8
+
+\def\XML@utfeight{utf-8}
+\edef\XML@utfeight{\expandafter\strip@prefix\meaning\XML@utfeight}
+
+%% internalise utf8 encoding as needed before every file include.
+\begingroup
+\catcode`\~13
+\catcode`\"12
+\catcode`\<12
+
+\gdef\utfeightloop{
+ \uccode`\~\count@
+ \expandafter\uppercase\XML@tempa
+ \advance\count@\@ne
+ \ifnum\count@<\@tempcnta
+ \expandafter\utfeightloop
+ \fi}
+
+\gdef\XML@setutfeight{
+ \ifx\XML@utfeight\XML@thisencoding
+ \else
+ \let\XML@thisencoding\XML@utfeight
+ \XML@trace@warnNI{Encoding = \XML@thisencoding}
+%
+ \begingroup
+%
+ \count@"C2
+ \@tempcnta"E0
+ \gdef\XML@tempa{{
+ \xdef~####1{\noexpand\utfeightb\string~####1}}}
+ \utfeightloop
+%
+ \count@"E0
+ \@tempcnta"F0
+ \gdef\XML@tempa{{
+ \xdef~####1####2{\noexpand\utfeightc\string~####1####2}}}
+ \utfeightloop
+%
+ \@tempcnta"F4
+ \gdef\XML@tempa{{
+ \xdef~####1####2####3{\noexpand\utfeightd\string~####1####2####3}}}
+ \utfeightloop
+%
+ \endgroup
+ \fi}
+
+\endgroup
+
+
+\def\xmlinput#1{
+ \IfFileExists{#1}
+ {\expandafter\XML@xmlinput\expandafter
+ \XML@setenc\expandafter{\XML@thisencoding}\relax
+ }{\XML@warn{No file: #1}}}
+
+\def\XML@xmlinput{
+ \def^^ff^^fe{\XML@setenc{utf-16}\relax}
+ \def^^fe^^ff{\XML@setenc{utf-16}\relax}
+% in principle a parsed entity might just be text with no markup
+% but the utf16 is so broken anyway don't worry about that.
+ \let<\XML@first@lt
+ \XML@setutfeight
+ \@@input\@filef@und\relax}
+
+%%%%%%%%%%%%%
+
+%% declarations
+% made safe against active chars.
+% #1 = rest of if test
+% #2#3 = first two characters after <!
+\def\XML@getdecl#1\@#2#3{
+\fi\fi
+ \if-\noexpand#2\XML@comment % --
+ \else\if N\noexpand#3\XML@entity% EN TITY
+ \else\if L\noexpand#3\XML@dec@e% EL EMENT
+ \else\if A\noexpand#2\XML@dec@a% AT TLIST
+ \else\if D\noexpand#2\XML@doctype% DO CTYPE
+ \else\if C\noexpand#3\XML@cdata% [C DATA
+ \else \XML@dec@n% NO TATION
+% could also pick up [IGNORE/[INCLUDE
+% but they not allowed in internal subset.
+@}
+
+%% Just skip element declarations
+% #1 = rest of \if
+% #2 ELEMENT declaration
+\def\XML@dec@e#1@#2>{
+ \fi\fi\fi
+ \XML@checkend@subset}
+
+
+% attribute declarations
+% #1 = rest of if test + TLIST
+% #2 = element name
+\def\XML@dec@a#1 #2 {
+ \fi\fi\fi\fi
+ \protected@xdef\XML@tempa{#2}
+ \XML@dec@a@x}
+
+\gdef\XML@dec@a@x#1 #2{
+ \protected@xdef\XML@tempb{#1}
+ \if(\noexpand#2
+ \begingroup
+ \catcode`\(\active
+ \expandafter\XML@dec@a@brack
+ \else
+ \expandafter\XML@dec@a@type
+ \fi}
+
+\begingroup
+\catcode`\(\active
+
+% #1 = enumerated attribute type tokens, up to )
+\gdef\XML@dec@a@brack#1){
+ \endgroup
+ \XML@dec@a@hash}
+
+\endgroup
+
+% #1 = junk up to next space token
+\def\XML@dec@a@type#1 {
+ \XML@dec@a@hash}
+
+\begingroup
+\catcode`\$=\catcode`\#
+\catcode`\#=12
+
+% #1 = nextchar after space, if it is # step to next space
+% otherwise look for possible " or ' or >
+\gdef\XML@dec@a@hash$1{
+ \if\noexpand$1#
+ \expandafter\XML@dec@a@type
+ \else
+ \ifx$1>
+ \let\ERROR\@undefined
+ \expandafter\expandafter\expandafter\XML@checkend@subset
+ \else
+ \let\ERROR\XML@dec@a@nodef
+ \XML@dec@a@def$1
+ \fi
+ \fi}
+
+
+\endgroup
+
+\gdef\XML@dec@a@nodef#1\fi\fi#2{
+ \fi\fi
+ \XML@dec@a@x#1}
+
+
+\def\XML@dec@a@def#1\fi\fi{
+ \fi\fi
+ \XML@quoted\XML@dec@a@default#1}
+
+\def\XML@dec@a@default#1#2{
+ \XML@warn{Default: \XML@tempa\space\XML@tempb="#1"}
+ \ifx\XML@default@attributes\relax
+ \let\XML@default@attributes\@empty
+ \fi
+ \toks@\expandafter{\XML@default@attributes}
+ \protected@xdef\XML@default@attributes{
+ \the\toks@\noexpand\XML@add@attrib{\XML@tempa}{\XML@tempb}{#1}}
+% reusing this wastes some tests but only done in local subset
+ \XML@dec@a@hash#2
+ }
+
+
+\let\XML@default@attributes\relax
+
+% this comparison is encoding normalised, but namespace unaware, grr.
+\def\XML@add@attrib#1#2#3{
+ \gdef\XML@tempa{#1}
+ \ifx\XML@tempa\begintag
+ \def\XML@this@attribute{#2}
+% stop getattrib looking for nexted xml syntax attribute setting.
+ \let\XML@getattrib\relax
+ \XML@attribval{#3}
+ \let\XML@getattrib\XML@@getattrib
+ \fi}
+
+%% comment
+% - is active
+% #1 = rest of if test
+% #2 = comment text
+\begingroup
+\catcode`\-\active
+\uppercase{\endgroup
+\def\XML@comment#1@#2-->}{
+ \fi
+ \catcode`\^^M\active
+ \catcode`\^^I\active
+ \catcode`\ \active
+ \XML@trace@warn{\string<!-- -->}
+ \XML@comment@}
+
+\def\XML@comment@{
+ \XML@checkend@subset}
+
+\def\XML@grabcomment@{
+ \XMLgrab@}
+
+%% entity defs
+
+% #1 = rest of \if test + TITY
+% #2 = % or entity name
+\begingroup
+\catcode`\&=12
+\catcode`\%=13
+
+\gdef\XML@entity#1 #2 {
+ \fi\fi
+ \ifx%#2
+ \def\XML@input{
+ \ifx\XML@use\XML@SYSTEM\expandafter\@gobble\else
+ \noexpand\inputonce\fi}
+ \expandafter\XML@p@ent
+ \else
+ \def\XML@input{\noexpand\xmlinput}
+ {\utfeight@protect@chars\xdef\XML@ename{&#2}}
+ \XML@trace@warn{\XML@ename; = }
+ \expandafter\XML@ent
+ \fi}
+
+\endgroup
+
+% input some file at most once (and ignore arguments that
+% expand to empty)
+% done in a local group
+\def\inputonce#1{
+ \expandafter\ifx\csname xmt:#1\endcsname\relax
+ \global\expandafter\let\csname xmt:#1\endcsname\@ne
+ \begingroup
+ \XML@reset
+% package files should have their own namespace declarations
+% don't want to inherit from some random point when file is loaded.
+% in principle should clear all prefix assignments in local scope
+% but I don't currently maintain a list of those, and not needed as long
+% as package files declare all prefixes used. But do set the default
+% namespace back to the null namespace.
+%
+% should force utf-8 as well.
+ \def\XMLNS@{0}
+ \input{#1}
+ \endgroup
+ \fi}
+
+% ignore include of empty filename
+\expandafter\let\csname xmt:\endcsname\@ne
+
+% \noexpand protect against active ascii
+\begingroup
+\catcode`\%12
+\gdef\XML@p@ent#1 #2{
+ {\utfeight@protect@chars\xdef\XML@ename{%#1}}
+ \XML@trace@warn{\XML@ename; = }
+ \if\noexpand#2P\XML@E@public
+ \else\if\noexpand#2S\XML@E@system
+ \else\XML@E@internal#2}
+\endgroup
+
+% #1 = next char( P or S for external entities)
+\def\XML@ent#1{
+ \if\noexpand#1P\XML@E@public
+ \else\if\noexpand#1S\XML@E@system
+ \else\XML@E@internal#1}
+
+
+\begingroup
+\catcode`\:\active
+
+% special `prefix' that just removes following colon.
+\expandafter\gdef\csname XMLNS@*\endcsname#1{}
+
+\endgroup
+
+\begingroup
+\catcode`\:=12
+
+%#1 = " or '
+\gdef\XML@E@internal#1{
+ \fi\fi
+ \begingroup
+ \let\XML@trace@warn\@gobble
+ \let\XML@endgroup\endgroup
+ \let\XML@begingroup\begingroup
+% make " or ' close the grab `element'. the nameless close tag is completed
+% by the > coming from the ENTITY declaration syntax.
+% Using a mangled grab code is a bit complicated but it allows
+% catcode 10 simplification in the normal case of element handling
+% and allows characters to be correctly normalised to utf8.
+ \def#1{</}
+ \expandafter\def\csname
+ E\string/:\endcsname{
+ \afterassignment\XML@E@internal@x
+ \expandafter\gdef\csname+\XML@ename\endcsname}
+ \begingroup
+% stop xmlns `attribute' being recognised
+ \let\XML@ns@decl\relax
+ \let\XML@this@local\@empty
+% set up special prefix to gobble colon
+ \def\XML@this@prefix{*}
+% disable these as nothing will be known until namespaces reenabled
+ \let\XML@checkknown\relax
+ \let\XML@attrib@trace\relax
+% hobble namespace code to put all name in local part.
+ \def\XML@ns##1{
+ \protected@edef\XML@this@local{##1}
+ \def\XML@this@prefix{*}}
+ \xmlgrab}
+
+\endgroup
+
+% expandafter away an \else clause in grabelement then check for ]
+\def\XML@E@internal@x{
+ \endgroup
+ \aftergroup\XML@trace@warn
+ \expandafter\aftergroup\csname+\XML@ename\endcsname
+\aftergroup\fihack
+}
+
+% this hack has to undo the one above moarked by
+% % \XMLstring usage means catcode restoring varies
+% must fix this as well one day
+\def\fihack#1\fi{\expandafter\XML@checkend@subset}
+
+% need to add (somewhere) a replacement of " to &quot; so that
+% xxx='a"b"c' doesn't end up as xxx="a"b"c"
+% #1 replacement text
+% #2 white space and >
+\begingroup
+\uccode`\~`\#
+\catcode`\~\active
+\uppercase{\endgroup
+\def\XML@E@internal@#1#2>{
+ \expandafter\protected@xdef\csname+\XML@ename\endcsname{#1}
+ \XML@trace@warn{\@spaces\string"#1\string"}
+ \XML@checkend@subset}}
+
+%% check for ]> that ends internal subset
+\begingroup
+\catcode`\]\active
+
+
+% #1 is next token in local subset (normally < or >)
+% after subset finishes % stops being markup, and the package
+% relating to any external entity in the doctype is loaded.
+\gdef\XML@checkend@subset{
+ \catcode`\^^M10
+ \catcode`\^^I10
+ \catcode`\ 10 %
+ \XML@checkend@subset@}
+
+% #1 = next character
+\catcode`\%\active
+\gdef\XML@checkend@subset@#1#2#3#4{
+ \ifx]#1
+ \let\XML@w@\@empty
+ \XML@trace@warn{]}
+ \gdef%{\utfeightay%}
+ \let\XML@checkend@subset\relax
+ \expandafter\XML@loaddoctype
+ \fi
+ #1#2#3#4}
+
+\endgroup
+
+%% #1#2 just gobble ]>
+\def\XML@loaddoctype#1#2{
+ \catcode`\^^M\active
+ \catcode`\^^I\active
+ \catcode`\ \active
+ \ifx\XML@D@dtd\relax\else
+ \XML@trace@warn{Doctype Package: \XML@D@dtd}
+ \inputonce\XML@D@dtd
+ \fi}
+
+
+% #1 = rest of \if test + PUBLIC
+\def\XML@E@public#1 {
+ \fi
+ \XML@quoted\XML@E@pubid}
+
+% #1 = FPI
+\def\XML@E@pubid#1{
+ \def\XML@PUBLIC{#1}
+ \edef\XML@PUBLIC{\expandafter\strip@prefix\meaning\XML@PUBLIC}
+ \XML@quoted\XML@E@systemid}
+
+% #1 = rest of if test up to SYSTEM
+\def\XML@E@system#1 {
+ \fi\fi
+ \def\XML@PUBLIC{}
+ \XML@quoted\XML@E@systemid}
+
+
+% #1 URL
+% #2 next token, N or >
+\def\XML@E@systemid#1#2{
+ \def\XML@SYSTEM{#1}
+ \let\XML@use\XML@SYSTEM
+ \XML@trace@warn{\@spaces Public: \XML@PUBLIC}
+ \XML@trace@warn{\@spaces System: \XML@SYSTEM}
+ \the\XML@catalogue
+ \if\noexpand#2N
+ \expandafter\XML@E@ndata
+ \else
+ \afterfi
+ \XML@E@internal@{\XML@input{\XML@use}}#2
+ \fi}
+
+
+% NDATA token terminated by > or white space
+% #1 = DATA
+% #2 ndata token with possible extra space
+\def\XML@E@ndata#1 #2>{\XML@ndata@#2 >}
+
+% #1 = ndata toke
+% #2 = junk
+\def\XML@ndata@#1 #2>{
+ \XML@E@internal@{{#1}{\XML@use}}>}
+
+
+%% DOCTYPE
+% #1 rest of \if test + OCTYPE
+% #2 document element name
+% #3 P or S or [ or >
+% noexpand for P and S, [ assumed active
+
+\begingroup
+\catcode`\[\active
+
+\gdef\XML@doctype#1 #2 #3{
+ \fi\fi\fi\fi\fi
+ \def\documentelement{#2}
+ \let\XML@D@dtd\relax
+ \XML@trace@warn{Document Element: \documentelement}
+ \if\noexpand#3P\XML@D@public
+ \else\if\noexpand#3S\XML@D@system
+ \else\ifx#3[\XML@D@internal
+ \else%must be > the end
+ \XML@D@empty
+ @}
+
+
+\gdef\XML@D@empty @{
+ \fi\fi\fi}
+
+% #1 = rest of \if test + UBLIC
+\gdef\XML@D@public#1 {
+ \fi
+ \XML@quoted\XML@pubid}
+
+% #1 = FPI
+\gdef\XML@pubid#1{
+ \def\XML@PUBLIC{#1}
+ \edef\XML@PUBLIC{\expandafter\strip@prefix\meaning\XML@PUBLIC}
+ \XML@quoted\XML@systemid}
+
+
+% #1 = rest of \if test + YSTEM
+\gdef\XML@D@system#1 {
+ \fi\fi
+ \def\XML@PUBLIC{}
+ \XML@quoted\XML@systemid}
+
+% #1 = URI
+\gdef\XML@systemid#1{
+ \protected@edef\XML@SYSTEM{#1}
+ \edef\XML@SYSTEM{\expandafter\strip@prefix\meaning\XML@SYSTEM}
+ \XML@trace@warn{Doctype Public: \XML@PUBLIC}
+ \XML@trace@warn{Doctype System: \XML@SYSTEM}
+ \let\XML@use\@empty
+ \the\XML@catalogue
+ \let\XML@D@dtd\XML@use
+ \XML@D@internal@}
+
+% #1 = rest of if test
+\gdef\XML@D@internal#1@{
+ \fi\fi\fi
+ \XML@D@internal@[}
+
+% #1 = [ for local subset or > for the end.
+\catcode`\%\active
+\gdef\XML@D@internal@#1{
+ \ifx[#1
+ \XML@trace@warn{Internal Subset[}
+ \let%\XML@pcent
+ \edef\XML@w@{ \XML@w@}
+ \expandafter\XML@checkend@subset
+ \else
+ | it had better be the closing >
+ \fi}
+
+\endgroup
+
+
+%%%%%%%%%%%%%%%
+%% catalogue support
+\newtoks\XML@catalogue
+
+%% should rationalise this code
+
+% #1 = FPI
+% #2 = xmltex package file
+\def\PUBLIC#1#2{
+ \xdef\XML@tempa{#1}
+ \xdef\XML@tempa{\noexpand\the\XML@catalogue\noexpand\XML@@PUBLIC
+ {\expandafter\strip@prefix\meaning\XML@tempa}}
+ \global\XML@catalogue\expandafter\expandafter\expandafter{
+ \XML@tempa{#2}}}
+
+
+% #1 = URI
+% #2 = xmltex package file
+\def\SYSTEM#1#2{
+ \xdef\XML@tempa{#1}
+ \xdef\XML@tempa{\noexpand\the\XML@catalogue\noexpand\XML@@SYSTEM
+ {\expandafter\strip@prefix\meaning\XML@tempa}}
+ \global\XML@catalogue\expandafter\expandafter\expandafter{
+ \XML@tempa{#2}}}
+
+% #1 = namespace URI
+% #2 = xmltex package file
+\def\NAMESPACE#1#2{
+ \utfeight@protect@chars
+ \XML@ns@alloc{#1}
+ \edef\@tempa{{\csname XML:#1\endcsname}}
+ \global\XML@catalogue\expandafter{\the\expandafter\XML@catalogue
+ \expandafter\XML@@NAMESPACE\@tempa{#2}}
+ \unprotect@utfeight}
+
+
+% #1 = unprefixed element name
+% #2 = xmltex package file
+\def\NAME#1#2{
+ \global\XML@catalogue\expandafter{\the\XML@catalogue\XML@@NAME{#1}{#2}}}
+
+% #1 = unprefixed element name
+% #2 = namespace URI
+\def\XMLNS#1#2{
+ \utfeight@protect@chars
+ \XML@ns@alloc{#2}
+ \edef\@tempa{{#1}{\csname XML:#2\endcsname}}
+ \global\XML@catalogue\expandafter{\the\expandafter\XML@catalogue
+ \expandafter\XML@@XMLNS\@tempa}
+ \unprotect@utfeight}
+
+
+
+\def\XML@@PUBLIC#1#2{
+ \gdef\XML@tempa{#1}
+ \ifx\XML@tempa\XML@PUBLIC
+ \def\XML@use{#2}
+ \fi}
+
+\def\XML@@SYSTEM#1#2{
+ \def\@tempa{#1}
+ \ifx\@tempa\XML@SYSTEM
+ \def\XML@use{#2}
+ \fi}
+
+\def\XML@@NAMESPACE#1#2{
+ \def\@tempa{#1}
+ \ifx\@tempa\XML@NAMESPACE
+ \def\XML@use{#2}
+ \fi}
+
+
+\def\XML@@NAME#1#2{
+ \def\@tempa{#1}
+ \ifx\@tempa\XML@NAME
+ \def\XML@use{#2}
+ \fi}
+
+
+
+\begingroup
+\catcode`\:\active
+
+\def\XML@@XMLNS#1#2{
+ \def\@tempa{#1}
+ \ifx\@tempa\XML@NAME
+ \edef\XMLNS@{#2}
+ \edef\XML@this@element{
+ \XMLNS@\noexpand:\XML@this@local}
+ \XML@trace@warn{ \XML@this@element}
+ \let\XML@NAMESPACE\XMLNS@
+ \fi}
+\endgroup
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% entity refs
+\begingroup
+\catcode`\$=\catcode`\#
+\catcode`\#=\active
+
+\gdef\XML@amp@markup$1$2;{
+ \ifx#$1\@empty
+ \XML@charref$2;
+ \XML@tempa
+ \else
+ \begingroup\utfeight@protect@chars
+ \expandafter\aftergroup
+ \csname+\string&$1$2\expandafter\endcsname
+ \endgroup
+ \fi}
+
+\endgroup
+
+\let&\XML@amp@markup
+
+\begingroup
+\catcode`\%=12
+\catcode`\&=12
+
+\gdef\XML@pcent#1;{
+ \csname+%#1\endcsname
+ \XML@checkend@subset}
+
+\gdef\XMLentity#1#2{
+ \expandafter\gdef\csname+&#1\endcsname{#2}}
+
+\endgroup
+
+% predefined definitions
+\begingroup
+\XMLentity{amp}{\utfeightaz&}
+\XMLentity{quot}{\utfeightax"}
+\XMLentity{apos}{\utfeightax'}
+\XMLentity{lt}{\utfeightaz<}
+\XMLentity{gt}{\utfeightax>}
+\endgroup
+
+%% character refs
+
+% longwinded way so can share code later, also need to do d case.
+% this does up to x1F FFFF which is higher than needed for XML
+% (x10 FFFF)
+\begingroup
+\catcode`\"=12
+\catcode`\<=12
+\catcode`\.=12
+\catcode`\,=12
+\catcode`\;=12
+\catcode`\!=12
+\catcode`\~=13
+
+% definition is of form
+% \utfeightX <non active char>+
+% except for non active chars below 128 which are just def of catcode 12 version.
+\gdef\XML@charref#1#2;{
+ \begingroup
+ \uppercase{\count@\if x\noexpand#1"\else#1\fi#2}\relax
+ \ifnum\count@<"80\relax
+ \uccode`\~\count@
+ \uppercase{
+ \ifnum\catcode\count@=\active
+ \gdef\XML@tempa{\utfeightay~}
+ \else
+ \gdef\XML@tempa{~}
+ \fi}
+ \else\ifnum\count@<"800\relax
+ \XML@utfeight@a,
+ \XML@utfeight@b C\utfeightb.,
+ \else\ifnum\count@<"10000\relax
+ \XML@utfeight@a;
+ \XML@utfeight@a,
+ \XML@utfeight@b E\utfeightc.{,;}
+ \else
+ \XML@utfeight@a;
+ \XML@utfeight@a,
+ \XML@utfeight@a!
+ \XML@utfeight@b F\utfeightd.{!,;}
+ \fi
+ \fi
+ \fi
+ \endgroup}
+
+% while I support mixed tex/xml files I need to have a version
+% of &#123; that always fetches the definition even if
+% character is currently non active
+\global\let\XML@@charref\XML@charref
+
+
+\gdef\XML@charref@tex#1#2;{
+ \begingroup
+ \uppercase{\count@\if x\noexpand#1"\else#1\fi#2}\relax
+ \ifnum\count@<"80\relax
+ \uccode`\~\count@
+ \uppercase{
+ \gdef\XML@tempa{\utfeightay~}}
+ \else\ifnum\count@<"800\relax
+ \XML@utfeight@a,
+ \XML@utfeight@b C\utfeightb.,
+ \else\ifnum\count@<"10000\relax
+ \XML@utfeight@a;
+ \XML@utfeight@a,
+ \XML@utfeight@b E\utfeightc.{,;}
+ \else
+ \XML@utfeight@a;
+ \XML@utfeight@a,
+ \XML@utfeight@a!
+ \XML@utfeight@b F\utfeightd.{!,;}
+ \fi
+ \fi
+ \fi
+ \endgroup}
+
+\gdef\XML@utfeight@a#1{
+ \@tempcnta\count@
+ \divide\count@64
+ \@tempcntb\count@
+ \multiply\count@64
+ \advance\@tempcnta-\count@
+ \advance\@tempcnta"80
+ \uccode`#1\@tempcnta
+ \count@\@tempcntb}
+
+\gdef\XML@utfeight@b#1#2#3#4{
+ \advance\count@"#10\relax
+ \uccode`#3\count@
+ \uppercase{\gdef\XML@tempa{#2#3#4}}}
+
+
+%%%%%%%%%%%%%%%%
+
+% #1 unicode slot, either 123 decimal or xA23 hex
+% #2 tex definition of character when used as character data.
+% code for chars below 127 somewhat experimental
+\gdef\UnicodeCharacter#1#2{
+ \begingroup
+% suppress active test in charref
+ \def\active{\catcode\count@}
+ \XML@charref#1;
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \expandafter
+ \gdef\XML@tempa{#2}
+ \endgroup}
+
+\endgroup
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newtoks\XMLgrabtoks
+
+\def\xmlgrab{
+ \begingroup
+ \global\XMLgrabtoks{}
+ \let\XML@this@level\XML@w@
+ \edef\XML@next@level{ \XML@w@}
+ \let\XML@doelement\XML@grabelement
+ \let\XML@doend\XML@grabend
+ \let\XML@docdata\XML@grabcdata
+ \let\XML@comment@\XML@grabcomment@
+ \let\XML@dopi\XML@grabpi
+ \XMLgrab@}
+
+\def\XMLgrab@{
+ \utfeight@protect@internal
+ \def<{\iffalse{\fi}\XMLgrab@@}
+ \xdef\XML@tempa{\iffalse}\fi}
+
+\def\XMLgrab@@{
+ \global\XMLgrabtoks\expandafter{\the\expandafter\XMLgrabtoks\XML@tempa}
+ \XML@lt@markup}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% cdata
+\begingroup
+\catcode`\[\active
+\catcode`\]\active
+
+% #1 = DATA
+\gdef\XML@cdata #1[{
+ \fi\fi\fi\fi\fi\fi
+ \catcode`\^^M\active
+ \catcode`\^^I\active
+ \catcode`\ \active
+ \XML@cdata@a}
+
+% #1 = CDADA section text
+\gdef\XML@cdata@a#1]]>{
+ \begingroup
+ \XML@trace@warn{CDATA}
+ \edef<{\noexpand\utfeightaz\string<}
+ \edef&{\noexpand\utfeightaz\string&}
+ \XML@docdata{#1}}
+
+\endgroup
+
+% #1 = CDADA section text
+\def\XML@docdata#1{#1\endgroup}
+
+% #1 = CDADA section text
+\def\XML@grabcdata#1{
+ \utfeight@protect@internal
+ \edef<{\noexpand\utfeightaz\string<}
+ \edef&{\noexpand\utfeightaz\string&}
+ \xdef\XML@tempa{#1}
+ \endgroup
+ \expandafter\XMLgrab@\XML@tempa}
+
+%%%%%%%%%%
+% notation
+
+% parse past the public and system ids
+% in case they contain a >.
+% unlike entities PUBLIC need not have a system id
+% #1 junk
+% #2 notation name
+% #3 PUBLIC or SYSTEM
+\def\XML@dec@n#1N #2 #3 {
+ \fi\fi\fi\fi\fi\fi
+ \XML@trace@warn{NOTATION #2}
+ \XML@quoted\XML@notation
+ }
+
+\def\XML@notation#1#2{
+ \ifx>#2
+ \expandafter\XML@checkend@subset
+ \else
+ \afterfi
+ \XML@quoted\XML@notation#2
+ \fi}
+
+%%%%%%%%
+%% xmt definitions
+
+%% #1 element, may use prefix : using prefixes in current scope
+%% #2 attlist
+%% #3 begin code
+%% #4 end code
+%% if #3 is \xmlgrab, #4 may access the content of the element as #1
+\long\def\XMLelement#1#2#3#4{
+ \XML@ns{#1}
+ \xdef\XML@tempc{:\csname
+ XMLNS@\XML@this@prefix\endcsname:\XML@this@local}
+% attlist
+ \toks@\expandafter{\csname A:\csname
+ XMLNS@\XML@this@prefix\endcsname\endcsname}
+ #2
+ \expandafter\gdef\csname E\XML@tempc\expandafter\endcsname
+ \expandafter{\expandafter\XML@setattributes\expandafter{\the\toks@}#3}
+ \gdef\XML@tempa{#3}
+ \ifx\XML@tempa\XML@xmlgrab
+ \expandafter\gdef\csname E\string/\XML@tempc\endcsname##1
+ {#4}
+ \else
+ \expandafter\gdef\csname E\string/\XML@tempc\endcsname
+ {#4}
+ \fi}
+
+\def\XML@xmlgrab{\xmlgrab}
+
+%% #1 attribute, may use prefix : using prefixes in current scope
+%% #2 macro to access attribute in begin or end code
+%% #3 default
+
+\long\def\XMLattribute#1#2#3{
+ {\def\XMLNS@{0}
+ \XML@ns{#1}
+ \xdef\XML@tempa{\noexpand\XML@attrib
+ \csname XMLNS@\XML@this@prefix\endcsname
+ :\XML@this@local\relax\noexpand#2}}
+ \toks@\expandafter{\the\expandafter\toks@\XML@tempa{#3}}}
+
+\long\def\XMLattributeX#1#2#3{
+ {\def\XMLNS@{0}
+ \XML@ns{#1}
+ \xdef\XML@tempa{\noexpand\XML@attrib
+ \csname XMLNS@\XML@this@prefix\endcsname
+ :\XML@this@local\relax\noexpand#2}}
+ \toks@\expandafter{\the\expandafter\toks@\XML@tempa{#3}\utfeight@chardef#2}}
+
+\def\utfeight@chardef#1{
+\begingroup
+\utfeight@protect@chars
+\xdef\x@temp{#1}
+\endgroup
+\let#1\x@temp}
+
+% version for namespace global attributes, used at top level.
+%% #1 prefix for namespace this is for. using prefixes in current scope
+%% #2 attribute, may use prefix : using prefixes in current scope
+%% #3 macro to access attribute in begin or end code
+%% #4 default
+
+\long\def\XMLnamespaceattribute#1#2#3#4{
+ \toks@\expandafter\expandafter\expandafter{\csname A:\csname
+ XMLNS@#1\endcsname\endcsname}
+ \XMLattribute{#2}{#3}{#4}
+ \expandafter\xdef\csname A:\csname
+ XMLNS@#1\endcsname\endcsname{\the\toks@}}
+
+\long\def\XMLnamespaceattributeX#1#2#3#4{
+ \toks@\expandafter\expandafter\expandafter{\csname A:\csname
+ XMLNS@#1\endcsname\endcsname}
+ \XMLattributeX{#2}{#3}{#4}
+ \expandafter\xdef\csname A:\csname
+ XMLNS@#1\endcsname\endcsname{\the\toks@}}
+
+
+
+%% #1 QName, may use prefix : using prefixes in current scope
+%% #2 macro to access attribute in begin or end code
+\begingroup
+\catcode`\:\active
+
+\long\gdef\XMLname#1#2{{
+ \XML@ns{#1}
+ \xdef#2{
+ \csname XMLNS@\XML@this@prefix\endcsname
+ \noexpand:\XML@this@local}}}
+\endgroup
+
+\begingroup
+\catcode`\<=12
+\catcode`\>=12
+\catcode`\:=12
+\catcode`\/=12
+
+\gdef\XMLstring#1#2<>{
+ \begingroup
+ \let\XML@endgroup\endgroup
+ \let\XML@this@local\@empty
+ \let\XML@this@prefix\@empty
+ \expandafter\def\csname
+ E/:\XMLNS@:\endcsname{
+ \gdef#1}
+ \XML@catcodes
+ \xmlgrab}
+
+\gdef\XMLstringX#1#2<>{
+ \begingroup
+ \let\XML@endgroup\endgroup
+ \let\XML@this@local\@empty
+ \let\XML@this@prefix\@empty
+ \expandafter\def\csname
+ E/:\XMLNS@:\endcsname{
+ \xdef#1}
+ \XML@catcodes
+ \utfeight@protect@chars
+ \xmlgrab}
+
+\endgroup
+
+%% #1 name
+%% #2 code, gets data as #1
+\long\def\XMLProcessInstruction#1#2{
+ \expandafter\gdef\csname P:#1\endcsname##1{#2}}
+
+%%%%%%%%%%%
+%% xmltex format support
+\everyjob\expandafter{\the\everyjob
+ \immediate\write20{xmltex version: \xmltexversion:}
+\def^^ff^^fe{\XML@setenc{utf-16}\relax}
+\def^^fe^^ff{\XML@setenc{utf-16}\relax}
+\ActivateASCII{45}% -
+\UnicodeCharacter{45}{-\kern\z@}
+\let<\XML@first@lt
+ \IfFileExists{xmltex.cfg}
+ {\begingroup
+ \XML@reset
+ \@@input\@filef@und
+ \endgroup}{\XML@warn{No File: xmltex.cfg}}
+ \IfFileExists{\jobname.cfg}
+ {\begingroup
+ \XML@reset
+ \@@input\@filef@und
+ \endgroup}{\XML@warn{No File: \jobname.cfg}}
+}
+
+
+%%%%%%%%%%%
+%% not currently used
+%
+%\def\XML@setlatexcodes{
+%\ifnum\catcode`\&\active
+% \let\XML@restore\XML@catcodes
+% \let\XML@setlatexcodes\relax
+%\fi}
+%
+%\let\XML@restore\relax
+
+
+%% allow package and class loading with normal latex catcodes
+
+
+\def\@fileswith@pti@ns#1[#2]#3[#4]{
+ \XML@reset
+ \catcode`\^^M5 %
+ \let\@fileswith@pti@ns\@@fileswith@pti@ns
+ \@@fileswith@pti@ns{#1}[{#2}]{#3}[{#4}]
+ \XML@catcodes
+ \let\@fileswith@pti@ns\XML@@fileswith@pti@ns}
+
+\let\XML@@fileswith@pti@ns\@fileswith@pti@ns
+
+
+
+% and similar for input of aux files
+\def\@input#1{
+ \XML@reset
+ \catcode`\^^I\active
+ \catcode`\<\active
+ \catcode`\>\active
+ \catcode`\&\active
+ \catcode`\#\active
+ \catcode`\/\active
+ \catcode`\:\active
+ \catcode`\=\active
+ \let\XML@charref\XML@charref@tex
+ \IfFileExists{#1}{\@@input\@filef@und}{\typeout{No file #1.}}
+ \XML@catcodes
+ \let\XML@charref\XML@@charref
+}
+
+% and end doc
+\def\enddocument{
+ \@enddocumenthook
+ \@checkend{document}
+ \clearpage
+ \begingroup
+ \if@filesw
+ \immediate\closeout\@mainaux
+ \let\@setckpt\@gobbletwo
+ \let\@newl@bel\@testdef
+ \@tempswafalse
+\XML@reset
+ \catcode`\^^I\active
+ \catcode`\<\active
+ \catcode`\>\active
+ \catcode`\&\active
+ \catcode`\#\active
+ \catcode`\/\active
+ \catcode`\:\active
+ \catcode`\=\active
+ \let\XML@charref\XML@charref@tex
+ \makeatletter \input\jobname.aux
+ \fi
+ \@dofilelist
+ \ifdim \font@submax \string>\fontsubfuzz\relax
+ \@font@warning{Size substitutions with differences\MessageBreak
+ up to \font@submax\space have occured.\@gobbletwo}
+ \fi
+ \@defaultsubs
+ \@refundefined
+ \if@filesw
+ \ifx \@multiplelabels \relax
+ \if@tempswa
+ \@latex@warning@no@line{Label(s) may have changed.
+ Rerun to get cross-references right}
+ \fi
+ \else
+ \@multiplelabels
+ \fi
+ \fi
+ \endgroup
+ \deadcycles\z@\@@end}
+
+
+%% protected write
+\long\def \protected@write#1#2#3{
+ \begingroup
+ \let\thepage\relax
+ #2
+ \utfeight@protect@external
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\write#1{#3}}
+ \reserved@a
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+}
+
+
+%% typeout etc
+\def\set@display@protect{
+ \let\protect\string
+ \utfeight@protect@typeout}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% xmltex namespace
+\expandafter\def\csname
+ XML:http://www.dcarlisle.demon.co.uk/xmltex\endcsname{2}
+\expandafter\let\csname A:2\endcsname\@empty
+\expandafter\gdef\csname XMLNS@2\endcsname{2}
+\XML@ns@count2
+
+\iffalse
+% this is some currently used code aiming at having an aux file
+% in xml syntax using commands from the xmltex namespace.
+% this would avoid some of the problems involved in having
+% mixed xml/tex aux files.
+\def\addcontentsline#1#2#3{
+ \addtocontents{#1}{
+ <2:contentsline level="#2">
+ <2:toctitle>#3</2:toctitle>
+ <2:page>\thepage</2:page>
+ </2:contentsline>}}
+
+\long\def\addtocontents#1#2{
+ \protected@write\@auxout
+ {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}
+ {<2:@writefile ext="#1">#2</2:@writefile>}}
+
+\def\numberline#1{<2:numberline>#1</2:numberline>}
+
+\fi
+% end of xml-aux code.
+
+%%%%%%%%%%%%%%%%%%
+% tracing
+\long\def\@gobble#1{}
+\long\def\@gobbletwo#1#2{}
+\long\def\@gobblethree#1#2#3{}
+
+\def\xmltraceonly{
+ \global\hfuzz\maxdimen
+ \global\nullfont
+ \global\everypar{}
+ \global\let\XML@doelement\relax
+ \global\let\wrong@fontshape\relax
+ \global\let\selectfont\relax
+ \expandafter\gdef\expandafter\XML@catcodes\expandafter{\XML@catcodes
+ \gdef\unprotect@utfeight{
+ \let<\XML@lt@markup
+ \let&\XML@amp@markup
+ \global\let\utfeightax\@gobble
+ \global\let\utfeightay\@gobble
+ \global\let\utfeightaz\@gobble
+ \global\let\utfeightb\@gobbletwo
+ \global\let\utfeightc\@gobblethree
+ \global\let\utfeightd\@gobblefour}
+ \unprotect@utfeight}
+ \gdef\XML@doend{\XML@endgroup}
+ \gdef\XML@docdata##1{\endgroup}
+ \global\let\XML@dopi\@gobbletwo
+}
+
+\def\xmltraceoff{
+ \global\let\XML@trace@warn\@gobble
+ \global\let\XML@trace@warnNI\@gobble
+ \global\let\XML@trace@warnE\@gobble
+ \global\let\XML@attrib@trace\relax}
+
+
+%%%%%
+%% xmltex PI
+%% <?xmltex tracingall ?>
+%% <?xmltex typeout {hello world!} ?>
+%% content of pi may be a latex command.
+%% Arguments may be given in {} as usual
+%% Do not use \ . First `word' (ignoring white space) taken as a tex
+%% command name. May be a standard latex command, as here,
+%% or some special command defined in a cfg file or package.
+\begingroup
+\catcode`[=1
+\catcode`]=2
+\catcode`\{\active
+\catcode`\}\active
+\XMLProcessInstruction[xmltex][
+ \XML@pi#1{\relax}]
+
+\gdef\XML@pi#1{#2}[
+ \ifx\relax#2
+ \csname\zap@space#1 \@empty\expandafter\endcsname
+ \else
+ \afterfi
+ \expandafter
+ \XML@pi@b\csname\zap@space#1 \@empty\endcsname[#2]
+ \fi]
+
+\gdef\XML@pi@b#1{#2}[
+ \ifx\relax#2
+ #1
+ \else
+ \afterfi
+ \XML@pi@b#1[#2]
+ \fi]
+
+\endgroup
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% unicode support
+
+% \utfeighta#1 1 byte utf8 char
+% \utfeightb#1#2 2 byte utf8 char
+% \utfeightc#1#2#3 3 byte utf8 char
+% \utfeightd#1#2#3#4 4 byte utf8 char
+
+\def\unprotect@utfeight{
+ \let<\XML@lt@markup
+ \let&\XML@amp@markup
+ \def\utfeightax##1{
+ \csname 8:\string##1\endcsname}
+ \let\utfeightay\utfeightax
+ \let\utfeightaz\utfeightax
+ \def\utfeightb##1##2{
+ \csname 8:##1\string##2\endcsname}
+ \def\utfeightc##1##2##3{
+ \csname 8:##1\string##2\string##3\endcsname}
+ \def\utfeightd##1##2##3##4{
+ \csname 8:##1\string##2\string##3\string##4\endcsname}}
+
+\unprotect@utfeight
+
+% do this also in everyjob
+\let<\XML@first@lt
+
+
+% for moving internal arguments (not writes)
+\def\utfeight@protect@internal{
+ \let\utfeightax\noexpand
+ \let\utfeightay\noexpand
+ \def\utfeightaz{
+ \noexpand\utfeightaz\noexpand}
+ \let<\relax\let&\relax
+ \def\utfeightb##1##2{
+ \noexpand\utfeightb##1\string##2}
+ \def\utfeightc##1##2##3{
+ \noexpand\utfeightc##1\string##2\string##3}
+ \def\utfeightd##1##2##3##4{
+ \noexpand\utfeightd##1\string##2\string##3\string##4}}
+
+
+% for external files (expands one in an edef and once in a write
+\def\utfeight@protect@external{
+ \def\utfeightax{
+ \noexpand\noexpand\noexpand}
+ \let\utfeightay\utfeighta@ref
+ \let\utfeightaz\utfeighta@ref
+ \edef<{\string<}
+ \edef&{\string&}
+ \def\utfeightb##1##2{
+ ##1\string##2}
+ \def\utfeightc##1##2##3{
+ ##1\string##2\string##3}
+ \def\utfeightd##1##2##3##4{
+ ##1\string##2\string##3\string##4}}
+
+% for typeouts and immediate writes and messages
+%\def\utfeight@protect@typeout{
+% \let\utfeightax\noexpand
+% \let\utfeightay\noexpand
+% \let\utfeightaz\utfeighta@ref
+% \let<\relax\let&\relax
+% \def\utfeightb##1##2{##1\string##2}
+% \def\utfeightc##1##2##3{##1\string##2\string##3}
+% \def\utfeightd##1##2##3##4{##1\string##2\string##3\string##4}}
+
+% plan b
+\def\utfeight@protect@typeout{
+ \utfeight@protect@chars
+ \let<\relax
+ \let&\relax}
+
+% for csname (will fall over < or & but they should not be there)
+\def\utfeight@protect@chars{
+ \let\utfeightax\string
+ \let\utfeightay\string
+ \let\utfeightaz\string
+ \def\utfeightb##1##2{
+ ##1\string##2}
+ \def\utfeightc##1##2##3{
+ ##1\string##2\string##3}
+ \def\utfeightd##1##2##3##4{
+ ##1\string##2\string##3\string##4}}
+
+
+\def\utfeighta@ref#1{
+ \string&\string##\number\expandafter`\string#1\string;}
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% mapping input encodings to unicode.
+
+
+\begingroup
+\catcode`\"=12\relax
+\gdef\InputCharacter#1#2{
+ \begingroup
+ \XML@charref#2;
+ \count@"0\if\noexpand x#1\relax\else\count@#1\fi\relax
+ \uccode`\~\count@
+ \uppercase{
+ \global\let~\XML@tempa}
+ \endgroup}
+\endgroup
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+% default encoding
+
+%% need to change this default if hit BOM or xml or text decl,
+\XML@setutfeight
+
+%%%%%%%%%%%%%%%%%%%%%
+% adding xmltex style protection to standard latex commands.
+% if xmltex being used with other formats this does no harm
+% except take up a bit of space.
+
+\begingroup
+\catcode`\:\active
+\catcode`\/\active
+
+\gdef\markboth#1#2{\gdef\@themark{{#1}{#2}}{
+ \utfeight@protect@internal
+ \let\protect\@unexpandable@protect
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi}
+\gdef\markright#1{{\let\protect\@unexpandable@protect
+ \utfeight@protect@internal
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markright\@themark
+ {#1}\mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi}
+
+\endgroup
+
+% this one not safe, restore not complete
+\def\protected@edef{
+ \let\@@protect\protect
+ \let\protect\@unexpandable@protect
+ \utfeight@protect@internal
+ \afterassignment\restore@protect
+ \edef
+}
+\def\protected@xdef{
+ \begingroup
+ \utfeight@protect@internal
+ \let\protect\@unexpandable@protect
+ \afterassignment\endgroup
+ \xdef
+}
+\def\unrestored@protected@xdef{
+ \utfeight@protect@internal
+ \let\protect\@unexpandable@protect
+ \xdef
+}
+
+% should really save and restore, not always back to markup
+\def\restore@protect{\let\protect\@@protect
+ \unprotect@utfeight
+}
+
+%%%%% stop this doing damage, also stops it working
+\def\MakeUppercase#1{#1}
+
+
+%%%%%%%%%%%%%%%%%%%%%
+
+% support for making 7bit characters active
+
+\begingroup
+\catcode`\"=12\relax
+\gdef\ActivateASCII#1{
+ \uppercase{\count@"0\if x\noexpand#1\relax\else\count@#1\fi\relax}
+ \toks@\expandafter{\nfss@catcodes}
+ \xdef\nfss@catcodes{
+ \catcode\the\count@=\the\catcode\the\count@\relax\the\toks@}
+ \toks@\expandafter{\XML@catcodes}
+ \xdef\XML@catcodes{
+ \catcode\the\count@\active\the\toks@}
+ \expandafter\ifx\csname8:"\endcsname\relax
+ \expandafter\gdef\csname8:"\endcsname{"}
+ \fi}
+\endgroup
+
+
+% some of these should not be active by default, but OK for now.
+% could use \ActivateASCII for most if not all of these now.
+% should probably use \UnicodeCharacter for these now
+\expandafter\def\csname8:\string<\endcsname{\ifmmode\langle\else\textless\fi}
+\expandafter\def\csname8:\string>\endcsname{\ifmmode\rangle\else\textgreater\fi}
+\expandafter\def\csname8:\string{\endcsname{\{}
+\expandafter\def\csname8:\string}\endcsname{\}}
+
+% activateacii would use ax code, want ay code so ^ not written to aux files
+% and clash with tex usage. so locally lie and make it a letter
+\ActivateASCII{94}% ^ for tex ^^ notation in aux files
+\UnicodeCharacter{94}{\textasciicircum}
+
+
+\ActivateASCII{x5C}% \
+\UnicodeCharacter{x5C}{\textbackslash}
+\ActivateASCII{x5F}% \
+\UnicodeCharacter{x5F}{\textunderscore}
+\ActivateASCII{123}% {
+\ActivateASCII{125}% {
+
+%%%%%%%%%%%%%%%%
+% white space
+
+\UnicodeCharacter{13}{ \ignorespaces}
+\UnicodeCharacter{32}{ \ignorespaces}
+\UnicodeCharacter{9}{ \ignorespaces}
+
+
+\expandafter\def\expandafter\obeylines\expandafter{
+\expandafter\def\csname 8:\string^^M\endcsname{\leavevmode\hfil \break\null}}
+
+\expandafter\def\expandafter\xmlnewlineaction\expandafter{
+\expandafter\def\csname 8:\string^^M\endcsname}
+
+\expandafter\def\expandafter\obeyspaces\expandafter{
+\expandafter\def\csname 8: \endcsname{\nobreakspace}}
+
+% tabs just do whatver the current space does.
+\catcode`\^^I\active
+\expandafter\def\csname 8:\string^^I\expandafter\endcsname
+ \expandafter{\csname 8: \endcsname}
+
+
+% tex conventions
+\XML@reset
+\IfFileExists{xmltex.cfg}
+ {
+ \@@input\expandafter\@filef@und\expandafter\relax
+ \expandafter\XML@setenc\expandafter{\XML@thisencoding}\relax
+ }{\XML@warn{No File: xmltex.cfg}}
+
+
+% get xmltex in catcode 12, for comparing with \jobname
+\gdef\XML@tempa#1>{}
+\gdef\XML@tempb{xmltex}
+\xdef\XML@tempb{\expandafter\XML@tempa\meaning\XML@tempb}
+%
+\gdef\XML@tempc{pdfxmltex}
+\xdef\XML@tempc{\expandafter\XML@tempa\meaning\XML@tempc}
+%
+\xdef\XML@tempa{\lowercase{\gdef\noexpand\XML@tempa{\jobname}}}
+\XML@tempa
+
+
+% if jobname is xmltex or pdfxmltex dump the format, otherwise
+% try to load \jobname.cfg and input \xmlfile
+% put white space back so the filename can be read off the command line
+\ifx\XML@tempa\XML@tempc
+ \let\XML@tempb\XML@tempc
+\fi
+\ifx\XML@tempa\XML@tempb
+ \def\XML@tempa{
+\catcode`\ =10\relax
+\catcode`\^^M=10\relax
+\catcode`\^^I=10\relax
+\dump}
+\else
+\IfFileExists{\jobname.cfg}
+ {
+ \@@input\expandafter\@filef@und\expandafter\relax
+ \expandafter\XML@setenc\expandafter{\XML@thisencoding}\relax
+ }{\XML@warn{No File: \jobname.cfg}}
+
+
+\ifx\xmlfile\@undefined
+ \def\XML@tempa{\catcode`\-12\relax}
+\else
+ \def\XML@tempa{\catcode`\-12\relax\input\xmlfile\relax}
+\fi
+\fi
+
+\endlinechar`\^^M \expandafter\XML@catcodes\XML@tempa
diff --git a/macros/xmltex/contrib/passivetex/dummyels.sty b/macros/xmltex/contrib/passivetex/dummyels.sty
new file mode 100644
index 0000000000..45b81ed101
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/dummyels.sty
@@ -0,0 +1,136 @@
+\ProvidesPackage{dummyels}[1999/12/06: S Rahtz; dummy Elsevier names]
+% for those who don't have Elsevier fonts
+\def\ElOr{\UnavailableSymbol{ElOr}}
+\def\Elbcong{\UnavailableSymbol{Elbcong}}
+\def\Elolarr{\UnavailableSymbol{Elolarr}}
+\def\Elorarr{\UnavailableSymbol{Elorarr}}
+\def\Elroang{\UnavailableSymbol{Elroang}}
+\def\Elxsqcup{\UnavailableSymbol{Elxsqcup}}
+\def\Elxuplus{\UnavailableSymbol{Elxuplus}}
+\def\ElzAnd{\UnavailableSymbol{ElzAnd}}
+\def\ElzCint{\UnavailableSymbol{ElzCint}}
+\def\ElzInf{\UnavailableSymbol{ElzInf}}
+\def\ElzLap{\UnavailableSymbol{ElzLap}}
+\def\ElzOr{\UnavailableSymbol{ElzOr}}
+\def\ElzRlarr{\UnavailableSymbol{ElzRlarr}}
+\def\ElzSup{\UnavailableSymbol{ElzSup}}
+\def\ElzThr{\UnavailableSymbol{ElzThr}}
+\def\ElzTimes{\UnavailableSymbol{ElzTimes}}
+\def\Elzbar{\UnavailableSymbol{Elzbar}}
+\def\Elzbtdl{\UnavailableSymbol{Elzbtdl}}
+\def\Elzcirfb{\UnavailableSymbol{Elzcirfb}}
+\def\Elzcirfl{\UnavailableSymbol{Elzcirfl}}
+\def\Elzcirfr{\UnavailableSymbol{Elzcirfr}}
+\def\Elzclomeg{\UnavailableSymbol{Elzclomeg}}
+\def\Elzcreps{\UnavailableSymbol{Elzcreps}}
+\def\Elzdbnd{\UnavailableSymbol{Elzdbnd}}
+\def\ElzdbndSIX{\UnavailableSymbol{ElzdbndSIX}}
+\def\Elzddfnc{\UnavailableSymbol{Elzddfnc}}
+\def\Elzdefas{\UnavailableSymbol{Elzdefas}}
+\def\Elzdlcorn{\UnavailableSymbol{Elzdlcorn}}
+\def\Elzdrcorn{\UnavailableSymbol{Elzdrcorn}}
+\def\Elzdshfnc{\UnavailableSymbol{Elzdshfnc}}
+\def\Elzdyogh{\UnavailableSymbol{Elzdyogh}}
+\def\Elzesh{\UnavailableSymbol{Elzesh}}
+\def\Elzfhr{\UnavailableSymbol{Elzfhr}}
+\def\Elzggrave{\UnavailableSymbol{Elzggrave}}
+\def\Elzglst{\UnavailableSymbol{Elzglst}}
+\def\Elzherma{\UnavailableSymbol{Elzherma}}
+\def\Elzhex{\UnavailableSymbol{Elzhex}}
+\def\Elzhlmrk{\UnavailableSymbol{Elzhlmrk}}
+\def\Elzht{\UnavailableSymbol{Elzht}}
+\def\Elzinglst{\UnavailableSymbol{Elzinglst}}
+\def\ElzinvR{\UnavailableSymbol{ElzinvR}}
+\def\Elzinvv{\UnavailableSymbol{Elzinvv}}
+\def\Elzinvw{\UnavailableSymbol{Elzinvw}}
+\def\ElzlbdTWObd{\UnavailableSymbol{ElzlbdTWObd}}
+\def\ElzlbdTWOtd{\UnavailableSymbol{ElzlbdTWOtd}}
+\def\ElzlbondTHREE{\UnavailableSymbol{ElzlbondTHREE}}
+\def\ElzlbondTWO{\UnavailableSymbol{ElzlbondTWO}}
+\def\Elzlmrk{\UnavailableSymbol{Elzlmrk}}
+\def\Elzlow{\UnavailableSymbol{Elzlow}}
+\def\Elzlozfl{\UnavailableSymbol{Elzlozfl}}
+\def\Elzlozfr{\UnavailableSymbol{Elzlozfr}}
+\def\Elzlpargt{\UnavailableSymbol{Elzlpargt}}
+\def\Elzltlmr{\UnavailableSymbol{Elzltlmr}}
+\def\Elzltln{\UnavailableSymbol{Elzltln}}
+\def\Elzlyogh{\UnavailableSymbol{Elzlyogh}}
+\def\Elzminhat{\UnavailableSymbol{Elzminhat}}
+\def\Elznesim{\UnavailableSymbol{Elznesim}}
+\def\Elzopeno{\UnavailableSymbol{Elzopeno}}
+\def\ElzpSlash{\UnavailableSymbol{ElzpSlash}}
+\def\Elzpalh{\UnavailableSymbol{Elzpalh}}
+\def\Elzpbgam{\UnavailableSymbol{Elzpbgam}}
+\def\Elzpdbdbd{\UnavailableSymbol{Elzpdbdbd}}
+\def\Elzpdbdtd{\UnavailableSymbol{Elzpdbdtd}}
+\def\Elzpdbond{\UnavailableSymbol{Elzpdbond}}
+\def\Elzpent{\UnavailableSymbol{Elzpent}}
+\def\Elzpes{\UnavailableSymbol{Elzpes}}
+\def\Elzpgamma{\UnavailableSymbol{Elzpgamma}}
+\def\Elzpscra{\UnavailableSymbol{Elzpscra}}
+\def\Elzpscrv{\UnavailableSymbol{Elzpscrv}}
+\def\Elzptbdbd{\UnavailableSymbol{Elzptbdbd}}
+\def\Elzptbdtd{\UnavailableSymbol{Elzptbdtd}}
+\def\Elzpupsil{\UnavailableSymbol{Elzpupsil}}
+\def\Elzqbnd{\UnavailableSymbol{Elzqbnd}}
+\def\ElzrLarr{\UnavailableSymbol{ElzrLarr}}
+\def\Elzrais{\UnavailableSymbol{Elzrais}}
+\def\Elzrarrx{\UnavailableSymbol{Elzrarrx}}
+\def\ElzrbdTWObd{\UnavailableSymbol{ElzrbdTWObd}}
+\def\ElzrbdTWOtd{\UnavailableSymbol{ElzrbdTWOtd}}
+\def\ElzrbondTHREE{\UnavailableSymbol{ElzrbondTHREE}}
+\def\ElzrbondTWO{\UnavailableSymbol{ElzrbondTWO}}
+\def\Elzreapos{\UnavailableSymbol{Elzreapos}}
+\def\Elzreglst{\UnavailableSymbol{Elzreglst}}
+\def\Elzreve{\UnavailableSymbol{Elzreve}}
+\def\Elzreveps{\UnavailableSymbol{Elzreveps}}
+\def\Elzrh{\UnavailableSymbol{Elzrh}}
+\def\Elzrl{\UnavailableSymbol{Elzrl}}
+\def\Elzrparlt{\UnavailableSymbol{Elzrparlt}}
+\def\Elzrtld{\UnavailableSymbol{Elzrtld}}
+\def\Elzrtll{\UnavailableSymbol{Elzrtll}}
+\def\Elzrtln{\UnavailableSymbol{Elzrtln}}
+\def\Elzrtlr{\UnavailableSymbol{Elzrtlr}}
+\def\Elzrtls{\UnavailableSymbol{Elzrtls}}
+\def\Elzrtlt{\UnavailableSymbol{Elzrtlt}}
+\def\Elzrtlz{\UnavailableSymbol{Elzrtlz}}
+\def\Elzrttrnr{\UnavailableSymbol{Elzrttrnr}}
+\def\Elzrvbull{\UnavailableSymbol{Elzrvbull}}
+\def\Elzsbbrg{\UnavailableSymbol{Elzsbbrg}}
+\def\Elzsblhr{\UnavailableSymbol{Elzsblhr}}
+\def\Elzsbrhr{\UnavailableSymbol{Elzsbrhr}}
+\def\Elzschwa{\UnavailableSymbol{Elzschwa}}
+\def\Elzsqfb{\UnavailableSymbol{Elzsqfb}}
+\def\Elzsqfl{\UnavailableSymbol{Elzsqfl}}
+\def\Elzsqfne{\UnavailableSymbol{Elzsqfne}}
+\def\Elzsqfnw{\UnavailableSymbol{Elzsqfnw}}
+\def\Elzsqfr{\UnavailableSymbol{Elzsqfr}}
+\def\Elzsqfse{\UnavailableSymbol{Elzsqfse}}
+\def\Elzsqfsw{\UnavailableSymbol{Elzsqfsw}}
+\def\Elzsqft{\UnavailableSymbol{Elzsqft}}
+\def\Elzsqshd{\UnavailableSymbol{Elzsqshd}}
+\def\Elzsqspne{\UnavailableSymbol{Elzsqspne}}
+\def\Elzsyllab{\UnavailableSymbol{Elzsyllab}}
+\def\Elztbnd{\UnavailableSymbol{Elztbnd}}
+\def\ElztbndSIX{\UnavailableSymbol{ElztbndSIX}}
+\def\Elztdcol{\UnavailableSymbol{Elztdcol}}
+\def\Elztesh{\UnavailableSymbol{Elztesh}}
+\def\Elztfnc{\UnavailableSymbol{Elztfnc}}
+\def\Elztrisla{\UnavailableSymbol{Elztrisla}}
+\def\Elztrna{\UnavailableSymbol{Elztrna}}
+\def\Elztrnh{\UnavailableSymbol{Elztrnh}}
+\def\Elztrnm{\UnavailableSymbol{Elztrnm}}
+\def\Elztrnmlr{\UnavailableSymbol{Elztrnmlr}}
+\def\Elztrnr{\UnavailableSymbol{Elztrnr}}
+\def\Elztrnrl{\UnavailableSymbol{Elztrnrl}}
+\def\Elztrnsa{\UnavailableSymbol{Elztrnsa}}
+\def\Elztrnt{\UnavailableSymbol{Elztrnt}}
+\def\Elztrny{\UnavailableSymbol{Elztrny}}
+\def\Elzverti{\UnavailableSymbol{Elzverti}}
+\def\Elzverts{\UnavailableSymbol{Elzverts}}
+\def\Elzvrecto{\UnavailableSymbol{Elzvrecto}}
+\def\Elzxh{\UnavailableSymbol{Elzxh}}
+\def\Elzxl{\UnavailableSymbol{Elzxl}}
+\def\Elzxrat{\UnavailableSymbol{Elzxrat}}
+\def\Elzyogh{\UnavailableSymbol{Elzyogh}}
+\endinput
diff --git a/macros/xmltex/contrib/passivetex/fotex.sty b/macros/xmltex/contrib/passivetex/fotex.sty
new file mode 100644
index 0000000000..bccbf77a03
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/fotex.sty
@@ -0,0 +1,1724 @@
+%RCS: $Id: //TEI/web/Software/passivetex/fotex.sty#29 $, $Date: 2002/06/26 $
+%
+% Copyright 2002 Sebastian Rahtz/Oxford University
+% <sebastian.rahtz@oucs.ox.ac.uk>
+%
+% Permission is hereby granted, free of charge, to any person obtaining
+% a copy of this software and any associated documentation files (the
+% ``Software''), to deal in the Software without restriction, including
+% without limitation the rights to use, copy, modify, merge, publish,
+% distribute, sublicense, and/or sell copies of the Software, and to
+% permit persons to whom the Software is furnished to do so, subject to
+% the following conditions:
+%
+% The above copyright notice and this permission notice shall be included
+% in all copies or substantial portions of the Software.
+%
+% Includes fixes from Tomas Bures <ghort@pauline.vellum.cz>
+%
+\ProvidesPackage{fotex}[2002/06/25: version 1.17. support for XSL formatting, S Rahtz]
+\RequirePackage{graphicx}
+\IfFileExists{multicol.sty}
+ {\RequirePackage{multicol}[1997/12/16]}
+ {\newenvironment{multicols}[1]%
+ {\typeout{Warning, at line \the\inputlineno, multicol package not available}}{}%
+}
+\RequirePackage{rotating}
+\RequirePackage{array}
+\gdef\arraybackslash{\let\\=\@arraycr}
+\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
+\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
+\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
+\newcolumntype{P}[1]{>{\arraybackslash}p{#1}}
+\RequirePackage{amsmath}
+\let\Vec\undefined
+\RequirePackage{longtable}
+\RequirePackage{url}
+\RequirePackage[normalem]{ulem}
+\RequirePackage{color}
+\RequirePackage{times}
+\RequirePackage{mlnames}
+\RequirePackage{unicode}
+\RequirePackage{marvosym}
+\RequirePackage{ucharacters}
+%\usepackage{ucs}\usepackage[utf8]{inputenc}
+\RequirePackage{nameref}
+\RequirePackage[colorlinks=false,plainpages=true,hypertexnames=false,pdfborder={1 0 0}]{hyperref}[1999/08/1]
+%-------------------------------------------
+\newcount\FOListBlocks
+\newcount\FOTableNesting
+\newcount\FOinList
+\newcount\FOinTable
+\newcount\NCols
+\newcount\RowCount
+\newdimen\CurrentCellWidth
+\newdimen\FObalancespace
+\newdimen\FOspaceleft
+\newdimen\MasterBottomMargin
+\newdimen\MasterLeftMargin
+\newdimen\MasterRightMargin
+\newdimen\MasterTopMargin
+\newdimen\NoTableCellHeight
+\newdimen\TableWidth
+\newdimen\XFOendindent
+\newdimen\XFOstartindent
+\newdimen\bottommargin
+\newdimen\FOtempdim
+\newif\ifFOBlockGrab
+\newif\ifFODebug
+\newif\ifFODefiningPage
+\newif\ifFOFirstCell
+\newif\ifFOListBody
+\newif\ifFOListInnerPar
+\newif\ifFOSub
+\newif\ifFOSuper
+\newif\ifFOinLayout
+\newif\ifFOinOutput
+\newif\ifMulticolPending
+\newif\ifNoTableCheckHeight
+\newif\ifStartWithOmit
+\newsavebox\BlockBox
+\newsavebox\CellBox
+\newsavebox\FOBOX
+\newsavebox\ItemBox
+\newtoks\ColSpecs
+%
+\FODebugfalse
+\FOBlockGrabfalse
+\FODefiningPagefalse
+\FOListBodyfalse
+\FOListInnerParfalse
+\FOinLayoutfalse
+\FOinList0
+\FOinOutputfalse
+\FOTableNesting0
+\FOinTable0
+\MasterBottomMargin\z@
+\MasterLeftMargin\z@
+\MasterRightMargin\z@
+\MasterTopMargin\z@
+\MulticolPendingfalse
+\StartWithOmitfalse
+\def\DEBUG#1{%
+ \ifFODebug
+ \typeout{#1, at \the\inputlineno}%
+ \fi
+}
+\def\expandFont#1 #2 #3\\{%
+ \typeout{FONT expanding to #1 / #2 / #3}%
+}
+\def\expandBorder#1 #2 #3\\{%
+ \def\FOborderstartcolor{#3}%
+ \def\FOborderendcolor{#3}%
+ \def\FOborderbeforecolor{#3}%
+ \def\FOborderaftercolor{#3}%
+ \def\FOborderstartwidth{#1}%
+ \def\FOborderendwidth{#1}%
+ \def\FOborderbeforewidth{#1}%
+ \def\FOborderafterwidth{#1}%
+ \def\FOborderstartstyle{#2}%
+ \def\FOborderendstyle{#2}%
+ \def\FOborderbeforestyle{#2}%
+ \def\FOborderafterstyle{#2}%
+}
+\def\FOexpandattributes{%
+%
+% links
+\ifx\FObordertopstyle\LINK\else\let\FOborderbeforestyle\FObordertopstyle\fi
+\ifx\FOborderbottomstyle\LINK\else\let\FOborderafterstyle\FOborderbottomstyle\fi
+\ifx\FOborderrightstyle\LINK\else\let\FOborderendstyle\FOborderrightstyle\fi
+\ifx\FOborderleftstyle\LINK\else\let\FOborderstartstyle\FOborderleftstyle\fi
+\ifx\FObordertopwidth\LINK\else\let\FOborderbeforewidth\FObordertopwidth\fi
+\ifx\FOborderbottomwidth\LINK\else\let\FOborderafterwidth\FOborderbottomwidth\fi
+\ifx\FOborderrightwidth\LINK\else\let\FOborderendwidth\FOborderrightwidth\fi
+\ifx\FOborderleftwidth\LINK\else\let\FOborderstartwidth\FOborderleftwidth\fi
+\ifx\FObordertopcolor\LINK\else\let\FOborderbeforecolor\FObordertopcolor\fi
+\ifx\FOborderbottomcolor\LINK\else\let\FOborderaftercolor\FOborderbottomcolor\fi
+\ifx\FOborderrightcolor\LINK\else\let\FOborderendcolor\FOborderrightcolor\fi
+\ifx\FOborderleftcolor\LINK\else\let\FOborderstartcolor\FOborderleftcolor\fi
+% shortcuts
+ \ifx\FObordercolor\att@black
+ \else
+ \let\FOborderstartcolor\FObordercolor
+ \let\FOborderendcolor\FObordercolor
+ \let\FOborderbeforecolor\FObordercolor
+ \let\FOborderaftercolor\FObordercolor
+ \fi
+ \ifx\FOborderwidth\@empty
+ \else
+ \let\FOborderstartwidth\FOborderwidth
+ \let\FOborderendwidth\FOborderwidth
+ \let\FOborderbeforewidth\FOborderwidth
+ \let\FOborderafterwidth\FOborderwidth
+ \fi
+ \ifx\FOborderstyle\@empty
+ \else
+ \let\FOborderstartstyle\FOborderstyle
+ \let\FOborderendstyle\FOborderstyle
+ \let\FOborderbeforestyle\FOborderstyle
+ \let\FOborderafterstyle\FOborderstyle
+ \fi
+ \ifx\FOborder\@empty
+ \else
+ \expandafter\expandBorder\FOborder\\{}%
+ \fi
+% \ifx\FOfont\@empty
+% \else
+% \expandafter\expandFont\FOfont\relax \\{}%
+% \fi
+ \ifdim\FOpadding>\z@
+ \let\FOpaddingstart\FOpadding
+ \let\FOpaddingend\FOpadding
+ \let\FOpaddingbefore\FOpadding
+ \let\FOpaddingafter\FOpadding
+ \fi
+ \ifx\FOmargin\@empty
+ \else
+ \let\tmpmargin\FOmargin
+ \let\FOmarginleft\tmpmargin
+ \let\FOmarginright\tmpmargin
+ \let\FOmargintop\tmpmargin
+ \let\FOmarginbottom\tmpmargin
+ \fi
+% end of shortcuts
+ \ifx\FOborderendstyle\att@solid
+ \ifx\FOborderendwidth\att@thin\def\FOborderendwidth{0.4pt}\fi
+ \ifx\FOborderendwidth\att@medium\def\FOborderendwidth{0.8pt}\fi
+ \ifx\FOborderendwidth\att@thick\def\FOborderendwidth{1.2pt}\fi
+ \FOBlockGrabtrue
+ \else
+ \def\FOborderendwidth{\z@}%
+ \fi
+ \ifx\FOborderstartstyle\att@solid
+ \ifx\FOborderstartwidth\att@thin\def\FOborderstartwidth{0.4pt}\fi
+ \ifx\FOborderstartwidth\att@medium\def\FOborderstartwidth{0.8pt}\fi
+ \ifx\FOborderstartwidth\att@thick\def\FOborderstartwidth{1.2pt}\fi
+ \FOBlockGrabtrue
+ \else
+ \def\FOborderstartwidth{\z@}%
+ \fi
+ \ifx\FOborderafterstyle\att@solid
+ \ifx\FOborderafterwidth\att@thin\def\FOborderafterwidth{0.4pt}\fi
+ \ifx\FOborderafterwidth\att@medium\def\FOborderafterwidth{0.8pt}\fi
+ \ifx\FOborderafterwidth\att@thick\def\FOborderafterwidth{1.2pt}\fi
+ \else
+ \def\FOborderafterwidth{\z@}%
+ \fi
+ \ifx\FOborderbeforestyle\att@solid
+ \ifx\FOborderbeforewidth\att@thin\def\FOborderbeforewidth{0.4pt}\fi
+ \ifx\FOborderbeforewidth\att@medium\def\FOborderbeforewidth{0.8pt}\fi
+ \ifx\FOborderbeforewidth\att@thick\def\FOborderbeforewidth{1.2pt}\fi
+ \FOBlockGrabtrue
+ \else
+ \def\FOborderbeforewidth{\z@}%
+ \fi
+}
+%-------------------------------------------
+%
+% NoTable. Making tables using fixed width cells.
+% From ideas and code by C V Radhakrishnan.
+%
+\newcount\AbsoluteTableCount
+\newcount\CellCount
+\newcount\arraylength
+\newcounter{ArrayIndex}%
+\newcounter{zeroCtr}%
+\def\DeclareArray#1{%
+ \Array{#1}[0]{}%
+ \expandafter\gdef\csname #1\endcsname[##1]{\csname #1##1\endcsname}%
+}
+\def\Array#1[#2]#3{%
+ \expandafter\xdef\csname #1#2\endcsname{#3}%
+}
+
+%
+\def\getArraylength#1{%
+ \arraylength0
+ \loop\expandafter\ifx\csname #1\the\arraylength\endcsname\relax%
+ \else\advance\arraylength by1\repeat}%
+%
+\def\addToArray#1#2{\arraylength0%
+ \loop\expandafter\ifx\csname #1\the\arraylength\endcsname\relax%
+ \else\advance\arraylength by 1\repeat%
+ \Array{#1}[\the\arraylength]{#2}}%
+%
+\def\clearArray#1{\getArraylength{#1}%
+ \loop\ifnum\arraylength >0%
+ \global\expandafter\let\csname #1\the\arraylength\endcsname\relax%
+ \advance\arraylength by-1\repeat}%
+%
+\long\def\ArrayIterator#1#2{%
+ \setcounter{ArrayIndex}{1}\getArraylength{#1}%
+ \setcounter{zeroCtr}{\c@arraylength}%
+ \loop\ifnum\c@ArrayIndex<\c@zeroCtr{#2}%
+ \stepcounter{ArrayIndex}\repeat%
+}%
+
+\def\NoTableSetup{%
+ \global\advance\AbsoluteTableCount by 1
+ \DeclareArray{fotable\the\AbsoluteTableCount:}%
+ \global\CellCount0
+}
+
+\def\NoTableStart#1{#1}
+
+\def\NoTableEnd{\clearArray{fotable\the\AbsoluteTableCount:}}
+
+\def\NoTableColumn{%
+ \ifx\@empty\FOcolumnnumber
+ \global\advance\NCols by 1
+ \else
+ \global\NCols\FOcolumnnumber
+ \fi
+ \ifx\prop@width\FOcolumnwidth\def\FOcolumnwidth{1in}\fi
+ \ifx\@empty\FOcolumnwidth\def\FOcolumnwidth{1in}\fi
+ \TablePercentToDimen{\FOcolumnwidth}%
+ \addToArray{fotable\the\AbsoluteTableCount:}{\the\@tempdima}%
+ \DEBUG{Table Column \the\NCols, in Table \the\AbsoluteTableCount,
+ \FOcolumnwidth, = \the\@tempdima}%
+}
+\def\NoTableRow#1{%
+ \setbox0=\vbox{\strut They}%
+ \NoTableCellHeight=\ht0
+ \advance\NoTableCellHeight by \dp0
+ \global\CellCount0
+ \NoTableCheckHeightfalse
+ \setbox0=\hbox{#1}%
+ \@tempdima=\ht0
+ \advance\@tempdima by \dp0
+ \FOspaceleft=\pagegoal
+ \advance\FOspaceleft by -\pagetotal
+% \DEBUG{Space check for \the\@tempdima, [\the\FOspaceleft] PageTotal [\the\pagetotal/\the\pagegoal] l.\the\inputlineno}%
+ \ifdim\FOspaceleft<\@tempdima
+ \DEBUG{ .. page in table break fires, l. \the\inputlineno... }%
+ \clearpage
+ \fi
+ \ifdim\@tempdima>\NoTableCellHeight
+%\typeout{row pass 2 at \the\inputlineno, as [\the\@tempdima] > [\the\NoTableCellHeight]}%
+ \global\CellCount0
+ \NoTableCellHeight=\@tempdima
+ \NoTableCheckHeighttrue
+ \vbox{\hbox{#1}}%
+ \else
+ \box0\relax
+ \fi
+ \vskip-\lineskip
+}
+
+\def\NoTableCell#1{%
+ \ifx\FOstartsrow\att@true
+ \vskip-\lineskip
+ \global\CellCount1
+ \else
+ \global\advance\CellCount by 1
+ \fi
+ \ifnum\NCols<1
+ \CurrentCellWidth\z@
+ \setbox0=\hbox{#1}%
+ \CurrentCellWidth=\wd0
+\DEBUG{report \the\CurrentCellWidth}%
+ \else
+ \CurrentCellWidth=\csname fotable\the\AbsoluteTableCount:\the\CellCount\endcsname
+ \fi
+ \advance\CurrentCellWidth by -\FOpaddingstart
+ \advance\CurrentCellWidth by -\FOpaddingend
+ \ifx\FOborderstartstyle\att@solid\advance\CurrentCellWidth by -\FOborderstartwidth\fi
+ \ifx\FOborderendstyle\att@solid\advance\CurrentCellWidth by -\FOborderendwidth\fi
+ \advance\CurrentCellWidth by -\FOmarginright
+ \advance\CurrentCellWidth by -\FOmarginleft
+ \ifnum\FOnumbercolumnsspanned>1
+ \@tempcnta1
+ \loop\ifnum\@tempcnta<\FOnumbercolumnsspanned
+ \advance\@tempcnta by 1
+ \global\advance\CellCount by 1
+ \advance\CurrentCellWidth\csname fotable\the\AbsoluteTableCount:\the\CellCount\endcsname
+% \typeout{add extra column \the\@tempcnta, to reach \FOnumbercolumnsspanned: \the\CurrentCellWidth}%
+ \repeat
+ \fi
+ \ifx\XML@parent\FOTableRow
+ \FOTableCellBlock#1\FOEndTableCellBlock
+ \else
+ \leavevmode\hbox{\FOTableCellBlock#1\FOEndTableCellBlock}%
+ \fi
+ \ifx\FOendsrow\att@true
+ \vskip-\lineskip
+ \global\CellCount0
+ \fi
+}
+
+\def\FOTableCellBlock{%
+ \begin{lrbox}{\CellBox}%
+ \vbox\bgroup
+ \hsize\the\CurrentCellWidth
+ \color@begingroup
+ \FOSetFont{tablecellblock}%
+ \ifx\FOwhitespace\att@pre\obeyspaces\obeylines\fi
+ \ifx\FOwhitespacecollapse\att@false\obeyspaces\fi
+ \ifx\FOwrapoption\att@nowrap\obeylines\fi
+ \ifx\TOverticalalign\att@bottom\vfill\fi
+ }
+
+\def\FOEndTableCellBlock{%
+ \ifx\TOverticalalign\att@top\vfill\fi
+ \color@endgroup
+ \egroup
+ \end{lrbox}%
+ \@tempdima\FOmargintop
+ \advance\@tempdima\FOpaddingbefore
+ \ifx\FOborderbeforestyle\att@solid\advance\@tempdima\FOborderbeforewidth\fi
+% \advance\@tempdima\dp\CellBox
+%\typeout{CELL to height \the\NoTableCellHeight. Padding \FOpaddingbefore,\FOpaddingafter,\FOpaddingstart,\FOpaddingend; Border \FOborderbeforewidth,\FOborderafterwidth,\FOborderstartwidth,\FOborderendwidth; lower by \the\@tempdima; Margin \FOmargintop,\FOmarginbottom,\FOmarginleft,\FOmarginright}%
+\@tempdimb\wd\CellBox
+\advance\@tempdimb by \FOpaddingstart
+\advance\@tempdimb by \FOpaddingend
+\hbox{%
+ \lower\@tempdima
+ \hbox{%
+ \hskip\FOmarginleft
+ \vbox{%
+ \vskip\FOmargintop
+ \vbox{%
+ \ifx\FOborderbeforestyle\att@solid
+ {\color{\FOborderbeforecolor}\hrule\@height\FOborderbeforewidth}%
+ \fi
+ \hbox{%
+ \ifx\FOborderstartstyle\att@solid
+ {\color{\FOborderstartcolor}\vrule\@width\FOborderstartwidth}%
+ \fi
+ \ifx\FObackgroundcolor\att@transparent
+ \else
+ {\color{\FObackgroundcolor}\vrule\@width\@tempdimb\kern-\@tempdimb}%
+ \fi
+ \ifNoTableCheckHeight
+% According to FOdisplayalign property, we put glue
+% before and/or after the cell contents
+ \vtop to \NoTableCellHeight{%
+ \vskip\FOpaddingbefore
+ \ifx\FOdisplayalign\att@auto
+ \else\ifx\FOdisplayalign\att@after
+ \else\ifx\FOdisplayalign\att@before\vfil
+ \else\ifx\FOdisplayalign\att@centered\vfil\fi
+ \fi
+ \fi
+ \fi
+ \hbox{\kern\FOpaddingstart\box\CellBox\kern\FOpaddingend}%
+ \ifx\FOdisplayalign\att@auto\vfil
+ \else\ifx\FOdisplayalign\att@after\vfil
+ \else\ifx\FOdisplayalign\att@before
+ \else\ifx\FOdisplayalign\att@centered\vfil\fi
+ \fi
+ \fi
+ \fi
+ \vskip\FOpaddingafter
+ }%
+ \else
+ \vbox{%
+ \vskip\FOpaddingbefore
+ \hbox{\kern\FOpaddingstart\box\CellBox\kern\FOpaddingend}%
+ \vskip\FOpaddingafter
+ }%
+ \fi
+ \ifx\FOborderendstyle\att@solid
+ {\color{\FOborderendcolor}\vrule\@width\FOborderendwidth}%
+ \fi
+ }%
+ \ifx\FOborderafterstyle\att@solid
+ {\color{\FOborderaftercolor}\hrule\@height\FOborderafterwidth}\fi
+ }%
+ \vskip\FOmarginbottom
+ }%
+ \hskip\FOmarginright
+ }%
+ }%
+}
+
+\def\FOBoxedBlock#1{%
+ \ifdim\@tempdimb=\z@
+ \setbox0=\hbox{#1}\@tempdimb\wd0
+%\typeout{report \the\CurrentCellWidth}%
+ \else
+ \@tempdimb#1%
+ \fi
+ \advance\@tempdimb by -\FOpaddingstart
+ \advance\@tempdimb by -\FOpaddingend
+ \ifx\FOborderstartstyle\att@solid\advance\@tempdimb by -\FOborderstartwidth\fi
+ \ifx\FOborderendstyle\att@solid\advance\@tempdimb by -\FOborderendwidth\fi
+ \advance\@tempdimb by -\FOmarginright
+ \advance\@tempdimb by -\FOmarginleft
+ \begin{lrbox}{\BlockBox}%
+ \vbox\bgroup
+ \hsize\the\@tempdimb
+ \FOSetFont{tableblock}%
+ \color@begingroup
+ \ifx\FOwhitespace\att@pre\obeyspaces\obeylines\fi
+ \ifx\FOwhitespacecollapse\att@false\obeyspaces\fi
+ \ifx\FOwrapoption\att@nowrap\obeylines\fi
+ \parindent\FOtextindent
+ \Quadding
+ \strut
+ }
+
+\def\FOEndBoxedBlock{%
+ \par
+ \color@endgroup
+ \egroup
+ \end{lrbox}%
+ \@tempdimb\FOmargintop
+ \advance\@tempdimb\FOpaddingbefore
+ \ifx\FOborderbeforestyle\att@solid\advance\@tempdimb\FOborderbeforewidth\fi
+% \advance\@tempdimb by \dp\BlockBox
+%\typeout{BLOCK. Padding \FOpaddingbefore,\FOpaddingafter,\FOpaddingstart,\FOpaddingend; Border \FOborderbeforewidth,\FOborderafterwidth,\FOborderstartwidth,\FOborderendwidth; lower by \the\@tempdimb, margin \FOmargintop,\FOmarginbottom,\FOmarginleft,\FOmarginright}%
+\@tempdimc\wd\BlockBox
+\advance\@tempdimc by \FOpaddingstart
+\advance\@tempdimc by \FOpaddingend
+\FOtempdim\FOmarginleft
+\advance\FOtempdim by \FOtextindent
+\hbox{%
+ \lower\@tempdimb
+ \hbox{%
+ \kern\FOtempdim
+ \vbox{%
+ \vskip\FOmargintop
+ \vbox{%
+ \ifx\FOborderbeforestyle\att@solid
+ {\color{\FOborderbeforecolor}\hrule\@height\FOborderbeforewidth}%
+ \fi
+ \hbox{%
+ \ifx\FOborderstartstyle\att@solid
+ {\color{\FOborderstartcolor}\vrule\@width\FOborderstartwidth}\fi
+ \ifx\FObackgroundcolor\att@transparent
+ \else
+ {\color{\FObackgroundcolor}\vrule\@width\@tempdimc\kern-\@tempdimc}%
+ \fi
+ \vbox{%
+ \vskip\FOpaddingbefore
+ \hbox{\kern\FOpaddingstart\box\BlockBox\kern\FOpaddingend}%
+ \vskip\FOpaddingafter
+ }%
+ \ifx\FOborderendstyle\att@solid
+ {\color{\FOborderendcolor}\vrule\@width\FOborderendwidth}\fi
+ }%
+ \ifx\FOborderafterstyle\att@solid
+ {\color{\FOborderaftercolor}\hrule\@height\FOborderafterwidth}\fi
+ }%
+ \vskip\FOmarginbottom
+ }%
+ \kern\FOmarginright
+ }%
+ }%
+}
+
+\def\OldTableCell#1{%
+ \ifx\FOendsrow\att@true
+ \gdef\w@@t{\\}%
+ \else
+ \gdef\w@@t{\tabcellsep}%
+ \fi
+ \ifx\FOstartsrow\att@true
+ \gdef\w@@@t{\\}%
+ \else
+ \gdef\w@@@t{}%
+ \fi
+ \xdef\MyRows{\FOnumberrowsspanned}%
+ \xdef\MyCols{\FOnumbercolumnsspanned}%
+ \ifnum\MyCols>1
+ \gdef\w@t{\multicolumn{\MyCols}{l}{#1}\w@@t}%
+ \else
+ \ifnum\MyRows>1
+ \gdef\w@t{\sbox{\FOBOX}{\hbox{#1}}%
+ \@tempdima\ht\FOBOX
+ \advance\@tempdima by -\baselineskip
+ \raisebox{-\@tempdima}[\z@][\z@]{\usebox{\FOBOX}}\w@@t}%
+ \else
+ \gdef\w@t{\w@@@t#1\w@@t}%
+ \fi
+ \fi
+ \aftergroup\w@t
+}
+%-------------------------------------------
+% utility macros
+\def\protectCS#1{%
+ \begingroup
+ \utfeight@protect@chars
+ \xdef\FOtempCS{#1}%
+ \endgroup
+ \let#1\FOtempCS}%
+\def\GrabFileName#1:#2\@nil{%
+ \DEBUG{Graphic #1 + #2}%
+ \xdef\FOsrcname{#1}%
+}
+\def\NColumns{1}
+\def\Pass#1\\{\expandafter\@Pass#1}
+\def\@Pass#1|#2|#3|#4|{%
+ \columnsep=#1
+ \def\NColumns{#2}%
+ \def\Marginbottom{#3}%
+ \def\Margintop{#4}%
+ }
+\def\FOfiletest#1#2#3#4#5#6#7#8\@{%
+ \def\@tempa{#1#2#3#4#5#6#7}%
+ \def\@tempb{#1#2#3#4#5}%
+ \def\@tempc{#1#2#3#4}%
+ \ifx\@tempa\file@prefix
+ \xdef\FOsrcname{#8}%
+ \else
+ \ifx\@tempb\file@shortprefix
+ \xdef\FOsrcname{#6#7#8}%
+ \else
+ \ifx\@tempc\file@urlprefix
+ \expandafter\FOurlfiletest#5#6#7#8\@empty\@empty\@empty\@empty\@empty\@empty\@empty\@empty\@empty\@empty
+ \else
+ \xdef\FOsrcname{#1#2#3#4#5#6#7#8}%
+ \fi
+ \fi
+ \fi}
+
+\def\FOurlfiletest#1#2#3#4#5#6#7#8){%
+ \def\@tempa{#1#2#3#4#5#6#7}%
+ \def\@tempb{#1#2#3#4#5}%
+ \ifx\file@prefix\@tempa
+ \xdef\FOsrcname{#8}%
+ \else
+ \ifx\@tempb\file@shortprefix
+ \xdef\FOsrcname{#6#7#8}%
+ \else
+ \xdef\FOsrcname{#1#2#3#4#5#6#7#8}%
+ \fi
+ \fi}
+{\catcode`\%=13
+\gdef\percenttest#1%#2#3\@{\ifx#2\relax\def\percentval{#1}\expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+\gdef\TablePercentToDimen#1{\expandafter\percenttest#1\relax%.\@
+ {\@tempdimb\percentval pt\relax\divide\@tempdimb by 100
+ \edef\SCALE{\strip@pt\@tempdimb}\global\@tempdima=\SCALE\TableWidth}{\global\@tempdima#1}
+}
+\gdef\PercentToDimen#1{\expandafter\percenttest#1\relax%.\@
+ {\@tempdimb\percentval pt\relax\divide\@tempdimb by 100
+ \edef\SCALE{\strip@pt\@tempdimb}\global\@tempdima=\SCALE\hsize}{\global\@tempdima#1}
+}
+\gdef\FOSetGWidth{\expandafter\percenttest\FOcontentwidth\relax%.\@
+ {\@tempdima\percentval pt\relax\divide\@tempdima by 100
+ \edef\WSCALE{\strip@pt\@tempdima}\setkeys{Gin}{width=\WSCALE\Gin@nat@width}}{\setkeys{Gin}{width=\FOcontentwidth}}}
+
+\gdef\FOSetGHeight{\expandafter\percenttest\FOcontentheight\relax%.\@
+ {\@tempdima\percentval pt\relax\divide\@tempdima by 100
+ \edef\HSCALE{\strip@pt\@tempdima}\setkeys{Gin}{height=\HSCALE\Gin@nat@height}}{\setkeys{Gin}{height=\FOcontentheight}}}
+
+\gdef\PlayWithFSize#1{\@default\f@size pt
+ \expandafter\percenttest#1\relax%.\@
+ {\dimen@0.01\@default
+ \multiply\dimen@\percentval\relax}{\dimen@#1}\edef\FOfontsizefinal{\the\dimen@}}
+\gdef\PlayWithShift{\expandafter\percenttest\FOverticalalign\relax%.\@
+ {\dimen@0.01\baselineskip\multiply\dimen@\percentval\relax}{\dimen@\FOverticalalign}}
+}
+\def\strip@pt@and@otherjunk#1{\expandafter\rem@ptetc\the#1!}
+\begingroup
+ \catcode`P=12
+ \catcode`T=12
+ \lowercase{\endgroup
+ \gdef\rem@ptetc#1.#2PT#3!{#1\ifnum#2>\z@.#2\fi}%
+}
+\catcode`\/\active
+
+\def\@basiclink#1//#2\@nil#3\@nil#4\@nil{%
+ {%
+\ifx\\#2\\%
+ \href{#4}{\FO@inlinesequence{#1}}%
+\else
+ \href{#4}{\FO@inlinesequence{\XURL{#3}}}%
+\fi
+ }%
+}
+\catcode`\/=12
+%
+\def\BlankPage{%
+ \def\@thehead{\csname\FirstHead\endcsname}%
+ \def\@thefoot{\csname\FirstTail\endcsname}%
+ \let\@themargin\oddsidemargin
+ \def\headheight{\FirstHeadExtent}%
+ \def\tailheight{\FirstTailExtent}%
+ \mark{}%
+ \DEBUG{Blank Page \the\c@page}%
+ \hbox{}
+}
+%-----------------------------------------------
+% longtable
+\LTpre\z@
+\LTpost-10\p@
+\def\LTleft@center{\LTleft=\FOmarginleft plus 1.0fill}
+\def\LTright@center{\LTright=\FOmarginright plus 1.0fill}
+\def\LTleft@start{\LTleft=\FOmarginleft}
+\def\LTright@start{\LTright=\fill}
+\def\LTleft@end{\LTleft=\fill}
+\def\LTright@end{\LTright=\FOmarginright}
+\def\LTleft@justify{\LTleft=\fill}
+\def\LTright@justify{\LTright=\fill}
+\gdef\LeftMargin{\FOmarginleft}
+\gdef\RightMargin{\FOmarginright}
+\gdef\TopMargin{\Margintop}
+\gdef\BottomMargin{\Marginbottom}
+\gdef\EndIndent{\ifx\FOendindent\att@labelend\z@\else\FOendindent\fi}
+\gdef\StartIndent{\ifx\FOstartindent\att@bodystart\z@\else\FOstartindent\fi}
+\gdef\OddTail {}
+\gdef\OddHead {}
+\gdef\EvenTail {}
+\gdef\EvenHead {}
+\gdef\FirstTail {}
+\gdef\FirstHead {}
+\gdef\OddTailExtent{\z@}
+\gdef\OddHeadExtent{\z@}
+\gdef\EvenTailExtent{\z@}
+\gdef\EvenHeadExtent{\z@}
+\gdef\FirstTailExtent{\z@}
+\gdef\FirstHeadExtent{\z@}
+
+\DefineCharacter{8232}{2028}{\newline}
+\DefineCharacter{8208}{2010}{-\/}
+\def\XURL{\begingroup \urlstyle{same}\Url}
+\def\T@pageref#1{%
+ \expandafter\@setref\csname r@#1\endcsname\@secondoffive{#1}%
+}
+\let\@@ReadBookmarks\ReadBookmarks
+\def\ReadBookmarks{{\let\InputIfFileExists\@input\@@ReadBookmarks}}
+\def\XReadBookmarks{%
+ \begingroup
+ \escapechar=`\\%
+ \let\escapechar\@gobble %
+ \def\@@BOOKMARK [##1][##2]##3##4##5{\calc@bm@number{##5}}%
+ \@input{\jobname.out}%
+ \ifx\WriteBookmarks\relax
+ \global\let\WriteBookmarks\relax
+ \fi
+ \def\@@BOOKMARK[##1][##2]##3##4##5{%
+ \def\Hy@temp{##4}%
+ \pdfoutline goto
+ name{##3}%
+ count ##2\check@bm@number{##3}{%
+ \expandafter\strip@prefix\meaning\Hy@temp
+ }%
+ }%
+ {%
+ \def\WriteBookmarks{0}%
+ \@input{\jobname.out}%
+ }%
+ %{\escapechar\m@ne\InputIfFileExists{\jobname.out}{}{}}%
+ \ifx\WriteBookmarks\relax\else
+ \if@filesw\immediate\openout\@outlinefile=\jobname.out
+ \ifHy@typexml
+ \immediate\write\@outlinefile{<relaxxml>\relax}%
+ \fi
+ \fi
+ \fi
+ \endgroup
+}
+
+\def\TableHeader{}
+\def\DECO@{\@firstofone}
+\def\DECO@blink{\uwave}
+\def\DECO@underline{\uline}
+\expandafter\def\csname DECO@line-through\endcsname{\sout}
+\def\QuaddingStart{%
+ \ifx\FOtextalignlast\att@relative
+ \csname startQ@\FOtextalign\endcsname
+ \else
+ \csname startQ@\FOtextalignlast\endcsname
+ \fi
+}%
+\def\QuaddingEnd{%
+ \ifx\FOtextalignlast\att@relative
+ \csname endQ@\FOtextalign\endcsname
+ \else
+ \csname endQ@\FOtextalignlast\endcsname
+ \fi
+}%
+\def\Quadding{%
+ \ifx\FOtextalignlast\att@relative
+ \csname Q@\FOtextalign\endcsname
+ \else
+ \csname Q@\FOtextalignlast\endcsname
+ \fi
+}%
+% page number compression (by David Carlisle)
+
+\def\fopagecitation{\pageref{\FOrefid}}
+%was \hyperlink{\FOrefid}{\pageref{\FOrefid}}}
+\newcount\sortcount
+\newtoks\sorttoks
+\def\fosortpagecitation{%
+ \setbox0\hbox{\global\sortcount=0\expandafter\expandafter\expandafter
+ \@secondoffive\csname r@\FOrefid\endcsname
+ \relax\relax\relax\relax\relax}
+ \let\@elt\fosort@elt
+ \global\sorttoks\expandafter{\expandafter}\the\sorttoks
+ \ifnum\sortcount<\maxdimen
+ \global\sorttoks\expandafter{%
+ \the\expandafter\sorttoks\expandafter\@elt\expandafter{\the\sortcount}}
+ \fi
+ }
+
+\def\fosort@elt#1{%
+ \ifnum#1>\sortcount
+ \global\sorttoks\expandafter{\the\expandafter\sorttoks\expandafter\@elt
+ \expandafter{\the\sortcount}\@elt{#1}}%
+ \global\sortcount\maxdimen
+ \else
+ \ifnum#1<\sortcount
+ \global\sorttoks\expandafter{\the\sorttoks\@elt{#1}}%
+ \fi
+ \fi
+}
+
+\gdef\focompress@elt#1{%
+ \global\advance\sortcount\@ne
+ \ifnum#1=\sortcount
+ \ifx\foheld\relax
+ \edef\foheld{#1}%
+ \else
+ \def\foheld{\textendash#1}%
+ \fi
+ \else
+ \foheld\fosep#1
+ \fi
+ \global\sortcount#1
+ \def\fosep{, }%
+}
+
+% headers
+\def\FirstHead{\csname right-xsl-before\endcsname}
+\def\FirstFoot{\csname right-xsl-after\endcsname}
+\expandafter\def\csname left-xsl-before\endcsname{}
+\expandafter\def\csname left-xsl-after\endcsname{}
+\expandafter\def\csname right-xsl-before\endcsname{}
+\expandafter\def\csname right-xsl-after\endcsname{}
+\@ifundefined{pdfoutput}{}{\def\pdfBorderAttrs{/Border [0 0 0]}}
+
+%color
+\def\@declaredcolor#1{%
+ \@ifundefined{\string\color @#1}%
+ {\expandafter\HTMLXColor#1000000\\{#1}}%
+ {}%
+ \expandafter\let\expandafter\current@color
+ \csname\string\color @#1\endcsname
+ \set@color
+ \ignorespaces}
+
+\def\HTMLXColor#1#2#3#4#5#6#7#8\\#9{%
+% \typeout{Defining color #9 as RGB "#2#3, "#4#5, "#6#7}%
+ \toks@{\definecolor{#9}{RGB}}%
+\uppercase{\the\toks@{"#2#3, "#4#5, "#6#7}}%
+}
+\def\HTMLColor#1#2#3#4#5#6#7#8{%
+ \definecolor{#1}{RGB}{"#3#4, "#5#6, "#7#8}}
+\HTMLColor{aqua}.00FFFF
+\HTMLColor{black}.000000
+\HTMLColor{blue}.0000FF
+\HTMLColor{fuchsia}.FF00FF
+\HTMLColor{gray}.808080
+\HTMLColor{green}.008000
+\HTMLColor{lime}.00FF00
+\HTMLColor{maroon}.800000
+\HTMLColor{navy}.000080
+\HTMLColor{olive}.808000
+\HTMLColor{purple}.800080
+\HTMLColor{red}.FF0000
+\HTMLColor{silver}.C0C0C0
+\HTMLColor{teal}.008080
+\HTMLColor{white}.FFFFFF
+\HTMLColor{yellow}.FFFF00
+
+\definecolor{orange}{cmyk}{0,0.61,0.87,0}
+ \long\def\@firstoffive#1#2#3#4#5{#1}%
+ \long\def\@secondoffive#1#2#3#4#5{#2}%
+ \long\def\@thirdoffive#1#2#3#4#5{#3}%
+ \long\def\@fourthoffive#1#2#3#4#5{#4}%
+ \long\def\@fifthoffive#1#2#3#4#5{#5}%
+
+\expandafter\let\csname Format-1\endcsname\@arabic
+\expandafter\let\csname Format-i\endcsname\@roman
+\expandafter\let\csname Format-I\endcsname\@Roman
+\expandafter\let\csname Format-a\endcsname\@alph
+\expandafter\let\csname Format-A\endcsname\@Alph
+
+\def\FOgeneratePage#1#2\@null{\csname Format-#1\endcsname{\c@page}#2}
+
+\def\@item[#1]{%
+ \if@noparitem
+ \@donoparitem
+ \else
+ \if@inlabel
+ \indent \par
+ \fi
+ \ifhmode
+ \unskip\unskip \par
+ \fi
+ \if@newlist
+% removed this test 2000/11/05. always put in topsep.
+% \if@nobreak
+% \@nbitem
+% \else
+ \addpenalty\@beginparpenalty
+ \addvspace\@topsep
+ \addvspace{-\parskip}%
+% \fi
+ \else
+ \addpenalty\@itempenalty
+ \addvspace\itemsep
+ \fi
+ \global\@inlabeltrue
+ \fi
+ \global\everypar{%
+ \@minipagefalse
+ \global\@newlistfalse
+ \if@inlabel
+ \global\@inlabelfalse
+ {\setbox\z@\lastbox
+ \ifvoid\z@
+ \kern-\itemindent
+ \fi}%
+ \box\@labels
+ \penalty\z@
+ \fi
+ \if@nobreak
+ \global\@nobreakfalse
+ \clubpenalty \@M
+ \else
+ \clubpenalty \@clubpenalty
+ \global\everypar{}%
+ \fi}%
+ \if@noitemarg
+ \@noitemargfalse
+ \if@nmbrlist
+ \refstepcounter\@listctr
+ \fi
+ \fi
+ \sbox\@tempboxa{\makelabel{#1}}%
+%\typeout{LIST at \the\inputlineno, \the\itemindent, \the\labelwidth, \the\wd\@tempboxa}%
+ \global\setbox\@labels\hbox{%
+ \unhbox\@labels
+ \hskip \itemindent
+ \hskip -\labelwidth
+ \hskip -\labelsep
+ \ifdim \wd\@tempboxa >\labelwidth
+ \box\@tempboxa
+ \else
+ \hbox to\labelwidth {\unhbox\@tempboxa}%
+ \fi
+ \hskip \labelsep}%
+ \ignorespaces}
+
+
+% support for markers
+\gdef\FOmarks{}
+
+\gdef\FOaddmarker#1#2{%
+ \ifx\relax#1
+ \else
+ \def\FOtemp{#1}%
+ \ifx\FOtemp\FOmarkerclassname
+ \else
+ \toks@\expandafter{\the\toks@{#1}{#2}}%
+ \fi
+ \expandafter\FOaddmarker
+ \fi}
+
+
+\gdef\FOgetmarker#1#2{%
+ \ifx\relax#1
+ \DEBUG{unknown mark \FOretrieveclassname, at \the\inputlineno}%
+ \else
+ \def\FOtemp{#1}%
+ \ifx\FOtemp\FOthisretrieveclassname
+% \typeout{\the\inputlineno: Retrieve mark (\FOretrieveposition):
+% \FOthisretrieveclassname: #2}%
+ \FOmarkergobble{#2}%
+ \fi
+ \expandafter\FOgetmarker
+ \fi}
+
+\gdef\FOmarkergobble#1#2\relax\relax{\fi\fi#1}
+
+% linebreak
+\def\FOLINEBREAK{%
+\ifnum\FOTableNesting>0
+\else
+ \\
+\fi
+}
+
+
+% vertical spacing
+\newskip\FOafterskip
+\def\FOvspaceafter{%
+\ifFOinOutput
+\else
+ \ifnum\FOTableNesting>0
+ \else
+ \ifx\@empty\FOspaceafter
+ \@tempdima\FOspaceafteroptimum
+ \advance\@tempdima by -\FOspaceafterminimum
+ \@tempdimb\FOspaceafteroptimum
+ \advance\@tempdimb by \FOspaceaftermaximum
+ \FOafterskip\FOspaceafteroptimum plus \@tempdimb minus \@tempdima
+ \else
+ \FOafterskip\FOspaceafter
+ \fi
+ \@tempswafalse
+ \ifx\FOkeepwithnext\att@always\@tempswatrue\fi
+ \ifx\FOkeepwithnextColumn\att@always\@tempswatrue\fi
+ \ifx\FOkeepwithnextPage\att@always\@tempswatrue\fi
+ \if@tempswa\addpenalty{\@M}\fi
+ \addvspace\FOafterskip
+ \fi
+\fi
+}
+
+\def\FOvspacebefore{%
+\ifFOinOutput
+\else
+ \ifx\@empty\FOspacebefore
+ \@tempdima\FOspacebeforeoptimum
+ \advance\@tempdima by -\FOspacebeforeminimum
+ \@tempdimb\FOspacebeforeoptimum
+ \advance\@tempdimb by \FOspacebeforemaximum
+ \@tempskipa\FOspacebeforeoptimum plus \@tempdimb minus \@tempdima
+ \else
+ \@tempskipa\FOspacebefore
+ \fi
+%\typeout{SPACE BEFORE \the\inputlineno: \the\@tempskipa, \FOspacebeforeminimum/\FOspacebeforemaximum/\FOspacebeforeoptimum}%
+ \ifnum\FOTableNesting>0
+ \rule{\z@}{\@tempskipa}%
+ \else
+ \@tempswafalse
+ \ifx\FOkeepwithnext\att@always\@tempswatrue\fi
+ \ifx\FOkeepwithnextColumn\att@always\@tempswatrue\fi
+ \ifx\FOkeepwithnextPage\att@always\@tempswatrue\fi
+ \if@tempswa\addpenalty\@secpenalty\fi
+ \addvspace\@tempskipa
+ \fi
+\fi
+\def\FOspacebefore{\z@}%
+}
+
+% lets do some setup
+% setup
+\paperwidth211mm
+\paperheight297mm
+\hoffset-1in
+\voffset-1in
+\def\fps@table{!htbp}
+\def\fps@figure{!htbp}
+\parindent\z@
+\parskip\z@
+\emergencystretch 3em
+\tabcolsep3pt
+\hbadness=4000
+\hyphenpenalty=400
+\pretolerance=500
+\relpenalty=500
+\tolerance=1000
+\vbadness=3000
+\widowpenalty=8000
+\clubpenalty=8000
+\@twosidetrue
+\fboxsep0pt
+\setcounter{topnumber}{5}
+\renewcommand\topfraction{.9}
+\setcounter{bottomnumber}{12}
+\renewcommand\bottomfraction{.9}
+\setcounter{totalnumber}{6}
+\renewcommand\textfraction{.1}
+\def\FOpdfsetpagesize#1#2{%
+ \@ifundefined{pdfoutput}{}{%
+ \global\pdfpagewidth\paperwidth
+ \global\pdfpageheight\paperheight
+ \DEBUG{Setting pdf size to \the\pdfpagewidth, \the\pdfpageheight}%
+ }%
+}
+\let\SpecialOffset\z@
+% and now read the .cfg
+\openin\@inputcheck fotex.cfg
+\ifeof\@inputcheck\relax
+\else
+ \closein\@inputcheck
+ \input{fotex.cfg}
+\fi
+\begingroup
+\catcode`\^^M\active\catcode`\ \active\gdef\@resetactivechars{\def^^M{<m>}\def {<s>}}\endgroup
+%\catcode`\^^M\active\gdef\@resetactivechars{\def^^M{x}}\endgroup
+
+\def\@outputpage{%
+\begingroup % the \endgroup is put in by \aftergroup
+ \let \protect \noexpand
+% \@resetactivechars
+ \@parboxrestore
+ \shipout \vbox{%
+ \set@typeset@protect
+ \aftergroup \endgroup
+ \aftergroup \set@typeset@protect
+ % correct? or just restore by ending
+ % the group?
+ \if@specialpage
+ \global\@specialpagefalse
+ \def\@thehead{\csname\FirstHead\endcsname}%
+ \def\@thefoot{\csname\FirstTail\endcsname}%
+ \let\@themargin\oddsidemargin
+ \def\headheight{\FirstHeadExtent}%
+ \def\tailheight{\FirstTailExtent}%
+ \else
+ \ifodd\count\z@
+ \def\@thehead{\csname\OddHead\endcsname}%
+ \def\@thefoot{\csname\OddTail\endcsname}%
+ \let\@themargin\oddsidemargin
+ \def\headheight{\OddHeadExtent}%
+ \def\tailheight{\OddTailExtent}%
+ \else
+ \def\@thehead{\csname\EvenHead\endcsname}%
+ \def\@thefoot{\csname\EvenTail\endcsname}%
+ \let\@themargin\evensidemargin
+ \def\headheight{\EvenHeadExtent}%
+ \def\tailheight{\EvenTailExtent}%
+ \fi
+ \fi
+ \@tempdima\textwidth
+ \advance\@tempdima by -\FOheadindent
+ \reset@font
+ \normalsize
+ \normalsfcodes
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+ \@begindvi
+ \vskip \topmargin
+ \moveright\@themargin \vbox {%
+ \setbox\@tempboxa \vbox to\headheight{%
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\hfill\llap{\hb@xt@\@tempdima{\@thehead}}}%
+ \color@endbox
+ \vfil
+ }%
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip \footskip
+ \vskip \bottommargin
+ \@tempdima\textwidth
+ \advance\@tempdima by -\FOheadindent
+ \setbox\@tempboxa \vbox to\tailheight{%
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\hfill\llap{\hb@xt@\@tempdima{\@thefoot}}}%
+ \color@endbox
+ \vfil
+ }%
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ }%
+ }%
+ \global \@colht \textheight
+ \stepcounter{page}%
+ \let\firstmark\botmark
+}
+
+%%%%
+\def\FO@character#1{%
+\ifx\FOverticalalign\att@baseline
+ #1%
+\else
+ \ifx\FOverticalalign\att@super
+ \textsuperscript{#1}%
+ \else
+ \ifx\FOverticalalign\att@sub
+ \textsubscript{#1}%
+ \else
+ \PlayWithShift
+ \raisebox{\dimen@}{#1}%
+ \fi
+ \fi
+\fi
+}
+\def\FO@inlinesequence#1{%
+ \FOSetFont{normal}%
+\ifx\FOverticalalign\att@baseline
+ \csname DECO@\FOtextdecoration\endcsname{\FOlabel#1}%
+\else
+ \ifx\FOverticalalign\att@super
+ \textsuperscript{\csname DECO@\FOtextdecoration\endcsname{\FOlabel#1}}%
+ \else
+ \ifx\FOverticalalign\att@sub
+ \textsubscript{\csname DECO@\FOtextdecoration\endcsname{\FOlabel#1}}%
+ \else
+ \PlayWithShift
+ \raisebox{\dimen@}{\csname DECO@\FOtextdecoration\endcsname{\FOlabel#1}}%
+ \fi
+ \fi
+\fi
+}
+\def\FOboxedsequence#1{%
+\FOSetFont{normal}%
+\ifx\FOborderwidth\@empty\else\fboxrule\FOborderwidth\fi
+\ifx\FOverticalalign\att@baseline
+ \fbox{\csname DECO@\FOtextdecoration\endcsname{\FOlabel#1}}%
+\else
+ \ifFOSuper
+ \fbox{\textsuperscript{\FOlabel#1}}%
+ \else
+ \ifFOSub
+ \fbox{\textsubscript{\FOlabel#1}}%
+ \else
+ \PlayWithShift
+ \fbox{\raisebox{\dimen@}{\FOlabel#1}}%
+ \fi
+ \fi
+\fi
+}
+%
+\def\FOSetStatic{\expandafter\@SetStatic\FOtextindent\\}
+\def\@SetStatic#1\\{\expandafter\@@SetStatic\FOfontsize\\{#1}}
+\def\@@SetStatic#1\\#2{\expandafter\@@@SetStatic\FOfontweight\\{#1}{#2}}
+\def\@@@SetStatic#1\\#2#3{\expandafter\@@@@SetStatic\FOfontvariant\\{#1}{#2}{#3}}
+\def\@@@@SetStatic#1\\#2#3#4{\expandafter\@@@@@SetStatic\FOfontstyle\\{#1}{#2}{#3}{#4}}
+\def\@@@@@SetStatic#1\\#2#3#4#5{\expandafter\@@@@@@SetStatic\FOfontstretch\\{#1}{#2}{#3}{#4}{#5}}
+\def\@@@@@@SetStatic#1\\#2#3#4#5#6{\expandafter\@@@@@@@SetStatic\FOfontfamily\\{#1}{#2}{#3}{#4}{#5}{#6}}
+
+\expandafter\def\csname Static:DummyRegion\endcsname{}
+\def\@@@@@@@SetStatic#1\\#2#3#4#5#6#7#8#9{%
+ \DEBUG{ set up static area Static:#9 [#8]}%
+ \expandafter\gdef\csname Static:#9\endcsname{%
+ {%
+ {\def\XML@parent{}\global\FOinOutputtrue
+ \def\FOwhitespacecollapse{true}%
+ \def\FOwrapoption{wrap}%
+ \def\FOtextalign{start}%
+ \def\FOfontfamily{#1}%
+ \def\FOfontsize{#6}%
+ \def\FOfontstretch{#2}%
+ \def\FOfontvariant{#4}%
+ \def\FOfontweight{#5}%
+ \def\FOfontstyle{#3}#8\global\FOinOutputfalse}}}%
+}
+
+\let\olditem\item
+\def\item{\if@inlabel\leavevmode\fi\olditem}
+\def\FOlabel{%
+ \ifx\@empty\FOid\else
+ % \typeout{Hypertext label \FOid, at \the\inputlineno}%
+ \@bsphack
+ \protected@write\@mainaux{}%
+ {\string\newlabel{\FOid}{{}{\expandafter\FOgeneratePage\FOformat\@null}{}{\FOid}{}}}%
+ \@esphack
+ \hyper@@anchor{\FOid}{\relax}%
+ \global\let\FOid\@empty
+ \fi
+}
+
+\def\FOListBlock{%
+ \FOSetFont{normal}%
+ \get@external@font\xdef\FOlistlabelfont{\external@font}%
+ \ifx\@empty\FOspacebefore
+ \@tempdima\FOspacebeforeoptimum
+ \advance\@tempdima by -\FOspacebeforeminimum
+ \@tempdimb\FOspacebeforeoptimum
+ \advance\@tempdimb by \FOspacebeforemaximum
+ \itemsep\FOspacebeforeoptimum plus \@tempdimb minus \@tempdima
+ \else
+ \itemsep\FOspacebefore
+ \fi
+ \itemindent=\FOstartindent
+ \leftmargin=\FOprovisionaldistancebetweenstarts
+ \rightmargin=\FOmarginright
+ \labelwidth=\FOprovisionaldistancebetweenstarts
+ \advance\labelwidth by -\FOprovisionallabelseparation
+ \expandafter\csname List\FOtextalign\endcsname
+%\typeout{List at \the\inputlineno: labelwidth: \the\labelwidth,
+% labelsep: \the\labelsep, leftmargin: \the\leftmargin, itemindent
+% \the\itemindent, makelabel: \meaning\makelabel,
+% itemsep: \the\itemsep, \FOtextalign}%
+}
+
+\def\FOOutputBlock{%
+ \FOSetFont{output}%
+ \ifFOBlockGrab
+ \FOBoxedBlock{\textwidth}%
+ \fi
+ \ifx\FOtextalignlast\att@relative
+ \csname startQ@\FOtextalign\endcsname
+ \csname Q@\FOtextalign\endcsname
+ \else
+ \csname startQ@\FOtextalignlast\endcsname
+ \csname Q@\FOtextalignlast\endcsname
+ \fi
+}
+
+\def\FONormalBlock{%
+ \let\@x\relax
+ \ifnum\FOTableNesting>0
+ \ifx\FOtextalign\att@centered
+ \centering
+ \fi
+ \let\@x\relax
+ \FOSetFont{normalblock}%
+ \vrule height \f@baselineskip depth \z@ width \z@
+ \else
+ \ifnum\FOinList>0
+ \FOlabel
+ \ifFOListInnerPar\par\FOvspacebefore\fi
+ \ifx\FOwhitespace\att@pre\obeyspaces\obeylines\fi
+ \ifx\FOwhitespacecollapse\att@false\obeyspaces\fi
+ \ifx\FOwrapoption\att@nowrap\obeylines\fi
+ \else
+ \ifx\FObreakbefore\att@page
+ \let\tempID\FOid
+ \penalty -\@M
+ \let\FOid\tempID
+ \else
+ \ifx\FObreakbefore\att@oddpage
+ \let\tempID\FOid
+ \penalty -\@M
+ \ifodd\c@page\else\BlankPage\newpage\fi
+ \let\FOid\tempID
+ \fi
+ \fi
+ \par
+ \FOlabel
+ \Quadding
+ \ifFOBlockGrab
+ \FOBoxedBlock{\linewidth}%
+ \else
+ \FOBorderTop
+ \ifdim\FOpaddingbefore>\z@
+ \vskip\FOpaddingbefore
+ \fi
+ \FOvspacebefore
+ \parindent\FOtextindent
+ \advance\leftskip by \FOpaddingstart
+ \advance\leftskip by \FOmarginleft
+ \advance\rightskip by \FOpaddingend
+ \advance\rightskip by \FOmarginright
+ \fi
+% \par
+ \ifx\FOwhitespace\att@pre\obeyspaces\obeylines\fi
+ \ifx\FOwhitespacecollapse\att@false\obeyspaces\fi
+ \ifx\FOwrapoption\att@nowrap\obeylines\fi
+ \fi
+ \FOSetFont{normal}%
+ \fi
+\@x
+}
+
+\def\FOEndOutputBlock{%
+ \ifx\FOtextalignlast\att@relative
+ \csname endQ@\FOtextalign\endcsname
+ \else
+ \csname endQ@\FOtextalignlast\endcsname
+ \fi
+ \ifFOBlockGrab
+ \FOEndBoxedBlock
+ \fi
+ \par
+}
+\def\FOEndBlock{%
+ \ifx\XML@parent\FOListItemLabel
+ \else
+ \ifnum\FOinList>0
+ \ifFOListInnerPar\par\fi
+ \else
+ \ifnum\FOTableNesting>0
+ \else
+ \FOEndBlockTwo
+ \fi
+ \fi
+ \fi
+}
+
+\def\FOEndBlockTwo{%
+ \par
+ \ifFOBlockGrab
+ \FOEndBoxedBlock
+ \else
+ \ifdim\FOpaddingafter>\z@
+ \vskip\FOpaddingafter
+ \fi
+ \FOBorderBottom
+ \fi
+ \ifx\FObreakafter\att@page
+ \penalty -\@M
+ \else
+ \ifx\FObreakafter\att@oddpage
+ \cleardoublepage
+ \fi
+ \fi
+ \@tempswafalse
+ \ifx\FOkeepwithnext\att@always\@tempswatrue\fi
+ \ifx\FOkeepwithnextColumn\att@always\@tempswatrue\fi
+ \ifx\FOkeepwithnextPage\att@always\@tempswatrue\fi
+ \if@tempswa\nobreak\fi
+ \FOvspaceafter
+ \if@tempswa\@afterheading\fi
+}
+
+
+\def\FOStartGrab#1{%
+ \@tempdima#1
+ \XFOstartindent\FOstartindent
+ \ifnum\XFOstartindent=\z@
+ \else
+ \advance\XFOstartindent by -\FOmarginleft
+ \advance\XFOstartindent by -\FOborderstartwidth
+ \advance\XFOstartindent by -\FOpaddingstart
+ \advance\@tempdima by -\XFOstartindent
+ \fi
+ \advance\@tempdima by -\FOmarginleft
+ \advance\@tempdima by -\FOborderstartwidth
+ \advance\@tempdima by -\FOpaddingstart
+ \XFOendindent\FOendindent
+ \ifx\FOstartindent\att@bodystart
+ \let\FOstartindent\z@
+ \fi
+ \ifx\FOendindent\att@labelend
+ \let\FOendindent\z@
+ \fi
+ \ifnum\XFOendindent=\z@
+ \else
+ \advance\XFOendindent by -\FOpaddingend
+ \advance\XFOendindent by -\FOmarginright
+ \advance\XFOendindent by -\FOborderendwidth
+ \advance\@tempdima by -\XFOendindent
+ \fi
+ \advance\@tempdima by -\FOpaddingend
+ \advance\@tempdima by -\FOmarginright
+ \advance\@tempdima by -\FOborderendwidth
+%\typeout{Block at\the\inputlineno,Padding:\FOpaddingstart/\FOpaddingend,Border:\FOborderstartwidth/\FOborderendwidth,Margin:\FOmarginleft/\FOmarginleft,Indent:\FOstartindent/\FOendindent, \the\XFOstartindent/\the\XFOendindent}%
+%
+ \begin{lrbox}{\BlockBox}%
+ \begin{minipage}[b]{\@tempdima}%
+ \vskip\FOpaddingbefore
+ \parindent\FOtextindent\leftskip\z@\rightskip\z@
+}
+\def\FOEndGrab#1{%
+ \vspace*{\FOpaddingafter}%
+ \end{minipage}%
+ \end{lrbox}%
+%\typeout{Grabbed Block at\the\inputlineno,Padding:\FOpaddingstart/\FOpaddingend,|\FOpaddingbefore/\FOpaddingafter, Border:\FOborderstartwidth/\FOborderendwidth,Margin:\FOmarginleft/\FOmarginleft,Indent:\FOstartindent/\FOendindent, \the\XFOstartindent/\the\XFOendindent}%
+ \FOvspacebefore
+ \@tempdima\ht\BlockBox
+% \advance\@tempdima by \FOpaddingbefore
+% \advance\@tempdima by \FOpaddingafter
+ \advance\@tempdima by \FOborderbeforewidth
+ \advance\@tempdima by \FOborderafterwidth
+ \ifx\FOborderstyle\att@solid
+ \ifx\FObackgroundcolor\att@transparent
+ \fboxrule\FOborderwidth
+ \fboxsep\FOpadding
+ \vbox to \@tempdima{\hsize#1\parindent\z@\vfil
+ \hbox{\hfil\fbox{\usebox{\BlockBox}}\hfil}\vfil}%
+ \else
+ \vbox to \@tempdima{\hsize#1\vfil\fboxsep\FOpadding\fboxrule\FOborderwidth
+ \hbox{\hfil\fcolorbox{\FObordercolor}{\FObackgroundcolor}%
+ {\box\BlockBox}\hfil}\vfil}%
+ \fi
+ \else
+ \vbox to \@tempdima{\hsize#1\parindent\z@\vfil
+ \ifdim\FOborderbeforewidth>\z@
+ {\color{\FOborderbeforecolor}%
+ \vrule width #1 depth \z@ height \FOborderbeforewidth}%
+ \fi
+ \hbox{%
+ \hskip\XFOstartindent
+ \hskip\FOmarginleft
+ \ifdim\FOborderstartwidth>\z@
+ {\color{\FOborderstartcolor}%
+ \vrule width \FOborderstartwidth height \the\@tempdima}%
+ \fi
+ \hskip\FOpaddingstart
+ \ifx\FObackgroundcolor\att@transparent
+ \hbox{\box\BlockBox}%
+ \else
+ \colorbox{\FObackgroundcolor}%
+ {\box\BlockBox}%
+ \fi
+ \hskip\FOpaddingend
+ \ifdim\FOborderendwidth>\z@
+ {\color{\FOborderendcolor}%
+ \vrule width \FOborderendwidth depth \z@ height
+ \the\@tempdima}%
+ \fi
+ \hskip\FOmarginright
+ \hskip\XFOendindent
+ }%
+ \ifdim\FOborderafterwidth>\z@
+ {\color{\FOborderaftercolor}%
+ \vrule width #1 depth \z@ height \FOborderafterwidth }%
+ \fi
+ \vfil
+ }%
+ \fi
+}
+
+\def\FOBorderBottom{%
+ \ifx\FOborderafterstyle\att@solid
+ \ifx\FOborderafterwidth\att@thin\def\FOborderafterwidth{0.4pt}\fi
+ \ifx\FOborderafterwidth\att@medium\def\FOborderafterwidth{0.8pt}\fi
+ \ifx\FOborderafterwidth\att@thick\def\FOborderafterwidth{1.2pt}\fi
+ \else
+ \def\FOborderafterwidth{\z@}%
+ \fi
+ \ifx\FOborderbeforestyle\att@solid
+ \ifx\FOborderbeforewidth\att@thin\def\FOborderbeforewidth{0.4pt}\fi
+ \ifx\FOborderbeforewidth\att@medium\def\FOborderbeforewidth{0.8pt}\fi
+ \ifx\FOborderbeforewidth\att@thick\def\FOborderbeforewidth{1.2pt}\fi
+ \FOBlockGrabtrue
+ \else
+ \def\FOborderbeforewidth{\z@}%
+ \fi
+ \ifdim\FOborderafterwidth>\z@
+ \ifx\FOborderafterstyle\att@solid
+ {\color{\FObordercolor}\hrule height \FOborderafterwidth}%
+ \fi
+ \fi
+}
+
+\def\FOBorderTop{%
+ \ifdim\FOborderbeforewidth>\z@
+ \ifx\FOborderbeforestyle\att@solid
+ {\color{\FObordercolor}\hrule height \FOborderbeforewidth}%
+ \fi
+ \fi
+}
+
+\def\FOfootnotemark{\protect\@FOfootnotemark}
+\def\@FOfootnotemark#1{% tag
+ \def\@thefnmark{#1}%
+ \expandafter\let\csname p@footnote\endcsname\relax
+ \@footnotemark%
+}
+\def\FOfootnotetext{\protect\@FOfootnotetext}
+\def\@FOfootnotetext#1#2{% plain tag and text, no interpretation
+ \def\@thefnmark{#1}%
+ \expandafter\let\csname p@footnote\endcsname\relax
+ \@footnotetext{\FOlabel#2}}
+
+\def\FOplainfootmark#1{#1}
+\long\def\FOplainfoottext#1{\insert\footins{%
+ \reset@font\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \color@begingroup
+ #1\unskip\ifhmode\nobreak\fi\vskip\lineskip
+ \color@endgroup}%
+}
+\ColSpecs={}%
+\NCols0
+\RowCount0
+\def\doTable#1\\#2{%
+ \par
+ \advance\leftskip by \FOpaddingstart
+ \advance\rightskip by \FOpaddingend
+ \advance\rightskip by \FOmarginright
+ \advance\leftskip by \FOmarginleft
+ \FOSetFont{normal}%
+ \csname LTleft@\FOtextalign\endcsname
+ \csname LTright@\FOtextalign\endcsname
+%\typeout{LT: \FOtextalign, \the\LTleft, \the\LTright}%
+ \FOlabel
+ \ifnum\NColumns>1
+ \tabular{#1}
+ \else
+ \ifnum\FOTableNesting>1
+ \tabular{#1}%
+ \else
+ \longtable{#1}%
+ \fi
+ \fi
+ #2}
+
+\newdimen\@default
+\@default=10pt
+
+% set up hyphenation and font-related things
+\def\LastLanguage{(undefined)}
+\selectlanguage{english}
+
+\def\LoadLanguage#1{%
+ \begingroup\utfeight@protect@chars\xdef\newL{#1}\endgroup
+% \@ifundefined{L@\newL}{%
+% \DEBUG{WARNING: unknown language \newL, loading english}%
+% \csname L@us\endcsname
+% }{%
+ \ifx\newL\LastLanguage
+ \else
+ \DEBUG{\the\inputlineno: hyphenation \newL, to replace \LastLanguage}%
+ \csname L@\newL\endcsname
+ \fi
+%}
+\edef\LastLanguage{\newL}}
+
+\def\FOSetHyphenation{%
+ \ifx\FOhyphenate\att@true
+ \LoadLanguage{\FOlanguage}%
+ \hyphenpenalty=\exhyphenpenalty
+ \else
+ \hyphenpenalty=10000
+ \fi
+}
+\def\FOSetFont#1{%
+ \FOSetHyphenation
+ \edef\LaTeXshape{\csname Width@\FOfontstretch\endcsname
+ \csname Weight@\FOfontweight\endcsname}%
+ \ifx\LaTeXshape\@empty\def\LaTeXshape{m}\fi
+\edef\fFamName{\FOfontfamily}%
+%\typeout{#1 At \the\inputlineno, \FOfontweight, \FOfontstyle,
+% \FOfontsize, \FOtextalign, \LaTeXshape}%
+ \edef\f@series{\LaTeXshape}%
+ \edef\f@shape{\csname Posture@\FOfontstyle\endcsname}%
+ \ifx\FOfontvariant\att@smallcaps
+ \def\f@shape{sc}%
+ \fi
+ \let\f@family\relax
+ \@for\FOfoo:=\FOfontfamily\do{%
+ \ifx\f@family\relax
+ \expandafter\let\expandafter\f@family
+ \csname Family@\FOfoo\endcsname
+ \fi}%
+ \ifx\f@family\relax
+ \def\f@family{\csname Family@\Defaultx@fontfamily\endcsname}%
+ \fi
+ \FOSetFontSize
+ \selectfont
+ \ifx\FOcolor\@empty
+ \else
+ \color{\FOcolor}%
+ \fi
+}
+\expandafter\def\csname size-xx-small\endcsname{7pt}
+\expandafter\def\csname size-x-small\endcsname{8pt}
+\expandafter\def\csname size-small\endcsname{9pt}
+\expandafter\def\csname size-medium\endcsname{10pt}
+\expandafter\def\csname size-large\endcsname{14.4pt}
+\expandafter\def\csname size-x-large\endcsname{18pt}
+\expandafter\def\csname size-xx-large\endcsname{20pt}
+\def\computeFOfontsize{%
+ \expandafter\ifx\csname size-\FOfontsize\endcsname\relax
+ \PlayWithFSize\FOfontsize
+ \else
+ \edef\FOfontsizefinal{\csname size-\FOfontsize\endcsname}%
+ \fi
+}
+\def\FOSetFootFont{%
+ \computeFOfontsize
+ \ifx\FOlineheight\att@normal
+ \@tempdima\FOfontsizefinal
+ \multiply\@tempdima by 12
+ \divide\@tempdima by 10
+ \set@fontsize\FOfootnotesize{\FOfontsizefinal}{\@tempdima}%
+ \else
+ \@setfontsize\FOfootnotesize{\FOfontsizefinal}{\FOlineheight}%
+ \fi
+}
+\def\FOSetFontSize{%
+ \computeFOfontsize
+ \ifx\FOlineheight\att@normal
+ \@tempdima\FOfontsizefinal
+ \multiply\@tempdima by 12
+ \divide\@tempdima by 10
+ \set@fontsize\baselinestretch{\FOfontsizefinal}{\@tempdima}%
+ \else
+ \set@fontsize\baselinestretch{\FOfontsizefinal}{\FOlineheight}%
+ \fi
+}
+
+\DeclareRobustCommand*\textsubscript[1]{%
+ \@textsubscript{\selectfont#1}}
+\def\@textsubscript#1{%
+ {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}
+\def\reserved@e{}
+\def\FOSetPage{%
+ \bottommargin\Marginbottom
+ \headsep\Margintop
+ \topmargin\MasterTopMargin
+ \advance\topmargin by \SpecialOffset
+ \textheight\paperheight
+ \textwidth\paperwidth
+ \advance\textheight by -\FirstHeadExtent
+ \advance\textheight by -\FirstTailExtent
+ \advance\textheight by -\MasterTopMargin
+ \advance\textheight by -\Margintop
+ \advance\textheight by -\MasterBottomMargin
+ \advance\textheight by -\Marginbottom
+ \advance\textwidth by -\MasterLeftMargin
+ \advance\textwidth by -\MasterRightMargin
+ \FOpdfsetpagesize{\paperwidth}{\paperheight}
+ \@colht\textheight
+ \@colroom\textheight
+ \vsize\textheight
+ \linewidth\textwidth
+ \columnwidth\textwidth
+ \hsize\columnwidth \linewidth\hsize
+ \def\headheight{12pt}%
+ \DEBUG{Page size is \the\textwidth/\the\textheight,
+ on paper \the\paperwidth/\the\paperheight,^^J
+ with paper margins \the\MasterRightMargin/\the\MasterLeftMargin,
+ and region margins \the\topmargin/\the\MasterBottomMargin;^^J
+ footskip is \the\footskip, headsep is \the\headsep^^J
+ evensidemargin \the\evensidemargin, oddsidemargin \the\oddsidemargin}%
+ \global\@specialpagetrue
+}
+% don't ask
+\def\supppdf{supp-pdf}
+\let\FOinputIfFileExists\InputIfFileExists
+\def\InputIfFileExists#1#2#3{%
+ {\def\@tempa{#1}\ifx\@tempa\supppdf\else
+ \FOinputIfFileExists{#1}{#2}{#3}\fi}}
+%\catcode`^^M=10
+\providecommand\textasciitilde{~}
+
+\define@key{Gin}{scale}{%
+ \if@tempswa
+ \edef\@tempa{\toks@{\noexpand\Gscale@box{#1}[#1]{\the\toks@}}}%
+ \@tempa
+ \else
+ \def\Gin@req@sizes{%
+ \def\Gin@scalex{#1}\let\Gin@scaley\Gin@exclamation
+ \Gin@req@height\Gin@scalex\Gin@nat@height
+ \Gin@req@width\Gin@scalex\Gin@nat@width}%
+ \fi
+ \@tempswatrue}
+
+
+\def\usewhitespace{%
+ \UnicodeCharacter{13}{ \ignorespaces}%
+ \UnicodeCharacter{32}{ \ignorespaces}%
+ \UnicodeCharacter{9}{ \ignorespaces}%
+}
+\def\ignorewhitespace{%
+ \UnicodeCharacter{13}{}%
+ \UnicodeCharacter{32}{}%
+ \UnicodeCharacter{9}{}%
+}
+
+% taken from Heiko Oberdiek's epstopdf.sty
+% but the redefinitions need to be global
+\global\let\orgGin@setfile\Gin@setfile
+\global\def\Gin@setfile#1#2#3{%
+ \if`\@car #3\relax\@nil
+ \let\Gin@base\filename@base
+ \immediate\write18{\@cdr #3\@empty\@nil}%
+ \orgGin@setfile{#1}{#2}{\filename@base #2}%
+ \else
+ \orgGin@setfile{#1}{#2}{#3}%
+ \fi
+}
+
+% support .gif and .eps
+\g@addto@macro\Gin@extensions{,.eps}
+\g@addto@macro\Gin@extensions{,.gif}
+\@namedef{Gin@rule@.eps}#1{{pdf}{.pdf}{`epstopdf #1}}
+\@namedef{Gin@rule@.gif}#1{{png}{.png}{`giftopng #1}}
+
+\endinput
diff --git a/macros/xmltex/contrib/passivetex/fotex.xmt b/macros/xmltex/contrib/passivetex/fotex.xmt
new file mode 100644
index 0000000000..4ddb49bd1e
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/fotex.xmt
@@ -0,0 +1,1644 @@
+% $Id: //depot/Master/texmf/tex/xmltex/passivetex/fotex.xmt#90 $, $Date: 2002/06/25 $
+%
+% PassiveTeX version 1.17
+%
+% Copyright 2002 Sebastian Rahtz/Oxford University
+% <sebastian.rahtz@oucs.ox.ac.uk>
+%
+% Permission is hereby granted, free of charge, to any person obtaining
+% a copy of this software and any associated documentation files (the
+% ``Software''), to deal in the Software without restriction, including
+% without limitation the rights to use, copy, modify, merge, publish,
+% distribute, sublicense, and/or sell copies of the Software, and to
+% permit persons to whom the Software is furnished to do so, subject to
+% the following conditions:
+%
+% The above copyright notice and this permission notice shall be included
+% in all copies or substantial portions of the Software.
+%
+% Includes fixes from Tomas Bures <ghort@pauline.vellum.cz>
+% Yura Zotov <yznews@hotbox.ru>
+% Anton V. Boyarshinov <boyarsh@ru.echo.fr>
+\DeclareNamespace{fotex}{http://www.tug.org/fotex}
+\DeclareNamespace{fo}{http://www.w3.org/1999/XSL/Format}
+\def\string@autoauto{autoauto}
+\XMLstring\FirstOnPage<>first-starting-within-page</>
+\XMLstring\LastOnPage<>last-starting-within-page</>
+\XMLstring\LINK<>LINK</>
+\XMLstring\file@urlprefix<>url(</>
+\XMLstring\file@prefix<>file://</>
+\XMLstring\file@shortprefix<>file:</>
+\XMLstringX\prop@width<>proportional-column-width(1)</>
+\XMLstringX\@staticafter<>xsl-after</>
+\XMLstringX\@staticbefore<>xsl-before</>
+\XMLstringX\@staticstart<>xsl-start</>
+\XMLstring\att@labelend<>label-end()</>
+\XMLstring\att@bodystart<>body-start()</>
+\XMLstringX\att@NaN<>NaN</>
+\XMLstringX\att@all<>all</>
+\XMLstringX\att@always<>always</>
+\XMLstringX\att@any<>any</>
+\XMLstringX\att@auto<>auto</>
+\XMLstringX\att@autoodd<>auto-odd</>
+\XMLstringX\att@autoeven<>auto-even</>
+\XMLstringX\att@endonodd<>end-on-odd</>
+\XMLstringX\att@endoneven<>end-on-even</>
+\XMLstringX\att@baseline<>baseline</>
+\XMLstringX\att@blank<>blank</>
+\XMLstringX\att@black<>black</>
+\XMLstringX\att@bottom<>bottom</>
+\XMLstringX\att@centered<>center</>
+\XMLstringX\att@false<>false</>
+\XMLstringX\att@first@starting@within@page<>first-starting-within-page</>
+\XMLstringX\att@first<>first</>
+\XMLstringX\att@even<>even</>
+\XMLstringX\att@odd<>odd</>
+\XMLstringX\att@lr@tb<>lr-tb</>
+\XMLstringX\att@maximum<>maximum</>
+\XMLstringX\att@maximumuniform<>maximum-uniform</>
+\XMLstringX\att@medium<>medium</>
+\XMLstringX\att@no<>no</>
+\XMLstringX\att@no@limit<>no-limit</>
+\XMLstringX\att@none<>none</>
+\XMLstringX\att@normal<>normal</>
+\XMLstringX\att@nowrap<>no-wrap</>
+\XMLstringX\att@oddpage<>odd-page</>
+\XMLstringX\att@page<>page</>
+\XMLstringX\att@page@sequence<>page-sequence</>
+\XMLstringX\att@pre<>pre</>
+\XMLstringX\att@preserve<>preserve</>
+\XMLstringX\att@relative<>relative</>
+\XMLstringX\att@repeat<>repeat</>
+\XMLstringX\att@replace<>replace</>
+\XMLstringX\att@scroll<>scroll</>
+\XMLstringX\att@scaletofit<>scale-to-fit</>
+\XMLstringX\att@show<>show</>
+\XMLstringX\att@smallcaps<>small-caps</>
+\XMLstringX\att@solid<>solid</>
+\XMLstringX\att@static<>static</>
+\XMLstringX\att@sub<>sub</>
+\XMLstringX\att@super<>super</>
+\XMLstringX\att@top<>top</>
+\XMLstringX\att@transparent<>transparent</>
+\XMLstringX\att@true<>true</>
+\XMLstringX\att@tiny<>true</>
+\XMLstringX\att@thin<>thin</>
+\XMLstringX\att@thick<>thick</>
+\XMLstringX\att@uniform<>uniform</>
+\XMLstringX\att@use@font@metrics<>use-font-metrics</>
+\XMLstringX\att@visible<>visible</>
+\XMLstringX\att@xsl@any<>xsl-any</>
+\XMLstringX\att@yes<>yes</>
+\XMLstringX\leader@pattern@space<>space</>
+\XMLstringX\leader@pattern@rule<>rule</>
+\XMLstringX\leader@pattern@dots<>dots</>
+\XMLstringX\rule@style@dashed<>dashed</>
+\XMLstringX\rule@style@dotted<>dotted</>
+\XMLnamespaceattributeX{fo}{media-usage}{\FOmediausage}{}
+% The "media-usage" property is used to control
+% how the selected display medium is used to
+% present the page(s) specified by the stylesheet.
+\XMLnamespaceattributeX{fo}{text-altitude}{\FOtextaltitude}{}
+% Specifies the "height" to be used for the ascent
+% above the dominant baseline
+\XMLnamespaceattributeX{fo}{text-depth}{\FOtextdepth}{}
+% Specifies the "depth" to be used for the descent
+% below the domiant baseline.
+%auto | absolute | fixed | inherit
+%\XMLnamespaceattributeX{fo}{absolute-position}{\FOabsoluteposition}{auto}
+%link | visited | active | hover | focus
+%\XMLnamespaceattributeX{fo}{active-state}{\FOactivestate}{}
+%auto | <percentage> | <length> | inherit
+\XMLnamespaceattributeX{fo}{alignment-adjust}{\FOalignmentadjust}{auto}
+%yes | no
+%\XMLnamespaceattributeX{fo}{auto-restore}{\FOautorestore}{\inherit}
+%<angle> | [[ left-side | far-left | left
+%| center-left | center | center-right | right | far-right | right-side
+%] || behind ] | leftwards | rightwards | inherit
+%\XMLnamespaceattributeX{fo}{azimuth}{\FOazimuth}{\inherit}
+%[<background-color> ||
+%<background-image>
+%|| <background-repeat> || <background-attachment> || <background-position>
+%| ]]inherit
+\XMLnamespaceattributeX{fo}{background}{\FObackground}{}
+%scroll | fixed | inherit
+%\XMLnamespaceattributeX{fo}{background-attachment}{\FObackgroundattachment}{scroll}
+%<color> | transparent | inherit
+\XMLnamespaceattribute{fo}{background-color}{\FObackgroundcolor}{transparent}
+%<uri> | none | inherit
+%\XMLnamespaceattributeX{fo}{background-image}{\FObackgroundimage}{none}
+%[ [<percentage> | <length> ]{1,2} |
+% [ [top | center | bottom] || [left | center | right] ] ] | inherit
+%\XMLnamespaceattributeX{fo}{background-position}{\FObackgroundposition}{0\% 0\%}
+%<percentage> | <length> |
+%left | center | right | inherit
+%\XMLnamespaceattributeX{fo}{background-position-horizontal}{\FObackgroundpositionhorizontal}{0\%}
+%<percentage> | <length> |
+%top | center | bottom | inherit
+%\XMLnamespaceattributeX{fo}{background-position-vertical}{\FObackgroundpositionvertical}{0\%}
+%repeat | repeat-x | repeat-y | no-repeat | inherit
+%\XMLnamespaceattributeX{fo}{background-repeat}{\FObackgroundrepeat}{repeat}
+%baseline | before-edge
+%| text-before-edge | middle | after-edge
+%| text-after-edge | ideographic | alphabetic | hanging | mathematical
+%| inherit
+%\XMLnamespaceattributeX{fo}{baseline-identifier}{\FObaselineidentifier}{}
+%baseline | sub | super | <percentage> | <length> | inherit
+\XMLnamespaceattributeX{fo}{baseline-shift}{\FObaselineshift}{baseline}
+%blank | not-blank | any | inherit
+\XMLnamespaceattributeX{fo}{blank-or-not-blank}{\FOblankornotblank}{any}
+%auto | <length> | <percentage> | <length-range> | inherit
+%\XMLnamespaceattributeX{fo}{block-progression-dimension}{\FOblockprogressiondimension}{auto}
+%[ <border-width> || <border-style> || <color> ] | inherit
+\XMLnamespaceattributeX{fo}{border}{\FOborder}{}
+%<color> | inherit
+\XMLnamespaceattribute{fo}{border-after-color}{\FOborderaftercolor}{\FOcolor}
+%<border-style> | inherit
+\XMLnamespaceattributeX{fo}{border-after-style}{\FOborderafterstyle}{none}
+%<border-width> | <length-conditional> | inherit
+\XMLnamespaceattribute{fo}{border-after-width}{\FOborderafterwidth}{medium}
+%<color> | inherit
+\XMLnamespaceattribute{fo}{border-before-color}{\FOborderbeforecolor}{\FOcolor}
+%<border-style> | inherit
+\XMLnamespaceattributeX{fo}{border-before-style}{\FOborderbeforestyle}{none}
+%<border-width> | <length-conditional> | inherit
+\XMLnamespaceattribute{fo}{border-before-width}{\FOborderbeforewidth}{medium}
+\XMLnamespaceattributeX{fo}{border-collapse}{\FObordercollapse}{\inherit}
+%<color>{1,4} | transparent | inherit
+\XMLnamespaceattribute{fo}{border-color}{\FObordercolor}{black}
+%<color> | inherit
+\XMLnamespaceattribute{fo}{border-end-color}{\FOborderendcolor}{\FOcolor}
+%<border-style> | inherit
+\XMLnamespaceattributeX{fo}{border-end-style}{\FOborderendstyle}{none}
+%<border-width> | inherit
+\XMLnamespaceattributeX{fo}{border-end-width}{\FOborderendwidth}{medium}
+\XMLnamespaceattributeX{fo}{border-separation}{\FOborderseparation}{\inherit}
+%<length> <length>? | inherit
+\XMLnamespaceattributeX{fo}{border-spacing}{\FOborderspacing}{\inherit}
+%<color> | inherit
+\XMLnamespaceattribute{fo}{border-start-color}{\FOborderstartcolor}{\FOcolor}
+%<border-style> | inherit
+\XMLnamespaceattributeX{fo}{border-start-style}{\FOborderstartstyle}{none}
+%<border-width> | inherit
+\XMLnamespaceattributeX{fo}{border-start-width}{\FOborderstartwidth}{medium}
+%<border-style>{1,4} | inherit
+\XMLnamespaceattributeX{fo}{border-style}{\FOborderstyle}{}
+%<length> | <percentage> | auto | inherit
+\XMLnamespaceattributeX{fo}{border-width}{\FOborderwidth}{}
+\XMLnamespaceattributeX{fo}{border-bottom}{\FOborderbottom}{\LINK}
+\XMLnamespaceattribute{fo}{border-bottom-color}{\FOborderbottomcolor}{\LINK}
+\XMLnamespaceattributeX{fo}{border-bottom-style}{\FOborderbottomstyle}{\LINK}
+\XMLnamespaceattributeX{fo}{border-bottom-width}{\FOborderbottomwidth}{\LINK}
+\XMLnamespaceattributeX{fo}{border-left}{\FOborderleft}{\LINK}
+\XMLnamespaceattribute{fo}{border-left-color}{\FOborderleftcolor}{\LINK}
+\XMLnamespaceattributeX{fo}{border-left-style}{\FOborderleftstyle}{\LINK}
+\XMLnamespaceattributeX{fo}{border-left-width}{\FOborderleftwidth}{\LINK}
+\XMLnamespaceattributeX{fo}{border-right}{\FOborderright}{\LINK}
+\XMLnamespaceattribute{fo}{border-right-color}{\FOborderrightcolor}{\LINK}
+\XMLnamespaceattributeX{fo}{border-right-style}{\FOborderrightstyle}{\LINK}
+\XMLnamespaceattributeX{fo}{border-right-width}{\FOborderrightwidth}{\LINK}
+\XMLnamespaceattributeX{fo}{border-top}{\FObordertop}{\LINK}
+\XMLnamespaceattribute{fo}{border-top-color}{\FObordertopcolor}{\LINK}
+\XMLnamespaceattributeX{fo}{border-top-style}{\FObordertopstyle}{\LINK}
+\XMLnamespaceattributeX{fo}{border-top-width}{\FObordertopwidth}{\LINK}
+
+
+%<length> | <percentage> | auto | inherit
+\XMLnamespaceattributeX{fo}{bottom}{\FObottom}{auto}
+%auto | column | page | even-page | odd-page | inherit
+\XMLnamespaceattributeX{fo}{break-after}{\FObreakafter}{auto}
+%auto | column | page | even-page | odd-page | inherit
+\XMLnamespaceattributeX{fo}{break-before}{\FObreakbefore}{auto}
+%before | after | start | end | top | bottom | left | right | inherit
+\XMLnamespaceattributeX{fo}{caption-side}{\FOcaptionside}{\inherit}
+%<name>
+\XMLnamespaceattributeX{fo}{case-name}{\FOcasename}{}
+%<string>
+\XMLnamespaceattributeX{fo}{case-title}{\FOcasetitle}{}
+%<character>
+\XMLnamespaceattribute{fo}{character}{\FOcharacter}{}
+%start | end | left | right | both | none | inherit
+\XMLnamespaceattributeX{fo}{clear}{\FOclear}{none}
+%<shape> | auto | inherit
+\XMLnamespaceattributeX{fo}{clip}{\FOclip}{auto}
+%<color> | inherit
+\XMLnamespaceattribute{fo}{color}{\FOcolor}{\inherit}
+%<name> | inherit
+\XMLnamespaceattributeX{fo}{color-profile-name}{\FOcolorprofilename}{}
+%<number> | inherit
+\XMLnamespaceattributeX{fo}{column-count}{\FOcolumncount}{1}
+%<length> | <percentage> | inherit
+\XMLnamespaceattributeX{fo}{column-gap}{\FOcolumngap}{12.0pt}
+%<number>
+\XMLnamespaceattributeX{fo}{column-number}{\FOcolumnnumber}{}
+%<length>
+\XMLnamespaceattribute{fo}{column-width}{\FOcolumnwidth}{}
+%<string> | auto
+%\XMLnamespaceattributeX{fo}{content-type}{\FOcontenttype}{auto}
+
+%none | <country> | inherit
+\XMLnamespaceattributeX{fo}{country}{\FOcountry}{\inherit}
+%<cue-before> || <cue-after> | inherit
+%\XMLnamespaceattributeX{fo}{cue}{\FOcue}{}
+%<uri> | none | inherit
+%\XMLnamespaceattributeX{fo}{cue-after}{\FOcueafter}{none}
+%<uri> | none | inherit
+%\XMLnamespaceattributeX{fo}{cue-before}{\FOcuebefore}{none}
+%<length>
+%\XMLnamespaceattributeX{fo}{destination-placement-offset}{\FOdestinationplacementoffset}{\z@}
+%ltr | rtl | inherit
+\XMLnamespaceattributeX{fo}{direction}{\FOdirection}{\inherit}
+%auto | before | center | after | inherit
+\XMLnamespaceattributeX{fo}{display-align}{\FOdisplayalign}{\inherit}
+%auto | autosense-script | no-change | reset-size
+%| ideographic | alphabetic | hanging | mathematical | inherit
+%\XMLnamespaceattributeX{fo}{dominant-baseline}{\FOdominantbaseline}{auto}
+%<angle> | below | level | above | higher | lower | inherit
+%\XMLnamespaceattributeX{fo}{elevation}{\FOelevation}{\inherit}
+%show | hide | inherit
+\XMLnamespaceattributeX{fo}{empty-cells}{\FOemptycells}{\inherit}
+%<length> | inherit
+\XMLnamespaceattribute{fo}{end-indent}{\FOendindent}{\inherit}
+%yes | no
+%\XMLnamespaceattributeX{fo}{ends-row}{\FOendsrow}{no}
+%<length> | <percentage> | inherit
+\XMLnamespaceattributeX{fo}{extent}{\FOextent}{0.0pt}
+%<uri-reference>
+\XMLnamespaceattributeX{fo}{external-destination}{\FOexternaldestination}{}
+%before | start | end | left | right | none | inherit
+\XMLnamespaceattributeX{fo}{float}{\FOfloat}{none}
+%<name>
+\XMLnamespaceattributeX{fo}{flow-name}{\FOflowname}{}
+%[ [ <font-style> || <font-variant>
+%|| <font-weight> ]? <font-size> [ / <line-height>]? <font-family>
+%] | caption | icon | menu | message-box | small-caption | status-bar
+%| inherit
+\XMLnamespaceattributeX{fo}{font}{\FOfont}{\inherit}
+%[[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit
+\XMLnamespaceattributeX{fo}{font-family}{\FOfontfamily}{\inherit}
+%\XMLnamespaceattributeX{fo}{font-selection-strategy}{\FOselectionstrategy}{auto}
+%<absolute-size> | <relative-size> | <length> | <percentage> | inherit
+\XMLnamespaceattribute{fo}{font-size}{\FOfontsize}{\inherit}
+%<number> | none | inherit
+\XMLnamespaceattributeX{fo}{font-size-adjust}{\FOfontsizeadjust}{\inherit}
+%normal | wider | narrower | ultra-condensed
+% | extra-condensed | condensed | semi-condensed | semi-expanded |
+% expanded | extra-expanded | ultra-expanded |inherit
+\XMLnamespaceattributeX{fo}{font-stretch}{\FOfontstretch}{\inherit}
+%normal | italic | oblique | backslant | inherit
+\XMLnamespaceattributeX{fo}{font-style}{\FOfontstyle}{\inherit}
+%normal | small-caps | inherit
+\XMLnamespaceattributeX{fo}{font-variant}{\FOfontvariant}{\inherit}
+%normal | bold | bolder | lighter | 100 | 200
+% | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit
+\XMLnamespaceattributeX{fo}{font-weight}{\FOfontweight}{\inherit}
+%auto | even | odd | end-on-even | end-on-odd | no-force | inherit
+\XMLnamespaceattributeX{fo}{force-page-count}{\FOforcepagecount}{auto}
+%<string>
+\XMLnamespaceattributeX{fo}{format}{\FOformat}{\inherit}
+%<angle> | inherit
+%\XMLnamespaceattributeX{fo}{glyph-orientation-horizontal}{\FOglyphorientationhorizontal}{\inherit}
+%auto | <angle> | inherit
+%\XMLnamespaceattributeX{fo}{glyph-orientation-vertical}{\FOglyphorientationvertical}{\inherit}
+%<character>
+\XMLnamespaceattributeX{fo}{grouping-separator}{\FOgroupingseparator}{}
+%<number>
+%\XMLnamespaceattributeX{fo}{grouping-size}{\FOgroupingsize}{}
+%<length> | <percentage> | auto | inherit
+\XMLnamespaceattributeX{fo}{height}{\FOheight}{auto}
+%false | true | inherit
+\XMLnamespaceattributeX{fo}{hyphenate}{\FOhyphenate}{\inherit}
+%<character> | inherit
+\XMLnamespaceattributeX{fo}{hyphenation-character}{\FOhyphenationcharacter}{\inherit}
+%auto | column | page | inherit
+%\XMLnamespaceattributeX{fo}{hyphenation-keep}{\FOhyphenationkeep}{\inherit}
+%no-limit | <number> | inherit
+%\XMLnamespaceattributeX{fo}{hyphenation-ladder-count}{\FOhyphenationladdercount}{\inherit}
+%<number> | inherit
+\XMLnamespaceattributeX{fo}{hyphenation-push-character-count}{\FOhyphenationpushcharactercount}{\inherit}
+%<number> | inherit
+%\XMLnamespaceattributeX{fo}{hyphenation-remain-character-count}{\FOhyphenationremaincharactercount}{\inherit}
+% <id>
+\XMLnamespaceattributeX{fo}{id}{\FOid}{}
+%yes | no
+%\XMLnamespaceattributeX{fo}{indicate-destination}{\FOindicatedestination}{no}
+%auto | auto-odd | auto-even | <number> | inherit
+\XMLnamespaceattributeX{fo}{initial-page-number}{\FOinitialpagenumber}{auto}
+%auto | <length> | <percentage> | <length-range> | inherit
+%\XMLnamespaceattributeX{fo}{inline-progression-dimension}{\FOinlineprogressiondimension}{auto}
+%null string | <idref>
+\XMLnamespaceattributeX{fo}{internal-destination}{\FOinternaldestination}{}
+%<keep> | inherit
+\XMLnamespaceattributeX{fo}{keep-together}{\FOkeeptogether}{\inherit}
+\XMLnamespaceattributeX{fo}{keep-together.within-line}{\FOkeeptogetherLine}{\inherit}
+% since we dont support column keeps, use Page here (not)
+\XMLnamespaceattributeX{fo}{keep-together.within-column}{\FOkeeptogetherColumn}{\inherit}
+\XMLnamespaceattributeX{fo}{keep-together.within-page}{\FOkeeptogetherPage}{\inherit}
+%<keep> | inherit
+\XMLnamespaceattributeX{fo}{keep-with-next}{\FOkeepwithnext}{auto}
+\XMLnamespaceattributeX{fo}{keep-with-next.within-line}{\FOkeepwithnextLine}{auto}
+\XMLnamespaceattributeX{fo}{keep-with-next.within-column}{\FOkeepwithnextColumn}{auto}
+\XMLnamespaceattributeX{fo}{keep-with-next.within-page}{\FOkeepwithnextPage}{auto}
+%<keep> | inherit
+\XMLnamespaceattributeX{fo}{keep-with-previous}{\FOkeepwithprevious}{auto}
+\XMLnamespaceattributeX{fo}{keep-with-previous.within-line}{\FOkeepwithpreviousLine}{auto}
+\XMLnamespaceattributeX{fo}{keep-with-previous.within-column}{\FOkeepwithpreviousColumn}{auto}
+\XMLnamespaceattributeX{fo}{keep-with-previous.within-page}{\FOkeepwithpreviousPage}{auto}
+%none | <language> | inherit
+\XMLnamespaceattributeX{fo}{language}{\FOlanguage}{\inherit}
+%<length> | <percentage> | inherit
+\XMLnamespaceattributeX{fo}{last-line-end-indent}{\FOlastlineendindent}{\inherit}
+%none | reference-area | page | inherit
+\XMLnamespaceattributeX{fo}{leader-alignment}{\FOleaderalignment}{\inherit}
+%<length-range> | inherit
+\XMLnamespaceattributeX{fo}{leader-length}{\FOleaderlength}{\inherit}
+%space | rule | dots | use-content | inherit
+\XMLnamespaceattributeX{fo}{leader-pattern}{\FOleaderpattern}{\inherit}
+%use-font-metrics | <length> | inherit
+\XMLnamespaceattributeX{fo}{leader-pattern-width}{\FOleaderpatternwidth}{\inherit}
+%<length> | <percentage> | auto | inherit
+\XMLnamespaceattributeX{fo}{left}{\FOleft}{auto}
+%normal | <length> | <space> | inherit
+\XMLnamespaceattributeX{fo}{letter-spacing}{\FOletterspacing}{\inherit}
+%auto | alphabetic | traditional
+\XMLnamespaceattributeX{fo}{letter-value}{\FOlettervalue}{auto}
+%ignore | preserve | treat-as-space | inherit
+\XMLnamespaceattributeX{fo}{linefeed-treatment}{\FOlinefeedtreatment}{\inherit}
+%normal | <length> | <number> | <percentage> | <space> | inherit
+\XMLnamespaceattributeX{fo}{line-height}{\FOlineheight}{\inherit}
+%consider-shifts | disregard-shifts | inherit
+\XMLnamespaceattributeX{fo}{line-height-shift-adjustment}{\FOlineheightshiftadjustment}{\inherit}
+%line-height | font-height | max-height | inherit
+\XMLnamespaceattributeX{fo}{line-stacking-strategy}{\FOlinestackingstrategy}{\inherit}
+%<margin-width>{1,4} | inherit
+\XMLnamespaceattributeX{fo}{margin}{\FOmargin}{}
+\XMLnamespaceattributeX{fo}{margin-left} {\FOmarginleft} {0pt}
+\XMLnamespaceattributeX{fo}{margin-right} {\FOmarginright} {0pt}
+\XMLnamespaceattributeX{fo}{margin-top} {\FOmargintop} {0pt}
+\XMLnamespaceattributeX{fo}{margin-bottom} {\FOmarginbottom} {0pt}
+%<name>
+\XMLnamespaceattributeX{fo}{marker-class-name}{\FOmarkerclassname}{}
+%<name>
+\XMLnamespaceattributeX{fo}{master-reference}{\FOmasterreference}{}
+\XMLnamespaceattributeX{fo}{master-name}{\FOmastername}{}
+%<length> | <percentage> | none | inherit
+\XMLnamespaceattributeX{fo}{max-height}{\FOmaxheight}{\z@}
+%<number> | no-limit | inherit
+\XMLnamespaceattributeX{fo}{maximum-repeats}{\FOmaximumrepeats}{no-limit}
+%<length> | <percentage> | none | inherit
+\XMLnamespaceattributeX{fo}{max-width}{\FOmaxwidth}{none}
+%<length> | <percentage> | inherit
+\XMLnamespaceattributeX{fo}{min-height}{\FOminheight}{\z@}
+%<length> | <percentage> | inherit
+\XMLnamespaceattributeX{fo}{min-width}{\FOminwidth}{}
+%<number>
+\XMLnamespaceattributeX{fo}{number-columns-repeated}{\FOnumbercolumnsrepeated}{1}
+%<number>
+\XMLnamespaceattributeX{fo}{number-columns-spanned}{\FOnumbercolumnsspanned}{1}
+%<number>
+\XMLnamespaceattributeX{fo}{number-rows-spanned}{\FOnumberrowsspanned}{1}
+%odd | even | any | inherit
+\XMLnamespaceattributeX{fo}{odd-or-even}{\FOoddoreven}{any}
+%<integer> | inherit
+\XMLnamespaceattributeX{fo}{orphans}{\FOorphans}{\inherit}
+%visible | hidden | scroll | auto | inherit
+\XMLnamespaceattributeX{fo}{overflow}{\FOoverflow}{auto}
+%<padding-width>{1,4} | inherit
+\XMLnamespaceattributeX{fo}{padding}{\FOpadding}{\z@}
+%<padding-width> | <length-conditional> | inherit
+\XMLnamespaceattributeX{fo}{padding-after}{\FOpaddingafter}{\z@}
+%<padding-width> | <length-conditional> | inherit
+\XMLnamespaceattributeX{fo}{padding-before}{\FOpaddingbefore}{\z@}
+%<padding-width> | inherit
+\XMLnamespaceattributeX{fo}{padding-bottom}{\FOpaddingbottom}{\z@}
+%<padding-width> | inherit
+\XMLnamespaceattributeX{fo}{padding-end}{\FOpaddingend}{\z@}
+%<padding-width> | inherit
+\XMLnamespaceattributeX{fo}{padding-left}{\FOpaddingleft}{\z@}
+%<padding-width> | inherit
+\XMLnamespaceattributeX{fo}{padding-right}{\FOpaddingright}{\z@}
+%<padding-width> | inherit
+\XMLnamespaceattributeX{fo}{padding-start}{\FOpaddingstart}{\z@}
+%<padding-width> | inherit
+\XMLnamespaceattributeX{fo}{padding-top}{\FOpaddingtop}{\z@}
+%auto | always | avoid | left | right | inherit
+\XMLnamespaceattributeX{fo}{page-break-after}{\FOpagebreakafter}{auto}
+%auto | always | avoid | left | right | inherit
+\XMLnamespaceattributeX{fo}{page-break-before}{\FOpagebreakbefore}{auto}
+%auto | indefinite | <length> | inherit
+\XMLnamespaceattribute{fo}{page-height}{\FOpageheight}{auto}
+%first | last | rest | any | inherit
+\XMLnamespaceattributeX{fo}{page-position}{\FOpageposition}{any}
+%auto | indefinite | <length> | inherit
+\XMLnamespaceattribute{fo}{page-width}{\FOpagewidth}{auto}
+%[<time> | <percentage>]{1,2} | inherit
+%\XMLnamespaceattributeX{fo}{pause}{\FOpause}{}
+%<time> | <percentage> | inherit
+%\XMLnamespaceattributeX{fo}{pause-after}{\FOpauseafter}{}
+%<time> | <percentage> | inherit
+%\XMLnamespaceattributeX{fo}{pause-before}{\FOpausebefore}{}
+%<frequency> | x-low | low | medium | high | x-high | inherit
+%\XMLnamespaceattributeX{fo}{pitch}{\FOpitch}{\inherit}
+%<number> | inherit
+%\XMLnamespaceattributeX{fo}{pitch-range}{\FOpitchrange}{\inherit}
+%<uri> mix? repeat? | auto | none | inherit
+%\XMLnamespaceattributeX{fo}{play-during}{\FOplayduring}{auto}
+%static | relative | absolute | fixed | inherit
+\XMLnamespaceattributeX{fo}{position}{\FOposition}{static}
+%true | false | inherit
+\XMLnamespaceattributeX{fo}{precedence}{\FOprecedence}{false}
+%<length> | inherit
+\XMLnamespaceattributeX{fo}{provisional-distance-between-starts}{\FOprovisionaldistancebetweenstarts}{\inherit}
+%<length> | inherit
+\XMLnamespaceattributeX{fo}{provisional-label-separation}{\FOprovisionallabelseparation}{\inherit}
+% 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit
+\XMLnamespaceattributeX{fo}{reference-orientation}{\FOreferenceorientation}{0}
+%<idref> | inherit
+%\XMLnamespaceattributeX{fo}{ref-id}{\FOrefid}{}
+%xsl-region-body | xsl-region-start | xsl-region-end
+%| xsl-region-before | xsl-region-after | xsl-before-float-separator
+%| xsl-footnote-separator | <name>
+\XMLnamespaceattributeX{fo}{region-name}{\FOregionname}{}
+%before | baseline | inherit
+\XMLnamespaceattributeX{fo}{relative-align}{\FOrelativealign}{\inherit}
+%auto | static | relative | inherit
+\XMLnamespaceattributeX{fo}{relative-position}{\FOrelativeposition}{static}
+%auto | perceptual | relative-colorimetric | saturation |
+% absolute-colorimetric | inherit
+%\XMLnamespaceattributeX{fo}{rendering-intent}{\FOrenderingintent}{auto}
+%page | page-sequence | document
+%\XMLnamespaceattributeX{fo}{retrieve-boundary}{\FOretrieveboundary}{page-sequence}
+%<name>
+\XMLnamespaceattributeX{fo}{retrieve-class-name}{\FOretrieveclassname}{}
+%first-starting-within-page | first-including-carryover |
+% last-starting-within-page | last-ending-within-page
+\XMLnamespaceattributeX{fo}{retrieve-position}{\FOretrieveposition}{first-starting-within-page}
+%<number> | inherit
+%\XMLnamespaceattributeX{fo}{richness}{\FOrichness}{\inherit}
+%<length> | <percentage> | auto | inherit
+\XMLnamespaceattributeX{fo}{right}{\FOright}{auto}
+%<string> | none | inherit
+\XMLnamespaceattributeX{fo}{role}{\FOrole}{none}
+%none | dotted | dashed | solid | double | groove
+% | ridge | inherit
+\XMLnamespaceattributeX{fo}{rule-style}{\FOrulestyle}{\inherit}
+%<length>
+\XMLnamespaceattributeX{fo}{rule-thickness}{\FOrulethickness}{\inherit}
+%uniform | non-uniform | inherit
+\XMLnamespaceattributeX{fo}{scaling}{\FOscaling}{uniform}
+%auto | integer-pixels | resample-any-method | inherit
+\XMLnamespaceattributeX{fo}{scaling-method}{\FOscalingmethod}{auto}
+%true | false | inherit
+\XMLnamespaceattributeX{fo}{score-spaces}{\FOscorespaces}{\inherit}
+%none | auto | <script> | inherit
+\XMLnamespaceattributeX{fo}{script}{\FOscript}{\inherit}
+%replace | new
+\XMLnamespaceattributeX{fo}{show-destination}{\FOshowdestination}{replace}
+%<length>{1,2} | auto | landscape | portrait | inherit
+\XMLnamespaceattributeX{fo}{size}{\FOsize}{auto}
+%<uri>+ | none | inherit
+%\XMLnamespaceattributeX{fo}{source-document}{\FOsourcedocument}{none}
+%<space> | inherit
+%\XMLnamespaceattributeX{fo}{space-after}{\FOspaceafter}{\z@}
+%<space> | inherit
+%\XMLnamespaceattributeX{fo}{space-before}{\FOspacebefore}{\z@}
+%<space> | inherit
+\XMLnamespaceattributeX{fo}{space-end}{\FOspaceend}{\z@}
+%<space> | inherit
+\XMLnamespaceattributeX{fo}{space-start}{\FOspacestart}{\z@}
+%ignore | preserve | inherit
+\XMLnamespaceattributeX{fo}{space-treatment}{\FOspacetreatment}{\inherit}
+%none | all | inherit
+\XMLnamespaceattributeX{fo}{span}{\FOspan}{none}
+%normal | none | spell-out | inherit
+%\XMLnamespaceattributeX{fo}{speak}{\FOspeak}{\inherit}
+%once | always | inherit
+%\XMLnamespaceattributeX{fo}{speak-header}{\FOspeakheader}{\inherit}
+%digits | continuous | inherit
+%\XMLnamespaceattributeX{fo}{speak-numeral}{\FOspeaknumeral}{\inherit}
+%code | none | inherit
+%\XMLnamespaceattributeX{fo}{speak-punctuation}{\FOspeakpunctuation}{\inherit}
+%<number> | x-slow | slow | medium | fast
+% | x-fast | faster | slower | inherit
+%\XMLnamespaceattributeX{fo}{speech-rate}{\FOspeechrate}{\inherit}
+% <uri> | inherit
+\XMLnamespaceattributeX{fo}{src}{\FOsrc}{}
+%<length> | inherit
+\XMLnamespaceattribute{fo}{start-indent}{\FOstartindent}{\inherit}
+%show | hide
+\XMLnamespaceattributeX{fo}{starting-state}{\FOstartingstate}{show}
+%yes | no
+%\XMLnamespaceattributeX{fo}{starts-row}{\FOstartsrow}{no}
+%<number> | inherit
+%\XMLnamespaceattributeX{fo}{stress}{\FOstress}{\inherit}
+%auto | suppress | retain | inherit
+\XMLnamespaceattributeX{fo}{suppress-at-line-break}{\FOsuppressatlinebreak}{auto}
+%xsl-preceding | xsl-following | xsl-any | <name>[ <name>]*
+\XMLnamespaceattributeX{fo}{switch-to}{\FOswitchto}{xsl-any}
+%auto | fixed | inherit
+\XMLnamespaceattributeX{fo}{table-layout}{\FOtablelayout}{auto}
+%yes | no
+\XMLnamespaceattributeX{fo}{table-omit-footer-at-break}{\FOtableomitfooteratbreak}{no}
+%yes | no
+\XMLnamespaceattributeX{fo}{table-omit-header-at-break}{\FOtableomitheaderatbreak}{no}
+%start | center | end | justify | inside | outside
+% | left | right | <string> | inherit
+\XMLnamespaceattributeX{fo}{text-align}{\FOtextalign}{\inherit}
+%relative | start | center | end | justify | inside
+% | outside | left | right | <string> | inherit
+\XMLnamespaceattributeX{fo}{text-align-last}{\FOtextalignlast}{\inherit}
+%none | [ [ underline | no-underline] || [ overline | no-overline ]
+%|| [ line-through | no-line-through ] || [ blink | no-blink ] ]| inherit
+\XMLnamespaceattributeX{fo}{text-decoration}{\FOtextdecoration}{none}
+%<length> | <percentage> | inherit
+\XMLnamespaceattributeX{fo}{text-indent}{\FOtextindent}{\inherit}
+%none | [<color> || <length> <length> <length>?
+%,]* [<color> || <length> <length> <length>?] | inherit
+\XMLnamespaceattributeX{fo}{text-shadow}{\FOtextshadow}{none}
+%capitalize | uppercase | lowercase | none |
+\XMLnamespaceattributeX{fo}{text-transform}{\FOtexttransform}{\inherit}
+%<length> | <percentage> | auto | inherit
+\XMLnamespaceattributeX{fo}{top}{\FOtop}{auto}
+%auto | yes | no | inherit
+\XMLnamespaceattributeX{fo}{treat-as-word-space}{\FOtreataswordspace}{auto}
+%normal | embed | bidi-override | inherit
+\XMLnamespaceattributeX{fo}{unicode-bidi}{\FOunicodebidi}{normal}
+%baseline | middle | sub | super | text-top |
+%text-bottom | <percentage> | <length> | top | bottom | inherit
+\XMLnamespaceattribute{fo}{vertical-align}{\FOverticalalign}{auto}
+%visible | hidden | collapse | inherit
+%\XMLnamespaceattributeX{fo}{visibility}{\FOvisibility}{visible}
+%[[<specific-voice> | <generic-voice>
+%],]* [<specific-voice> | <generic-voice> ] | inherit
+%\XMLnamespaceattributeX{fo}{voice-family}{\FOvoicefamily}{\inherit}
+%<number> | <percentage> | silent | x-soft
+%| soft | medium | loud | x-loud | inherit
+%\XMLnamespaceattributeX{fo}{volume}{\FOvolume}{\inherit}
+%normal | pre | nowrap | inherit
+\XMLnamespaceattributeX{fo}{white-space}{\FOwhitespace}{\inherit}
+%false | true | inherit
+\XMLnamespaceattributeX{fo}{white-space-collapse}{\FOwhitespacecollapse}{\inherit}
+%<integer> | inherit
+\XMLnamespaceattributeX{fo}{widows}{\FOwidows}{\inherit}
+%<length> | <percentage> | auto | inherit
+\XMLnamespaceattributeX{fo}{width}{\FOwidth}{auto}
+%normal | <length> | <space> | inherit
+\XMLnamespaceattributeX{fo}{word-spacing}{\FOwordspacing}{\inherit}
+%no-wrap | wrap | inherit
+\XMLnamespaceattributeX{fo}{wrap-option}{\FOwrapoption}{\inherit}
+%lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit
+\XMLnamespaceattributeX{fo}{writing-mode}{\FOwritingmode}{lr-tb}
+%<country-language> | inherit
+%\XMLnamespaceattributeX{fo}{xml:lang}{\FOxmllang}{\inherit}
+%auto | <integer> | inherit
+\XMLnamespaceattributeX{fo}{z-index}{\FOzindex}{auto}
+%-------------------------------
+\XMLnamespaceattributeX{fotex}{column-align}{\FOcolumnalign}{}
+
+% Added attribute which controls table-placement.
+% It has the same syntax as LaTeX (e.g. !tbh)
+% Since XMLTeX doesn't process well attributes from another namespace,
+% I must use the workaround
+% with namespaces.
+\XMLnamespaceattributeX{fo}{fotex:placement}{\FOkplacement}{}
+\XMLname{fo:inline-container}{\FOInlineContainer}
+\XMLname{fo:list-item-label}{\FOListItemLabel}
+\XMLname{fo:list-item-body}{\FOListItemBody}
+\XMLname{fo:table-cell}{\FOTableCell}
+\XMLname{fo:table-row}{\FOTableRow}
+\def\SpaceAttributes{
+ \XMLattributeX{space-after.optimum}{\FOspaceafteroptimum}{\z@}
+ \XMLattributeX{space-after.maximum}{\FOspaceaftermaximum}{\z@}
+ \XMLattributeX{space-after.minimum}{\FOspaceafterminimum}{\z@}
+ \XMLattributeX{space-before.optimum}{\FOspacebeforeoptimum}{\z@}
+ \XMLattributeX{space-before.maximum}{\FOspacebeforemaximum}{\z@}
+ \XMLattributeX{space-before.minimum}{\FOspacebeforeminimum}{\z@}
+ \XMLattributeX{space-after}{\FOspaceafter}{}
+ \XMLattributeX{space-before}{\FOspacebefore}{}
+}
+\gdef\Defaultx@fontfamily{Times-Roman}
+\gdef\FOheadindent{\z@}
+ \gdef\FOautorestore{no}
+ \gdef\FOazimuth{center}
+ \gdef\FObordercollapse{collapse}
+ \gdef\FOborderseparation{\z@}
+ \gdef\FOborderspacing{\z@}
+ \gdef\FOcaptionside{before}
+ \gdef\FOcolor{}
+ \gdef\FOcountry{none}
+ \gdef\FOdirection{ltr}
+ \gdef\FOdisplayalign{auto}
+ \gdef\FOelevation{level}
+ \gdef\FOemptycells{show}
+ \gdef\FOendindent{\z@}
+ \gdef\FOfont{}
+ \gdef\FOfontfamily{Times-Roman}
+ \gdef\FOfontsizeadjust{none}
+ \gdef\FOfontsize{medium}
+ \gdef\FOfontstretch{normal}
+ \gdef\FOfontstyle{normal}
+ \gdef\FOfontvariant{normal}
+ \gdef\FOfontweight{normal}
+ \gdef\FOformat{1}
+ \gdef\FOglyphorientationhorizontal{0}
+ \gdef\FOglyphorientationvertical{auto}
+ \gdef\FOhyphenate{false}
+ \gdef\FOhyphenationcharacter{-}
+ \gdef\FOhyphenationkeep{none}
+ \gdef\FOhyphenationladdercount{no-limit}
+ \gdef\FOhyphenationpushcharactercount{2}
+ \gdef\FOhyphenationremaincharactercount{2}
+ \gdef\FOlanguage{none}
+ \gdef\FOlastlineendindent{\z@}
+ \gdef\FOleaderalignment{none}
+ \gdef\FOleaderlength{\z@}
+ \gdef\FOleaderpattern{space}
+ \gdef\FOleaderpatternwidth{}
+ \gdef\FOletterspacing{normal}
+ \gdef\FOlinefeedtreatment{treat-as-space}
+ \gdef\FOlineheight{normal}
+ \gdef\FOlineheightshiftadjustment{consider-shifts}
+ \gdef\FOlinestackingstrategy{line-height}
+ \gdef\FOorphans{2}
+ \gdef\FOpagebreakinside{auto}
+ \gdef\FOpitch{medium}
+ \gdef\FOpitchrange{50}
+ \gdef\FOprovisionaldistancebetweenstarts{24.0pt}
+ \gdef\FOprovisionallabelseparation{6.0pt}
+ \gdef\FOrelativealign{before}
+ \gdef\FOrichness{50}
+ \gdef\FOrulestyle{solid}
+ \gdef\FOrulethickness{1.0pt}
+ \gdef\FOscorespaces{true}
+ \gdef\FOscript{auto}
+ \gdef\FOspacetreatment{preserve}
+% \gdef\FOspeak{normal}
+% \gdef\FOspeakheader{once}
+% \gdef\FOspeaknumeral{continuous}
+% \gdef\FOspeakpunctuation{none}
+% \gdef\FOspeechrate{medium}
+ \gdef\FOstartindent{\z@}
+% \gdef\FOstress{50}
+ \gdef\FOtextalign{start}
+ \gdef\FOtextalignlast{relative}
+ \gdef\FOtextindent{\z@}
+ \gdef\FOtexttransform{none}
+% \gdef\FOvoicefamily{}
+ \gdef\FOvolume{medium}
+ \gdef\FOwhitespace{normal}
+ \gdef\FOwhitespacecollapse{true}
+ \gdef\FOwidows{2}
+ \gdef\FOwordspacing{normal}
+ \gdef\FOwrapoption{wrap}
+%<margin-width> | inherit
+ \gdef\FOmarginbottom{\z@}
+%<margin-width> | inherit
+\gdef\FOmarginleft{\z@}
+%<margin-width> | inherit
+\gdef\FOmarginright{\z@}
+%<margin-width> | inherit
+\gdef\FOmargintop{}
+
+\gdef\FOkplacement{}
+
+\XMLelement{fo:root}
+ {}
+ {\documentclass{article}
+ \usepackage{fotex}
+ \begin{document}
+ \pagestyle{empty}
+ \FOSetHyphenation
+ %\ignorewhitespace
+ }
+ {\end{document}}
+
+
+\XMLelement{fotex:inlinemath}
+ {}
+ {\(}
+ {\)}
+
+
+\XMLelement{fotex:equation}
+ {}
+ {\begin{equation}}
+ {\end{equation}}
+
+
+\XMLelement{fotex:displaymath}
+ {}
+ {\begin{displaymath}}
+ {\end{displaymath}}
+
+\XMLelement{fotex:eqnarray}
+ {}
+ {\xmlgrab}
+ {\begin{gather*}#1\end{gather*}}
+
+\XMLelement{fotex:subeqn}
+ {}
+ {\xmlgrab}
+ {\ifx\FOid\@empty
+ \gdef\w@t{#1\nonumber\\}
+ \else
+% needs the global version
+ \gdef\w@t{#1\label{\temp}\\}
+ \fi
+ \aftergroup\w@t}
+
+\XMLelement{fotex:bookmark}
+ {
+ \XMLattributeX{fotex-bookmark-level}{\FOTEXbookmarklevel}{0}
+ \XMLattributeX{fotex-bookmark-label}{\FOTEXbookmarklabel}{}
+ }
+ {\xmlgrab}
+ {\protectCS\FOTEXbookmarklabel
+ \let\ignorespaces\@empty
+ \pdfbookmark[\FOTEXbookmarklevel]{#1}{\FOTEXbookmarklabel}}
+
+\XMLelement{fo:block}
+ {\SpaceAttributes}
+ {%
+ \FOBlockGrabfalse
+ \FOexpandattributes
+ \FOSetHyphenation
+ %\edef\SavedNColumns{\NColumns}
+ \ifx\XML@parent\FOListItemLabel
+ \def\w@t{\FOListBlock}%
+ \def\@whattodonext{\FOEndBlock}%
+ \else
+ \ifFOinOutput
+ \ifx\FObackgroundcolor\att@transparent
+ \ifx\FOborderstyle\att@solid
+ \FOBlockGrabtrue
+ \fi
+ \else
+ \FOBlockGrabtrue
+ \fi
+ \def\w@t{\FOOutputBlock}%
+ \def\@whattodonext{\FOEndOutputBlock}%
+ \else
+% we care if a block is inside a table cell
+ \ifnum\FOinTable>\z@
+ \def\w@t{\FOBoxedBlock{\CurrentCellWidth}}%
+ \def\@whattodonext{\FOEndBoxedBlock}
+ \else
+ % we care if a block is a second or subsequent child of a list body
+ \ifx\XML@parent\FOListItemBody
+ \global\advance\FOListBlocks by 1%
+ \ifnum\FOListBlocks=1\relax\else\FOListInnerPartrue\fi
+ \else
+ % but also if its nested within a list body block
+ \ifFOListBody
+ \FOListInnerPartrue
+ \fi
+ \fi
+ \ifx\FObackgroundcolor\att@transparent
+ \ifx\FOborderstyle\att@solid
+ \FOBlockGrabtrue
+ \fi
+ \else
+ \FOBlockGrabtrue
+ \fi
+ \def\@whattodonext{\FOEndBlock}
+ \def\w@t{\FONormalBlock}%
+ \fi
+ \fi
+ \fi
+%\typeout{Block \the\inputlineno, \meaning\w@t, \meaning\@whattodonext}%
+ \w@t
+ \ifx\FOkeeptogether\att@always\samepage\fi
+ \ifx\FOkeeptogetherColumn\att@always\samepage\fi
+ \ifx\FOkeeptogetherPage\att@always\samepage\fi
+ %\usewhitespace\ignorespaces
+ }
+ {\ifx\FOkeeptogether\att@always\samepage\fi
+ \ifx\FOkeeptogetherColumn\att@always\samepage\fi
+ \ifx\FOkeeptogetherPage\att@always\samepage\fi
+ \@whattodonext
+}
+
+\XMLelement{fo:character}
+ {}
+ {
+ \ifx\FOverticalalign\att@auto
+ \let\FOverticalalign\FObaselineshift
+ \fi
+ \FO@character{\FOcharacter}}
+ {}
+
+\XMLelement{fo:external-graphic}
+ {
+%auto | <length> | <percentage> | inherit
+\XMLattribute{content-height}{\FOcontentheight}{auto}
+%auto | <length> | <percentage> | inherit
+\XMLattribute{content-width}{\FOcontentwidth}{auto}
+}
+ {
+{\utfeight@protect@chars\expandafter\FOfiletest\FOsrc\@empty\@empty\@empty\@empty\@empty\@empty\@empty\@}%
+\ifx\FOwidth\att@auto
+ \ifx\FOheight\att@auto%
+ \relax%
+ \else%
+ \def\FOcontentheight{\FOheight}%
+ \def\FOcontentwidth{auto}%
+ \fi
+\else
+ \def\FOcontentwidth{\FOwidth}%
+ \ifx\FOheight\att@auto%
+ \def\FOcontentheight{auto}%
+ \else%
+ \def\FOcontentheight{\FOheight}%
+ \fi
+\fi
+\ifx\FOcontentwidth\att@scaletofit
+ \setkeys{Gin}{width=\linewidth}%
+\else
+ \ifx\FOcontentwidth\att@auto\else\FOSetGWidth\fi
+\fi
+\ifx\FOcontentheight\att@scaletofit
+ \setkeys{Gin}{height=\textheight}%
+\else
+ \ifx\FOcontentheight\att@auto\else\FOSetGHeight\fi
+\fi
+\def\aligntype{center}
+\ifthenelse{\equal{\FOtextalign}{right}}{\def\aligntype{flushright}}{}
+\ifthenelse{\equal{\FOtextalign}{left}}{\def\aligntype{flushleft}}{}
+\def\Picscaled{\begin{\aligntype}\includegraphics{\FOsrcname}\end{\aligntype}}
+\ifx\FOscaling\att@uniform\else\setkeys{Gin}{keepaspectratio=false}\fi
+%\csname startQ@\FOtextalign\endcsname
+\ifx\FOborderstyle\att@solid\fbox{\Picscaled}\else\Picscaled\fi
+%\csname endQ@\FOtextalign\endcsname
+ }
+{}
+
+
+\XMLelement{fo:block-container}
+ {}
+ {}
+ {}
+
+\XMLelement{fo:float}
+ {\XMLattributeX{float}{\FOfloat}{float}}
+ {\ifx\FOfloat\att@none
+ \begin{figure}[!htp]
+ \else
+ \begin{figure}
+ \fi
+ \FOlabel}
+ {\end{figure}}
+
+\XMLelement{fo:flow}
+ {}
+ {\FOSetHyphenation
+ \clearpage
+ \DEBUG{New page, \the\c@page, \PageNumber}%
+ \ifx\PageNumber\att@auto
+ \else
+ \ifx\PageNumber\att@autoeven
+ \ifodd\c@page\hbox{}\newpage\fi
+ \else
+ \ifx\PageNumber\att@autoodd
+ \ifodd\c@page\else\hbox{}\newpage\fi
+ \else
+ \setcounter{page}{\PageNumber}%
+ \fi
+ \fi
+ \fi
+ \ifx\@empty\pendingID\else
+ \@bsphack
+ \protected@write\@mainaux{}%
+ {\string\newlabel{\pendingID}{{}{\expandafter\FOgeneratePage\FOformat\@null}{}{\pendingID}{}}}%
+ \@esphack
+ \hyper@@anchor{\pendingID}{\relax}%
+ \global\let\pendingID\@empty
+ \fi
+
+ \DEBUG{^^JStart page sequence, using layout \CurrentPageMaster, at page \the\c@page}
+
+ \@ifundefined{Atomic:\CurrentPageMaster}
+ {
+ \@ifundefined{First:\CurrentPageMaster}
+ {
+ \ifx\FOinitialpagenumber\att@auto
+ \ifodd\c@page
+ \DEBUG{Master \CurrentPageMaster: no first page, use odd page}
+ \edef\PFirst{\csname Odd:\CurrentPageMaster\endcsname}
+ \else
+ \DEBUG{Master \CurrentPageMaster: no first page, use even page}
+ \@ifundefined{Even:\CurrentPageMaster}
+ {\edef\PFirst{\csname Odd:\CurrentPageMaster\endcsname}}
+ {\edef\PFirst{\csname Even:\CurrentPageMaster\endcsname}}
+ \fi
+ \else
+ \ifx\FOinitialpagenumber\att@autoeven
+ \@ifundefined{Even:\CurrentPageMaster}
+ {\edef\PFirst{\csname Odd:\CurrentPageMaster\endcsname}}
+ {\edef\PFirst{\csname Even:\CurrentPageMaster\endcsname}}
+ \else
+ \ifx\FOinitialpagenumber\att@autoodd
+ \edef\PFirst{\csname Odd:\CurrentPageMaster\endcsname}
+ \else
+ \ifodd\FOinitialpagenumber
+ \edef\PFirst{\csname Odd:\CurrentPageMaster\endcsname}
+ \else
+ \@ifundefined{Even:\CurrentPageMaster}
+ {\edef\PFirst{\csname Odd:\CurrentPageMaster\endcsname}}
+ {\edef\PFirst{\csname Even:\CurrentPageMaster\endcsname}}
+ \fi
+ \fi
+ \fi
+ \fi
+ }
+ {
+ \edef\PFirst{\csname First:\CurrentPageMaster\endcsname}
+ }
+ \@ifundefined{Blank:\CurrentPageMaster}
+ {\edef\PBlank{\csname Odd:\CurrentPageMaster\endcsname}}
+ {\edef\PBlank{\csname Blank:\CurrentPageMaster\endcsname}}
+ \@ifundefined{Even:\CurrentPageMaster}
+ {\edef\PEven{\csname Odd:\CurrentPageMaster\endcsname}}
+ {\edef\PEven{\csname Even:\CurrentPageMaster\endcsname}}
+ \edef\POdd{\csname Odd:\CurrentPageMaster\endcsname}
+ }
+ {
+ \let\PFirst\CurrentPageMaster
+ \let\PBlank\CurrentPageMaster
+ \let\POdd\CurrentPageMaster
+ \let\PEven\CurrentPageMaster
+ }
+ \DEBUG{ first page master is [\PFirst]}
+ \DEBUG{ odd page master is [\POdd]}
+ \DEBUG{ even page master is [\PEven]}
+ \DEBUG{ blank page master is [\PBlank]}
+ \expandafter\Pass\csname\POdd:xsl-region-body\endcsname\\
+ \csname Atomic:\POdd\endcsname
+ \oddsidemargin\MasterLeftMargin
+ \evensidemargin\MasterLeftMargin
+ \advance\evensidemargin by \SpecialOffset
+ \advance\oddsidemargin by \SpecialOffset
+ \@ifundefined{Atomic:\PEven}{\DEBUG{no master for Atomic:\PEven}}
+ {\csname Atomic:\PEven\endcsname
+ \evensidemargin\MasterLeftMargin
+ \advance\evensidemargin by \SpecialOffset
+ }
+ \edef\EvenHeadExtent{\csname\PEven:before-extent\endcsname}
+ \edef\EvenHead{Static:\csname\PEven:before\endcsname}
+ \edef\EvenTailExtent{\csname\PEven:after-extent\endcsname}
+ \edef\EvenTail{Static:\csname\PEven:after\endcsname}
+ \edef\FirstHeadExtent{\csname\PFirst:before-extent\endcsname}
+ \edef\FirstHead{Static:\csname\PFirst:before\endcsname}
+ \edef\FirstTailExtent{\csname\PFirst:after-extent\endcsname}
+ \edef\FirstTail{Static:\csname\PFirst:after\endcsname}
+ \edef\OddHeadExtent{\csname\POdd:before-extent\endcsname}
+ \edef\OddHead{Static:\csname\POdd:before\endcsname}
+ \edef\OddTailExtent{\csname\POdd:after-extent\endcsname}
+ \edef\OddTail{Static:\csname\POdd:after\endcsname}
+ \edef\BlankHeadExtent{\csname\PBlank:before-extent\endcsname}
+ \edef\BlankHead{Static:\csname\PBlank:before\endcsname}
+ \edef\BlankTailExtent{\csname\PBlank:after-extent\endcsname}
+ \edef\BlankTail{Static:\csname\PBlank:after\endcsname}
+ \FOSetPage
+ \ifnum\NColumns>1\begin{multicols}{\NColumns}\fi
+% \ifnum\NColumns>1\MulticolPendingtrue
+% \begin{multicols}{\NColumns}\fi
+ }
+ {
+ \ifnum\NColumns>1\end{multicols}\fi
+ \clearpage
+ \ifx\ForcePage\att@auto
+ \else
+% remember that we'll do a \clearpage next time anyway.
+% so leave here on wrong sort of page
+ \ifx\ForcePage\att@endoneven
+ \ifodd\c@page\else\BlankPage\newpage\fi
+ \else
+ \ifx\ForcePage\att@endonodd
+ \ifodd\c@page\BlankPage\newpage\fi
+ \fi
+ \fi
+ \fi
+ }
+
+\XMLelement{fo:footnote-body}
+ {}
+ {}
+ {}
+
+
+\XMLelement{fo:footnote}
+ {}
+ {\xmlgrab}
+ {\xmltextwochildren\FOplainfootmark\FOplainfoottext#1}
+
+\XMLelement{fo:page-number-citation}
+ {\XMLattributeX{ref-id}{\FOrefid}{}}
+ {}
+ {\fopagecitation}
+
+\XMLelement{fotex:sort}
+ {}
+ {\let\fopagecitation\fosortpagecitation
+ \global\sorttoks{}}
+ {\global\sortcount-2\let\@elt\focompress@elt
+ \let\fosep\@empty
+ \let\foheld\relax
+ \the\sorttoks
+ \foheld}
+
+\XMLelement{fo:wrapper}
+ {}
+ {\FOSetFont{wrapper}\FOlabel}
+ {}
+
+\XMLelement{fo:leader}
+ {}
+ {
+\leavevmode
+\ifx\FOleaderpattern\leader@pattern@rule
+ \ifx\FOrulestyle\rule@style@dashed
+ \def\w@t{\cleaders\hbox{$\m@th \mkern1.5mu-\mkern1.5mu$}\hfil}%
+ \else
+ \ifx\FOrulestyle\rule@style@dotted
+ \def\w@t{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfil}%
+ \else
+ \ifdim\FOrulethickness>\z@
+ \def\w@t{\leaders\hrule height \FOrulethickness\hfill}%
+ \else
+ \def\w@t{\hfill}%
+ \fi
+ \fi
+ \fi
+\else
+ \ifx\FOleaderpattern\leader@pattern@dots
+ \def\w@t{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill}%
+ \else % space
+ \def\w@t{\hfill}%
+ \fi
+\fi
+\PercentToDimen{\FOleaderlength}%
+\ifdim\@tempdima=\z@\w@t\else\hbox to \@tempdima{\w@t}\fi
+ }
+ {}
+
+\catcode`\/\active
+
+\XMLelement{fo:basic-link}
+ {
+\XMLattributeX{target-presentation-context}{\FOtargetpresentationcontext}{}
+\XMLattributeX{target-processing-context}{\FOtargetprocessingcontext}{}
+\XMLattributeX{target-stylesheet}{\FOtargetstylesheet}{}
+ }
+ {\xmlgrab}
+ {
+\ifx\FOverticalalign\att@auto
+ \let\FOverticalalign\FObaselineshift
+\fi
+\begingroup
+\utfeight@protect@chars\xdef\temp{\FOinternaldestination}%
+\endgroup
+\let\FOinternaldestination\temp
+\begingroup
+\utfeight@protect@chars\xdef\temp{\FOexternaldestination}%
+\endgroup
+\let\FOexternaldestination\temp
+ \ifx\FOindicatedestination\att@yes
+ \setkeys{Hyp}{pdfborder={0 0 1}}
+ \fi
+ \ifx\FOexternaldestination\@empty
+ \hyperlink{\FOinternaldestination}{\FO@inlinesequence{#1}}%
+ \let\FOinternaldestination\@empty
+ \else
+ \href{\FOexternaldestination}{#1}
+% this breaks any real content in the link text
+% \expandafter\@basiclink\relax#1//\@nil#1\@nil\FOexternaldestination\@nil%
+ \let\FOexternaldestination\@empty
+ \fi
+ }
+\catcode`\/=12
+
+\XMLelement{fo:inline-container}
+ {}
+ {}
+ {}
+
+\XMLelement{fo:list-block}
+ {\SpaceAttributes}
+ {
+ \ifx\FOstartindent\att@bodystart
+ \let\FOstartindent\z@
+ \fi
+ \ifx\FOendindent\att@labelend
+ \let\FOendindent\z@
+ \fi
+ \FOSetFont{normal}%
+ \advance\FOinList by 1\relax
+ \ifnum\FOinList>1\relax\leavevmode\fi
+ \begin{list}{}{%
+ \itemindent=\FOstartindent
+ \leftmargin=\FOprovisionaldistancebetweenstarts
+ \advance\leftmargin by \FOmarginleft
+ \rightmargin=\FOmarginright
+ \labelwidth=\FOprovisionaldistancebetweenstarts
+ \advance\labelwidth by -\FOprovisionallabelseparation
+ \expandafter\csname List\FOtextalign\endcsname
+ \labelsep\FOprovisionallabelseparation
+ \itemsep\z@
+ \parsep\z@
+ \topsep\z@
+ \parskip\z@
+ \ifx\@empty\FOspacebefore
+ \@tempdima\FOspacebeforeoptimum
+ \advance\@tempdima by -\FOspacebeforeminimum
+ \@tempdimb\FOspacebeforeoptimum
+ \advance\@tempdimb by \FOspacebeforemaximum
+ \topsep\FOspacebeforeoptimum plus \@tempdimb minus \@tempdima
+ \else
+ \topsep\FOspacebefore
+ \fi
+ }
+ }
+ {\end{list}
+ \advance\FOinList by -1
+ \par
+ }
+
+\XMLelement{fo:list-item-body}
+ {}
+ {\ifx\FOstartindent\att@bodystart
+ \let\FOstartindent\z@
+ \fi
+ \FOListBodytrue\FOListBlocks0}
+ {}
+
+\XMLelement{fo:list-item-label}
+ {}
+ {\xmlgrab}
+ {\ifx\FOstartindent\att@bodystart
+ \let\FOstartindent\z@
+ \fi
+ \ifx\FOendindent\att@labelend
+ \let\FOendindent\z@
+ \fi
+ \savebox{\ItemBox}{#1}\item[#1]\FOlabel}
+
+\XMLelement{fo:list-item}
+ {\SpaceAttributes}
+ {
+ \FOSetHyphenation
+ \ifx\@empty\FOspacebefore
+ \@tempdima\FOspacebeforeoptimum
+ \advance\@tempdima by -\FOspacebeforeminimum
+ \@tempdimb\FOspacebeforeoptimum
+ \advance\@tempdimb by \FOspacebeforemaximum
+ \vskip\FOspacebeforeoptimum plus \@tempdimb minus \@tempdima
+ \else
+ \vskip\FOspacebefore
+ \fi
+ \FOlabel}
+ {}
+
+\XMLelement{fo:page-number}
+ {}
+ {}
+ {\expandafter\FOgeneratePage\FOformat\@null}
+
+
+\XMLelement{fo:page-sequence}
+ {}
+ {\let\CurrentPageMaster\FOmasterreference
+ \let\pendingID\FOid
+ \let\PageNumber\FOinitialpagenumber
+ \let\ForcePage\FOforcepagecount
+ \FOSetHyphenation
+ \LoadLanguage{\FOlanguage}
+ }
+ {}
+
+\XMLelement{fo:region-after}
+ {}
+ {\ifx\FOregionname\@empty
+ \def\FOregionname{xsl-region-after}
+ \fi
+ \DEBUG{ Link [\FOMaster:after] to \FOregionname}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname\FOMaster:after\endcsname{\FOregionname}
+ \expandafter\xdef\csname\FOMaster:after-extent\endcsname{\FOextent}
+ \endgroup
+ }
+ {}
+
+
+\XMLelement{fo:region-before}
+ {}
+ {\ifx\FOregionname\@empty
+ \def\FOregionname{xsl-region-before}
+ \fi
+ \DEBUG{ Link [\FOMaster:before] to \FOregionname}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname\FOMaster:before\endcsname{\FOregionname}
+ \expandafter\xdef\csname\FOMaster:before-extent\endcsname{\FOextent}
+ \endgroup
+ }
+ {}
+
+\XMLelement{fo:region-body}
+ {}
+ {
+ \ifx\FOmargin\@empty\relax\else
+ \let\FOmarginright\FOmargin
+ \let\FOmarginleft\FOmargin
+ \let\FOmargintop\FOmargin
+ \let\FOmarginbottom\FOmargin
+ \fi
+ \xdef\InnerBottomMargin{\FOmarginbottom}
+ \xdef\InnerTopMargin{\FOmargintop}
+ \xdef\InnerLeftMargin{\FOmarginleft}
+ \xdef\InnerRightMargin{\FOmarginright}
+ \ifx\FOregionname\@empty
+ \def\FOregionname{xsl-region-body}
+ \fi
+ \DEBUG{ Set up [\FOMaster:\FOregionname] body content: \FOcolumngap|\FOcolumncount|\FOmarginbottom|\FOmargintop|}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname\FOMaster:\FOregionname\endcsname{\FOcolumngap|\FOcolumncount|\FOmarginbottom|\FOmargintop|}
+ \endgroup
+ }
+ {}
+
+\XMLelement{fo:static-content}
+ {}
+ {\xmlgrab}
+ {\protectCS\FOflowname
+ \FOSetStatic{#1}{\FOflowname}}
+
+\XMLelement{fo:table-and-caption}
+ {}
+ {
+ \global\ColSpecs={}\NCols0
+ \TableWidth\linewidth
+ \advance\TableWidth by -\tabcolsep
+ \advance\TableWidth by -\FOmarginleft
+ \advance\TableWidth by -\FOmarginright
+ \gdef\TableHeader{}
+ \NoTableSetup
+ \ifx\XML@parent\FOInlineContainer
+ \ifnum\FOreferenceorientation=0
+ \FOlabel
+ \else
+ \begin{sidewaystable}\FOlabel
+ \fi
+ \else
+ \ifnum\FOreferenceorientation=0
+% We process FOkplacement atribute to override the placement of the table.
+ \ifx\FOkplacement\@empty
+ \begin{table}[!htbp]\FOlabel
+ \else
+ \edef\ktable{\noexpand\begin{table}[\FOkplacement]}
+ \ktable\FOlabel
+ \fi
+ \else
+ \begin{sidewaystable}\FOlabel
+ \fi
+ \fi
+ }
+ {\ifx\XML@parent\FOInlineContainer
+ \ifnum\FOreferenceorientation=0
+ \else
+ \end{sidewaystable}
+ \fi
+ \else
+ \ifnum\FOreferenceorientation=0
+ \end{table}
+ \else
+ \end{sidewaystable}
+ \fi
+ \fi
+ }
+
+\XMLelement{fo:table-body}
+ { }
+ {
+ \FOFirstCelltrue
+ \FOinTable1
+ \expandafter\NoTableStart{\TableHeader}%
+ }
+{
+ \ifnum\NCols<1
+ \typeout{Table end of no cols defined}
+ \fi
+ \NoTableEnd
+}
+
+
+\XMLelement{fo:table-caption}
+ {}
+ {}
+ {\par}
+
+\XMLelement{fo:table-cell}
+ {
+ \XMLattributeX{ends-row}{\FOendsrow}{false}
+ \XMLattributeX{starts-row}{\FOstartsrow}{false}
+ }
+ {\xmlgrab}
+ {\FOlabel
+ \FOexpandattributes
+ \NoTableCell{#1}}
+
+
+\XMLelement{fo:table-column}
+ {}
+ {
+ \@tempcnta0
+ \loop\ifnum\FOnumbercolumnsrepeated>\@tempcnta
+ \advance\@tempcnta by 1
+ {\NoTableColumn}%
+ \repeat
+ }
+ {}
+
+\XMLelement{fo:table-header}
+ {}
+ {\xmlgrab}
+ {\gdef\TableHeader{#1}}
+
+\XMLelement{fo:table-row}
+ {}
+ {\xmlgrab}
+ {\NoTableRow{#1}}
+
+\XMLelement{fo:table}
+ {}
+ {
+ \global\ColSpecs={}\NCols0
+ \TableWidth\linewidth
+ \advance\TableWidth by -\FOmarginleft
+ \advance\TableWidth by -\FOmarginright
+ \gdef\TableHeader{}
+ \NoTableSetup
+ }
+ {}
+
+\XMLelement{fo:inline}
+ {}
+ {\xmlgrab}
+ {
+ %\usewhitespace\ignorespaces
+ \ifx\FOverticalalign\att@auto
+ \let\FOverticalalign\FObaselineshift
+ \fi
+ \FOlabel
+ \ifx\FOborderstyle\att@solid
+ \ifx\FOborderwidth\att@thin\def\FOborderwidth{0.4pt}\fi
+ \ifx\FOborderwidth\att@medium\def\FOborderwidth{0.8pt}\fi
+ \ifx\FOborderwidth\att@thick\def\FOborderwidth{1.2pt}\fi
+ \FOboxedsequence{#1}%
+ \else
+ \FO@inlinesequence{#1}%
+ \fi}
+
+\XMLelement{fo:bidi-override}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:bidi-override NOT IMPLEMENTED}}
+
+\XMLelement{fo:color-profile}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:color-profile NOT IMPLEMENTED}}
+
+\XMLelement{fo:declarations}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:declarations NOT IMPLEMENTED}}
+
+\XMLelement{fo:initial-property-set}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:initial-property-set NOT IMPLEMENTED}}
+
+\XMLelement{fo:instream-foreign-object}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:instream-foreign-object NOT IMPLEMENTED}}
+
+\XMLelement{fo:marker}
+ {}
+ {\xmlgrab}
+ {\toks@{}%
+ \expandafter\FOaddmarker\FOmarks\relax{}%
+ \toks@\expandafter{\the\expandafter\toks@\expandafter{\FOmarkerclassname}{#1}}%
+ \xdef\FOmarks{\the\toks@}%
+ \mark{\FOmarks}}
+
+\XMLelement{fo:retrieve-marker}
+ {}
+ {\xmlgrab}
+ {\begingroup
+ \utfeight@protect@chars
+\ifx\FOretrieveposition\FirstOnPage
+ \xdef\FOthismark{\topmark}%
+\else
+ \ifx\FOretrieveposition\LastOnPage
+ \xdef\FOthismark{\botmark}%
+ \else
+ \xdef\FOthismark{\topmark}%
+ \fi
+\fi
+ \xdef\FOthisretrieveclassname{\FOretrieveclassname}
+ \endgroup
+ \expandafter\FOgetmarker\FOthismark\relax\relax}
+
+\XMLelement{fo:multi-case}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:multi-case NOT IMPLEMENTED}}
+
+\XMLelement{fo:multi-properties}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:multi-properties NOT IMPLEMENTED}}
+
+\XMLelement{fo:multi-property-set}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:multi-property-set NOT IMPLEMENTED}}
+
+\XMLelement{fo:multi-switch}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:multi-switch NOT IMPLEMENTED}}
+
+\XMLelement{fo:multi-toggle}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:multi-toggle NOT IMPLEMENTED}}
+
+\XMLelement{fo:region-end}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:region-end NOT IMPLEMENTED}}
+
+\XMLelement{fo:region-start}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:region-start NOT IMPLEMENTED}}
+
+\XMLelement{fo:table-footer}
+ {}
+ {\xmlgrab}
+ {\typeout{fo:table-footer NOT IMPLEMENTED}}
+
+
+\XMLelement{fo:layout-master-set}
+ {}
+ {\DEBUG{Start defining page masters}}
+ {\DEBUG{Finish defining page masters}}
+
+\XMLelement{fo:page-sequence-master}
+ {}
+ {
+ \DEBUG{Page sequence master: \FOmastername}
+ \let\Granpa\FOmastername
+ }
+ {}
+
+\XMLelement{fo:single-page-master-reference}
+ {}
+ {\DEBUG{ (single page in \Granpa: use master \FOmasterreference)}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname First:\Granpa\endcsname{\FOmasterreference}
+ \expandafter\xdef\csname Blank:\Granpa\endcsname{\FOmasterreference}
+ \expandafter\xdef\csname Odd:\Granpa\endcsname{\FOmasterreference}
+ \expandafter\xdef\csname Even:\Granpa\endcsname{\FOmasterreference}
+ \endgroup
+ }
+ {}
+
+\XMLelement{fo:repeatable-page-master-reference}
+ {}
+ {\DEBUG{ (multiple pages in \Granpa: use master \FOmasterreference)}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname Blank:\Granpa\endcsname{\FOmasterreference}
+ \expandafter\xdef\csname First:\Granpa\endcsname{\FOmasterreference}
+ \expandafter\xdef\csname Odd:\Granpa\endcsname{\FOmasterreference}
+ \expandafter\xdef\csname Even:\Granpa\endcsname{\FOmasterreference}
+ \endgroup
+ }
+ {}
+
+
+\XMLelement{fo:repeatable-page-master-alternatives}
+ {}
+ {
+ \DEBUG{ (complex page layout with alternatives)}
+ }
+ {}
+
+
+\XMLelement{fo:conditional-page-master-reference}
+ {}
+ {
+ \ifx\FOoddoreven\att@even
+ \DEBUG{ Even page for \Granpa: \FOmasterreference}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname Even:\Granpa\endcsname{\FOmasterreference}
+ \endgroup
+ \else
+ \ifx\FOoddoreven\att@odd
+ \DEBUG{ Odd page for \Granpa: \FOmasterreference}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname Odd:\Granpa\endcsname{\FOmasterreference}
+ \endgroup
+ \else
+ \ifx\FOpageposition\att@first
+ \DEBUG{ First page for \Granpa: \FOmasterreference}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname First:\Granpa\endcsname{\FOmasterreference}
+ \endgroup
+ \else
+ \ifx\FOblankornotblank\att@blank
+ \DEBUG{ Blank page for \Granpa: \FOmasterreference}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname Blank:\Granpa\endcsname{\FOmasterreference}
+ \endgroup
+ \else
+ \DEBUG{ Default page for \Granpa: \FOmasterreference}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname Odd:\Granpa\endcsname{\FOmasterreference}
+ \endgroup
+ \fi
+ \fi
+ \fi
+ \fi
+ }
+ {}
+
+
+
+\XMLelement{fo:simple-page-master}
+ {}
+ {\let\FOMaster\FOmastername
+ \ifx\FOmargin\@empty\relax\else
+ \let\FOmarginright\FOmargin
+ \let\FOmarginleft\FOmargin
+ \let\FOmargintop\FOmargin
+ \let\FOmarginbottom\FOmargin
+ \fi
+ \ifx\FOpagewidth\att@auto\edef\FOpagewidth{\paperwidth}\fi
+ \ifx\FOpageheight\att@auto\edef\FOpageheight{\paperheight}\fi
+ \expandafter\xdef\csname\FOMaster:after\endcsname{DummyRegion}
+ \expandafter\xdef\csname\FOMaster:before\endcsname{DummyRegion}
+ \expandafter\xdef\csname\FOMaster:before-extent\endcsname{\FOextent}
+ \expandafter\xdef\csname\FOMaster:after-extent\endcsname{\FOextent}
+ }
+ {
+ \ifdim\InnerTopMargin>\FOmargintop\def\FOmargintop{\InnerTopMargin}\fi
+ \ifdim\InnerBottomMargin>\FOmarginbottom\def\FOmarginbottom{\InnerBottomMargin}\fi
+ \ifdim\InnerRightMargin>\FOmarginright\def\FOmarginright{\InnerRightMargin}\fi
+ \ifdim\InnerLeftMargin>\FOmarginleft\def\FOmarginleft{\InnerLeftMargin}\fi
+ \DEBUG{Define page master \FOmargin, \FOMaster, \FOmarginright/\FOmarginleft}
+ \begingroup
+ \utfeight@protect@chars
+ \expandafter\xdef\csname Atomic:\FOMaster\endcsname{
+ \MasterTopMargin\FOmargintop
+ \MasterBottomMargin\FOmarginbottom
+ \MasterRightMargin\FOmarginright
+ \MasterLeftMargin\FOmarginleft
+ \paperwidth\FOpagewidth
+ \paperheight\FOpageheight
+ }
+ \endgroup
+ }
+\endinput
+
+%%% white space hacking to try at some point
+\ignorewhitespace
+in the code for fo:root
+and
+\usewhitespace\ignorespaces
+(to turn on white space, except for any white space at the start of the
+element) at the end of any elements that take character data.
+
+definitions something like'
+\def\ignorewhitespace{
+ \UnicodeCharacter{13}{ \ignorespaces}
+ \UnicodeCharacter{32}{ \ignorespaces}
+ \UnicodeCharacter{9}{ \ignorespaces}
+}
+\def\usewhitespace{
+ \UnicodeCharacter{13}{}
+ \UnicodeCharacter{32}{}
+ \UnicodeCharacter{9}{}
+}
+
diff --git a/macros/xmltex/contrib/passivetex/mlnames.sty b/macros/xmltex/contrib/passivetex/mlnames.sty
new file mode 100644
index 0000000000..72fc5ade4c
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/mlnames.sty
@@ -0,0 +1,439 @@
+%% File: $Id: //depot/Master/texmf/tex/xmltex/passivetex/mlnames.sty#20 $ $Date: 2002/06/25 $ Copyright 1999 Sebastian Rahtz
+%%
+%% This package may be distributed under the terms of the LaTeX Project Public
+%% License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\ProvidesPackage{mlnames}[2001/01/10, some XSL and Unicode support material, Sebastian Rahtz]
+%
+\DeclareFontFamily{T1}{pzd}{}
+\DeclareFontShape{T1}{pzd}{m}{n}{<->pzdr}{}
+\def\Family@monospace{pcr}
+\def\Family@sansserif{phv}
+\expandafter\def\csname Family@sans-serif\endcsname{phv}
+\def\Family@serif{ptm}
+\def\Family@cursive{uzc}
+\def\Family@fantasy{uzc}
+\DeclareFontFamily{T1}{uzc}{}
+\DeclareFontShape{T1}{uzc}{mb}{it}{<-> uzcmi8t}{}
+\DeclareFontShape{T1}{uzc}{m}{it}{<->ssub * uzc/mb/it}{}
+\DeclareFontShape{T1}{uzc}{m}{n}{<->ssub * uzc/mb/it}{}
+\def\Family@unknown{<unknown>}
+\def\Family@Arial{phv}
+\def\Family@Helvetica{phv}
+\def\Family@Palatino{ppl}
+\def\Family@Bookman{pbk}
+\def\Family@BaskervilleMT{mbv}
+\def\Family@Courier{pcr}
+\def\Family@Symbol{psy}
+\def\Family@Wingdings{pzd}
+\def\Family@WingDings{pzd}
+\def\Family@LucidaSans{hls}
+\def\Family@LucidaBright{hlh}
+\def\Family@LucidaTypewriter{hlst}
+\def\Family@Savoy{usb}
+\def\Family@Luxi{ul9}
+\def\Family@ACaslon{pca}
+\def\Family@Caslon{uca}
+\def\Family@Formata{pfa}
+\def\Family@FranklinGothic{pfg}
+\def\Family@OCRAbyBT{boa}
+\def\Family@AGaramond{pad}
+\expandafter\def\csname Family@Avant-Garde\endcsname{pag}
+\expandafter\def\csname Family@Courier New\endcsname{pcr}
+\expandafter\def\csname Family@New-Century-Schoolbook\endcsname{pnc}
+\expandafter\def\csname Family@Times-Roman\endcsname{ptm}
+\expandafter\def\csname Family@Trade-Gothic\endcsname{ptg}
+\expandafter\def\csname Family@Times-New-Roman\endcsname{ptm}
+\expandafter\def\csname Family@Times New Roman\endcsname{ptm}
+\expandafter\def\csname Family@Times Roman\endcsname{ptm}
+\expandafter\def\csname Family@Times-NR-MT\endcsname{mnt}
+\expandafter\def\csname Family@Courier-New\endcsname{pcr}
+\expandafter\def\csname Family@Zapf-Dingbats\endcsname{pzd}
+\expandafter\def\csname Family@Gill-Sans\endcsname{pgs}
+\expandafter\def\csname Family@iso-serif\endcsname{ptm}
+\expandafter\def\csname Family@sans-serif\endcsname{phv}
+\expandafter\def\csname Family@iso-sanserif\endcsname{phv}
+\expandafter\def\csname Family@iso-monospace\endcsname{pcr}
+\expandafter\def\csname Family@LetterGothic12PitchBT\endcsname{blg}
+\expandafter\def\csname Family@NewsGothic\endcsname{bng}
+\expandafter\def\csname Family@NewsGothicBT\endcsname{bng}
+\expandafter\def\csname Family@Humanist521\endcsname{bgs}
+\expandafter\def\csname Family@Humanist521BT\endcsname{bgs}
+\expandafter\def\csname Family@Monospace821\endcsname{bhvt}
+\expandafter\def\csname Family@Monospace821BT\endcsname{bhvt}
+\expandafter\def\csname Family@OCRB10PitchBT\endcsname{bob}
+\expandafter\def\csname Family@OCR-A\endcsname{boa}
+\expandafter\def\csname Family@OCR-B-10PitchBT\endcsname{bob}
+% \end{macrocode}
+% Matthias Clasen asked for the special code to be able
+% to access Computer Modern caps and small caps as a font family.
+% \begin{macrocode}
+\expandafter\def\csname Family@Computer-Modern-Typewriter\endcsname{aett}
+\expandafter\def\csname Family@Computer-Modern-Sans\endcsname{aess}
+\expandafter\def\csname Family@Computer-Modern\endcsname{aer}
+\DeclareFontFamily{T1}{aett}{}
+\DeclareFontShape{T1}{aett}{bx}{m}{<-> aebx10}{}
+\DeclareFontShape{T1}{aett}{m}{n}{ <-9> aett8 <9-10> aett9 <10-12> aett10
+ <12-> aett12
+}{}
+
+\DeclareFontShape{T1}{aett}{m}{it}{ <-> aeitt10 }{}
+\DeclareFontShape{T1}{aett}{m}{sl}{ <-> aesltt10 }{}
+\DeclareFontShape{T1}{aett}{m}{sc}{ <-> aetcsc10 }{}
+\DeclareFontShape{T1}{aett}{l}{n}{<->ssub * aett/m/n}{}
+\DeclareFontShape{T1}{aett}{l}{it}{<->ssub * aett/m/it}{}
+\DeclareFontShape{T1}{aett}{l}{sl}{<->ssub * aett/m/sl}{}
+\DeclareFontShape{T1}{aett}{l}{sc}{<->ssub * aett/m/sc}{}
+
+\providecommand{\EC@family}[5]{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}%
+ {<5><6><7><8><9><10><10.95><12><14.4>%
+ <17.28><20.74><24.88>genb*#5}{}}
+\DeclareFontFamily{T1}{cmcsc}{}
+\EC@family{T1}{cmcsc}{m}{n}{eccc}
+\EC@family{T1}{cmcsc}{bx}{n}{ecxc}
+\EC@family{T1}{cmcsc}{m}{sl}{ecsc}
+\EC@family{T1}{cmcsc}{bx}{sl}{ecoc}
+\expandafter\def\csname Family@Computer-Modern-Caps-And-Small-Caps\endcsname{cmcsc}
+\def\Family@cmr{cmr}
+\def\Family@cmss{cmss}
+\def\Family@cmtt{cmtt}
+\def\Family@cmcsc{cmcsc}
+\def\Family@ectt{ectt}
+% Fonts used by Mandrakesoft configuration
+\def\Family@Utopia{put}
+\def\Family@ZapfChancery{pzc}
+\def\Family@Fibonacci{cmfib}
+\def\Family@Funny{cmfr}
+\def\Family@Dunhill{cmdh}
+\def\Family@Concrete{ccr}
+\def\Family@Charter{bch}
+\def\Family@Fontpxr{pxr}
+\def\Family@Fontaer{aer}
+\def\Family@Fontaess{aess}
+\def\Family@Fontaett{aett}
+\def\Family@Fontlcmss{lcmss}
+\def\Family@Fontlcmtt{lcmtt}
+\def\Family@Fontcmvtt{cmvtt}
+\def\Family@Fontcmbr{cmbr}
+\def\Family@Fontcmtl{cmtl}
+\def\Family@Fontpxss{pxss}
+\def\Family@Fonttxss{txss}
+\def\Family@Fonttxr{txr}
+%
+\def\Posture@upright{n}
+\def\Posture@normal{n}
+\def\Posture@math{it}
+\def\Posture@oblique{sl}
+\def\Posture@backslantedoblique{ui}
+\def\Posture@italic{it}
+\def\Posture@backslanteditalic{ui}
+%
+\def\Weight@ultralight{ul}
+\def\Weight@extralight{el}
+\def\Weight@light{l}
+\def\Weight@semilight{sl}
+\def\Weight@medium{}
+\def\Weight@normal{}
+\def\Weight@semibold{sb}
+\def\Weight@bold{bx}
+\def\Weight@extrabold{eb}
+\def\Weight@ultrabold{ub}
+\def\Weight@false{}
+%
+\expandafter\def\csname Width@ultra-condensed\endcsname{uc}
+\expandafter\def\csname Width@extra-condensed\endcsname{ec}
+\expandafter\def\csname Width@condensed\endcsname{c}
+\expandafter\def\csname Width@semi-condensed\endcsname{sc}
+\expandafter\def\csname Width@normal\endcsname{}
+\expandafter\def\csname Width@semi-expanded\endcsname{sx}
+\expandafter\def\csname Width@expanded\endcsname{x}
+\expandafter\def\csname Width@extra-expanded\endcsname{ex}
+\expandafter\def\csname Width@ultra-expanded\endcsname{ux}
+\def\Width@ultracondensed{uc}
+\def\Width@extracondensed{ec}
+\def\Width@condensed{c}
+\def\Width@semicondensed{sc}
+\def\Width@medium{}
+\def\Width@semiexpanded{sx}
+\def\Width@expanded{x}
+\def\Width@extraexpanded{ex}
+\def\Width@ultraexpanded{ux}
+%
+% \end{macrocode}
+% \subsection{Languages}
+% This needs the TeX format to have these
+% languages selected, of course. That is up to the users.
+% Make sure shorthands are disabled.
+% \begin{macrocode}
+%
+% Mimic Babel for hyphenation.
+% read language.dat, using code from Johannes Braams' package,
+% to get the list of known languages
+%
+\def\selectlanguage#1{%
+\@ifundefined{l@#1}{\typeout{WARNING!! patterns for #1 not in
+ format file^^JWARNING!! - add them in language.dat and rebuild}}
+{\language=\csname l@#1\endcsname
+\@ifundefined{hyphenmins@#1}
+ {\lefthyphenmin2\righthyphenmin2}
+ {\edef\this{\csname hyphenmins@#1\endcsname}\expandafter\setmins\this\relax}
+}}
+\def\setmins#1#2\relax{\lefthyphenmin#1\righthyphenmin#2}
+\def\process@line#1#2 #3/{%
+ \ifx=#1
+ \process@synonym#2 /
+ \else
+ \process@language#1#2 #3/%
+ \fi
+ }
+\def\process@synonym#1 /{%
+ \ifnum\last@language=\m@ne
+ \expandafter\chardef\csname l@#1\endcsname0\relax
+ \wlog{\string\l@#1=\string\language0}
+ \else
+ \expandafter\chardef\csname l@#1\endcsname\last@language
+ \wlog{\string\l@#1=\string\language\the\last@language}
+ \fi
+ }
+\def\process@language#1 #2 #3/{%
+ \expandafter\addlanguage\csname l@#1\endcsname
+ \expandafter\language\csname l@#1\endcsname
+ }
+\catcode`\^^I=10\relax
+\openin1 = language.dat
+\ifeof1
+ \message{I couldn't find the file language.dat. No hyphenation!!!}
+\else
+ \last@language\m@ne
+ \loop
+ \endlinechar\m@ne
+ \read1 to \fo@line
+ \endlinechar`\^^M
+ \ifx\fo@line\@empty
+ \else
+ \edef\fo@line{\fo@line\space/}%
+ \expandafter\process@line\fo@line
+ \fi
+ \iftrue \csname fi\endcsname
+ \csname if\ifeof1 false\else true\fi\endcsname
+ \repeat
+ \language=0
+\fi
+\closein1
+\def\L@{}
+\def\hyphenmins@welsh{23}
+\def\hyphenmins@greek{11}
+\def\hyphenmins@ukenglish{23}
+\def\hyphenmins@dutch{23}
+\def\hyphenmins@english{23}
+\def\L@BR{\selectlanguage{brazil}}
+\def\L@CA{\selectlanguage{catalan}}
+\def\L@CY{\selectlanguage{welsh}}
+\def\L@CZ{\selectlanguage{czech}}
+\def\L@DE{\selectlanguage{german}}
+\def\L@DK{\selectlanguage{danish}}
+\def\L@EL{\selectlanguage{greek}}
+\def\L@ES{\selectlanguage{spanish}}
+\def\L@ET{\selectlanguage{estonian}}
+\def\L@FI{\selectlanguage{finnish}}
+\def\L@FR{\selectlanguage{french}}
+\def\L@GB{\selectlanguage{ukenglish}}
+\def\L@HR{\selectlanguage{croatian}}
+\def\L@HU{\selectlanguage{hungarian}}
+\def\L@IT{\selectlanguage{italian}}
+\def\L@NE{\selectlanguage{dutch}}
+\def\L@NO{\selectlanguage{norsk}}
+\def\L@PL{\selectlanguage{polish}}
+\def\L@PT{\selectlanguage{portuguese}}
+\def\L@RO{\selectlanguage{romanian}}
+\def\L@RU{\relax}
+\def\L@SH{\selectlanguage{serbocroat}}
+\def\L@SI{\selectlanguage{slovene}}
+\def\L@SK{\selectlanguage{slovak}}
+\def\L@US{\selectlanguage{english}}
+\def\L@none{\selectlanguage{english}}
+\def\L@br{\selectlanguage{portuguese}}
+\def\L@ca{\selectlanguage{catalan}}
+\def\L@cy{\selectlanguage{welsh}}
+\def\L@cs{\selectlanguage{czech}}
+\def\L@de{\selectlanguage{german}}
+\def\L@da{\selectlanguage{danish}}
+\def\L@el{\selectlanguage{greek}}
+\def\L@es{\selectlanguage{spanish}}
+\def\L@et{\selectlanguage{estonian}}
+\def\L@fi{\selectlanguage{finnish}}
+\def\L@fr{\selectlanguage{french}}
+\def\L@gb{\selectlanguage{ukenglish}}
+\def\L@hr{\selectlanguage{croatian}}
+\def\L@hu{\selectlanguage{hungarian}}
+\def\L@it{\selectlanguage{italian}}
+\def\L@nl{\selectlanguage{dutch}}
+\def\L@no{\selectlanguage{norsk}}
+\def\L@pl{\selectlanguage{polish}}
+\def\L@pt{\selectlanguage{portuguese}}
+\def\L@ro{\selectlanguage{romanian}}
+\def\L@ru{\selectlanguage{russian}}
+\def\L@sh{\selectlanguage{serbocroat}}
+\def\L@si{\selectlanguage{slovene}}
+\def\L@sk{\selectlanguage{slovak}}
+\def\L@us{\selectlanguage{english}}
+\def\L@en{\selectlanguage{english}}
+\def\L@id{\selectlanguage{indonesian}}
+\def\L@ja{\selectlanguage{japanese}}
+\def\L@ko{\selectlanguage{korean}}
+\def\L@sl{\selectlanguage{slovenian}}
+\def\L@sv{\selectlanguage{swedish}}
+\expandafter\def\csname L@pt_br\endcsname{\selectlanguage{portuguese}}
+\expandafter\def\csname L@zh_cn\endcsname{\selectlanguage{chinese}}
+\expandafter\def\csname L@zh_tw\endcsname{\selectlanguage{chinese-taiwan}}
+%
+% \end{macrocode}
+% \subsection{Paragraphs}
+% \begin{macrocode}
+\def\italicOver{\ifhmode\@@italiccorr\fi}
+%
+
+\def\startQ@justify{}
+\def\endQ@justify{}
+\def\startQ@center{\hskip\z@ plus 1filll}
+\def\endQ@center{\hskip\z@ plus 1filll}
+%
+\def\startQ@justified{%
+ \leftskip\StartIndent
+ \rightskip\EndIndent
+ \@rightskip\rightskip
+}
+\def\endQ@justified{}
+%
+\def\startQ@pageoutside{\hfill}
+\def\endQ@pageoutside{}
+%
+\def\startQ@pageinside{}
+\def\endQ@pageinside{\hfill}
+%
+\def\startQ@start{}
+\def\endQ@start{\hfill}
+\def\startQ@left{}
+\def\endQ@left{\hfill}
+%
+\def\startQ@end{\hfill}
+\def\endQ@end{}
+\def\startQ@right{\hfill}
+\def\endQ@right{}
+\def\Listjustified{%
+ \gdef\makelabel##1{##1}}
+\def\Liststart{% raggedright, I hope
+ \gdef\makelabel##1{##1\hfil}}
+\def\Listend{% raggedleft, I hope
+ \gdef\makelabel##1{\hfil##1}}
+\def\Listcentered{% centered
+ \gdef\makelabel##1{\hfil##1\hfil}}
+\def\Listcenter{% centered
+ \gdef\makelabel##1{\hfil##1\hfil}}
+%
+\def\Q@start{% raggedright, I hope
+ \let\newline\@centercr
+ \rightskip\EndIndent plus 1fil
+ \@rightskip\rightskip
+ \leftskip\StartIndent
+ \parfillskip\z@skip
+}
+\def\Q@justified{%
+% \let\\\@normalcr
+ \parfillskip\@flushglue
+ \leftskip\StartIndent
+ \rightskip\EndIndent
+ \@rightskip\rightskip
+}
+\let\Q@\Q@justified
+\let\Q@justify\Q@justified
+\let\startQ@\startQ@justified
+\let\endQ@\endQ@justified
+\def\Q@end{% raggedleft, I hope
+ \let\newline\@centercr
+ \leftskip\StartIndent plus 1fil%
+ \parfillskip\z@skip
+}
+\def\Q@centered{%
+ \let\newline\@centercr
+ \rightskip-\StartIndent plus 1fil%
+ \@rightskip\rightskip
+ \leftskip-\EndIndent plus 1fil%
+ \parfillskip\z@skip
+}
+\def\Q@center{%
+ \let\newline\@centercr
+ \rightskip-\StartIndent plus 1fil%
+ \@rightskip\rightskip
+ \leftskip-\EndIndent plus 1fil%
+ \parfillskip\z@skip
+}
+\let\Q@left\Q@start
+\let\Q@right\Q@end
+% for JadeTeX
+\def\JQ@justify{%
+ \let\\\@normalcr
+ \parfillskip\@flushglue
+ \parindent\z@
+}
+\def\JQ@start{% raggedright, I hope
+ \let\\\@centercr
+ \rightskip\EndIndent plus 1fil
+ \@rightskip\rightskip
+ \parfillskip\z@skip
+ \parindent\z@
+}
+\def\JQ@end{% raggedleft, I hope
+ \let\\\@centercr
+ \leftskip\StartIndent plus 1fil%
+ \parfillskip\z@skip
+}
+\def\JQ@center{%
+ \let\\\@centercr
+ \rightskip\EndIndent plus 1fil%
+ \@rightskip\rightskip
+ \leftskip\StartIndent plus 1fil%
+ \parfillskip\z@skip\parindent\z@
+}
+
+\def\Q@pageoutside{%
+ \let\\\@centercr
+ \leftskip\StartIndent plus 1fil%
+ \parfillskip\z@skip
+}
+\def\Q@pageinside{%
+ \let\\\@centercr
+ \rightskip\EndIndent plus 1fil%
+ \@rightskip\rightskip
+ \parfillskip\z@skip
+}
+\def\JObeylines{%
+ \@tempswafalse
+ \def\par{%
+ \if@tempswa
+ \leavevmode \null \@@par\penalty\interlinepenalty
+ \else
+ \@tempswatrue
+ \ifhmode\@@par\penalty\interlinepenalty\fi
+ \fi}%
+ \obeylines\everypar \expandafter{\the\everypar \ifvmode\else\unpenalty\fi}%
+}
+\newif\if@obeylines
+\@obeylinesfalse
+\def\Lines@asis{\pretolerance=-1\tolerance=-1\JObeylines\@obeylinestrue}
+\def\Lines@wrap{\@obeylinesfalse}
+\expandafter\def\csname Lines@asis-truncate\endcsname{%
+ \JObeylines\@obeylinestrue}
+\expandafter\def\csname Lines@asis-wrap\endcsname{\@obeylinesfalse}
+%
+\def\Fld@start{l}
+\def\Fld@center{c}
+\def\Fld@end{r}
+%
+\def\White@preserve{\catcode`\ =\active\@vobeyspaces}
+%
+\def\Break@page{\newpage}
+\def\Break@{}
+\endinput
diff --git a/macros/xmltex/contrib/passivetex/tei.xmt b/macros/xmltex/contrib/passivetex/tei.xmt
new file mode 100644
index 0000000000..d29e254cb0
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/tei.xmt
@@ -0,0 +1,219 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% tei.xmt
+
+%% Copyright 2000 Sebastian Rahtz, David Carlisle
+
+%% This file is distributed under the LaTeX Project Public License
+%% (LPPL) as found at http://www.latex-project.org/lppl.txt
+%% Either version 1.0, or at your option, any later version.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\XMLname{div}{\DIV}
+\XMLname{figure}{\FIGURE}
+\XMLname{table}{\TABLE}
+\XMLstring\type@equation<>equation</>
+\XMLstring\type@display<>display</>
+\XMLstring\type@subeqn<>subeqn</>
+
+\XMLelement{TEI.2}{}
+ { \documentclass{article}
+ \usepackage[bookmarks=false]{hyperref}
+ \usepackage{teixml}
+ \begin{document} }
+ {\end{document}}
+
+\XMLelement{p}{}
+ {\par}
+ {}
+
+\newcount\SCOUNT
+\global\SCOUNT-1\relax
+
+\XMLelement{div}{
+ \XMLattribute{id}{\idval}{\@nil}}
+ {\advance\SCOUNT\@ne}
+ {}
+
+\XMLelement{head}{ }
+ {\xmlgrab}
+ {
+ \ifx\XML@parent\DIV
+ \protected@xdef\temp{
+ \expandafter\noexpand\ifcase\SCOUNT
+ \section\or\subsection\or\subsubsection\fi
+ {#1}\ifx\idval\@nnil\else\noexpand\label{\idval}
+ \fi}
+ \aftergroup\temp
+ \else
+ \ifx\XML@parent\TABLE\caption{#1}\fi
+ \ifx\XML@parent\FIGURE\caption{#1}\fi
+ \fi
+
+}
+
+
+\XMLelement{emph}{}
+ {\itshape}
+ {}
+
+\XMLelement{formula}
+ {\XMLattribute{type}{\Formulatype}{}}
+ {
+ \ifx\Formulatype\type@equation
+% \begin{equation}
+ \fi
+ }
+ {
+ \ifx\Formulatype\type@equation
+% \end{equation}
+ \fi
+ }
+
+\XMLelement{figure}
+ {\XMLattribute{id}{\figid}{}
+ \XMLattribute{width}{\FIGwidth}{}
+ \XMLattribute{height}{\FIGheight}{}
+ \XMLattribute{file}{\figfile}{}
+ \XMLattribute{entity}{\figent}{}
+ }
+ {\begin{figure}
+ \ifx\FIGwidth\@empty\else\setkeys{Gin}{width=\FIGwidth}\fi
+ \ifx\FIGheight\@empty\else\setkeys{Gin}{height=\FIGheight}\fi
+ \ifx\@empty\figfile
+ \NDATAEntity\figent\@gobble\includegraphics
+ \else
+ \includegraphics{\figfile}%
+ \fi}
+ {\ifx\@empty\figid
+ \else
+ \label{\figid}
+ \fi
+ \end{figure}}
+
+\XMLelement{code}{}
+ {\ttfamily}
+ {}
+
+\XMLelement{gi}{}
+ {\ttfamily\textless}
+ {\textgreater}
+
+\XMLelement{eg}{}
+ {\begin{quote}\ttfamily\obeylines}
+ {\end{quote}}
+
+\XMLelement{teiHeader}{}
+ {\xmlgrab}
+ {\xmltexfirstchild#1\@empty\@}
+
+\XMLelement{fileDesc}{}
+ {}
+ {}
+
+\XMLelement{titleStmt}{}
+ {\xmlgrab}
+ {}
+
+\XMLelement{sourceDesc}{}
+ {\xmlgrab}
+ {}
+
+\XMLelement{availability}{}
+ {\xmlgrab}
+ {\gdef\header@availability{#1}}
+
+\XMLelement{docTitle}{}
+ {\xmlgrab}
+ {\gdef\nopar{\let\par\relax}
+ \title{#1}%
+ % \ifx\\unskip\thanks{\protect\nopar\ignorespaces\header@availability}
+ }
+
+\XMLelement{xptr}
+ {
+ \XMLattribute{doc}{\xptrdoc}{}
+ \XMLattribute{url}{\xptrurl}{}
+ }
+ {
+ \ifx\@empty\xptrurl
+ \NDATAEntity\xptrdoc\@gobble\url
+ \else
+ \url{\xptrurl}
+ \fi
+ }
+ {}
+
+\XMLelement{docDate}{}
+ {\xmlgrab}
+ {\date{#1}}
+
+\XMLelement{docAuthor}{}
+ {\xmlgrab}
+ {\author{#1}}
+
+\XMLelement{front}{}
+ {}
+ {\maketitle}
+
+\XMLelement{item}
+ {}
+ {\csname Item\listtype\endcsname}
+ {}
+
+\XMLelement{label}
+ {}
+ {\xmlgrab}
+ {\gdef\foo{\item[#1]}\aftergroup\foo}
+
+\XMLelement{list}{
+ \XMLattribute{type}{\listtype}{unordered}}
+ {\csname List\listtype\endcsname}
+ {\csname endList\listtype\endcsname}
+
+\XMLelement{q}{
+ \XMLattribute{rend}{\qrend}{}}
+ {\begin{quote}
+ \ifthenelse{\equal{\qrend}{eg}}{\ttfamily\obeylines}{}}
+ {\end{quote}}
+
+\XMLelement{ptr}
+ {\XMLattribute{target}{\ptrtarget}{}}
+ {\hyperref[\ptrtarget]{\ref{\ptrtarget}}}
+ {}
+
+\XMLelement{ref}
+ {\XMLattribute{target}{\reftarget}{}}
+ {\xmlgrab}
+ {\hyperref[\reftarget]{#1}}
+
+
+\XMLelement{table}
+ {\XMLattribute{rend}{\tablerend}{}}
+ {\begin{longtable}{*{99}{l}}}
+ {\end{longtable}}
+
+\XMLelement{row}{}
+ {\xmlgrab}
+ {\gdef\temp{#1\\}\aftergroup\temp}
+
+\XMLelement{cell}{}
+ {\xmlgrab}
+ {\gdef\temp{#1\tabcellsep}\aftergroup\temp}
+
+
+
+%%%% bibliography
+
+\XMLelement{listBibl}
+ {}
+ {\begin{thebibliography}{99}}
+ {\end{thebibliography}}
+
+\XMLelement{bibl}
+ {\XMLattribute{id}{\bibid}{}}
+ {\bibitem{\bibid}}
+ {}
+
+% cheating, a bit
+\XMLentity{TeX}{\TeX}
+\XMLentity{LaTeX}{\LaTeX}
diff --git a/macros/xmltex/contrib/passivetex/teiprintslides.xmt b/macros/xmltex/contrib/passivetex/teiprintslides.xmt
new file mode 100644
index 0000000000..6462cffc44
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/teiprintslides.xmt
@@ -0,0 +1,316 @@
+\XMLname{div}{\DIV}
+\XMLname{figure}{\FIGURE}
+\XMLname{label}{\LABEL}
+\XMLname{P}{\PARA}
+\XMLname{list}{\LIST}
+\XMLname{table}{\TABLE}
+\XMLstring\type@equation<>equation</>
+\XMLstring\type@display<>display</>
+\XMLstring\type@subeqn<>subeqn</>
+\XMLstring\rend@slide<>slide</>
+\XMLstring\rend@box<>box</>
+\XMLstring\rend@pausing<>pausing</>
+
+\XMLelement{TEI.2}{}
+ {
+\documentclass{article}
+\newenvironment{teislide}{}{}
+\usepackage[bookmarks=false,pdftex]{hyperref}
+\usepackage[gray,panelleft,screen]{pdfscreen}
+\usepackage{teixmlslides}
+\pagestyle{title}
+\definecolor{Gray}{gray}{1}
+\definecolor{bboxcolor}{gray}{1}
+\definecolor{boxcolor}{gray}{1}
+\definecolor{buttonbackground}{gray}{1}
+\definecolor{buttondisable}{gray}{1}
+\definecolor{buttonshadow}{gray}{1}
+\definecolor{coxcolor}{gray}{1}
+\definecolor{darkgreen}{gray}{0}
+\definecolor{egback}{gray}{1}
+\definecolor{egframe}{gray}{0}
+\definecolor{fcolor}{gray}{1}
+\definecolor{fgcolor}{gray}{1}
+\definecolor{lightblue}{gray}{1}
+\definecolor{lightcyan}{gray}{1}
+\definecolor{logobackground}{gray}{1}
+\definecolor{menucolor}{gray}{1}
+\definecolor{olivedrab}{gray}{1}
+\definecolor{orange1}{gray}{1}
+\definecolor{orange}{gray}{1}
+\definecolor{paleblue}{gray}{1}
+\definecolor{panelbackground}{gray}{1}
+\definecolor{pink}{gray}{1}
+\definecolor{rcolor}{gray}{1}
+\definecolor{section0}{gray}{0}
+\definecolor{section1}{gray}{0}
+\definecolor{section2}{gray}{0}
+\definecolor{section3}{gray}{0}
+\definecolor{section4}{gray}{0}
+\definecolor{section5}{gray}{0}
+
+\def\capfont{\@setfontsize\capfont{24}{26}\sffamily\color{white}}
+\def\titlefont{\@setfontsize\titlefont{30}{34}\color{dm}\sffamily\bfseries}
+ }
+{}
+
+\XMLelement{body}{}
+{
+ \begin{document}
+% \urlid{www.oucs.ox.ac.uk/}
+% \affname{Oxford University Computing Services}
+% \emblema{summer4.jpg}
+ \vbox to .8\paperheight{\vfill
+ \begin{center}
+ \Huge
+ \@title\\[30pt]
+ \@author\\
+ \@date
+ \end{center}
+\vfill}
+ \raggedright
+}
+ {\end{document}}
+
+\newcount\SCOUNT
+\global\SCOUNT-1\relax
+\XMLelement{div}{
+ \XMLattribute{id}{\idval}{\@nil}
+ \XMLattribute{rend}{\divrend}{plain}
+ }
+ {
+ \advance\SCOUNT\@ne
+ \ifx\divrend\rend@slide
+ \begin{teislide}
+ \else
+ \ifnum\SCOUNT=0\clearpage\fi
+ \fi
+ }
+ {\ifx\divrend\rend@slide
+ \end{teislide}
+ \fi
+ }
+
+\XMLelement{head}{ }
+ {\xmlgrab}
+ {
+ \ifx\XML@parent\DIV
+ \protected@xdef\temp{
+ \expandafter\noexpand\ifcase\SCOUNT
+ \section\or\subsection\or\subsubsection\fi
+ {#1}\ifx\idval\@nnil\else\noexpand\label{\idval}
+ \fi}
+ \aftergroup\temp
+ \else
+ \ifx\XML@parent\TABLE\caption{#1}\fi
+ \ifx\XML@parent\FIGURE\caption{#1}\fi
+ \fi
+
+}
+
+
+\XMLelement{term}{}
+ {\itshape}
+ {}
+
+\XMLelement{emph}{}
+ {\itshape}
+ {}
+
+\XMLelement{formula}
+ {\XMLattribute{type}{\Formulatype}{}}
+ {
+ \ifx\Formulatype\type@display
+ \begin{displaymath}
+ \else
+ \ifx\Formulatype\type@equation
+ \begin{equation}
+ \else
+ \ifx\Formulatype\type@subeqn
+ \(
+ \else
+ \(
+ \fi
+ \fi
+ \fi
+ }
+ { \ifx\Formulatype\type@display
+ \end{displaymath}
+ \else
+ \ifx\Formulatype\type@equation
+ \end{equation}
+ \else
+ \ifx\Formulatype\type@subeqn
+ \)
+ \else
+ \)
+ \fi
+ \fi
+ \fi
+}
+
+\XMLelement{figure}
+ {\XMLattribute{id}{\figid}{}
+ \XMLattribute{file}{\figfile}{}
+ \XMLattribute{width}{\figwidth}{}
+ \XMLattribute{height}{\figheight}{}
+ }
+ {
+ \ifx\figwidth\@empty\else\setkeys{Gin}{width=\figwidth}\fi
+ \ifx\figheight\@empty\else\setkeys{Gin}{height=\figheight}\fi
+ \ifx\XML@parent\PARA
+ \centerline{\includegraphics{\figfile}}
+ \else
+ \includegraphics{\figfile}
+ \fi
+ }
+ {}
+
+\XMLelement{code}{}
+ {\color{black}\ttfamily}
+ {}
+
+\XMLelement{hi}{}
+ {\bfseries}
+ {}
+
+\XMLelement{gi}{}
+ {\ttfamily\textless}
+ {\textgreater}
+
+\XMLelement{eg}{}
+ {\xmlgrab}
+ {\@tempdima\linewidth
+ \advance\@tempdima by -1cm
+ \fboxrule1pt
+ \fboxsep4pt
+ \vskip6pt
+ \fcolorbox{egframe}{egback}{\begin{minipage}{\@tempdima}
+ \color{black}\small\ttfamily\obeylines\obeyspaces
+ #1\end{minipage}}\vskip6pt}
+
+\XMLelement{p}
+ {\XMLattribute{rend}{\Prend}{}}
+ {\xmlgrab}
+ {
+ \ifx\Prend\rend@box
+ \@tempdima\linewidth
+ \advance\@tempdima by -1cm
+ \fboxrule1pt
+ \fboxsep4pt
+ \vskip6pt
+ \fbox{\begin{minipage}{\@tempdima}
+ \color{black}\small\ttfamily\obeylines\obeyspaces
+ #1\end{minipage}}\vskip6pt
+ \else
+ \par#1
+ \fi
+}
+
+\XMLelement{revisionDesc}{}
+ {\xmlgrab}
+ {}
+
+\XMLelement{fileDesc}{}
+ {\xmlgrab}
+ {}
+
+\XMLelement{titleStmt}{}
+ {\xmlgrab}
+ {}
+
+\XMLelement{xptr}
+ {
+ \XMLattribute{doc}{\xptrdoc}{}
+ \XMLattribute{url}{\xptrurl}{}
+ }
+ {
+ \ifx\@empty\xptrurl
+ \NDATAEntity\xptrdoc\@gobble\url
+ \else
+ \url{\xptrurl}
+ \fi
+ }
+ {}
+
+\XMLelement{xref}
+ {
+ \XMLattribute{doc}{\xptrdoc}{}
+ \XMLattribute{url}{\xptrurl}{}
+ }
+ {\xmlgrab}
+ {
+ \ifx\@empty\xptrurl
+ \NDATAEntity\xptrdoc\@gobble\url
+ \else
+ \href{\xptrurl}{#1}
+ \fi
+ }
+
+
+\XMLelement{docDate}{}
+ {\xmlgrab}
+ {\date{#1}}
+
+\XMLelement{docAuthor}{}
+ {\xmlgrab}
+ {\author{#1}}
+
+\XMLelement{docTitle}{}
+ {\xmlgrab}
+ {\title{#1}}
+
+\XMLelement{item}
+ {}
+ {\csname Item\listtype\endcsname}
+ {\endItem}
+
+\XMLelement{label}
+ {}
+ {\xmlgrab}
+ {\gdef\foo{\item[#1]}\aftergroup\foo}
+
+\XMLelement{list}{
+ \XMLattribute{type}{\listtype}{unordered}
+ \XMLattribute{rend}{\listrend}{plain}
+}
+ {\csname List\listtype\endcsname}
+ {\csname endList\listtype\endcsname}
+
+
+\XMLelement{q}{
+ \XMLattribute{rend}{\qrend}{}}
+ {\begin{quote}
+ \ifthenelse{\equal{\qrend}{eg}}{\color{black}\ttfamily\obeylines}{}}
+ {\end{quote}}
+
+\XMLelement{ptr}
+ {\XMLattribute{target}{\ptrtarget}{}}
+ {\href{\ptrtarget}{\ref{\ptrtarget}}}
+ {}
+
+\XMLelement{ref}
+ {\XMLattribute{target}{\reftarget}{}}
+ {\xmlgrab}
+ {\href{\reftarget}{#1}}
+
+
+\XMLelement{table}
+ {\XMLattribute{rend}{\tablerend}{}}
+ {\begin{tabular}{*{99}{l}}}
+ {\end{tabular}}
+
+\XMLelement{row}{}
+ {\xmlgrab}
+ {\gdef\temp{#1\\}\aftergroup\temp}
+
+\XMLelement{cell}{}
+ {\xmlgrab}
+ {\gdef\temp{#1\tabcellsep}\aftergroup\temp}
+
+\XMLelement{lb}{}{\gdef\temp{\\}\aftergroup\temp}{}
+
+
+% cheating, a bit
+\XMLentity{TeX}{\TeX}
+\XMLentity{LaTeX}{\LaTeX}
diff --git a/macros/xmltex/contrib/passivetex/teislides.xmt b/macros/xmltex/contrib/passivetex/teislides.xmt
new file mode 100644
index 0000000000..bd83d8f012
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/teislides.xmt
@@ -0,0 +1,298 @@
+\XMLname{div}{\DIV}
+\XMLname{figure}{\FIGURE}
+\XMLname{label}{\LABEL}
+\XMLname{P}{\PARA}
+\XMLname{list}{\LIST}
+\XMLname{table}{\TABLE}
+\XMLstring\type@equation<>equation</>
+\XMLstring\type@display<>display</>
+\XMLstring\type@subeqn<>subeqn</>
+\XMLstring\rend@slide<>slide</>
+\XMLstring\rend@box<>box</>
+\XMLstring\rend@pausing<>pausing</>
+
+\XMLelement{TEI.2}{}
+ {
+\documentclass{article}
+\newenvironment{teislide}{}{}
+\usepackage[bookmarks=false,pdftex]{hyperref}
+\usepackage[gray,panelleft,screen]{pdfscreen}
+\usepackage{teixmlslides}
+\hypersetup{pdfpagemode=FullScreen}
+\pagestyle{title}
+\color{section0}
+\def\capfont{\@setfontsize\capfont{24}{26}\sffamily\color{white}}
+\def\titlefont{\@setfontsize\titlefont{30}{34}\color{dm}\sffamily\bfseries}
+ }
+{}
+
+\XMLelement{body}{}
+{
+ \begin{document}
+% \urlid{www.oucs.ox.ac.uk/}
+% \affname{Oxford University Computing Services}
+% \emblema{summer4.jpg}
+ \vbox to .8\paperheight{\vfill
+ \begin{center}
+ \Huge
+ \@title\\[30pt]
+ \@author\\
+ \@date
+ \end{center}
+\vfill}
+ \raggedright
+}
+ {\end{document}}
+
+\newcount\SCOUNT
+\global\SCOUNT-1\relax
+\XMLelement{div}{
+ \XMLattribute{id}{\idval}{\@nil}
+ \XMLattribute{rend}{\divrend}{plain}
+ }
+ {
+ \advance\SCOUNT\@ne
+ \ifx\divrend\rend@slide
+ \begin{teislide}
+ \else
+ \ifnum\SCOUNT=0\clearpage\fi
+ \fi
+ }
+ {\ifx\divrend\rend@slide
+ \end{teislide}
+ \fi
+ }
+
+\XMLelement{head}{ }
+ {\xmlgrab}
+ {
+ \ifx\XML@parent\DIV
+ \protected@xdef\temp{
+ \expandafter\noexpand\ifcase\SCOUNT
+ \section\or\subsection\or\subsubsection\fi
+ {#1}\ifx\idval\@nnil\else\noexpand\label{\idval}
+ \fi}
+ \aftergroup\temp
+ \else
+ \ifx\XML@parent\TABLE\caption{#1}\fi
+ \ifx\XML@parent\FIGURE\caption{#1}\fi
+ \fi
+
+}
+
+
+\XMLelement{term}{}
+ {\itshape}
+ {}
+
+\XMLelement{emph}{}
+ {\itshape}
+ {}
+
+\XMLelement{formula}
+ {\XMLattribute{type}{\Formulatype}{}}
+ {
+ \ifx\Formulatype\type@display
+ \begin{displaymath}
+ \else
+ \ifx\Formulatype\type@equation
+ \begin{equation}
+ \else
+ \ifx\Formulatype\type@subeqn
+ \(
+ \else
+ \(
+ \fi
+ \fi
+ \fi
+ }
+ { \ifx\Formulatype\type@display
+ \end{displaymath}
+ \else
+ \ifx\Formulatype\type@equation
+ \end{equation}
+ \else
+ \ifx\Formulatype\type@subeqn
+ \)
+ \else
+ \)
+ \fi
+ \fi
+ \fi
+}
+
+\XMLelement{figure}
+ {\XMLattribute{id}{\figid}{}
+ \XMLattribute{file}{\figfile}{}
+ \XMLattribute{width}{\figwidth}{}
+ \XMLattribute{height}{\figheight}{}
+ }
+ {
+ \ifx\figwidth\@empty\else\setkeys{Gin}{width=\figwidth}\fi
+ \ifx\figheight\@empty\else\setkeys{Gin}{height=\figheight}\fi
+ \ifx\XML@parent\PARA
+ \centerline{\includegraphics{\figfile}}
+ \else
+ \includegraphics{\figfile}
+ \fi
+ }
+ {}
+
+\XMLelement{code}{}
+ {\color{black}\ttfamily}
+ {}
+
+\XMLelement{hi}{}
+ {\bfseries}
+ {}
+
+\XMLelement{gi}{}
+ {\ttfamily\textless}
+ {\textgreater}
+
+\XMLelement{eg}{}
+ {\xmlgrab}
+ {\@tempdima\linewidth
+ \advance\@tempdima by -1cm
+ \fboxrule1pt
+ \fboxsep4pt
+ \vskip6pt
+ \fcolorbox{egframe}{egback}{\begin{minipage}{\@tempdima}
+ \color{black}\small\ttfamily\obeylines\obeyspaces
+ #1\end{minipage}}\vskip6pt}
+
+\XMLelement{p}
+ {\XMLattribute{rend}{\Prend}{}}
+ {\xmlgrab}
+ {
+ \ifx\Prend\rend@box
+ \@tempdima\linewidth
+ \advance\@tempdima by -1cm
+ \fboxrule1pt
+ \fboxsep4pt
+ \vskip6pt
+ \fcolorbox{egframe}{boxback}{\begin{minipage}{\@tempdima}
+ \color{black}#1\end{minipage}}\vskip6pt
+ \else
+ \par#1
+ \fi
+}
+
+\XMLelement{revisionDesc}{}
+ {\xmlgrab}
+ {}
+
+\XMLelement{fileDesc}{}
+ {\xmlgrab}
+ {}
+
+\XMLelement{titleStmt}{}
+ {\xmlgrab}
+ {}
+
+\XMLelement{xptr}
+ {
+ \XMLattribute{doc}{\xptrdoc}{}
+ \XMLattribute{url}{\xptrurl}{}
+ }
+ {
+ \ifx\@empty\xptrurl
+ \NDATAEntity\xptrdoc\@gobble\url
+ \else
+ \url{\xptrurl}
+ \fi
+ }
+ {}
+
+\XMLelement{xref}
+ {
+ \XMLattribute{doc}{\xptrdoc}{}
+ \XMLattribute{url}{\xptrurl}{}
+ }
+ {\xmlgrab}
+ {
+ \ifx\@empty\xptrurl
+ \NDATAEntity\xptrdoc\@gobble\url
+ \else
+ \href{\xptrurl}{#1}
+ \fi
+ }
+
+
+\XMLelement{docDate}{}
+ {\xmlgrab}
+ {\date{#1}}
+
+\XMLelement{docAuthor}{}
+ {\xmlgrab}
+ {\author{#1}}
+
+\XMLelement{docTitle}{}
+ {\xmlgrab}
+ {\title{#1}}
+
+\XMLelement{item}
+ {}
+ {\csname Item\listtype\endcsname}
+ {\endItem}
+
+\XMLelement{label}
+ {}
+ {\xmlgrab}
+ {\gdef\foo{\item[#1]}\aftergroup\foo}
+
+\XMLelement{list}{
+ \XMLattribute{type}{\listtype}{unordered}
+ \XMLattribute{rend}{\listrend}{plain}
+}
+ {\csname List\listtype\endcsname}
+ {\csname endList\listtype\endcsname}
+
+
+\XMLelement{q}{
+ \XMLattribute{rend}{\qrend}{}}
+ {\xmlgrab}
+ { \ifx\qrend\type@display
+ \begin{quote}
+ \ifthenelse{\equal{\qrend}{eg}}{\color{black}\ttfamily\obeylines}#1\end{quote}
+ \else
+ `#1'
+ \fi
+}
+
+\XMLelement{ptr}
+ {\XMLattribute{target}{\ptrtarget}{}}
+ {\href{\ptrtarget}{\ref{\ptrtarget}}}
+ {}
+
+\XMLelement{ref}
+ {\XMLattribute{target}{\reftarget}{}}
+ {\xmlgrab}
+ {\href{\reftarget}{#1}}
+
+
+\XMLelement{table}
+ {
+ \XMLattribute{tex}{\tableheader}{*{99}{l}}
+ \XMLattribute{rend}{\tablerend}{}
+ }
+ {\begingroup
+\utfeight@protect@chars\xdef\temp{\tableheader}%
+\endgroup
+\expandafter\doTable\temp\\}
+ {\end{tabular}}
+
+\XMLelement{row}{}
+ {\xmlgrab}
+ {\gdef\temp{#1\\}\aftergroup\temp}
+
+\XMLelement{cell}{}
+ {\xmlgrab}
+ {\gdef\temp{#1\tabcellsep}\aftergroup\temp}
+
+\XMLelement{lb}{}{\gdef\temp{\\}\aftergroup\temp}{}
+
+
+% cheating, a bit
+\XMLentity{TeX}{\TeX}
+\XMLentity{LaTeX}{\LaTeX}
diff --git a/macros/xmltex/contrib/passivetex/teixml.sty b/macros/xmltex/contrib/passivetex/teixml.sty
new file mode 100644
index 0000000000..46d41a8539
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/teixml.sty
@@ -0,0 +1,40 @@
+\ProvidesPackage{teixml}[2000/06/22: support for TEI XML formatting, S Rahtz]
+\RequirePackage{ifthen,longtable,nameref,graphicx}
+\openin\@inputcheck=teixml.cfg
+\ifeof\@inputcheck \relax
+\else
+\closein\@inputcheck
+ \input{teixml.cfg}
+\fi
+\usepackage{amsmath}
+\usepackage{times}
+\usepackage{unicode,ucharacters}
+
+% List types
+\def\Listordered{\begin{enumerate}}
+\def\endListordered{\end{enumerate}}
+\def\Listunordered{\begin{itemize}}
+\def\endListunordered{\end{itemize}}
+\def\Listgloss{\begin{description}}
+\def\endListgloss{\end{description}}
+\def\Listbulleted{\begin{itemize}}
+\def\endListbulleted{\end{itemize}}
+\def\Listitemize{\begin{itemize}}
+\def\endListitemize{\end{itemize}}
+\def\Listnumbered{\begin{enumerate}}
+\def\endListnumbered{\end{enumerate}}
+
+% items
+\def\Itemordered{\item}
+\def\Itembulleted{\item}
+\def\Itemnumbered{\item}
+\def\Itemunordered{\item}
+\def\Itemitemize{\item}
+\def\Itemgloss{}
+
+\def\supppdf{supp-pdf}
+\let\FOinputIfFileExists\InputIfFileExists
+\def\InputIfFileExists#1#2#3{%
+ {\def\@tempa{#1}\ifx\@tempa\supppdf\else
+ \FOinputIfFileExists{#1}{#2}{#3}\fi}}
+\endinput
diff --git a/macros/xmltex/contrib/passivetex/teixmlslides.sty b/macros/xmltex/contrib/passivetex/teixmlslides.sty
new file mode 100644
index 0000000000..5dc2d56a52
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/teixmlslides.sty
@@ -0,0 +1,63 @@
+\ProvidesPackage{teixmlslides}[2000/06/22: support for TEI XML formatting, S Rahtz]
+\RequirePackage{ifthen,longtable,nameref,graphicx}
+\openin\@inputcheck=teixml.cfg
+\ifeof\@inputcheck \relax
+\else
+\closein\@inputcheck
+ \input{teixml.cfg}
+\fi
+\def\VProcess#1{%
+{\immediate\openout\TeiFileOut tei.file\relax
+ \immediate\write\TeiFileOut{#1}\immediate\closeout\TeiFileOut}
+ \color{black}\small\ttfamily{\@input{tei.file}}}
+
+%\expandafter\def\expandafter\obeylines\expandafter{
+%\expandafter\def\csname 8:\string^^M\endcsname{\\\null}}
+
+\usepackage{amsmath}
+\usepackage{unicode,ucharacters}
+\definecolor{programframe}{rgb}{0,0,0.9}
+\definecolor{programback}{RGB}{233,120,0}
+\definecolor{egframe}{rgb}{0,0,0.9}
+\definecolor{egback}{RGB}{233,239,153}
+\definecolor{boxback}{RGB}{0,128,128}
+\newif\ifPausing
+\Pausingfalse
+% List types
+\def\Listordered{\begin{enumerate}\ifx\listrend\rend@pausing\Pausingtrue\fi}
+\def\endListordered{\end{enumerate}}
+\def\Listsimple{\begin{itemize}\ifx\listrend\rend@pausing\Pausingtrue\fi}
+\def\Listunordered{\begin{itemize}\ifx\listrend\rend@pausing\Pausingtrue\fi}
+\def\Listgloss{\begin{description}\ifx\listrend\rend@pausing\Pausingtrue\fi}
+\def\endListgloss{\end{description}}
+\def\Listbulleted{\begin{itemize}\ifx\listrend\rend@pausing\Pausingtrue\fi}
+\def\endListbulleted{\end{itemize}}
+\def\List{\begin{itemize}\ifx\listrend\rend@pausing\Pausingtrue\fi}
+\def\endList{\end{itemize}}
+\def\Listitemize{\begin{itemize}\ifx\listrend\rend@pausing\Pausingtrue\fi}
+\def\endListitemize{\end{itemize}}
+\def\Listnumbered{\begin{enumerate}\ifx\listrend\rend@pausing\Pausingtrue\fi}
+\def\endListnumbered{\end{enumerate}}
+\def\Listunordered{\begin{dinglist}{'052}\ifx\listrend\rend@pausing\Pausingtrue\fi}
+\def\endListunordered{\end{dinglist}}
+\def\endItem{\ifPausing\Mypause\fi}
+\providecommand\Mypause{}
+% items
+\def\Itemordered{\item}
+\def\Itembulleted{\item}
+\def\Itemnumbered{\item}
+\def\Itemunordered{\item}
+\def\Itemitemize{\item}
+\def\Itempausing{\item}
+\def\Item{\item}
+\def\Itemgloss{}
+
+\def\supppdf{supp-pdf}
+\let\FOinputIfFileExists\InputIfFileExists
+\def\InputIfFileExists#1#2#3{%
+ {\def\@tempa{#1}\ifx\@tempa\supppdf\else
+ \FOinputIfFileExists{#1}{#2}{#3}\fi}}
+\def\doTable#1\\{%
+ \begin{tabular}{#1}%
+}
+\endinput
diff --git a/macros/xmltex/contrib/passivetex/ucharacters.sty b/macros/xmltex/contrib/passivetex/ucharacters.sty
new file mode 100644
index 0000000000..713c292a66
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/ucharacters.sty
@@ -0,0 +1,2377 @@
+\DefineCharacter{160}{A0}{\ensuremath{\penalty10000\ }}
+\DefineCharacter{161}{A1}{\textexclamdown }
+\DefineCharacter{162}{A2}{\ifmmode \mbox{\textcent}\else \textcent \fi}%
+\DefineCharacter{163}{A3}{\ifmmode \pounds \else \textsterling \fi}%
+\DefineCharacter{164}{A4}{\ifmmode \mbox{\textcurrency}\else \textcurrency \fi}%
+\DefineCharacter{165}{A5}{\ifmmode \yen \else \textyen \fi}%
+\DefineCharacter{166}{A6}{\textbrokenbar }
+\DefineCharacter{167}{A7}{\ifmmode \S \else \textsection \fi}%
+\DefineCharacter{168}{A8}{\textasciidieresis }
+\DefineCharacter{169}{A9}{\ifmmode \copyright \else \textcopyright \fi}%
+\DefineCharacter{170}{AA}{\textordfeminine }
+\DefineCharacter{171}{AB}{\ifmmode \mbox{\guillemotleft}\else \guillemotleft \fi}%
+\DefineCharacter{172}{AC}{\ensuremath{\lnot }}
+\DefineCharacter{173}{AD}{\ensuremath{\-}}
+\DefineCharacter{174}{AE}{\ifmmode \circledR \else \textregistered \fi}%
+\DefineCharacter{175}{AF}{\textasciimacron }
+\DefineCharacter{176}{B0}{\ifmmode \mbox{\textdegree}\else \textdegree \fi}%
+\DefineCharacter{177}{B1}{\ensuremath{\pm }}
+\DefineCharacter{178}{B2}{\ensuremath{{^2}}}
+\DefineCharacter{179}{B3}{\ensuremath{{^3}}}
+\DefineCharacter{180}{B4}{\textasciiacute }
+\DefineCharacter{181}{B5}{\ensuremath{\mathrm{\mu}}}
+\DefineCharacter{182}{B6}{\ifmmode \P \else \textparagraph \fi}%
+\DefineCharacter{183}{B7}{\ensuremath{\cdot }}
+\DefineCharacter{184}{B8}{\ifmmode \mbox{\c{}}\else \c{}\fi}%
+\DefineCharacter{185}{B9}{\ensuremath{{^1}}}
+\DefineCharacter{186}{BA}{\textordmasculine }
+\DefineCharacter{187}{BB}{\ifmmode \mbox{\guillemotright}\else \guillemotright \fi}%
+\DefineCharacter{188}{BC}{\textonequarter }
+\DefineCharacter{189}{BD}{\textonehalf }
+\DefineCharacter{190}{BE}{\textthreequarters }
+\DefineCharacter{191}{BF}{\textquestiondown }
+\DefineCharacter{192}{C0}{\ifmmode \grave{A}\else \`{A}\fi}%
+\DefineCharacter{193}{C1}{\ifmmode \acute{A}\else \'{A}\fi}%
+\DefineCharacter{194}{C2}{\ifmmode \hat{A}\else \^{A}\fi}%
+\DefineCharacter{195}{C3}{\ifmmode \tilde{A}\else \~{A}\fi}%
+\DefineCharacter{196}{C4}{\ifmmode \ddot{A}\else \"{A}\fi}%
+\DefineCharacter{197}{C5}{\AA }
+\DefineCharacter{198}{C6}{\AE }
+\DefineCharacter{199}{C7}{\ifmmode \mbox{\c{C}}\else \c{C}\fi}%
+\DefineCharacter{200}{C8}{\ifmmode \grave{E}\else \`{E}\fi}%
+\DefineCharacter{201}{C9}{\ifmmode \acute{E}\else \'{E}\fi}%
+\DefineCharacter{202}{CA}{\ifmmode \hat{E}\else \^{E}\fi}%
+\DefineCharacter{203}{CB}{\ifmmode \ddot{E}\else \"{E}\fi}%
+\DefineCharacter{204}{CC}{\ifmmode \grave{I}\else \`{I}\fi}%
+\DefineCharacter{205}{CD}{\ifmmode \acute{I}\else \'{I}\fi}%
+\DefineCharacter{206}{CE}{\ifmmode \hat{I}\else \^{I}\fi}%
+\DefineCharacter{207}{CF}{\ifmmode \ddot{I}\else \"{I}\fi}%
+\DefineCharacter{208}{D0}{\DH }
+\DefineCharacter{209}{D1}{\ifmmode \tilde{N}\else \~{N}\fi}%
+\DefineCharacter{210}{D2}{\ifmmode \grave{O}\else \`{O}\fi}%
+\DefineCharacter{211}{D3}{\ifmmode \acute{O}\else \'{O}\fi}%
+\DefineCharacter{212}{D4}{\ifmmode \hat{O}\else \^{O}\fi}%
+\DefineCharacter{213}{D5}{\ifmmode \tilde{O}\else \~{O}\fi}%
+\DefineCharacter{214}{D6}{\ifmmode \ddot{O}\else \"{O}\fi}%
+\DefineCharacter{215}{D7}{\ifmmode \times \else \texttimes \fi}%
+\DefineCharacter{216}{D8}{\O }
+\DefineCharacter{217}{D9}{\ifmmode \grave{U}\else \`{U}\fi}%
+\DefineCharacter{218}{DA}{\ifmmode \acute{U}\else \'{U}\fi}%
+\DefineCharacter{219}{DB}{\ifmmode \hat{U}\else \^{U}\fi}%
+\DefineCharacter{220}{DC}{\ifmmode \ddot{U}\else \"{U}\fi}%
+\DefineCharacter{221}{DD}{\ifmmode \acute{Y}\else \'{Y}\fi}%
+\DefineCharacter{222}{DE}{\TH }
+\DefineCharacter{223}{DF}{\ss }
+\DefineCharacter{224}{E0}{\ifmmode \grave{a}\else \`{a}\fi}%
+\DefineCharacter{225}{E1}{\ifmmode \acute{a}\else \'{a}\fi}%
+\DefineCharacter{226}{E2}{\ifmmode \hat{a}\else \^{a}\fi}%
+\DefineCharacter{227}{E3}{\ifmmode \tilde{a}\else \~{a}\fi}%
+\DefineCharacter{228}{E4}{\ifmmode \ddot{a}\else \"{a}\fi}%
+\DefineCharacter{229}{E5}{\aa }
+\DefineCharacter{230}{E6}{\ae }
+\DefineCharacter{231}{E7}{\ifmmode \mbox{\c{c}}\else \c{c}\fi}%
+\DefineCharacter{232}{E8}{\ifmmode \grave{e}\else \`{e}\fi}%
+\DefineCharacter{233}{E9}{\ifmmode \acute{e}\else \'{e}\fi}%
+\DefineCharacter{234}{EA}{\ifmmode \hat{e}\else \^{e}\fi}%
+\DefineCharacter{235}{EB}{\ifmmode \ddot{e}\else \"{e}\fi}%
+\DefineCharacter{236}{EC}{\ifmmode \grave{\imath}\else \`{\i}\fi}%
+\DefineCharacter{237}{ED}{\ifmmode \acute{\imath}\else \'{\i}\fi}%
+\DefineCharacter{238}{EE}{\ifmmode \hat{\imath}\else \^{\i}\fi}%
+\DefineCharacter{239}{EF}{\ifmmode \ddot{\imath}\else \"{\i}\fi}%
+\DefineCharacter{240}{F0}{\dh }
+\DefineCharacter{241}{F1}{\ifmmode \tilde{n}\else \~{n}\fi}%
+\DefineCharacter{242}{F2}{\ifmmode \grave{o}\else \`{o}\fi}%
+\DefineCharacter{243}{F3}{\ifmmode \acute{o}\else \'{o}\fi}%
+\DefineCharacter{244}{F4}{\ifmmode \hat{o}\else \^{o}\fi}%
+\DefineCharacter{245}{F5}{\ifmmode \tilde{o}\else \~{o}\fi}%
+\DefineCharacter{246}{F6}{\ifmmode \ddot{o}\else \"{o}\fi}%
+\DefineCharacter{247}{F7}{\ensuremath{\div }}
+\DefineCharacter{248}{F8}{\o }
+\DefineCharacter{249}{F9}{\ifmmode \grave{u}\else \`{u}\fi}%
+\DefineCharacter{250}{FA}{\ifmmode \acute{u}\else \'{u}\fi}%
+\DefineCharacter{251}{FB}{\ifmmode \hat{u}\else \^{u}\fi}%
+\DefineCharacter{252}{FC}{\ifmmode \ddot{u}\else \"{u}\fi}%
+\DefineCharacter{253}{FD}{\ifmmode \acute{y}\else \'{y}\fi}%
+\DefineCharacter{254}{FE}{\th }
+\DefineCharacter{255}{FF}{\ifmmode \ddot{y}\else \"{y}\fi}%
+\DefineCharacter{256}{100}{\ifmmode \bar{A}\else \={A}\fi}%
+\DefineCharacter{257}{101}{\ifmmode \bar{a}\else \={a}\fi}%
+\DefineCharacter{258}{102}{\ifmmode \breve{A}\else \u{A}\fi}%
+\DefineCharacter{259}{103}{\ifmmode \u{a}\else \u{a}\fi}%
+\DefineCharacter{260}{104}{\k{A}}
+\DefineCharacter{261}{105}{\k{a}}
+\DefineCharacter{262}{106}{\ifmmode \acute{C}\else \'{C}\fi}%
+\DefineCharacter{263}{107}{\ifmmode \acute{c}\else \'{c}\fi}%
+\DefineCharacter{264}{108}{\ifmmode \hat{C}\else \^{C}\fi}%
+\DefineCharacter{265}{109}{\ifmmode \hat{c}\else \^{c}\fi}%
+\DefineCharacter{266}{10A}{\ifmmode \dot{C}\else \.{C}\fi}%
+\DefineCharacter{267}{10B}{\ifmmode \dot{c}\else \.{c}\fi}%
+\DefineCharacter{268}{10C}{\ifmmode \check{C}\else \v{C}\fi}%
+\DefineCharacter{269}{10D}{\ifmmode \check{c}\else \v{c}\fi}%
+\DefineCharacter{270}{10E}{\ifmmode \check{D}\else \v{D}\fi}%
+\DefineCharacter{271}{10F}{\ifmmode \check{d}\else \v{d}\fi}%
+\DefineCharacter{272}{110}{\DJ }
+\DefineCharacter{273}{111}{\dj }
+\DefineCharacter{274}{112}{\ifmmode \bar{E}\else \={E}\fi}%
+\DefineCharacter{275}{113}{\ifmmode \bar{e}\else \={e}\fi}%
+\DefineCharacter{276}{114}{\ifmmode \breve{E}\else \u{E}\fi}%
+\DefineCharacter{277}{115}{\ifmmode \breve{e}\else \u{e}\fi}%
+\DefineCharacter{278}{116}{\ifmmode \dot{E}\else \.{E}\fi}%
+\DefineCharacter{279}{117}{\ifmmode \dot{e}\else \.{e}\fi}%
+\DefineCharacter{280}{118}{\ifmmode \k{E}\else \k{E}\fi}%
+\DefineCharacter{281}{119}{\k{e}}
+\DefineCharacter{282}{11A}{\ifmmode \check{E}\else \v{E}\fi}%
+\DefineCharacter{283}{11B}{\ifmmode \check{e}\else \v{e}\fi}%
+\DefineCharacter{284}{11C}{\ifmmode \hat{G}\else \^{G}\fi}%
+\DefineCharacter{285}{11D}{\ifmmode \hat{g}\else \^{g}\fi}%
+\DefineCharacter{286}{11E}{\ifmmode \breve{G}\else \u{G}\fi}%
+\DefineCharacter{287}{11F}{\ifmmode \breve{g}\else \u{g}\fi}%
+\DefineCharacter{288}{120}{\ifmmode \dot{G}\else \.{G}\fi}%
+\DefineCharacter{289}{121}{\ifmmode \dot{g}\else \.{g}\fi}%
+\DefineCharacter{290}{122}{\ifmmode \mbox{\c{G}}\else \c{G}\fi}%
+\DefineCharacter{291}{123}{\ifmmode \mbox{\c{g}}\else \c{g}\fi}%
+\DefineCharacter{292}{124}{\ifmmode \hat{H}\else \^{H}\fi}%
+\DefineCharacter{293}{125}{\ifmmode \hat{h}\else \^{h}\fi}%
+\DefineCharacter{294}{126}{{\fontencoding{LELA}\selectfont\char40}}
+\DefineCharacter{295}{127}{\ensuremath{\Elzxh }}
+\DefineCharacter{296}{128}{\ifmmode \tilde{I}\else \~{I}\fi}%
+\DefineCharacter{297}{129}{\ifmmode \tilde{\imath}\else \~{\i}\fi}%
+\DefineCharacter{298}{12A}{\ifmmode \bar{I}\else \={I}\fi}%
+\DefineCharacter{299}{12B}{\ifmmode \bar{\imath}\else \={\i}\fi}%
+\DefineCharacter{300}{12C}{\ifmmode \breve{I}\else \u{I}\fi}%
+\DefineCharacter{301}{12D}{\ifmmode \breve{\imath}\else \u{\i}\fi}%
+\DefineCharacter{302}{12E}{\k{I}}
+\DefineCharacter{303}{12F}{\k{i}}
+\DefineCharacter{304}{130}{\ifmmode \dot{I}\else \.{I}\fi}%
+\DefineCharacter{305}{131}{\ifmmode \imath \else \i \fi}%
+\DefineCharacter{306}{132}{IJ}
+\DefineCharacter{307}{133}{ij}
+\DefineCharacter{308}{134}{\ifmmode \hat{J}\else \^{J}\fi}%
+\DefineCharacter{309}{135}{\ifmmode \hat{\jmath}\else \^{\j}\fi}%
+\DefineCharacter{310}{136}{\ifmmode \mbox{\c{K}}\else \c{K}\fi}%
+\DefineCharacter{311}{137}{\ifmmode \mbox{\c{k}}\else \c{k}\fi}%
+\DefineCharacter{312}{138}{{\fontencoding{LELA}\selectfont\char91}}
+\DefineCharacter{313}{139}{\ifmmode \acute{L}\else \'{L}\fi}%
+\DefineCharacter{314}{13A}{\ifmmode \acute{l}\else \'{l}\fi}%
+\DefineCharacter{315}{13B}{\ifmmode \mbox{\c{L}}\else \c{L}\fi}%
+\DefineCharacter{316}{13C}{\ifmmode \mbox{\c{l}}\else \c{l}\fi}%
+\DefineCharacter{317}{13D}{\ifmmode \check{L}\else \v{L}\fi}%
+\DefineCharacter{318}{13E}{\ifmmode \check{l}\else \v{l}\fi}%
+\DefineCharacter{319}{13F}{{\fontencoding{LELA}\selectfont\char201}}
+\DefineCharacter{320}{140}{{\fontencoding{LELA}\selectfont\char202}}
+\DefineCharacter{321}{141}{\L }
+\DefineCharacter{322}{142}{\l }
+\DefineCharacter{323}{143}{\ifmmode \acute{N}\else \'{N}\fi}%
+\DefineCharacter{324}{144}{\ifmmode \acute{n}\else \'{n}\fi}%
+\DefineCharacter{325}{145}{\ifmmode \mbox{\c{N}}\else \c{N}\fi}%
+\DefineCharacter{326}{146}{\ifmmode \mbox{\c{n}}\else \c{n}\fi}%
+\DefineCharacter{327}{147}{\ifmmode \check{N}\else \v{N}\fi}%
+\DefineCharacter{328}{148}{\ifmmode \check{n}\else \v{n}\fi}%
+\DefineCharacter{329}{149}{'n}
+\DefineCharacter{330}{14A}{\NG }
+\DefineCharacter{331}{14B}{\ng }
+\DefineCharacter{332}{14C}{\ifmmode \bar{O}\else \={O}\fi}%
+\DefineCharacter{333}{14D}{\ifmmode \bar{o}\else \={o}\fi}%
+\DefineCharacter{334}{14E}{\ifmmode \breve{O}\else \u{O}\fi}%
+\DefineCharacter{335}{14F}{\ifmmode \breve{o}\else \u{o}\fi}%
+\DefineCharacter{336}{150}{\ifmmode \mbox{\H{O}}\else \H{O}\fi}%
+\DefineCharacter{337}{151}{\ifmmode \mbox{\H{o}}\else \H{o}\fi}%
+\DefineCharacter{338}{152}{\OE }
+\DefineCharacter{339}{153}{\oe }
+\DefineCharacter{340}{154}{\ifmmode \acute{R}\else \'{R}\fi}%
+\DefineCharacter{341}{155}{\ifmmode \acute{r}\else \'{r}\fi}%
+\DefineCharacter{342}{156}{\ifmmode \mbox{\c{R}}\else \c{R}\fi}%
+\DefineCharacter{343}{157}{\ifmmode \mbox{\c{r}}\else \c{r}\fi}%
+\DefineCharacter{344}{158}{\ifmmode \check{R}\else \v{R}\fi}%
+\DefineCharacter{345}{159}{\ifmmode \check{r}\else \v{r}\fi}%
+\DefineCharacter{346}{15A}{\ifmmode \acute{S}\else \'{S}\fi}%
+\DefineCharacter{347}{15B}{\ifmmode \acute{s}\else \'{s}\fi}%
+\DefineCharacter{348}{15C}{\ifmmode \hat{S}\else \^{S}\fi}%
+\DefineCharacter{349}{15D}{\ifmmode \hat{s}\else \^{s}\fi}%
+\DefineCharacter{350}{15E}{\ifmmode \mbox{\c{S}}\else \c{S}\fi}%
+\DefineCharacter{351}{15F}{\ifmmode \mbox{\c{s}}\else \c{s}\fi}%
+\DefineCharacter{352}{160}{\ifmmode \check{S}\else \v{S}\fi}%
+\DefineCharacter{353}{161}{\ifmmode \check{s}\else \v{s}\fi}%
+\DefineCharacter{354}{162}{\ifmmode \mbox{\c{T}}\else \c{T}\fi}%
+\DefineCharacter{355}{163}{\ifmmode \mbox{\c{t}}\else \c{t}\fi}%
+\DefineCharacter{356}{164}{\ifmmode \check{T}\else \v{T}\fi}%
+\DefineCharacter{357}{165}{\ifmmode \check{t}\else \v{t}\fi}%
+\DefineCharacter{358}{166}{{\fontencoding{LELA}\selectfont\char47}}
+\DefineCharacter{359}{167}{{\fontencoding{LELA}\selectfont\char63}}
+\DefineCharacter{360}{168}{\ifmmode \tilde{U}\else \~{U}\fi}%
+\DefineCharacter{361}{169}{\ifmmode \tilde{u}\else \~{u}\fi}%
+\DefineCharacter{362}{16A}{\ifmmode \bar{U}\else \={U}\fi}%
+\DefineCharacter{363}{16B}{\ifmmode \bar{u}\else \={u}\fi}%
+\DefineCharacter{364}{16C}{\ifmmode \breve{U}\else \u{U}\fi}%
+\DefineCharacter{365}{16D}{\ifmmode \breve{u}\else \u{u}\fi}%
+\DefineCharacter{366}{16E}{\ifmmode \mathring{U}\else \r{U}\fi}%
+\DefineCharacter{367}{16F}{\ifmmode \mathring{u}\else \r{u}\fi}%
+\DefineCharacter{368}{170}{\ifmmode \mbox{\H{U}}\else \H{U}\fi}%
+\DefineCharacter{369}{171}{\ifmmode \mbox{\H{u}}\else \H{u}\fi}%
+\DefineCharacter{370}{172}{\ifmmode \k{U}\else \k{U}\fi}%
+\DefineCharacter{371}{173}{\k{u}}
+\DefineCharacter{372}{174}{\ifmmode \hat{W}\else \^{W}\fi}%
+\DefineCharacter{373}{175}{\ifmmode \hat{w}\else \^{w}\fi}%
+\DefineCharacter{374}{176}{\ifmmode \hat{Y}\else \^{Y}\fi}%
+\DefineCharacter{375}{177}{\ifmmode \hat{y}\else \^{y}\fi}%
+\DefineCharacter{376}{178}{\ifmmode \ddot{Y}\else \"{Y}\fi}%
+\DefineCharacter{377}{179}{\ifmmode \acute{Z}\else \'{Z}\fi}%
+\DefineCharacter{378}{17A}{\ifmmode \acute{z}\else \'{z}\fi}%
+\DefineCharacter{379}{17B}{\ifmmode \dot{Z}\else \.{Z}\fi}%
+\DefineCharacter{380}{17C}{\ifmmode \dot{z}\else \.{z}\fi}%
+\DefineCharacter{381}{17D}{\ifmmode \check{Z}\else \v{Z}\fi}%
+\DefineCharacter{382}{17E}{\ifmmode \check{z}\else \v{z}\fi}%
+\DefineCharacter{402}{192}{\ensuremath{f}}
+\DefineCharacter{405}{195}{\texthvlig }
+\DefineCharacter{414}{19E}{\textnrleg }
+\DefineCharacter{426}{1AA}{\ensuremath{\eth }}
+\DefineCharacter{442}{1BA}{{\fontencoding{LELA}\selectfont\char195}}
+\DefineCharacter{450}{1C2}{\textdoublepipe }
+\DefineCharacter{501}{1F5}{\ifmmode \acute{g}\else \'{g}\fi}%
+\DefineCharacter{592}{250}{\ensuremath{\Elztrna }}
+\DefineCharacter{594}{252}{\ensuremath{\Elztrnsa }}
+\DefineCharacter{596}{254}{\ensuremath{\Elzopeno }}
+\DefineCharacter{598}{256}{\ensuremath{\Elzrtld }}
+\DefineCharacter{600}{258}{{\fontencoding{LEIP}\selectfont\char61}}
+\DefineCharacter{601}{259}{\ensuremath{\Elzschwa }}
+\DefineCharacter{603}{25B}{\ensuremath{\varepsilon }}
+\DefineCharacter{609}{261}{g}
+\DefineCharacter{611}{263}{\ensuremath{\Elzpgamma }}
+\DefineCharacter{612}{264}{\ensuremath{\Elzpbgam }}
+\DefineCharacter{613}{265}{\ensuremath{\Elztrnh }}
+\DefineCharacter{620}{26C}{\ensuremath{\Elzbtdl }}
+\DefineCharacter{621}{26D}{\ensuremath{\Elzrtll }}
+\DefineCharacter{623}{26F}{\ensuremath{\Elztrnm }}
+\DefineCharacter{624}{270}{\ensuremath{\Elztrnmlr }}
+\DefineCharacter{625}{271}{\ensuremath{\Elzltlmr }}
+\DefineCharacter{626}{272}{\Elzltln }
+\DefineCharacter{627}{273}{\ensuremath{\Elzrtln }}
+\DefineCharacter{631}{277}{\ensuremath{\Elzclomeg }}
+\DefineCharacter{632}{278}{\textphi }
+\DefineCharacter{633}{279}{\ensuremath{\Elztrnr }}
+\DefineCharacter{634}{27A}{\ensuremath{\Elztrnrl }}
+\DefineCharacter{635}{27B}{\ensuremath{\Elzrttrnr }}
+\DefineCharacter{636}{27C}{\ensuremath{\Elzrl }}
+\DefineCharacter{637}{27D}{\ensuremath{\Elzrtlr }}
+\DefineCharacter{638}{27E}{\ensuremath{\Elzfhr }}
+\DefineCharacter{639}{27F}{{\fontencoding{LEIP}\selectfont\char202}}
+\DefineCharacter{642}{282}{\ensuremath{\Elzrtls }}
+\DefineCharacter{643}{283}{\ensuremath{\Elzesh }}
+\DefineCharacter{647}{287}{\ensuremath{\Elztrnt }}
+\DefineCharacter{648}{288}{\ensuremath{\Elzrtlt }}
+\DefineCharacter{650}{28A}{\ensuremath{\Elzpupsil }}
+\DefineCharacter{651}{28B}{\ensuremath{\Elzpscrv }}
+\DefineCharacter{652}{28C}{\ensuremath{\Elzinvv }}
+\DefineCharacter{653}{28D}{\ensuremath{\Elzinvw }}
+\DefineCharacter{654}{28E}{\ensuremath{\Elztrny }}
+\DefineCharacter{656}{290}{\ensuremath{\Elzrtlz }}
+\DefineCharacter{658}{292}{\ensuremath{\Elzyogh }}
+\DefineCharacter{660}{294}{\ensuremath{\Elzglst }}
+\DefineCharacter{661}{295}{\ensuremath{\Elzreglst }}
+\DefineCharacter{662}{296}{\ensuremath{\Elzinglst }}
+\DefineCharacter{670}{29E}{\textturnk }
+\DefineCharacter{676}{2A4}{\ensuremath{\Elzdyogh }}
+\DefineCharacter{679}{2A7}{\ensuremath{\Elztesh }}
+\DefineCharacter{700}{2BC}{'}
+\DefineCharacter{711}{2C7}{\textasciicaron }
+\DefineCharacter{712}{2C8}{\ensuremath{\Elzverts }}
+\DefineCharacter{716}{2CC}{\ensuremath{\Elzverti }}
+\DefineCharacter{720}{2D0}{\ensuremath{\Elzlmrk }}
+\DefineCharacter{721}{2D1}{\ensuremath{\Elzhlmrk }}
+\DefineCharacter{722}{2D2}{\ensuremath{\Elzsbrhr }}
+\DefineCharacter{723}{2D3}{\ensuremath{\Elzsblhr }}
+\DefineCharacter{724}{2D4}{\ensuremath{\Elzrais }}
+\DefineCharacter{725}{2D5}{\ensuremath{\Elzlow }}
+\DefineCharacter{728}{2D8}{\ifmmode \u\else \textasciibreve \fi}%
+\DefineCharacter{729}{2D9}{\ifmmode \dot{}\else \textperiodcentered \fi}%
+\DefineCharacter{730}{2DA}{\ifmmode \mathring{}\else \r{}\fi}%
+\DefineCharacter{731}{2DB}{\ifmmode \mbox{\k{}}\else \k{}\fi}%
+\DefineCharacter{732}{2DC}{\texttildelow }
+\DefineCharacter{733}{2DD}{\ifmmode \mbox{\H{}}\else \H{}\fi}%
+\DefineCharacter{741}{2E5}{\tone{55}}
+\DefineCharacter{742}{2E6}{\tone{44}}
+\DefineCharacter{743}{2E7}{\tone{33}}
+\DefineCharacter{744}{2E8}{\tone{22}}
+\DefineCharacter{745}{2E9}{\tone{11}}
+\DefineCharacter{768}{300}{\ifmmode \grave{}\else \`{}\fi}%
+\DefineCharacter{769}{301}{\ifmmode \acute{}\else \'{}\fi}%
+\DefineCharacter{770}{302}{\ifmmode \hat{}\else \^{}\fi}%
+\DefineCharacter{771}{303}{\ifmmode \tilde{}\else \~{}\fi}%
+\DefineCharacter{772}{304}{\ifmmode \bar{}\else \={}\fi}%
+\DefineCharacter{774}{306}{\ifmmode \breve{}\else \u{}\fi}%
+\DefineCharacter{775}{307}{\ifmmode \dot{}\else \.{}\fi}%
+\DefineCharacter{776}{308}{\ifmmode \ddot{}\else \"{}\fi}%
+\DefineCharacter{778}{30A}{\r{}}
+\DefineCharacter{779}{30B}{\H{}}
+\DefineCharacter{780}{30C}{\ifmmode \check{}\else \v{}\fi}%
+\DefineCharacter{783}{30F}{\cyrchar\C{}}
+\DefineCharacter{785}{311}{{\fontencoding{LECO}\selectfont\char177}}
+\DefineCharacter{792}{318}{{\fontencoding{LECO}\selectfont\char184}}
+\DefineCharacter{793}{319}{{\fontencoding{LECO}\selectfont\char185}}
+\DefineCharacter{801}{321}{\ensuremath{\Elzpalh }}
+\DefineCharacter{802}{322}{\Elzrh }
+\DefineCharacter{807}{327}{\c{}}
+\DefineCharacter{808}{328}{\k}
+\DefineCharacter{810}{32A}{\ensuremath{\Elzsbbrg }}
+\DefineCharacter{811}{32B}{{\fontencoding{LECO}\selectfont\char203}}
+\DefineCharacter{815}{32F}{{\fontencoding{LECO}\selectfont\char207}}
+\DefineCharacter{821}{335}{\Elzxl }
+\DefineCharacter{822}{336}{\Elzbar }
+\DefineCharacter{823}{337}{{\fontencoding{LECO}\selectfont\char215}}
+\DefineCharacter{824}{338}{\llap{\not\;}}
+\DefineCharacter{826}{33A}{{\fontencoding{LECO}\selectfont\char218}}
+\DefineCharacter{827}{33B}{{\fontencoding{LECO}\selectfont\char219}}
+\DefineCharacter{828}{33C}{{\fontencoding{LECO}\selectfont\char220}}
+\DefineCharacter{829}{33D}{{\fontencoding{LECO}\selectfont\char221}}
+\DefineCharacter{865}{361}{{\fontencoding{LECO}\selectfont\char225}}
+\DefineCharacter{902}{386}{\ifmmode \acute{A}\else \'{A}\fi}%
+\DefineCharacter{904}{388}{\ifmmode \acute{E}\else \'{E}\fi}%
+\DefineCharacter{905}{389}{\ifmmode \grave{H}\else \'{H}\fi}%
+\DefineCharacter{906}{38A}{\ifmmode \acute{I}\else \'{I}\fi}%
+\DefineCharacter{908}{38C}{\ifmmode \acute{O}\else \'{O}\fi}%
+\DefineCharacter{910}{38E}{\ensuremath{\acute{Y}}}
+\DefineCharacter{911}{38F}{\ensuremath{\acute{\Omega}}}
+\DefineCharacter{912}{390}{\ensuremath{\acute{\ddot{\iota}}}}
+\DefineCharacter{913}{391}{\ensuremath{\Alpha }}
+\DefineCharacter{914}{392}{\ensuremath{\Beta }}
+\DefineCharacter{915}{393}{\ensuremath{\Gamma }}
+\DefineCharacter{916}{394}{\ensuremath{\Delta }}
+\DefineCharacter{917}{395}{\ensuremath{\Epsilon }}
+\DefineCharacter{918}{396}{\ensuremath{\Zeta }}
+\DefineCharacter{919}{397}{\ensuremath{\Eta }}
+\DefineCharacter{920}{398}{\ensuremath{\Theta }}
+\DefineCharacter{921}{399}{\ensuremath{\Iota }}
+\DefineCharacter{922}{39A}{\ensuremath{\Kappa }}
+\DefineCharacter{923}{39B}{\ensuremath{\Lambda }}
+\DefineCharacter{924}{39C}{\ensuremath{M}}
+\DefineCharacter{925}{39D}{\ensuremath{N}}
+\DefineCharacter{926}{39E}{\ensuremath{\Xi }}
+\DefineCharacter{927}{39F}{\ensuremath{O}}
+\DefineCharacter{928}{3A0}{\ensuremath{\Pi }}
+\DefineCharacter{929}{3A1}{\ensuremath{\Rho }}
+\DefineCharacter{931}{3A3}{\ensuremath{\Sigma }}
+\DefineCharacter{932}{3A4}{\ensuremath{\Tau }}
+\DefineCharacter{933}{3A5}{\ensuremath{\Upsilon }}
+\DefineCharacter{934}{3A6}{\ensuremath{\Phi }}
+\DefineCharacter{935}{3A7}{\ensuremath{\Chi }}
+\DefineCharacter{936}{3A8}{\ensuremath{\Psi }}
+\DefineCharacter{937}{3A9}{\ensuremath{\Omega }}
+\DefineCharacter{938}{3AA}{\ensuremath{\ddot{I}}}
+\DefineCharacter{939}{3AB}{\ensuremath{\ddot{U}}}
+\DefineCharacter{940}{3AC}{\ifmmode\acute{\alpha}\else {$\acute\alpha$}\fi}%
+\DefineCharacter{941}{3AD}{\ensuremath{\acute{\epsilon}}}
+\DefineCharacter{942}{3AE}{\ensuremath{\acute{\eta}}}
+\DefineCharacter{943}{3AF}{\ensuremath{\acute{\iota}}}
+\DefineCharacter{944}{3B0}{\ensuremath{\ddot{\acute{\upsilon}}}}
+\DefineCharacter{945}{3B1}{\ensuremath{\alpha }}
+\DefineCharacter{946}{3B2}{\ensuremath{\beta }}
+\DefineCharacter{947}{3B3}{\ensuremath{\gamma }}
+\DefineCharacter{948}{3B4}{\ensuremath{\delta }}
+\DefineCharacter{949}{3B5}{\ensuremath{\epsilon }}
+\DefineCharacter{950}{3B6}{\ensuremath{\zeta }}
+\DefineCharacter{951}{3B7}{\ensuremath{\eta }}
+\DefineCharacter{952}{3B8}{\ifmmode \theta \else \texttheta \fi}%
+\DefineCharacter{953}{3B9}{\ensuremath{\iota }}
+\DefineCharacter{954}{3BA}{\ensuremath{\kappa }}
+\DefineCharacter{955}{3BB}{\ensuremath{\lambda }}
+\DefineCharacter{956}{3BC}{\ensuremath{\mu }}
+\DefineCharacter{957}{3BD}{\ensuremath{\nu }}
+\DefineCharacter{958}{3BE}{\ensuremath{\xi }}
+\DefineCharacter{959}{3BF}{\ensuremath{o}}
+\DefineCharacter{960}{3C0}{\ensuremath{\pi }}
+\DefineCharacter{961}{3C1}{\ensuremath{\rho }}
+\DefineCharacter{962}{3C2}{\ensuremath{\varsigma }}
+\DefineCharacter{963}{3C3}{\ensuremath{\sigma }}
+\DefineCharacter{964}{3C4}{\ensuremath{\tau }}
+\DefineCharacter{965}{3C5}{\ensuremath{\upsilon }}
+\DefineCharacter{966}{3C6}{\ensuremath{\phi }}
+\DefineCharacter{967}{3C7}{\ensuremath{\chi }}
+\DefineCharacter{968}{3C8}{\ensuremath{\psi }}
+\DefineCharacter{969}{3C9}{\ensuremath{\omega }}
+\DefineCharacter{970}{3CA}{\ensuremath{\ddot{\iota}}}
+\DefineCharacter{971}{3CB}{\ensuremath{\ddot{\upsilon}}}
+\DefineCharacter{972}{3CC}{\ifmmode \acute{o}\else \'{o}\fi}%
+\DefineCharacter{973}{3CD}{\ensuremath{\acute{\upsilon}}}
+\DefineCharacter{974}{3CE}{\ensuremath{\acute{\omega}}}
+\DefineCharacter{976}{3D0}{\Pisymbol{ppi022}{87}}
+\DefineCharacter{977}{3D1}{\ifmmode \vartheta \else \textvartheta \fi}%
+\DefineCharacter{978}{3D2}{\ensuremath{\Upsilon }}
+\DefineCharacter{981}{3D5}{\ensuremath{\varphi }}
+\DefineCharacter{982}{3D6}{\ensuremath{\varpi }}
+\DefineCharacter{988}{3DC}{\ensuremath{\Digamma }}
+\DefineCharacter{1008}{3F0}{\ensuremath{\varkappa }}
+\DefineCharacter{1009}{3F1}{\ensuremath{\varrho }}
+\DefineCharacter{1025}{401}{\cyrchar\CYRYO }
+\DefineCharacter{1026}{402}{\cyrchar\CYRDJE }
+\DefineCharacter{1027}{403}{\cyrchar{\'\CYRG}}
+\DefineCharacter{1028}{404}{\cyrchar\CYRIE }
+\DefineCharacter{1029}{405}{\cyrchar\CYRDZE }
+\DefineCharacter{1030}{406}{\cyrchar\CYRII }
+\DefineCharacter{1031}{407}{\cyrchar\CYRYI }
+\DefineCharacter{1032}{408}{\cyrchar\CYRJE }
+\DefineCharacter{1033}{409}{\cyrchar\CYRLJE }
+\DefineCharacter{1034}{40A}{\cyrchar\CYRNJE }
+\DefineCharacter{1035}{40B}{\cyrchar\CYRTSHE }
+\DefineCharacter{1036}{40C}{\cyrchar{\'\CYRK}}
+\DefineCharacter{1038}{40E}{\cyrchar\CYRUSHRT }
+\DefineCharacter{1039}{40F}{\cyrchar\CYRDZHE }
+\DefineCharacter{1040}{410}{\cyrchar\CYRA }
+\DefineCharacter{1041}{411}{\cyrchar\CYRB }
+\DefineCharacter{1042}{412}{\cyrchar\CYRV }
+\DefineCharacter{1043}{413}{\cyrchar\CYRG }
+\DefineCharacter{1044}{414}{\cyrchar\CYRD }
+\DefineCharacter{1045}{415}{\cyrchar\CYRE }
+\DefineCharacter{1046}{416}{\cyrchar\CYRZH }
+\DefineCharacter{1047}{417}{\cyrchar\CYRZ }
+\DefineCharacter{1048}{418}{\cyrchar\CYRI }
+\DefineCharacter{1049}{419}{\cyrchar\CYRISHRT }
+\DefineCharacter{1050}{41A}{\cyrchar\CYRK }
+\DefineCharacter{1051}{41B}{\cyrchar\CYRL }
+\DefineCharacter{1052}{41C}{\cyrchar\CYRM }
+\DefineCharacter{1053}{41D}{\cyrchar\CYRN }
+\DefineCharacter{1054}{41E}{\cyrchar\CYRO }
+\DefineCharacter{1055}{41F}{\cyrchar\CYRP }
+\DefineCharacter{1056}{420}{\cyrchar\CYRR }
+\DefineCharacter{1057}{421}{\cyrchar\CYRS }
+\DefineCharacter{1058}{422}{\cyrchar\CYRT }
+\DefineCharacter{1059}{423}{\cyrchar\CYRU }
+\DefineCharacter{1060}{424}{\cyrchar\CYRF }
+\DefineCharacter{1061}{425}{\cyrchar\CYRH }
+\DefineCharacter{1062}{426}{\cyrchar\CYRC }
+\DefineCharacter{1063}{427}{\cyrchar\CYRCH }
+\DefineCharacter{1064}{428}{\cyrchar\CYRSH }
+\DefineCharacter{1065}{429}{\cyrchar\CYRSHCH }
+\DefineCharacter{1066}{42A}{\cyrchar\CYRHRDSN }
+\DefineCharacter{1067}{42B}{\cyrchar\CYRERY }
+\DefineCharacter{1068}{42C}{\cyrchar\CYRSFTSN }
+\DefineCharacter{1069}{42D}{\cyrchar\CYREREV }
+\DefineCharacter{1070}{42E}{\cyrchar\CYRYU }
+\DefineCharacter{1071}{42F}{\cyrchar\CYRYA }
+\DefineCharacter{1072}{430}{\cyrchar\cyra }
+\DefineCharacter{1073}{431}{\cyrchar\cyrb }
+\DefineCharacter{1074}{432}{\cyrchar\cyrv }
+\DefineCharacter{1075}{433}{\cyrchar\cyrg }
+\DefineCharacter{1076}{434}{\cyrchar\cyrd }
+\DefineCharacter{1077}{435}{\cyrchar\cyre }
+\DefineCharacter{1078}{436}{\cyrchar\cyrzh }
+\DefineCharacter{1079}{437}{\cyrchar\cyrz }
+\DefineCharacter{1080}{438}{\cyrchar\cyri }
+\DefineCharacter{1081}{439}{\cyrchar\cyrishrt }
+\DefineCharacter{1082}{43A}{\cyrchar\cyrk }
+\DefineCharacter{1083}{43B}{\cyrchar\cyrl }
+\DefineCharacter{1084}{43C}{\cyrchar\cyrm }
+\DefineCharacter{1085}{43D}{\cyrchar\cyrn }
+\DefineCharacter{1086}{43E}{\cyrchar\cyro }
+\DefineCharacter{1087}{43F}{\cyrchar\cyrp }
+\DefineCharacter{1088}{440}{\cyrchar\cyrr }
+\DefineCharacter{1089}{441}{\cyrchar\cyrs }
+\DefineCharacter{1090}{442}{\cyrchar\cyrt }
+\DefineCharacter{1091}{443}{\cyrchar\cyru }
+\DefineCharacter{1092}{444}{\cyrchar\cyrf }
+\DefineCharacter{1093}{445}{\cyrchar\cyrh }
+\DefineCharacter{1094}{446}{\cyrchar\cyrc }
+\DefineCharacter{1095}{447}{\cyrchar\cyrch }
+\DefineCharacter{1096}{448}{\cyrchar\cyrsh }
+\DefineCharacter{1097}{449}{\cyrchar\cyrshch }
+\DefineCharacter{1098}{44A}{\cyrchar\cyrhrdsn }
+\DefineCharacter{1099}{44B}{\cyrchar\cyrery }
+\DefineCharacter{1100}{44C}{\cyrchar\cyrsftsn }
+\DefineCharacter{1101}{44D}{\cyrchar\cyrerev }
+\DefineCharacter{1102}{44E}{\cyrchar\cyryu }
+\DefineCharacter{1103}{44F}{\cyrchar\cyrya }
+\DefineCharacter{1105}{451}{\cyrchar\cyryo }
+\DefineCharacter{1106}{452}{\cyrchar\cyrdje }
+\DefineCharacter{1107}{453}{\cyrchar{\'\cyrg}}
+\DefineCharacter{1108}{454}{\cyrchar\cyrie }
+\DefineCharacter{1109}{455}{\cyrchar\cyrdze }
+\DefineCharacter{1110}{456}{\cyrchar\cyrii }
+\DefineCharacter{1111}{457}{\cyrchar\cyryi }
+\DefineCharacter{1112}{458}{\cyrchar\cyrje }
+\DefineCharacter{1113}{459}{\cyrchar\cyrlje }
+\DefineCharacter{1114}{45A}{\cyrchar\cyrnje }
+\DefineCharacter{1115}{45B}{\cyrchar\cyrtshe }
+\DefineCharacter{1116}{45C}{\cyrchar{\'\cyrk}}
+\DefineCharacter{1118}{45E}{\cyrchar\cyrushrt }
+\DefineCharacter{1119}{45F}{\cyrchar\cyrdzhe }
+\DefineCharacter{1120}{460}{\cyrchar\CYROMEGA }
+\DefineCharacter{1121}{461}{\cyrchar\cyromega }
+\DefineCharacter{1122}{462}{\cyrchar\CYRYAT }
+\DefineCharacter{1124}{464}{\cyrchar\CYRIOTE }
+\DefineCharacter{1125}{465}{\cyrchar\cyriote }
+\DefineCharacter{1126}{466}{\cyrchar\CYRLYUS }
+\DefineCharacter{1127}{467}{\cyrchar\cyrlyus }
+\DefineCharacter{1128}{468}{\cyrchar\CYRIOTLYUS }
+\DefineCharacter{1129}{469}{\cyrchar\cyriotlyus }
+\DefineCharacter{1130}{46A}{\cyrchar\CYRBYUS }
+\DefineCharacter{1132}{46C}{\cyrchar\CYRIOTBYUS }
+\DefineCharacter{1133}{46D}{\cyrchar\cyriotbyus }
+\DefineCharacter{1134}{46E}{\cyrchar\CYRKSI }
+\DefineCharacter{1135}{46F}{\cyrchar\cyrksi }
+\DefineCharacter{1136}{470}{\cyrchar\CYRPSI }
+\DefineCharacter{1137}{471}{\cyrchar\cyrpsi }
+\DefineCharacter{1138}{472}{\cyrchar\CYRFITA }
+\DefineCharacter{1140}{474}{\cyrchar\CYRIZH }
+\DefineCharacter{1144}{478}{\cyrchar\CYRUK }
+\DefineCharacter{1145}{479}{\cyrchar\cyruk }
+\DefineCharacter{1146}{47A}{\cyrchar\CYROMEGARND }
+\DefineCharacter{1147}{47B}{\cyrchar\cyromegarnd }
+\DefineCharacter{1148}{47C}{\cyrchar\CYROMEGATITLO }
+\DefineCharacter{1149}{47D}{\cyrchar\cyromegatitlo }
+\DefineCharacter{1150}{47E}{\cyrchar\CYROT }
+\DefineCharacter{1151}{47F}{\cyrchar\cyrot }
+\DefineCharacter{1152}{480}{\cyrchar\CYRKOPPA }
+\DefineCharacter{1153}{481}{\cyrchar\cyrkoppa }
+\DefineCharacter{1154}{482}{\cyrchar\cyrthousands }
+\DefineCharacter{1160}{488}{\cyrchar\cyrhundredthousands }
+\DefineCharacter{1161}{489}{\cyrchar\cyrmillions }
+\DefineCharacter{1164}{48C}{\cyrchar\CYRSEMISFTSN }
+\DefineCharacter{1165}{48D}{\cyrchar\cyrsemisftsn }
+\DefineCharacter{1166}{48E}{\cyrchar\CYRRTICK }
+\DefineCharacter{1167}{48F}{\cyrchar\cyrrtick }
+\DefineCharacter{1168}{490}{\cyrchar\CYRGUP }
+\DefineCharacter{1169}{491}{\cyrchar\cyrgup }
+\DefineCharacter{1170}{492}{\cyrchar\CYRGHCRS }
+\DefineCharacter{1171}{493}{\cyrchar\cyrghcrs }
+\DefineCharacter{1172}{494}{\cyrchar\CYRGHK }
+\DefineCharacter{1173}{495}{\cyrchar\cyrghk }
+\DefineCharacter{1174}{496}{\cyrchar\CYRZHDSC }
+\DefineCharacter{1175}{497}{\cyrchar\cyrzhdsc }
+\DefineCharacter{1176}{498}{\cyrchar\CYRZDSC }
+\DefineCharacter{1177}{499}{\cyrchar\cyrzdsc }
+\DefineCharacter{1178}{49A}{\cyrchar\CYRKDSC }
+\DefineCharacter{1179}{49B}{\cyrchar\cyrkdsc }
+\DefineCharacter{1180}{49C}{\cyrchar\CYRKVCRS }
+\DefineCharacter{1181}{49D}{\cyrchar\cyrkvcrs }
+\DefineCharacter{1182}{49E}{\cyrchar\CYRKHCRS }
+\DefineCharacter{1183}{49F}{\cyrchar\cyrkhcrs }
+\DefineCharacter{1184}{4A0}{\cyrchar\CYRKBEAK }
+\DefineCharacter{1185}{4A1}{\cyrchar\cyrkbeak }
+\DefineCharacter{1186}{4A2}{\cyrchar\CYRNDSC }
+\DefineCharacter{1187}{4A3}{\cyrchar\cyrndsc }
+\DefineCharacter{1188}{4A4}{\cyrchar\CYRNG }
+\DefineCharacter{1189}{4A5}{\cyrchar\cyrng }
+\DefineCharacter{1190}{4A6}{\cyrchar\CYRPHK }
+\DefineCharacter{1191}{4A7}{\cyrchar\cyrphk }
+\DefineCharacter{1192}{4A8}{\cyrchar\CYRABHHA }
+\DefineCharacter{1193}{4A9}{\cyrchar\cyrabhha }
+\DefineCharacter{1194}{4AA}{\cyrchar\CYRSDSC }
+\DefineCharacter{1195}{4AB}{\cyrchar\cyrsdsc }
+\DefineCharacter{1196}{4AC}{\cyrchar\CYRTDSC }
+\DefineCharacter{1197}{4AD}{\cyrchar\cyrtdsc }
+\DefineCharacter{1198}{4AE}{\cyrchar\CYRY }
+\DefineCharacter{1199}{4AF}{\cyrchar\cyry }
+\DefineCharacter{1200}{4B0}{\cyrchar\CYRYHCRS }
+\DefineCharacter{1201}{4B1}{\cyrchar\cyryhcrs }
+\DefineCharacter{1202}{4B2}{\cyrchar\CYRHDSC }
+\DefineCharacter{1203}{4B3}{\cyrchar\cyrhdsc }
+\DefineCharacter{1204}{4B4}{\cyrchar\CYRTETSE }
+\DefineCharacter{1205}{4B5}{\cyrchar\cyrtetse }
+\DefineCharacter{1206}{4B6}{\cyrchar\CYRCHRDSC }
+\DefineCharacter{1207}{4B7}{\cyrchar\cyrchrdsc }
+\DefineCharacter{1208}{4B8}{\cyrchar\CYRCHVCRS }
+\DefineCharacter{1209}{4B9}{\cyrchar\cyrchvcrs }
+\DefineCharacter{1210}{4BA}{\cyrchar\CYRSHHA }
+\DefineCharacter{1211}{4BB}{\cyrchar\cyrshha }
+\DefineCharacter{1212}{4BC}{\cyrchar\CYRABHCH }
+\DefineCharacter{1213}{4BD}{\cyrchar\cyrabhch }
+\DefineCharacter{1214}{4BE}{\cyrchar\CYRABHCHDSC }
+\DefineCharacter{1215}{4BF}{\cyrchar\cyrabhchdsc }
+\DefineCharacter{1216}{4C0}{\cyrchar\CYRpalochka }
+\DefineCharacter{1219}{4C3}{\cyrchar\CYRKHK }
+\DefineCharacter{1220}{4C4}{\cyrchar\cyrkhk }
+\DefineCharacter{1223}{4C7}{\cyrchar\CYRNHK }
+\DefineCharacter{1224}{4C8}{\cyrchar\cyrnhk }
+\DefineCharacter{1227}{4CB}{\cyrchar\CYRCHLDSC }
+\DefineCharacter{1228}{4CC}{\cyrchar\cyrchldsc }
+\DefineCharacter{1236}{4D4}{\cyrchar\CYRAE }
+\DefineCharacter{1237}{4D5}{\cyrchar\cyrae }
+\DefineCharacter{1240}{4D8}{\cyrchar\CYRSCHWA }
+\DefineCharacter{1241}{4D9}{\cyrchar\cyrschwa }
+\DefineCharacter{1248}{4E0}{\cyrchar\CYRABHDZE }
+\DefineCharacter{1249}{4E1}{\cyrchar\cyrabhdze }
+\DefineCharacter{1256}{4E8}{\cyrchar\CYROTLD }
+\DefineCharacter{1257}{4E9}{\cyrchar\cyrotld }
+\DefineCharacter{8194}{2002}{\hspace{0.6em}}
+\DefineCharacter{8195}{2003}{\hspace{1em}}
+\DefineCharacter{8196}{2004}{\hspace{0.33em}}
+\DefineCharacter{8197}{2005}{\hspace{0.25em}}
+\DefineCharacter{8198}{2006}{\hspace{0.166em}}
+\DefineCharacter{8199}{2007}{\hphantom{0}}
+\DefineCharacter{8200}{2008}{\hphantom{,}}
+\DefineCharacter{8201}{2009}{\hspace{0.167em}}
+\DefineCharacter{8202}{200A}{\ensuremath{\mkern1mu }}
+\DefineCharacter{8208}{2010}{-}
+\DefineCharacter{8211}{2013}{\textendash }
+\DefineCharacter{8212}{2014}{\ifmmode ---\else \textemdash \fi}%
+\DefineCharacter{8213}{2015}{\rule{1em}{1pt}}
+\DefineCharacter{8214}{2016}{\ensuremath{\Vert }}
+\DefineCharacter{8216}{2018}{`}
+\DefineCharacter{8217}{2019}{'}
+\DefineCharacter{8218}{201A}{,}
+\DefineCharacter{8219}{201B}{\ensuremath{\Elzreapos }}
+\DefineCharacter{8220}{201C}{\textquotedblleft }
+\DefineCharacter{8221}{201D}{\textquotedblright }
+\DefineCharacter{8222}{201E}{,,}
+\DefineCharacter{8224}{2020}{\ifmmode \dag \else \textdagger \fi}%
+\DefineCharacter{8225}{2021}{\ifmmode \ddag \else \textdaggerdbl \fi}%
+\DefineCharacter{8226}{2022}{\ifmmode \bullet\else \textbullet \fi}%
+\DefineCharacter{8228}{2024}{.}
+\DefineCharacter{8229}{2025}{..}
+\DefineCharacter{8230}{2026}{\ldots }
+\DefineCharacter{8240}{2030}{\textperthousand }
+\DefineCharacter{8241}{2031}{\textpertenthousand }
+\DefineCharacter{8242}{2032}{\ensuremath{{'}}}
+\DefineCharacter{8243}{2033}{\ensuremath{{''}}}
+\DefineCharacter{8244}{2034}{\ensuremath{{'''}}}
+\DefineCharacter{8245}{2035}{\ensuremath{\backprime }}
+\DefineCharacter{8249}{2039}{\guilsinglleft }
+\DefineCharacter{8250}{203A}{\guilsinglright }
+\DefineCharacter{8359}{20A7}{\ensuremath{\Elzpes}}
+\DefineCharacter{8364}{20AC}{\EUR }
+\DefineCharacter{8411}{20DB}{\ensuremath{\dddot{}{}}}
+\DefineCharacter{8412}{20DC}{\ensuremath{\ddddot {}}}
+\DefineCharacter{8450}{2102}{\ensuremath{\mathbb{C}}}
+\DefineCharacter{8458}{210A}{\mathscr{g}}
+\DefineCharacter{8459}{210B}{\ensuremath{\mathscr{H}}}
+\DefineCharacter{8460}{210C}{\ensuremath{\mathfrak{H}}}
+\DefineCharacter{8461}{210D}{\ensuremath{\mathbb{H}}}
+\DefineCharacter{8463}{210F}{\ensuremath{\hslash }}
+\DefineCharacter{8464}{2110}{\ensuremath{\mathscr{I}}}
+\DefineCharacter{8465}{2111}{\ensuremath{\mathfrak{I}}}
+\DefineCharacter{8466}{2112}{\ensuremath{\mathscr{L}}}
+\DefineCharacter{8467}{2113}{\ensuremath{\mathscr{l}}}
+\DefineCharacter{8469}{2115}{\ensuremath{\mathbb{N}}}
+\DefineCharacter{8470}{2116}{\cyrchar\textnumero }
+\DefineCharacter{8472}{2118}{\ensuremath{\wp }}
+\DefineCharacter{8473}{2119}{\ensuremath{\mathbb{P}}}
+\DefineCharacter{8474}{211A}{\ensuremath{\mathbb{Q}}}
+\DefineCharacter{8475}{211B}{\ensuremath{\mathscr{R}}}
+\DefineCharacter{8476}{211C}{\ensuremath{\mathfrak{R}}}
+\DefineCharacter{8477}{211D}{\ensuremath{\mathbb{R}}}
+\DefineCharacter{8478}{211E}{\ensuremath{\Elzxrat }}
+\DefineCharacter{8482}{2122}{\texttrademark }
+\DefineCharacter{8484}{2124}{\ensuremath{\mathbb{Z}}}
+\DefineCharacter{8486}{2126}{\ensuremath{\Omega }}
+\DefineCharacter{8487}{2127}{\ensuremath{\mho }}
+\DefineCharacter{8488}{2128}{\ensuremath{\mathfrak{Z}}}
+\DefineCharacter{8489}{2129}{\ensuremath{\ElsevierGlyph{2129}}}
+\DefineCharacter{8491}{212B}{\AA }
+\DefineCharacter{8492}{212C}{\ensuremath{\mathscr{B}}}
+\DefineCharacter{8493}{212D}{\ensuremath{\mathfrak{C}}}
+\DefineCharacter{8495}{212F}{\ensuremath{\mathscr{e}}}
+\DefineCharacter{8496}{2130}{\ensuremath{\mathscr{E}}}
+\DefineCharacter{8497}{2131}{\ensuremath{\mathscr{F}}}
+\DefineCharacter{8499}{2133}{\ensuremath{\mathscr{M}}}
+\DefineCharacter{8500}{2134}{\ensuremath{\mathscr{o}}}
+\DefineCharacter{8501}{2135}{\ensuremath{\aleph }}
+\DefineCharacter{8502}{2136}{\ensuremath{\beth }}
+\DefineCharacter{8503}{2137}{\ensuremath{\gimel }}
+\DefineCharacter{8504}{2138}{\ensuremath{\daleth }}
+\DefineCharacter{8531}{2153}{\ensuremath{\textfrac{1}{3}}}
+\DefineCharacter{8532}{2154}{\ensuremath{\textfrac{2}{3}}}
+\DefineCharacter{8533}{2155}{\ensuremath{\textfrac{1}{5}}}
+\DefineCharacter{8534}{2156}{\ensuremath{\textfrac{2}{5}}}
+\DefineCharacter{8535}{2157}{\ensuremath{\textfrac{3}{5}}}
+\DefineCharacter{8536}{2158}{\ensuremath{\textfrac{4}{5}}}
+\DefineCharacter{8537}{2159}{\ensuremath{\textfrac{1}{6}}}
+\DefineCharacter{8538}{215A}{\ensuremath{\textfrac{5}{6}}}
+\DefineCharacter{8539}{215B}{\ensuremath{\textfrac{1}{8}}}
+\DefineCharacter{8540}{215C}{\ensuremath{\textfrac{3}{8}}}
+\DefineCharacter{8541}{215D}{\ensuremath{\textfrac{5}{8}}}
+\DefineCharacter{8542}{215E}{\ensuremath{\textfrac{7}{8}}}
+\DefineCharacter{8592}{2190}{\ensuremath{\leftarrow }}
+\DefineCharacter{8592}{2190x}{\ensuremath{\longleftarrow }}
+\DefineCharacter{8593}{2191}{\ensuremath{\uparrow }}
+\DefineCharacter{8594}{2192}{\ensuremath{\rightarrow }}
+\DefineCharacter{8594}{2192x}{\ensuremath{\longrightarrow }}
+\DefineCharacter{8595}{2193}{\ensuremath{\downarrow }}
+\DefineCharacter{8596}{2194}{\ensuremath{\leftrightarrow }}
+\DefineCharacter{8596}{2194x}{\ensuremath{\longleftrightarrow }}
+\DefineCharacter{8597}{2195}{\ensuremath{\updownarrow }}
+\DefineCharacter{8598}{2196}{\ensuremath{\nwarrow }}
+\DefineCharacter{8599}{2197}{\ensuremath{\nearrow }}
+\DefineCharacter{8600}{2198}{\ensuremath{\searrow }}
+\DefineCharacter{8601}{2199}{\ensuremath{\swarrow }}
+\DefineCharacter{8602}{219A}{\ensuremath{\nleftarrow }}
+\DefineCharacter{8603}{219B}{\ensuremath{\nrightarrow }}
+\DefineCharacter{8604}{219C}{\ensuremath{\arrowwaveright }}
+\DefineCharacter{8605}{219D}{\ensuremath{\arrowwaveright }}
+\DefineCharacter{8606}{219E}{\ensuremath{\twoheadleftarrow }}
+\DefineCharacter{8608}{21A0}{\ensuremath{\twoheadrightarrow }}
+\DefineCharacter{8610}{21A2}{\ensuremath{\leftarrowtail }}
+\DefineCharacter{8611}{21A3}{\ensuremath{\rightarrowtail }}
+\DefineCharacter{8614}{21A6}{\ensuremath{\mapsto }}
+\DefineCharacter{8614}{21A6x}{\ensuremath{\longmapsto }}
+\DefineCharacter{8617}{21A9}{\ensuremath{\hookleftarrow }}
+\DefineCharacter{8618}{21AA}{\ensuremath{\hookrightarrow }}
+\DefineCharacter{8619}{21AB}{\ensuremath{\looparrowleft }}
+\DefineCharacter{8620}{21AC}{\ensuremath{\looparrowright }}
+\DefineCharacter{8621}{21AD}{\ensuremath{\leftrightsquigarrow }}
+\DefineCharacter{8622}{21AE}{\ensuremath{\nleftrightarrow }}
+\DefineCharacter{8624}{21B0}{\ensuremath{\Lsh }}
+\DefineCharacter{8625}{21B1}{\ensuremath{\Rsh }}
+\DefineCharacter{8627}{21B3}{\ensuremath{\ElsevierGlyph{21B3}}}
+\DefineCharacter{8630}{21B6}{\ensuremath{\curvearrowleft }}
+\DefineCharacter{8631}{21B7}{\ensuremath{\curvearrowright }}
+\DefineCharacter{8634}{21BA}{\ensuremath{\circlearrowleft }}
+\DefineCharacter{8635}{21BB}{\ensuremath{\circlearrowright }}
+\DefineCharacter{8636}{21BC}{\ensuremath{\leftharpoonup }}
+\DefineCharacter{8637}{21BD}{\ensuremath{\leftharpoondown }}
+\DefineCharacter{8638}{21BE}{\ensuremath{\upharpoonright }}
+\DefineCharacter{8639}{21BF}{\ensuremath{\upharpoonleft }}
+\DefineCharacter{8640}{21C0}{\ensuremath{\rightharpoonup }}
+\DefineCharacter{8641}{21C1}{\ensuremath{\rightharpoondown }}
+\DefineCharacter{8642}{21C2}{\ensuremath{\downharpoonright }}
+\DefineCharacter{8643}{21C3}{\ensuremath{\downharpoonleft }}
+\DefineCharacter{8644}{21C4}{\ensuremath{\rightleftarrows }}
+\DefineCharacter{8645}{21C5}{\ensuremath{\dblarrowupdown }}
+\DefineCharacter{8646}{21C6}{\ensuremath{\leftrightarrows }}
+\DefineCharacter{8647}{21C7}{\ensuremath{\leftleftarrows }}
+\DefineCharacter{8648}{21C8}{\ensuremath{\upuparrows }}
+\DefineCharacter{8649}{21C9}{\ensuremath{\rightrightarrows }}
+\DefineCharacter{8650}{21CA}{\ensuremath{\downdownarrows }}
+\DefineCharacter{8651}{21CB}{\ensuremath{\leftrightharpoons }}
+\DefineCharacter{8652}{21CC}{\ensuremath{\rightleftharpoons }}
+\DefineCharacter{8653}{21CD}{\ensuremath{\nLeftarrow }}
+\DefineCharacter{8654}{21CE}{\ensuremath{\nLeftrightarrow }}
+\DefineCharacter{8655}{21CF}{\ensuremath{\nRightarrow }}
+\DefineCharacter{8656}{21D0}{\ensuremath{\Leftarrow }}
+\DefineCharacter{8656}{21D0x}{\ensuremath{\Longleftarrow }}
+\DefineCharacter{8657}{21D1}{\ensuremath{\Uparrow }}
+\DefineCharacter{8658}{21D2}{\ensuremath{\Rightarrow }}
+\DefineCharacter{8658}{21D2x}{\ensuremath{\Longrightarrow }}
+\DefineCharacter{8659}{21D3}{\ensuremath{\Downarrow }}
+\DefineCharacter{8660}{21D4}{\ensuremath{\Leftrightarrow }}
+\DefineCharacter{8660}{21D4x}{\ensuremath{\Longleftrightarrow }}
+\DefineCharacter{8661}{21D5}{\ensuremath{\Updownarrow }}
+\DefineCharacter{8666}{21DA}{\ensuremath{\Lleftarrow }}
+\DefineCharacter{8667}{21DB}{\ensuremath{\Rrightarrow }}
+\DefineCharacter{8669}{21DD}{\ensuremath{\rightsquigarrow }}
+\DefineCharacter{8693}{21F5}{\ensuremath{\DownArrowUpArrow }}
+\DefineCharacter{8704}{2200}{\ensuremath{\forall }}
+\DefineCharacter{8705}{2201}{\ensuremath{\complement }}
+\DefineCharacter{8706}{2202}{\ensuremath{\partial }}
+\DefineCharacter{8707}{2203}{\ensuremath{\exists }}
+\DefineCharacter{8708}{2204}{\ensuremath{\nexists }}
+\DefineCharacter{8709}{2205}{\ensuremath{\varnothing }}
+\DefineCharacter{8711}{2207}{\ensuremath{\nabla }}
+\DefineCharacter{8712}{2208}{\ensuremath{\in }}
+\DefineCharacter{8713}{2209}{\ensuremath{\not\in }}
+\DefineCharacter{8715}{220B}{\ensuremath{\ni }}
+\DefineCharacter{8716}{220C}{\ensuremath{\not\ni }}
+\DefineCharacter{8719}{220F}{\ensuremath{\prod }}
+\DefineCharacter{8720}{2210}{\ensuremath{\coprod }}
+\DefineCharacter{8721}{2211}{\ensuremath{\sum }}
+\DefineCharacter{8722}{2212}{-}
+\DefineCharacter{8723}{2213}{\ensuremath{\mp }}
+\DefineCharacter{8724}{2214}{\ensuremath{\dotplus }}
+\DefineCharacter{8726}{2216}{\ensuremath{\setminus }}
+\DefineCharacter{8727}{2217}{\ensuremath{{_\ast}}}
+\DefineCharacter{8728}{2218}{\ensuremath{\circ }}
+\DefineCharacter{8729}{2219}{\ensuremath{\bullet }}
+\DefineCharacter{8730}{221A}{\ensuremath{\surd }}
+\DefineCharacter{8733}{221D}{\ensuremath{\propto }}
+\DefineCharacter{8734}{221E}{\ensuremath{\infty }}
+\DefineCharacter{8735}{221F}{\ensuremath{\rightangle }}
+\DefineCharacter{8736}{2220}{\ensuremath{\angle }}
+\DefineCharacter{8737}{2221}{\ensuremath{\measuredangle }}
+\DefineCharacter{8738}{2222}{\ensuremath{\sphericalangle }}
+\DefineCharacter{8739}{2223}{\ensuremath{\mid }}
+\DefineCharacter{8740}{2224}{\ensuremath{\nmid }}
+\DefineCharacter{8741}{2225}{\ensuremath{\parallel }}
+\DefineCharacter{8742}{2226}{\ensuremath{\nparallel }}
+\DefineCharacter{8743}{2227}{\ensuremath{\wedge }}
+\DefineCharacter{8744}{2228}{\ensuremath{\vee }}
+\DefineCharacter{8745}{2229}{\ensuremath{\cap }}
+\DefineCharacter{8746}{222A}{\ensuremath{\cup }}
+\DefineCharacter{8747}{222B}{\ensuremath{\int }}
+\DefineCharacter{8748}{222C}{\ensuremath{\int\!\int }}
+\DefineCharacter{8749}{222D}{\ensuremath{\int\!\int\!\int }}
+\DefineCharacter{8750}{222E}{\ensuremath{\oint }}
+\DefineCharacter{8751}{222F}{\ensuremath{\surfintegral }}
+\DefineCharacter{8752}{2230}{\ensuremath{\volintegral }}
+\DefineCharacter{8753}{2231}{\ensuremath{\clwintegral }}
+\DefineCharacter{8754}{2232}{\ensuremath{\ElsevierGlyph{2232}}}
+\DefineCharacter{8755}{2233}{\ensuremath{\ElsevierGlyph{2233}}}
+\DefineCharacter{8756}{2234}{\ensuremath{\therefore }}
+\DefineCharacter{8757}{2235}{\ensuremath{\because }}
+\DefineCharacter{8759}{2237}{\ensuremath{\Colon }}
+\DefineCharacter{8760}{2238}{\ensuremath{\ElsevierGlyph{2238}}}
+\DefineCharacter{8762}{223A}{\ensuremath{\mathbin{{:}\!\!{-}\!\!{:}}}}
+\DefineCharacter{8763}{223B}{\ensuremath{\homothetic }}
+\DefineCharacter{8764}{223C}{\ensuremath{\sim }}
+\DefineCharacter{8765}{223D}{\ensuremath{\backsim }}
+\DefineCharacter{8766}{223E}{\ensuremath{\lazysinv }}
+\DefineCharacter{8768}{2240}{\ensuremath{\wr }}
+\DefineCharacter{8769}{2241}{\ensuremath{\not\sim }}
+\DefineCharacter{8770}{2242}{\ensuremath{\ElsevierGlyph{2242}}}
+\DefineCharacter{8771}{2243}{\ensuremath{\simeq }}
+\DefineCharacter{8772}{2244}{\ensuremath{\not\simeq }}
+\DefineCharacter{8773}{2245}{\ensuremath{\cong }}
+\DefineCharacter{8774}{2246}{\ensuremath{\approxnotequal }}
+\DefineCharacter{8775}{2247}{\ensuremath{\not\cong }}
+\DefineCharacter{8776}{2248}{\ensuremath{\approx }}
+\DefineCharacter{8777}{2249}{\ensuremath{\not\approx }}
+\DefineCharacter{8778}{224A}{\ensuremath{\approxeq }}
+\DefineCharacter{8779}{224B}{\ensuremath{\tildetrpl }}
+\DefineCharacter{8780}{224C}{\ensuremath{\allequal }}
+\DefineCharacter{8781}{224D}{\ensuremath{\asymp }}
+\DefineCharacter{8782}{224E}{\ensuremath{\Bumpeq }}
+\DefineCharacter{8783}{224F}{\ensuremath{\bumpeq }}
+\DefineCharacter{8784}{2250}{\ensuremath{\doteq }}
+\DefineCharacter{8785}{2251}{\ensuremath{\doteqdot }}
+\DefineCharacter{8786}{2252}{\ensuremath{\fallingdotseq }}
+\DefineCharacter{8787}{2253}{\ensuremath{\risingdotseq }}
+\DefineCharacter{8788}{2254}{:=}
+\DefineCharacter{8789}{2255}{\ensuremath{=:}}
+\DefineCharacter{8790}{2256}{\ensuremath{\eqcirc }}
+\DefineCharacter{8791}{2257}{\ensuremath{\circeq }}
+\DefineCharacter{8793}{2259}{\ensuremath{\estimates }}
+\DefineCharacter{8794}{225A}{\ensuremath{\ElsevierGlyph{225A}}}
+\DefineCharacter{8795}{225B}{\ensuremath{\starequal }}
+\DefineCharacter{8796}{225C}{\ensuremath{\triangleq }}
+\DefineCharacter{8799}{225F}{\ensuremath{\ElsevierGlyph{225F}}}
+\DefineCharacter{8800}{2260}{\ensuremath{\not =}}
+\DefineCharacter{8801}{2261}{\ensuremath{\equiv }}
+\DefineCharacter{8802}{2262}{\ensuremath{\not\equiv }}
+\DefineCharacter{8804}{2264}{\ensuremath{\leq }}
+\DefineCharacter{8805}{2265}{\ensuremath{\geq }}
+\DefineCharacter{8806}{2266}{\ensuremath{\leqq }}
+\DefineCharacter{8807}{2267}{\ensuremath{\geqq }}
+\DefineCharacter{8808}{2268}{\ensuremath{\lneqq }}
+\DefineCharacter{8809}{2269}{\ensuremath{\gneqq }}
+\DefineCharacter{8810}{226A}{\ensuremath{\ll }}
+\DefineCharacter{8811}{226B}{\ensuremath{\gg }}
+\DefineCharacter{8812}{226C}{\ensuremath{\between }}
+\DefineCharacter{8813}{226D}{\ensuremath{\not\kern-0.3em\times }}
+\DefineCharacter{8814}{226E}{\ensuremath{\not<}}
+\DefineCharacter{8815}{226F}{\ensuremath{\not>}}
+\DefineCharacter{8816}{2270}{\ensuremath{\nleqslant }}
+\DefineCharacter{8817}{2271}{\ensuremath{\ngeqslant }}
+\DefineCharacter{8818}{2272}{\ensuremath{\lessequivlnt }}
+\DefineCharacter{8819}{2273}{\ensuremath{\greaterequivlnt }}
+\DefineCharacter{8820}{2274}{\ensuremath{\ElsevierGlyph{2274}}}
+\DefineCharacter{8821}{2275}{\ensuremath{\ElsevierGlyph{2275}}}
+\DefineCharacter{8822}{2276}{\ensuremath{\lessgtr }}
+\DefineCharacter{8823}{2277}{\ensuremath{\gtrless }}
+\DefineCharacter{8824}{2278}{\ensuremath{\notlessgreater }}
+\DefineCharacter{8825}{2279}{\ensuremath{\notgreaterless }}
+\DefineCharacter{8826}{227A}{\ensuremath{\prec }}
+\DefineCharacter{8827}{227B}{\ensuremath{\succ }}
+\DefineCharacter{8828}{227C}{\ensuremath{\preccurlyeq }}
+\DefineCharacter{8829}{227D}{\ensuremath{\succcurlyeq }}
+\DefineCharacter{8830}{227E}{\ensuremath{\precapprox }}
+\DefineCharacter{8831}{227F}{\ensuremath{\succapprox }}
+\DefineCharacter{8832}{2280}{\ensuremath{\not\prec }}
+\DefineCharacter{8833}{2281}{\ensuremath{\not\succ }}
+\DefineCharacter{8834}{2282}{\ensuremath{\subset }}
+\DefineCharacter{8835}{2283}{\ensuremath{\supset }}
+\DefineCharacter{8836}{2284}{\ensuremath{\not\subset }}
+\DefineCharacter{8837}{2285}{\ensuremath{\not\supset }}
+\DefineCharacter{8838}{2286}{\ensuremath{\subseteq }}
+\DefineCharacter{8839}{2287}{\ensuremath{\supseteq }}
+\DefineCharacter{8840}{2288}{\ensuremath{\not\subseteq }}
+\DefineCharacter{8841}{2289}{\ensuremath{\not\supseteq }}
+\DefineCharacter{8842}{228A}{\ensuremath{\subsetneq }}
+\DefineCharacter{8843}{228B}{\ensuremath{\supsetneq }}
+\DefineCharacter{8846}{228E}{\ensuremath{\uplus }}
+\DefineCharacter{8847}{228F}{\ensuremath{\sqsubset }}
+\DefineCharacter{8848}{2290}{\ensuremath{\sqsupset }}
+\DefineCharacter{8849}{2291}{\ensuremath{\sqsubseteq }}
+\DefineCharacter{8850}{2292}{\ensuremath{\sqsupseteq }}
+\DefineCharacter{8851}{2293}{\ensuremath{\sqcap }}
+\DefineCharacter{8852}{2294}{\ensuremath{\sqcup }}
+\DefineCharacter{8853}{2295}{\ensuremath{\oplus }}
+\DefineCharacter{8854}{2296}{\ensuremath{\ominus }}
+\DefineCharacter{8855}{2297}{\ensuremath{\otimes }}
+\DefineCharacter{8856}{2298}{\ensuremath{\oslash }}
+\DefineCharacter{8857}{2299}{\ensuremath{\odot }}
+\DefineCharacter{8858}{229A}{\ensuremath{\circledcirc }}
+\DefineCharacter{8859}{229B}{\ensuremath{\circledast }}
+\DefineCharacter{8861}{229D}{\ensuremath{\circleddash }}
+\DefineCharacter{8862}{229E}{\ensuremath{\boxplus }}
+\DefineCharacter{8863}{229F}{\ensuremath{\boxminus }}
+\DefineCharacter{8864}{22A0}{\ensuremath{\boxtimes }}
+\DefineCharacter{8865}{22A1}{\ensuremath{\boxdot }}
+\DefineCharacter{8866}{22A2}{\ensuremath{\vdash }}
+\DefineCharacter{8867}{22A3}{\ensuremath{\dashv }}
+\DefineCharacter{8868}{22A4}{\ensuremath{\top }}
+\DefineCharacter{8869}{22A5}{\ensuremath{\perp }}
+\DefineCharacter{8871}{22A7}{\ensuremath{\truestate }}
+\DefineCharacter{8872}{22A8}{\ensuremath{\forcesextra }}
+\DefineCharacter{8873}{22A9}{\ensuremath{\Vdash }}
+\DefineCharacter{8874}{22AA}{\ensuremath{\Vvdash }}
+\DefineCharacter{8875}{22AB}{\ensuremath{\VDash }}
+\DefineCharacter{8876}{22AC}{\ensuremath{\nvdash }}
+\DefineCharacter{8877}{22AD}{\ensuremath{\nvDash }}
+\DefineCharacter{8878}{22AE}{\ensuremath{\nVdash }}
+\DefineCharacter{8879}{22AF}{\ensuremath{\nVDash }}
+\DefineCharacter{8882}{22B2}{\ensuremath{\vartriangleleft }}
+\DefineCharacter{8883}{22B3}{\ensuremath{\vartriangleright }}
+\DefineCharacter{8884}{22B4}{\ensuremath{\trianglelefteq }}
+\DefineCharacter{8885}{22B5}{\ensuremath{\trianglerighteq }}
+\DefineCharacter{8886}{22B6}{\ensuremath{\original }}
+\DefineCharacter{8887}{22B7}{\ensuremath{\image }}
+\DefineCharacter{8888}{22B8}{\ensuremath{\multimap }}
+\DefineCharacter{8889}{22B9}{\ensuremath{\hermitconjmatrix }}
+\DefineCharacter{8890}{22BA}{\ensuremath{\intercal }}
+\DefineCharacter{8891}{22BB}{\ensuremath{\veebar }}
+\DefineCharacter{8892}{22BC}{\ensuremath{\barwedge }}
+\DefineCharacter{8894}{22BE}{\ensuremath{\rightanglearc }}
+\DefineCharacter{8896}{22C0}{\ensuremath{\ElsevierGlyph{22C0}}}
+\DefineCharacter{8897}{22C1}{\ensuremath{\ElsevierGlyph{22C1}}}
+\DefineCharacter{8898}{22C2}{\ensuremath{\bigcap }}
+\DefineCharacter{8899}{22C3}{\ensuremath{\bigcup }}
+\DefineCharacter{8900}{22C4}{\ensuremath{\diamond }}
+\DefineCharacter{8901}{22C5}{\ensuremath{\cdot }}
+\DefineCharacter{8902}{22C6}{\ensuremath{\star }}
+\DefineCharacter{8903}{22C7}{\ensuremath{\divideontimes }}
+\DefineCharacter{8904}{22C8}{\ensuremath{\bowtie }}
+\DefineCharacter{8905}{22C9}{\ensuremath{\ltimes }}
+\DefineCharacter{8906}{22CA}{\ensuremath{\rtimes }}
+\DefineCharacter{8907}{22CB}{\ensuremath{\leftthreetimes }}
+\DefineCharacter{8908}{22CC}{\ensuremath{\rightthreetimes }}
+\DefineCharacter{8909}{22CD}{\ensuremath{\backsimeq }}
+\DefineCharacter{8910}{22CE}{\ensuremath{\curlyvee }}
+\DefineCharacter{8911}{22CF}{\ensuremath{\curlywedge }}
+\DefineCharacter{8912}{22D0}{\ensuremath{\Subset }}
+\DefineCharacter{8913}{22D1}{\ensuremath{\Supset }}
+\DefineCharacter{8914}{22D2}{\ensuremath{\Cap }}
+\DefineCharacter{8915}{22D3}{\ensuremath{\Cup }}
+\DefineCharacter{8916}{22D4}{\ensuremath{\pitchfork }}
+\DefineCharacter{8918}{22D6}{\ensuremath{\lessdot }}
+\DefineCharacter{8919}{22D7}{\ensuremath{\gtrdot }}
+\DefineCharacter{8920}{22D8}{\ensuremath{\verymuchless }}
+\DefineCharacter{8921}{22D9}{\ensuremath{\verymuchgreater }}
+\DefineCharacter{8922}{22DA}{\ensuremath{\lesseqgtr }}
+\DefineCharacter{8923}{22DB}{\ensuremath{\gtreqless }}
+\DefineCharacter{8924}{22DC}{\ensuremath{\eqslantless }}
+\DefineCharacter{8925}{22DD}{\ensuremath{\eqslantgtr }}
+\DefineCharacter{8926}{22DE}{\ensuremath{\curlyeqprec }}
+\DefineCharacter{8927}{22DF}{\ensuremath{\curlyeqsucc }}
+\DefineCharacter{8930}{22E2}{\ensuremath{\not\sqsubseteq }}
+\DefineCharacter{8931}{22E3}{\ensuremath{\not\sqsupseteq }}
+\DefineCharacter{8933}{22E5}{\ensuremath{\Elzsqspne }}
+\DefineCharacter{8934}{22E6}{\ensuremath{\lnsim }}
+\DefineCharacter{8935}{22E7}{\ensuremath{\gnsim }}
+\DefineCharacter{8936}{22E8}{\ensuremath{\precedesnotsimilar }}
+\DefineCharacter{8937}{22E9}{\ensuremath{\succnsim }}
+\DefineCharacter{8938}{22EA}{\ensuremath{\ntriangleleft }}
+\DefineCharacter{8939}{22EB}{\ensuremath{\ntriangleright }}
+\DefineCharacter{8940}{22EC}{\ensuremath{\ntrianglelefteq }}
+\DefineCharacter{8941}{22ED}{\ensuremath{\ntrianglerighteq }}
+\DefineCharacter{8942}{22EE}{\ensuremath{\vdots }}
+\DefineCharacter{8943}{22EF}{\ensuremath{\cdots }}
+\DefineCharacter{8944}{22F0}{\ensuremath{\upslopeellipsis }}
+\DefineCharacter{8945}{22F1}{\ensuremath{\downslopeellipsis }}
+\DefineCharacter{8966}{2306}{\ensuremath{\perspcorrespond }}
+\DefineCharacter{8968}{2308}{\ensuremath{\lceil }}
+\DefineCharacter{8969}{2309}{\ensuremath{\rceil }}
+\DefineCharacter{8970}{230A}{\ensuremath{\lfloor }}
+\DefineCharacter{8971}{230B}{\ensuremath{\rfloor }}
+\DefineCharacter{8981}{2315}{\ensuremath{\recorder }}
+\DefineCharacter{8982}{2316}{\ensuremath{\mathchar"2208}}
+\DefineCharacter{8988}{231C}{\ensuremath{\ulcorner }}
+\DefineCharacter{8989}{231D}{\ensuremath{\urcorner }}
+\DefineCharacter{8990}{231E}{\ensuremath{\llcorner }}
+\DefineCharacter{8991}{231F}{\ensuremath{\lrcorner }}
+\DefineCharacter{8994}{2322}{\ensuremath{\frown }}
+\DefineCharacter{8995}{2323}{\ensuremath{\smile }}
+\DefineCharacter{9001}{2329}{\ensuremath{\langle }}
+\DefineCharacter{9002}{232A}{\ensuremath{\rangle }}
+\DefineCharacter{9251}{2423}{\textvisiblespace }
+\DefineCharacter{9312}{2460}{\ding{172}}
+\DefineCharacter{9313}{2461}{\ding{173}}
+\DefineCharacter{9314}{2462}{\ding{174}}
+\DefineCharacter{9315}{2463}{\ding{175}}
+\DefineCharacter{9316}{2464}{\ding{176}}
+\DefineCharacter{9317}{2465}{\ding{177}}
+\DefineCharacter{9318}{2466}{\ding{178}}
+\DefineCharacter{9319}{2467}{\ding{179}}
+\DefineCharacter{9320}{2468}{\ding{180}}
+\DefineCharacter{9321}{2469}{\ding{181}}
+\DefineCharacter{9416}{24C8}{\ensuremath{\circledS }}
+\DefineCharacter{9497}{2519}{\ensuremath{\Elzsqfnw }}
+\DefineCharacter{9632}{25A0}{\ding{110}}
+\DefineCharacter{9633}{25A1}{\ensuremath{\square }}
+\DefineCharacter{9642}{25AA}{\ensuremath{\blacksquare }}
+\DefineCharacter{9645}{25AD}{\ensuremath{\fbox{~~}}}
+\DefineCharacter{9647}{25AF}{\ensuremath{\Elzvrecto }}
+\DefineCharacter{9649}{25B1}{\ensuremath{\ElsevierGlyph{E381}}}
+\DefineCharacter{9650}{25B2}{\ding{115}}
+\DefineCharacter{9651}{25B3}{\ensuremath{\bigtriangleup }}
+\DefineCharacter{9652}{25B4}{\ensuremath{\blacktriangle }}
+\DefineCharacter{9653}{25B5}{\ensuremath{\vartriangle }}
+\DefineCharacter{9656}{25B8}{\ensuremath{\blacktriangleright }}
+\DefineCharacter{9657}{25B9}{\ensuremath{\triangleright }}
+\DefineCharacter{9660}{25BC}{\ding{116}}
+\DefineCharacter{9661}{25BD}{\ensuremath{\bigtriangledown }}
+\DefineCharacter{9662}{25BE}{\ensuremath{\blacktriangledown }}
+\DefineCharacter{9663}{25BF}{\ensuremath{\triangledown }}
+\DefineCharacter{9666}{25C2}{\ensuremath{\blacktriangleleft }}
+\DefineCharacter{9667}{25C3}{\ensuremath{\triangleleft }}
+\DefineCharacter{9670}{25C6}{\ding{117}}
+\DefineCharacter{9674}{25CA}{\ensuremath{\lozenge }}
+\DefineCharacter{9675}{25CB}{\ensuremath{\bigcirc }}
+\DefineCharacter{9679}{25CF}{\ding{108}}
+\DefineCharacter{9680}{25D0}{\ensuremath{\Elzcirfl }}
+\DefineCharacter{9681}{25D1}{\ensuremath{\Elzcirfr }}
+\DefineCharacter{9682}{25D2}{\ensuremath{\Elzcirfb }}
+\DefineCharacter{9687}{25D7}{\ding{119}}
+\DefineCharacter{9688}{25D8}{\ensuremath{\Elzrvbull }}
+\DefineCharacter{9703}{25E7}{\ensuremath{\Elzsqfl }}
+\DefineCharacter{9704}{25E8}{\ensuremath{\Elzsqfr }}
+\DefineCharacter{9706}{25EA}{\ensuremath{\Elzsqfse }}
+\DefineCharacter{9711}{25EF}{\ensuremath{\bigcirc }}
+\DefineCharacter{9733}{2605}{\ding{72}}
+\DefineCharacter{9734}{2606}{\ding{73}}
+\DefineCharacter{9742}{260E}{\ding{37}}
+\DefineCharacter{9755}{261B}{\ding{42}}
+\DefineCharacter{9758}{261E}{\ding{43}}
+\DefineCharacter{9790}{263E}{\rightmoon }
+\DefineCharacter{9791}{263F}{\mercury }
+\DefineCharacter{9792}{2640}{\venus }
+\DefineCharacter{9794}{2642}{\male }
+\DefineCharacter{9795}{2643}{\jupiter }
+\DefineCharacter{9796}{2644}{\saturn }
+\DefineCharacter{9797}{2645}{\uranus }
+\DefineCharacter{9798}{2646}{\neptune }
+\DefineCharacter{9799}{2647}{\pluto }
+\DefineCharacter{9800}{2648}{\aries }
+\DefineCharacter{9801}{2649}{\taurus }
+\DefineCharacter{9802}{264A}{\gemini }
+\DefineCharacter{9803}{264B}{\cancer }
+\DefineCharacter{9804}{264C}{\leo }
+\DefineCharacter{9805}{264D}{\virgo }
+\DefineCharacter{9806}{264E}{\libra }
+\DefineCharacter{9807}{264F}{\scorpio }
+\DefineCharacter{9808}{2650}{\sagittarius }
+\DefineCharacter{9809}{2651}{\capricornus }
+\DefineCharacter{9810}{2652}{\aquarius }
+\DefineCharacter{9811}{2653}{\pisces }
+\DefineCharacter{9824}{2660}{\ding{171}}
+\DefineCharacter{9826}{2662}{\ensuremath{\diamond }}
+\DefineCharacter{9827}{2663}{\ding{168}}
+\DefineCharacter{9829}{2665}{\ding{170}}
+\DefineCharacter{9830}{2666}{\ding{169}}
+\DefineCharacter{9833}{2669}{\quarternote }
+\DefineCharacter{9834}{266A}{\eighthnote }
+\DefineCharacter{9837}{266D}{\ensuremath{\flat }}
+\DefineCharacter{9838}{266E}{\ensuremath{\natural }}
+\DefineCharacter{9839}{266F}{\ensuremath{\sharp }}
+\DefineCharacter{9985}{2701}{\ding{33}}
+\DefineCharacter{9986}{2702}{\ding{34}}
+\DefineCharacter{9987}{2703}{\ding{35}}
+\DefineCharacter{9988}{2704}{\ding{36}}
+\DefineCharacter{9990}{2706}{\ding{38}}
+\DefineCharacter{9991}{2707}{\ding{39}}
+\DefineCharacter{9992}{2708}{\ding{40}}
+\DefineCharacter{9993}{2709}{\ding{41}}
+\DefineCharacter{9996}{270C}{\ding{44}}
+\DefineCharacter{9997}{270D}{\ding{45}}
+\DefineCharacter{9998}{270E}{\ding{46}}
+\DefineCharacter{9999}{270F}{\ding{47}}
+\DefineCharacter{10000}{2710}{\ding{48}}
+\DefineCharacter{10001}{2711}{\ding{49}}
+\DefineCharacter{10002}{2712}{\ding{50}}
+\DefineCharacter{10003}{2713}{\ding{51}}
+\DefineCharacter{10004}{2714}{\ding{52}}
+\DefineCharacter{10005}{2715}{\ding{53}}
+\DefineCharacter{10006}{2716}{\ding{54}}
+\DefineCharacter{10007}{2717}{\ding{55}}
+\DefineCharacter{10008}{2718}{\ding{56}}
+\DefineCharacter{10009}{2719}{\ding{57}}
+\DefineCharacter{10010}{271A}{\ding{58}}
+\DefineCharacter{10011}{271B}{\ding{59}}
+\DefineCharacter{10012}{271C}{\ding{60}}
+\DefineCharacter{10013}{271D}{\ding{61}}
+\DefineCharacter{10014}{271E}{\ding{62}}
+\DefineCharacter{10015}{271F}{\ding{63}}
+\DefineCharacter{10016}{2720}{\ding{64}}
+\DefineCharacter{10017}{2721}{\ding{65}}
+\DefineCharacter{10018}{2722}{\ding{66}}
+\DefineCharacter{10019}{2723}{\ding{67}}
+\DefineCharacter{10020}{2724}{\ding{68}}
+\DefineCharacter{10021}{2725}{\ding{69}}
+\DefineCharacter{10022}{2726}{\ding{70}}
+\DefineCharacter{10023}{2727}{\ding{71}}
+\DefineCharacter{10025}{2729}{\ding{73}}
+\DefineCharacter{10026}{272A}{\ding{74}}
+\DefineCharacter{10027}{272B}{\ding{75}}
+\DefineCharacter{10028}{272C}{\ding{76}}
+\DefineCharacter{10029}{272D}{\ding{77}}
+\DefineCharacter{10030}{272E}{\ding{78}}
+\DefineCharacter{10031}{272F}{\ding{79}}
+\DefineCharacter{10032}{2730}{\ding{80}}
+\DefineCharacter{10033}{2731}{\ding{81}}
+\DefineCharacter{10034}{2732}{\ding{82}}
+\DefineCharacter{10035}{2733}{\ding{83}}
+\DefineCharacter{10036}{2734}{\ding{84}}
+\DefineCharacter{10037}{2735}{\ding{85}}
+\DefineCharacter{10038}{2736}{\ding{86}}
+\DefineCharacter{10039}{2737}{\ding{87}}
+\DefineCharacter{10040}{2738}{\ding{88}}
+\DefineCharacter{10041}{2739}{\ding{89}}
+\DefineCharacter{10042}{273A}{\ding{90}}
+\DefineCharacter{10043}{273B}{\ding{91}}
+\DefineCharacter{10044}{273C}{\ding{92}}
+\DefineCharacter{10045}{273D}{\ding{93}}
+\DefineCharacter{10046}{273E}{\ding{94}}
+\DefineCharacter{10047}{273F}{\ding{95}}
+\DefineCharacter{10048}{2740}{\ding{96}}
+\DefineCharacter{10049}{2741}{\ding{97}}
+\DefineCharacter{10050}{2742}{\ding{98}}
+\DefineCharacter{10051}{2743}{\ding{99}}
+\DefineCharacter{10052}{2744}{\ding{100}}
+\DefineCharacter{10053}{2745}{\ding{101}}
+\DefineCharacter{10054}{2746}{\ding{102}}
+\DefineCharacter{10055}{2747}{\ding{103}}
+\DefineCharacter{10056}{2748}{\ding{104}}
+\DefineCharacter{10057}{2749}{\ding{105}}
+\DefineCharacter{10058}{274A}{\ding{106}}
+\DefineCharacter{10059}{274B}{\ding{107}}
+\DefineCharacter{10061}{274D}{\ding{109}}
+\DefineCharacter{10063}{274F}{\ding{111}}
+\DefineCharacter{10064}{2750}{\ding{112}}
+\DefineCharacter{10065}{2751}{\ding{113}}
+\DefineCharacter{10066}{2752}{\ding{114}}
+\DefineCharacter{10070}{2756}{\ding{118}}
+\DefineCharacter{10072}{2758}{\ding{120}}
+\DefineCharacter{10073}{2759}{\ding{121}}
+\DefineCharacter{10074}{275A}{\ding{122}}
+\DefineCharacter{10075}{275B}{\ding{123}}
+\DefineCharacter{10076}{275C}{\ding{124}}
+\DefineCharacter{10077}{275D}{\ding{125}}
+\DefineCharacter{10078}{275E}{\ding{126}}
+\DefineCharacter{10081}{2761}{\ding{161}}
+\DefineCharacter{10082}{2762}{\ding{162}}
+\DefineCharacter{10083}{2763}{\ding{163}}
+\DefineCharacter{10084}{2764}{\ding{164}}
+\DefineCharacter{10085}{2765}{\ding{165}}
+\DefineCharacter{10086}{2766}{\ding{166}}
+\DefineCharacter{10087}{2767}{\ding{167}}
+\DefineCharacter{10102}{2776}{\ding{182}}
+\DefineCharacter{10103}{2777}{\ding{183}}
+\DefineCharacter{10104}{2778}{\ding{184}}
+\DefineCharacter{10105}{2779}{\ding{185}}
+\DefineCharacter{10106}{277A}{\ding{186}}
+\DefineCharacter{10107}{277B}{\ding{187}}
+\DefineCharacter{10108}{277C}{\ding{188}}
+\DefineCharacter{10109}{277D}{\ding{189}}
+\DefineCharacter{10110}{277E}{\ding{190}}
+\DefineCharacter{10111}{277F}{\ding{191}}
+\DefineCharacter{10112}{2780}{\ding{192}}
+\DefineCharacter{10113}{2781}{\ding{193}}
+\DefineCharacter{10114}{2782}{\ding{194}}
+\DefineCharacter{10115}{2783}{\ding{195}}
+\DefineCharacter{10116}{2784}{\ding{196}}
+\DefineCharacter{10117}{2785}{\ding{197}}
+\DefineCharacter{10118}{2786}{\ding{198}}
+\DefineCharacter{10119}{2787}{\ding{199}}
+\DefineCharacter{10120}{2788}{\ding{200}}
+\DefineCharacter{10121}{2789}{\ding{201}}
+\DefineCharacter{10122}{278A}{\ding{202}}
+\DefineCharacter{10123}{278B}{\ding{203}}
+\DefineCharacter{10124}{278C}{\ding{204}}
+\DefineCharacter{10125}{278D}{\ding{205}}
+\DefineCharacter{10126}{278E}{\ding{206}}
+\DefineCharacter{10127}{278F}{\ding{207}}
+\DefineCharacter{10128}{2790}{\ding{208}}
+\DefineCharacter{10129}{2791}{\ding{209}}
+\DefineCharacter{10130}{2792}{\ding{210}}
+\DefineCharacter{10131}{2793}{\ding{211}}
+\DefineCharacter{10132}{2794}{\ding{212}}
+\DefineCharacter{10136}{2798}{\ding{216}}
+\DefineCharacter{10137}{2799}{\ding{217}}
+\DefineCharacter{10138}{279A}{\ding{218}}
+\DefineCharacter{10139}{279B}{\ding{219}}
+\DefineCharacter{10140}{279C}{\ding{220}}
+\DefineCharacter{10141}{279D}{\ding{221}}
+\DefineCharacter{10142}{279E}{\ding{222}}
+\DefineCharacter{10143}{279F}{\ding{223}}
+\DefineCharacter{10144}{27A0}{\ding{224}}
+\DefineCharacter{10145}{27A1}{\ding{225}}
+\DefineCharacter{10146}{27A2}{\ding{226}}
+\DefineCharacter{10147}{27A3}{\ding{227}}
+\DefineCharacter{10148}{27A4}{\ding{228}}
+\DefineCharacter{10149}{27A5}{\ding{229}}
+\DefineCharacter{10150}{27A6}{\ding{230}}
+\DefineCharacter{10151}{27A7}{\ding{231}}
+\DefineCharacter{10152}{27A8}{\ding{232}}
+\DefineCharacter{10153}{27A9}{\ding{233}}
+\DefineCharacter{10154}{27AA}{\ding{234}}
+\DefineCharacter{10155}{27AB}{\ding{235}}
+\DefineCharacter{10156}{27AC}{\ding{236}}
+\DefineCharacter{10157}{27AD}{\ding{237}}
+\DefineCharacter{10158}{27AE}{\ding{238}}
+\DefineCharacter{10159}{27AF}{\ding{239}}
+\DefineCharacter{10161}{27B1}{\ding{241}}
+\DefineCharacter{10162}{27B2}{\ding{242}}
+\DefineCharacter{10163}{27B3}{\ding{243}}
+\DefineCharacter{10164}{27B4}{\ding{244}}
+\DefineCharacter{10165}{27B5}{\ding{245}}
+\DefineCharacter{10166}{27B6}{\ding{246}}
+\DefineCharacter{10167}{27B7}{\ding{247}}
+\DefineCharacter{10168}{27B8}{\ding{248}}
+\DefineCharacter{10169}{27B9}{\ding{249}}
+\DefineCharacter{10170}{27BA}{\ding{250}}
+\DefineCharacter{10171}{27BB}{\ding{251}}
+\DefineCharacter{10172}{27BC}{\ding{252}}
+\DefineCharacter{10173}{27BD}{\ding{253}}
+\DefineCharacter{10174}{27BE}{\ding{254}}
+\DefineCharacter{10501}{2905}{\ensuremath{\ElsevierGlyph{E212}}}
+\DefineCharacter{10531}{2923}{\ensuremath{\ElsevierGlyph{E20C}}}
+\DefineCharacter{10532}{2924}{\ensuremath{\ElsevierGlyph{E20D}}}
+\DefineCharacter{10533}{2925}{\ensuremath{\ElsevierGlyph{E20B}}}
+\DefineCharacter{10534}{2926}{\ensuremath{\ElsevierGlyph{E20A}}}
+\DefineCharacter{10535}{2927}{\ensuremath{\ElsevierGlyph{E211}}}
+\DefineCharacter{10536}{2928}{\ensuremath{\ElsevierGlyph{E20E}}}
+\DefineCharacter{10537}{2929}{\ensuremath{\ElsevierGlyph{E20F}}}
+\DefineCharacter{10538}{292A}{\ensuremath{\ElsevierGlyph{E210}}}
+\DefineCharacter{10606}{296E}{\ensuremath{\UpEquilibrium }}
+\DefineCharacter{10607}{296F}{\ensuremath{\ReverseUpEquilibrium }}
+\DefineCharacter{10547}{2933}{\ensuremath{\ElsevierGlyph{E21C}}}
+\DefineCharacter{10550}{2936}{\ensuremath{\ElsevierGlyph{E21A}}}
+\DefineCharacter{10551}{2937}{\ensuremath{\ElsevierGlyph{E219}}}
+\DefineCharacter{10620}{297C}{\ensuremath{\ElsevierGlyph{E214}}}
+\DefineCharacter{10621}{297D}{\ensuremath{\ElsevierGlyph{E215}}}
+\DefineCharacter{10815}{2A3F}{\ensuremath{\amalg }}
+\DefineCharacter{10758}{2A06}{\ensuremath{\Elxsqcup }}
+\DefineCharacter{10756}{2A04}{\ensuremath{\Elxuplus }}
+\DefineCharacter{10812}{2A3C}{\ensuremath{\ElsevierGlyph{E259}}}
+\DefineCharacter{10789}{2A25}{\ensuremath{\ElsevierGlyph{E25A}}}
+\DefineCharacter{10794}{2A2A}{\ensuremath{\ElsevierGlyph{E25B}}}
+\DefineCharacter{10797}{2A2D}{\ensuremath{\ElsevierGlyph{E25C}}}
+\DefineCharacter{10798}{2A2E}{\ensuremath{\ElsevierGlyph{E25D}}}
+\DefineCharacter{10804}{2A34}{\ensuremath{\ElsevierGlyph{E25E}}}
+\DefineCharacter{10805}{2A35}{\ensuremath{\ElsevierGlyph{E25E}}}
+\DefineCharacter{10677}{29B5}{\ensuremath{\ElsevierGlyph{E260}}}
+\DefineCharacter{10847}{2A5F}{\ensuremath{\Elzminhat }}
+\DefineCharacter{10644}{2994}{\ensuremath{\ElsevierGlyph{E291}}}
+\DefineCharacter{10643}{2993}{\ensuremath{<\kern-0.58em(}}
+\DefineCharacter{10647}{2997}{\ensuremath{\rmoustache }}
+\DefineCharacter{10648}{2998}{\ensuremath{\lmoustache }}
+\DefineCharacter{10890}{2A8A}{\ensuremath{\gnapprox }}
+\DefineCharacter{10888}{2A88}{\ensuremath{\gneq }}
+\DefineCharacter{10889}{2A89}{\ensuremath{\lnapprox }}
+\DefineCharacter{10887}{2A87}{\ensuremath{\lneq }}
+\DefineCharacter{10937}{2AB9}{\ensuremath{\precnapprox }}
+\DefineCharacter{10933}{2AB5}{\ensuremath{\precneqq }}
+\DefineCharacter{10938}{2ABA}{\ensuremath{\succnapprox }}
+\DefineCharacter{10934}{2AB6}{\ensuremath{\succneqq }}
+\DefineCharacter{10955}{2ACB}{\ensuremath{\subsetneqq }}
+\DefineCharacter{10956}{2ACC}{\ensuremath{\supsetneqq }}
+\DefineCharacter{8463}{210Fx}{\ensuremath{\hslash }}
+\DefineCharacter{10886}{2A86}{\ensuremath{\gtrapprox }}
+\DefineCharacter{10892}{2A8C}{\ensuremath{\gtreqqless }}
+\DefineCharacter{10878}{2A7E}{\ensuremath{\geqslant }}
+\DefineCharacter{10914}{2AA2}{\ensuremath{\NestedGreaterGreater }}
+\DefineCharacter{10885}{2A85}{\ensuremath{\lessapprox }}
+\DefineCharacter{10891}{2A8B}{\ensuremath{\lesseqqgtr }}
+\DefineCharacter{10877}{2A7D}{\ensuremath{\leqslant }}
+\DefineCharacter{10913}{2AA1}{\ensuremath{\NestedLessLess }}
+\DefineCharacter{10935}{2AB7}{\ensuremath{\precapprox }}
+\DefineCharacter{10927}{2AAF}{\ensuremath{\preceq }}
+\DefineCharacter{10936}{2AB8}{\ensuremath{\succapprox }}
+\DefineCharacter{10928}{2AB0}{\ensuremath{\succeq }}
+\DefineCharacter{10949}{2AC5}{\ensuremath{\subseteqq }}
+\DefineCharacter{10950}{2AC6}{\ensuremath{\supseteqq }}
+\DefineCharacter{10909}{2A9D}{\ensuremath{\Pisymbol{ppi020}{117}}}
+\DefineCharacter{10910}{2A9E}{\ensuremath{\Pisymbol{ppi020}{105}}}
+\DefineCharacter{10987}{2AEB}{\ensuremath{\ElsevierGlyph{E30D}}}
+\DefineCharacter{989}{3DD}{\ensuremath{\digamma }}
+\DefineCharacter{8660}{21D4xx}{\ensuremath{\ElsevierGlyph{E365}}}
+\DefineCharacter{10837}{2A55}{\ensuremath{\ElsevierGlyph{E36E}}}
+\DefineCharacter{10838}{2A56}{\ensuremath{\ElOr }}
+\DefineCharacter{8279}{2057}{\ensuremath{''''}}
+\DefineCharacter{8285}{2063}{\llap{\not\;}}
+\DefineCharacter{10716}{29DC}{\ensuremath{\ElsevierGlyph{E372}}}
+\DefineCharacter{10652}{299C}{\ensuremath{\Angle }}
+\DefineCharacter{10835}{2A53}{\ensuremath{\ElzAnd }}
+\DefineCharacter{10836}{2A54}{\ensuremath{\ElzOr }}
+\DefineCharacter{10774}{2A16}{\ensuremath{\sqrint }}
+\DefineCharacter{10629}{2985x}{\ensuremath{\ElsevierGlyph{3018}}}
+\DefineCharacter{10630}{2986x}{\ensuremath{\ElsevierGlyph{3019}}}
+\DefineCharacter{10768}{2A10}{\ensuremath{\ElsevierGlyph{E395}}}
+\DefineCharacter{10765}{2A0D}{\ensuremath{\ElzCint }}
+\DefineCharacter{10767}{2A0F}{\ensuremath{\clockoint }}
+\DefineCharacter{10562}{2942}{\ensuremath{\ElzRlarr }}
+\DefineCharacter{10564}{2944}{\ensuremath{\ElzrLarr }}
+\DefineCharacter{10567}{2947}{\ensuremath{\Elzrarrx }}
+\DefineCharacter{10560}{2940}{\ensuremath{\Elolarr }}
+\DefineCharacter{10561}{2941}{\ensuremath{\Elorarr }}
+\DefineCharacter{9123}{23A3x}{\ensuremath{\Elzdlcorn }}
+\DefineCharacter{10629}{2985}{\ensuremath{\ElsevierGlyph{3018}}}
+\DefineCharacter{10624}{2980}{\ensuremath{\Elztfnc }}
+\DefineCharacter{9126}{23A6x}{\ensuremath{\Elzdrcorn }}
+\DefineCharacter{10630}{2986}{\ensuremath{\Elroang }}
+\DefineCharacter{10998}{2AF6}{\ensuremath{\Elztdcol }}
+\DefineCharacter{10649}{2999}{\ensuremath{\Elzddfnc }}
+\DefineCharacter{9478}{2506}{\ensuremath{\Elzdshfnc }}
+\DefineCharacter{8738}{2222x}{\ensuremath{\Elzrparlt }}
+\DefineCharacter{10656}{29A0}{\ensuremath{\Elzlpargt }}
+\DefineCharacter{10760}{2A08}{\ensuremath{\ElzSup }}
+\DefineCharacter{10759}{2A07}{\ensuremath{\ElzInf }}
+\DefineCharacter{10851}{2A63}{\ensuremath{\ElsevierGlyph{225A}}}
+\DefineCharacter{10846}{2A5E}{\ensuremath{\perspcorrespond }}
+\DefineCharacter{10698}{29CA}{\ensuremath{\ElzLap }}
+\DefineCharacter{10901}{2A95}{\ensuremath{\eqslantless }}
+\DefineCharacter{10902}{2A96}{\ensuremath{\eqslantgtr }}
+\DefineCharacter{8276}{2054}{\ensuremath{\diagdown }}
+\DefineCharacter{8277}{2055}{\ensuremath{\diagup }}
+\DefineCharacter{10862}{2A6E}{\ensuremath{\Elbcong }}
+\DefineCharacter{10699}{29CB}{\ensuremath{\Elzdefas }}
+\DefineCharacter{10799}{2A2F}{\ensuremath{\ElzTimes }}
+\DefineCharacter{10678}{29B6}{\ensuremath{\ElsevierGlyph{E61B}}}
+\DefineCharacter{10757}{2A05}{\ensuremath{\ElzThr }}
+\DefineCharacter{1012}{3F4}{\textTheta }
+\DefineCharacter{8508}{213C}{\ensuremath{\backepsilon }}
+\DefineCharacter{10731}{29EB}{\ensuremath{\blacklozenge }}
+\DefineCharacter{9021}{233D}{\ensuremath{\ElsevierGlyph{E838}}}
+\DefineCharacter{8726}{2216x}{\ensuremath{\smallsetminus }}
+\DefineCharacter{65279}{FEFF}{\nolinebreak }
+\DefineCharacter{8197}{2005x}{\ensuremath{\;}}
+\DefineCharacter{10703}{29CF}{\ensuremath{\LeftTriangleBar }}
+\DefineCharacter{10704}{29D0}{\ensuremath{\RightTriangleBar }}
+\DefineCharacter{10869}{2A75}{\ensuremath{\Equal }}
+\DefineCharacter{10514}{2912}{\ensuremath{\UpArrowBar }}
+\DefineCharacter{10515}{2913}{\ensuremath{\DownArrowBar }}
+\DefineCharacter{10574}{294E}{\ensuremath{\LeftRightVector }}
+\DefineCharacter{10578}{2952}{\ensuremath{\LeftVectorBar }}
+\DefineCharacter{10579}{2953}{\ensuremath{\RightVectorBar }}
+\DefineCharacter{10586}{295A}{\ensuremath{\LeftTeeVector }}
+\DefineCharacter{10587}{295B}{\ensuremath{\RightTeeVector }}
+\DefineCharacter{10576}{2950}{\ensuremath{\DownLeftRightVector }}
+\DefineCharacter{10582}{2956}{\ensuremath{\DownLeftVectorBar }}
+\DefineCharacter{10583}{2957}{\ensuremath{\DownRightVectorBar }}
+\DefineCharacter{10590}{295E}{\ensuremath{\DownLeftTeeVector }}
+\DefineCharacter{10591}{295F}{\ensuremath{\DownRightTeeVector }}
+\DefineCharacter{10575}{294F}{\ensuremath{\RightUpDownVector }}
+\DefineCharacter{10580}{2954}{\ensuremath{\RightUpVectorBar }}
+\DefineCharacter{10581}{2955}{\ensuremath{\RightDownVectorBar }}
+\DefineCharacter{10588}{295C}{\ensuremath{\RightUpTeeVector }}
+\DefineCharacter{10589}{295D}{\ensuremath{\RightDownTeeVector }}
+\DefineCharacter{10577}{2951}{\ensuremath{\LeftUpDownVector }}
+\DefineCharacter{10584}{2958}{\ensuremath{\LeftUpVectorBar }}
+\DefineCharacter{10585}{2959}{\ensuremath{\LeftDownVectorBar }}
+\DefineCharacter{10592}{2960}{\ensuremath{\LeftUpTeeVector }}
+\DefineCharacter{10593}{2961}{\ensuremath{\LeftDownTeeVector }}
+\DefineCharacter{10740}{29F4}{\ensuremath{\RuleDelayed }}
+\DefineCharacter{10608}{2970}{\ensuremath{\RoundImplies }}
+\DefineCharacter{986}{3DA}{\ensuremath{\Stigma }}
+\DefineCharacter{990}{3DE}{\ensuremath{\Koppa }}
+\DefineCharacter{992}{3E0}{\ensuremath{\Sampi }}
+\DefineCharacter{12298}{300A}{\ensuremath{\ElsevierGlyph{300A}}}
+\DefineCharacter{12299}{300B}{\ensuremath{\ElsevierGlyph{300B}}}
+\DefineCharacter{12312}{3018}{\ensuremath{\ElsevierGlyph{3018}}}
+\DefineCharacter{12313}{3019}{\ensuremath{\ElsevierGlyph{3019}}}
+\DefineCharacter{12314}{301A}{\ensuremath{\openbracketleft }}
+\DefineCharacter{12315}{301B}{\ensuremath{\openbracketright }}
+\DefineCharacter{64256}{FB00}{ff}
+\DefineCharacter{64257}{FB01}{fi}
+\DefineCharacter{64258}{FB02}{fl}
+\DefineCharacter{64259}{FB03}{ffi}
+\DefineCharacter{64260}{FB04}{ffl}
+\DefineCharacter{63172}{F6C4}{\cyrchar\cyrvarg }
+\DefineCharacter{63173}{F6C5}{\cyrchar\cyrvarb }
+\DefineCharacter{63174}{F6C6}{\cyrchar\cyrvard }
+\DefineCharacter{63175}{F6C7}{\cyrchar\cyrvarp }
+\DefineCharacter{63176}{F6C8}{\cyrchar\cyrvart }
+\DefineCharacter{63185}{F6D1}{\cyrchar\U }
+\DefineCharacter{63186}{F6D2}{\cyrchar\f }
+\DefineCharacter{63187}{F6D3}{\cyrchar\C }
+\DefineCharacter{63188}{F6D4}{\cyrchar\U }
+\DefineCharacter{63189}{F6D5}{\cyrchar\f }
+\DefineCharacter{63190}{F6D6}{\cyrchar\C }
+\DefineCharacter{119808}{1D400}{\ensuremath{\mathbf{A}}}
+\DefineCharacter{119809}{1D401}{\ensuremath{\mathbf{B}}}
+\DefineCharacter{119810}{1D402}{\ensuremath{\mathbf{C}}}
+\DefineCharacter{119811}{1D403}{\ensuremath{\mathbf{D}}}
+\DefineCharacter{119812}{1D404}{\ensuremath{\mathbf{E}}}
+\DefineCharacter{119813}{1D405}{\ensuremath{\mathbf{F}}}
+\DefineCharacter{119814}{1D406}{\ensuremath{\mathbf{G}}}
+\DefineCharacter{119815}{1D407}{\ensuremath{\mathbf{H}}}
+\DefineCharacter{119816}{1D408}{\ensuremath{\mathbf{I}}}
+\DefineCharacter{119817}{1D409}{\ensuremath{\mathbf{J}}}
+\DefineCharacter{119818}{1D40A}{\ensuremath{\mathbf{K}}}
+\DefineCharacter{119819}{1D40B}{\ensuremath{\mathbf{L}}}
+\DefineCharacter{119820}{1D40C}{\ensuremath{\mathbf{M}}}
+\DefineCharacter{119821}{1D40D}{\ensuremath{\mathbf{N}}}
+\DefineCharacter{119822}{1D40E}{\ensuremath{\mathbf{O}}}
+\DefineCharacter{119823}{1D40F}{\ensuremath{\mathbf{P}}}
+\DefineCharacter{119824}{1D410}{\ensuremath{\mathbf{Q}}}
+\DefineCharacter{119825}{1D411}{\ensuremath{\mathbf{R}}}
+\DefineCharacter{119826}{1D412}{\ensuremath{\mathbf{S}}}
+\DefineCharacter{119827}{1D413}{\ensuremath{\mathbf{T}}}
+\DefineCharacter{119828}{1D414}{\ensuremath{\mathbf{U}}}
+\DefineCharacter{119829}{1D415}{\ensuremath{\mathbf{V}}}
+\DefineCharacter{119830}{1D416}{\ensuremath{\mathbf{W}}}
+\DefineCharacter{119831}{1D417}{\ensuremath{\mathbf{X}}}
+\DefineCharacter{119832}{1D418}{\ensuremath{\mathbf{Y}}}
+\DefineCharacter{119833}{1D419}{\ensuremath{\mathbf{Z}}}
+\DefineCharacter{119834}{1D41A}{\ensuremath{\mathbf{a}}}
+\DefineCharacter{119835}{1D41B}{\ensuremath{\mathbf{b}}}
+\DefineCharacter{119836}{1D41C}{\ensuremath{\mathbf{c}}}
+\DefineCharacter{119837}{1D41D}{\ensuremath{\mathbf{d}}}
+\DefineCharacter{119838}{1D41E}{\ensuremath{\mathbf{e}}}
+\DefineCharacter{119839}{1D41F}{\ensuremath{\mathbf{f}}}
+\DefineCharacter{119840}{1D420}{\ensuremath{\mathbf{g}}}
+\DefineCharacter{119841}{1D421}{\ensuremath{\mathbf{h}}}
+\DefineCharacter{119842}{1D422}{\ensuremath{\mathbf{i}}}
+\DefineCharacter{119843}{1D423}{\ensuremath{\mathbf{j}}}
+\DefineCharacter{119844}{1D424}{\ensuremath{\mathbf{k}}}
+\DefineCharacter{119845}{1D425}{\ensuremath{\mathbf{l}}}
+\DefineCharacter{119846}{1D426}{\ensuremath{\mathbf{m}}}
+\DefineCharacter{119847}{1D427}{\ensuremath{\mathbf{n}}}
+\DefineCharacter{119848}{1D428}{\ensuremath{\mathbf{o}}}
+\DefineCharacter{119849}{1D429}{\ensuremath{\mathbf{p}}}
+\DefineCharacter{119850}{1D42A}{\ensuremath{\mathbf{q}}}
+\DefineCharacter{119851}{1D42B}{\ensuremath{\mathbf{r}}}
+\DefineCharacter{119852}{1D42C}{\ensuremath{\mathbf{s}}}
+\DefineCharacter{119853}{1D42D}{\ensuremath{\mathbf{t}}}
+\DefineCharacter{119854}{1D42E}{\ensuremath{\mathbf{u}}}
+\DefineCharacter{119855}{1D42F}{\ensuremath{\mathbf{v}}}
+\DefineCharacter{119856}{1D430}{\ensuremath{\mathbf{w}}}
+\DefineCharacter{119857}{1D431}{\ensuremath{\mathbf{x}}}
+\DefineCharacter{119858}{1D432}{\ensuremath{\mathbf{y}}}
+\DefineCharacter{119859}{1D433}{\ensuremath{\mathbf{z}}}
+\DefineCharacter{119860}{1D434}{\ensuremath{\mathsl{A}}}
+\DefineCharacter{119861}{1D435}{\ensuremath{\mathsl{B}}}
+\DefineCharacter{119862}{1D436}{\ensuremath{\mathsl{C}}}
+\DefineCharacter{119863}{1D437}{\ensuremath{\mathsl{D}}}
+\DefineCharacter{119864}{1D438}{\ensuremath{\mathsl{E}}}
+\DefineCharacter{119865}{1D439}{\ensuremath{\mathsl{F}}}
+\DefineCharacter{119866}{1D43A}{\ensuremath{\mathsl{G}}}
+\DefineCharacter{119867}{1D43B}{\ensuremath{\mathsl{H}}}
+\DefineCharacter{119868}{1D43C}{\ensuremath{\mathsl{I}}}
+\DefineCharacter{119869}{1D43D}{\ensuremath{\mathsl{J}}}
+\DefineCharacter{119870}{1D43E}{\ensuremath{\mathsl{K}}}
+\DefineCharacter{119871}{1D43F}{\ensuremath{\mathsl{L}}}
+\DefineCharacter{119872}{1D440}{\ensuremath{\mathsl{M}}}
+\DefineCharacter{119873}{1D441}{\ensuremath{\mathsl{N}}}
+\DefineCharacter{119874}{1D442}{\ensuremath{\mathsl{O}}}
+\DefineCharacter{119875}{1D443}{\ensuremath{\mathsl{P}}}
+\DefineCharacter{119876}{1D444}{\ensuremath{\mathsl{Q}}}
+\DefineCharacter{119877}{1D445}{\ensuremath{\mathsl{R}}}
+\DefineCharacter{119878}{1D446}{\ensuremath{\mathsl{S}}}
+\DefineCharacter{119879}{1D447}{\ensuremath{\mathsl{T}}}
+\DefineCharacter{119880}{1D448}{\ensuremath{\mathsl{U}}}
+\DefineCharacter{119881}{1D449}{\ensuremath{\mathsl{V}}}
+\DefineCharacter{119882}{1D44A}{\ensuremath{\mathsl{W}}}
+\DefineCharacter{119883}{1D44B}{\ensuremath{\mathsl{X}}}
+\DefineCharacter{119884}{1D44C}{\ensuremath{\mathsl{Y}}}
+\DefineCharacter{119885}{1D44D}{\ensuremath{\mathsl{Z}}}
+\DefineCharacter{119886}{1D44E}{\ensuremath{\mathsl{a}}}
+\DefineCharacter{119887}{1D44F}{\ensuremath{\mathsl{b}}}
+\DefineCharacter{119888}{1D450}{\ensuremath{\mathsl{c}}}
+\DefineCharacter{119889}{1D451}{\ensuremath{\mathsl{d}}}
+\DefineCharacter{119890}{1D452}{\ensuremath{\mathsl{e}}}
+\DefineCharacter{119891}{1D453}{\ensuremath{\mathsl{f}}}
+\DefineCharacter{119892}{1D454}{\ensuremath{\mathsl{g}}}
+\DefineCharacter{119894}{1D456}{\ensuremath{\mathsl{i}}}
+\DefineCharacter{119895}{1D457}{\ensuremath{\mathsl{j}}}
+\DefineCharacter{119896}{1D458}{\ensuremath{\mathsl{k}}}
+\DefineCharacter{119897}{1D459}{\ensuremath{\mathsl{l}}}
+\DefineCharacter{119898}{1D45A}{\ensuremath{\mathsl{m}}}
+\DefineCharacter{119899}{1D45B}{\ensuremath{\mathsl{n}}}
+\DefineCharacter{119900}{1D45C}{\ensuremath{\mathsl{o}}}
+\DefineCharacter{119901}{1D45D}{\ensuremath{\mathsl{p}}}
+\DefineCharacter{119902}{1D45E}{\ensuremath{\mathsl{q}}}
+\DefineCharacter{119903}{1D45F}{\ensuremath{\mathsl{r}}}
+\DefineCharacter{119904}{1D460}{\ensuremath{\mathsl{s}}}
+\DefineCharacter{119905}{1D461}{\ensuremath{\mathsl{t}}}
+\DefineCharacter{119906}{1D462}{\ensuremath{\mathsl{u}}}
+\DefineCharacter{119907}{1D463}{\ensuremath{\mathsl{v}}}
+\DefineCharacter{119908}{1D464}{\ensuremath{\mathsl{w}}}
+\DefineCharacter{119909}{1D465}{\ensuremath{\mathsl{x}}}
+\DefineCharacter{119910}{1D466}{\ensuremath{\mathsl{y}}}
+\DefineCharacter{119911}{1D467}{\ensuremath{\mathsl{z}}}
+\DefineCharacter{119912}{1D468}{\ensuremath{\mathbit{A}}}
+\DefineCharacter{119913}{1D469}{\ensuremath{\mathbit{B}}}
+\DefineCharacter{119914}{1D46A}{\ensuremath{\mathbit{C}}}
+\DefineCharacter{119915}{1D46B}{\ensuremath{\mathbit{D}}}
+\DefineCharacter{119916}{1D46C}{\ensuremath{\mathbit{E}}}
+\DefineCharacter{119917}{1D46D}{\ensuremath{\mathbit{F}}}
+\DefineCharacter{119918}{1D46E}{\ensuremath{\mathbit{G}}}
+\DefineCharacter{119919}{1D46F}{\ensuremath{\mathbit{H}}}
+\DefineCharacter{119920}{1D470}{\ensuremath{\mathbit{I}}}
+\DefineCharacter{119921}{1D471}{\ensuremath{\mathbit{J}}}
+\DefineCharacter{119922}{1D472}{\ensuremath{\mathbit{K}}}
+\DefineCharacter{119923}{1D473}{\ensuremath{\mathbit{L}}}
+\DefineCharacter{119924}{1D474}{\ensuremath{\mathbit{M}}}
+\DefineCharacter{119925}{1D475}{\ensuremath{\mathbit{N}}}
+\DefineCharacter{119926}{1D476}{\ensuremath{\mathbit{O}}}
+\DefineCharacter{119927}{1D477}{\ensuremath{\mathbit{P}}}
+\DefineCharacter{119928}{1D478}{\ensuremath{\mathbit{Q}}}
+\DefineCharacter{119929}{1D479}{\ensuremath{\mathbit{R}}}
+\DefineCharacter{119930}{1D47A}{\ensuremath{\mathbit{S}}}
+\DefineCharacter{119931}{1D47B}{\ensuremath{\mathbit{T}}}
+\DefineCharacter{119932}{1D47C}{\ensuremath{\mathbit{U}}}
+\DefineCharacter{119933}{1D47D}{\ensuremath{\mathbit{V}}}
+\DefineCharacter{119934}{1D47E}{\ensuremath{\mathbit{W}}}
+\DefineCharacter{119935}{1D47F}{\ensuremath{\mathbit{X}}}
+\DefineCharacter{119936}{1D480}{\ensuremath{\mathbit{Y}}}
+\DefineCharacter{119937}{1D481}{\ensuremath{\mathbit{Z}}}
+\DefineCharacter{119938}{1D482}{\ensuremath{\mathbit{a}}}
+\DefineCharacter{119939}{1D483}{\ensuremath{\mathbit{b}}}
+\DefineCharacter{119940}{1D484}{\ensuremath{\mathbit{c}}}
+\DefineCharacter{119941}{1D485}{\ensuremath{\mathbit{d}}}
+\DefineCharacter{119942}{1D486}{\ensuremath{\mathbit{e}}}
+\DefineCharacter{119943}{1D487}{\ensuremath{\mathbit{f}}}
+\DefineCharacter{119944}{1D488}{\ensuremath{\mathbit{g}}}
+\DefineCharacter{119945}{1D489}{\ensuremath{\mathbit{h}}}
+\DefineCharacter{119946}{1D48A}{\ensuremath{\mathbit{i}}}
+\DefineCharacter{119947}{1D48B}{\ensuremath{\mathbit{j}}}
+\DefineCharacter{119948}{1D48C}{\ensuremath{\mathbit{k}}}
+\DefineCharacter{119949}{1D48D}{\ensuremath{\mathbit{l}}}
+\DefineCharacter{119950}{1D48E}{\ensuremath{\mathbit{m}}}
+\DefineCharacter{119951}{1D48F}{\ensuremath{\mathbit{n}}}
+\DefineCharacter{119952}{1D490}{\ensuremath{\mathbit{o}}}
+\DefineCharacter{119953}{1D491}{\ensuremath{\mathbit{p}}}
+\DefineCharacter{119954}{1D492}{\ensuremath{\mathbit{q}}}
+\DefineCharacter{119955}{1D493}{\ensuremath{\mathbit{r}}}
+\DefineCharacter{119956}{1D494}{\ensuremath{\mathbit{s}}}
+\DefineCharacter{119957}{1D495}{\ensuremath{\mathbit{t}}}
+\DefineCharacter{119958}{1D496}{\ensuremath{\mathbit{u}}}
+\DefineCharacter{119959}{1D497}{\ensuremath{\mathbit{v}}}
+\DefineCharacter{119960}{1D498}{\ensuremath{\mathbit{w}}}
+\DefineCharacter{119961}{1D499}{\ensuremath{\mathbit{x}}}
+\DefineCharacter{119962}{1D49A}{\ensuremath{\mathbit{y}}}
+\DefineCharacter{119963}{1D49B}{\ensuremath{\mathbit{z}}}
+\DefineCharacter{119964}{1D49C}{\ensuremath{\mathscr{A}}}
+\DefineCharacter{119966}{1D49E}{\ensuremath{\mathscr{C}}}
+\DefineCharacter{119967}{1D49F}{\ensuremath{\mathscr{D}}}
+\DefineCharacter{119970}{1D4A2}{\ensuremath{\mathscr{G}}}
+\DefineCharacter{119973}{1D4A5}{\ensuremath{\mathscr{J}}}
+\DefineCharacter{119974}{1D4A6}{\ensuremath{\mathscr{K}}}
+\DefineCharacter{119977}{1D4A9}{\ensuremath{\mathscr{N}}}
+\DefineCharacter{119978}{1D4AA}{\ensuremath{\mathscr{O}}}
+\DefineCharacter{119979}{1D4AB}{\ensuremath{\mathscr{P}}}
+\DefineCharacter{119980}{1D4AC}{\ensuremath{\mathscr{Q}}}
+\DefineCharacter{119982}{1D4AE}{\ensuremath{\mathscr{S}}}
+\DefineCharacter{119983}{1D4AF}{\ensuremath{\mathscr{T}}}
+\DefineCharacter{119984}{1D4B0}{\ensuremath{\mathscr{U}}}
+\DefineCharacter{119985}{1D4B1}{\ensuremath{\mathscr{V}}}
+\DefineCharacter{119986}{1D4B2}{\ensuremath{\mathscr{W}}}
+\DefineCharacter{119987}{1D4B3}{\ensuremath{\mathscr{X}}}
+\DefineCharacter{119988}{1D4B4}{\ensuremath{\mathscr{Y}}}
+\DefineCharacter{119989}{1D4B5}{\ensuremath{\mathscr{Z}}}
+\DefineCharacter{119990}{1D4B6}{\ensuremath{\mathscr{a}}}
+\DefineCharacter{119991}{1D4B7}{\ensuremath{\mathscr{b}}}
+\DefineCharacter{119992}{1D4B8}{\ensuremath{\mathscr{c}}}
+\DefineCharacter{119993}{1D4B9}{\ensuremath{\mathscr{d}}}
+\DefineCharacter{119995}{1D4BB}{\ensuremath{\mathscr{f}}}
+\DefineCharacter{119997}{1D4BD}{\ensuremath{\mathscr{h}}}
+\DefineCharacter{119998}{1D4BE}{\ensuremath{\mathscr{i}}}
+\DefineCharacter{119999}{1D4BF}{\ensuremath{\mathscr{j}}}
+\DefineCharacter{120000}{1D4C0}{\ensuremath{\mathscr{k}}}
+\DefineCharacter{120002}{1D4C2}{\ensuremath{\mathscr{m}}}
+\DefineCharacter{120003}{1D4C3}{\ensuremath{\mathscr{n}}}
+\DefineCharacter{120005}{1D4C5}{\ensuremath{\mathscr{p}}}
+\DefineCharacter{120006}{1D4C6}{\ensuremath{\mathscr{q}}}
+\DefineCharacter{120007}{1D4C7}{\ensuremath{\mathscr{r}}}
+\DefineCharacter{120008}{1D4C8}{\ensuremath{\mathscr{s}}}
+\DefineCharacter{120009}{1D4C9}{\ensuremath{\mathscr{t}}}
+\DefineCharacter{120010}{1D4CA}{\ensuremath{\mathscr{u}}}
+\DefineCharacter{120011}{1D4CB}{\ensuremath{\mathscr{v}}}
+\DefineCharacter{120012}{1D4CC}{\ensuremath{\mathscr{w}}}
+\DefineCharacter{120013}{1D4CD}{\ensuremath{\mathscr{x}}}
+\DefineCharacter{120014}{1D4CE}{\ensuremath{\mathscr{y}}}
+\DefineCharacter{120015}{1D4CF}{\ensuremath{\mathscr{z}}}
+\DefineCharacter{120016}{1D4D0}{\ensuremath{\mathmit{A}}}
+\DefineCharacter{120017}{1D4D1}{\ensuremath{\mathmit{B}}}
+\DefineCharacter{120018}{1D4D2}{\ensuremath{\mathmit{C}}}
+\DefineCharacter{120019}{1D4D3}{\ensuremath{\mathmit{D}}}
+\DefineCharacter{120020}{1D4D4}{\ensuremath{\mathmit{E}}}
+\DefineCharacter{120021}{1D4D5}{\ensuremath{\mathmit{F}}}
+\DefineCharacter{120022}{1D4D6}{\ensuremath{\mathmit{G}}}
+\DefineCharacter{120023}{1D4D7}{\ensuremath{\mathmit{H}}}
+\DefineCharacter{120024}{1D4D8}{\ensuremath{\mathmit{I}}}
+\DefineCharacter{120025}{1D4D9}{\ensuremath{\mathmit{J}}}
+\DefineCharacter{120026}{1D4DA}{\ensuremath{\mathmit{K}}}
+\DefineCharacter{120027}{1D4DB}{\ensuremath{\mathmit{L}}}
+\DefineCharacter{120028}{1D4DC}{\ensuremath{\mathmit{M}}}
+\DefineCharacter{120029}{1D4DD}{\ensuremath{\mathmit{N}}}
+\DefineCharacter{120030}{1D4DE}{\ensuremath{\mathmit{O}}}
+\DefineCharacter{120031}{1D4DF}{\ensuremath{\mathmit{P}}}
+\DefineCharacter{120032}{1D4E0}{\ensuremath{\mathmit{Q}}}
+\DefineCharacter{120033}{1D4E1}{\ensuremath{\mathmit{R}}}
+\DefineCharacter{120034}{1D4E2}{\ensuremath{\mathmit{S}}}
+\DefineCharacter{120035}{1D4E3}{\ensuremath{\mathmit{T}}}
+\DefineCharacter{120036}{1D4E4}{\ensuremath{\mathmit{U}}}
+\DefineCharacter{120037}{1D4E5}{\ensuremath{\mathmit{V}}}
+\DefineCharacter{120038}{1D4E6}{\ensuremath{\mathmit{W}}}
+\DefineCharacter{120039}{1D4E7}{\ensuremath{\mathmit{X}}}
+\DefineCharacter{120040}{1D4E8}{\ensuremath{\mathmit{Y}}}
+\DefineCharacter{120041}{1D4E9}{\ensuremath{\mathmit{Z}}}
+\DefineCharacter{120042}{1D4EA}{\ensuremath{\mathmit{a}}}
+\DefineCharacter{120043}{1D4EB}{\ensuremath{\mathmit{b}}}
+\DefineCharacter{120044}{1D4EC}{\ensuremath{\mathmit{c}}}
+\DefineCharacter{120045}{1D4ED}{\ensuremath{\mathmit{d}}}
+\DefineCharacter{120046}{1D4EE}{\ensuremath{\mathmit{e}}}
+\DefineCharacter{120047}{1D4EF}{\ensuremath{\mathmit{f}}}
+\DefineCharacter{120048}{1D4F0}{\ensuremath{\mathmit{g}}}
+\DefineCharacter{120049}{1D4F1}{\ensuremath{\mathmit{h}}}
+\DefineCharacter{120050}{1D4F2}{\ensuremath{\mathmit{i}}}
+\DefineCharacter{120051}{1D4F3}{\ensuremath{\mathmit{j}}}
+\DefineCharacter{120052}{1D4F4}{\ensuremath{\mathmit{k}}}
+\DefineCharacter{120053}{1D4F5}{\ensuremath{\mathmit{l}}}
+\DefineCharacter{120054}{1D4F6}{\ensuremath{\mathmit{m}}}
+\DefineCharacter{120055}{1D4F7}{\ensuremath{\mathmit{n}}}
+\DefineCharacter{120056}{1D4F8}{\ensuremath{\mathmit{o}}}
+\DefineCharacter{120057}{1D4F9}{\ensuremath{\mathmit{p}}}
+\DefineCharacter{120058}{1D4FA}{\ensuremath{\mathmit{q}}}
+\DefineCharacter{120059}{1D4FB}{\ensuremath{\mathmit{r}}}
+\DefineCharacter{120060}{1D4FC}{\ensuremath{\mathmit{s}}}
+\DefineCharacter{120061}{1D4FD}{\ensuremath{\mathmit{t}}}
+\DefineCharacter{120062}{1D4FE}{\ensuremath{\mathmit{u}}}
+\DefineCharacter{120063}{1D4FF}{\ensuremath{\mathmit{v}}}
+\DefineCharacter{120064}{1D500}{\ensuremath{\mathmit{w}}}
+\DefineCharacter{120065}{1D501}{\ensuremath{\mathmit{x}}}
+\DefineCharacter{120066}{1D502}{\ensuremath{\mathmit{y}}}
+\DefineCharacter{120067}{1D503}{\ensuremath{\mathmit{z}}}
+\DefineCharacter{120068}{1D504}{\ensuremath{\mathfrak{A}}}
+\DefineCharacter{120069}{1D505}{\ensuremath{\mathfrak{B}}}
+\DefineCharacter{120071}{1D507}{\ensuremath{\mathfrak{D}}}
+\DefineCharacter{120072}{1D508}{\ensuremath{\mathfrak{E}}}
+\DefineCharacter{120073}{1D509}{\ensuremath{\mathfrak{F}}}
+\DefineCharacter{120074}{1D50A}{\ensuremath{\mathfrak{G}}}
+\DefineCharacter{120077}{1D50D}{\ensuremath{\mathfrak{J}}}
+\DefineCharacter{120078}{1D50E}{\ensuremath{\mathfrak{K}}}
+\DefineCharacter{120079}{1D50F}{\ensuremath{\mathfrak{L}}}
+\DefineCharacter{120080}{1D510}{\ensuremath{\mathfrak{M}}}
+\DefineCharacter{120081}{1D511}{\ensuremath{\mathfrak{N}}}
+\DefineCharacter{120082}{1D512}{\ensuremath{\mathfrak{O}}}
+\DefineCharacter{120083}{1D513}{\ensuremath{\mathfrak{P}}}
+\DefineCharacter{120084}{1D514}{\ensuremath{\mathfrak{Q}}}
+\DefineCharacter{120086}{1D516}{\ensuremath{\mathfrak{S}}}
+\DefineCharacter{120087}{1D517}{\ensuremath{\mathfrak{T}}}
+\DefineCharacter{120088}{1D518}{\ensuremath{\mathfrak{U}}}
+\DefineCharacter{120089}{1D519}{\ensuremath{\mathfrak{V}}}
+\DefineCharacter{120090}{1D51A}{\ensuremath{\mathfrak{W}}}
+\DefineCharacter{120091}{1D51B}{\ensuremath{\mathfrak{X}}}
+\DefineCharacter{120092}{1D51C}{\ensuremath{\mathfrak{Y}}}
+\DefineCharacter{120094}{1D51E}{\ensuremath{\mathfrak{a}}}
+\DefineCharacter{120095}{1D51F}{\ensuremath{\mathfrak{b}}}
+\DefineCharacter{120096}{1D520}{\ensuremath{\mathfrak{c}}}
+\DefineCharacter{120097}{1D521}{\ensuremath{\mathfrak{d}}}
+\DefineCharacter{120098}{1D522}{\ensuremath{\mathfrak{e}}}
+\DefineCharacter{120099}{1D523}{\ensuremath{\mathfrak{f}}}
+\DefineCharacter{120100}{1D524}{\ensuremath{\mathfrak{g}}}
+\DefineCharacter{120101}{1D525}{\ensuremath{\mathfrak{h}}}
+\DefineCharacter{120102}{1D526}{\ensuremath{\mathfrak{i}}}
+\DefineCharacter{120103}{1D527}{\ensuremath{\mathfrak{j}}}
+\DefineCharacter{120104}{1D528}{\ensuremath{\mathfrak{k}}}
+\DefineCharacter{120105}{1D529}{\ensuremath{\mathfrak{l}}}
+\DefineCharacter{120106}{1D52A}{\ensuremath{\mathfrak{m}}}
+\DefineCharacter{120107}{1D52B}{\ensuremath{\mathfrak{n}}}
+\DefineCharacter{120108}{1D52C}{\ensuremath{\mathfrak{o}}}
+\DefineCharacter{120109}{1D52D}{\ensuremath{\mathfrak{p}}}
+\DefineCharacter{120110}{1D52E}{\ensuremath{\mathfrak{q}}}
+\DefineCharacter{120111}{1D52F}{\ensuremath{\mathfrak{r}}}
+\DefineCharacter{120112}{1D530}{\ensuremath{\mathfrak{s}}}
+\DefineCharacter{120113}{1D531}{\ensuremath{\mathfrak{t}}}
+\DefineCharacter{120114}{1D532}{\ensuremath{\mathfrak{u}}}
+\DefineCharacter{120115}{1D533}{\ensuremath{\mathfrak{v}}}
+\DefineCharacter{120116}{1D534}{\ensuremath{\mathfrak{w}}}
+\DefineCharacter{120117}{1D535}{\ensuremath{\mathfrak{x}}}
+\DefineCharacter{120118}{1D536}{\ensuremath{\mathfrak{y}}}
+\DefineCharacter{120119}{1D537}{\ensuremath{\mathfrak{z}}}
+\DefineCharacter{120120}{1D538}{\ensuremath{\mathbb{A}}}
+\DefineCharacter{120121}{1D539}{\ensuremath{\mathbb{B}}}
+\DefineCharacter{120123}{1D53B}{\ensuremath{\mathbb{D}}}
+\DefineCharacter{120124}{1D53C}{\ensuremath{\mathbb{E}}}
+\DefineCharacter{120125}{1D53D}{\ensuremath{\mathbb{F}}}
+\DefineCharacter{120126}{1D53E}{\ensuremath{\mathbb{G}}}
+\DefineCharacter{120128}{1D540}{\ensuremath{\mathbb{I}}}
+\DefineCharacter{120129}{1D541}{\ensuremath{\mathbb{J}}}
+\DefineCharacter{120130}{1D542}{\ensuremath{\mathbb{K}}}
+\DefineCharacter{120131}{1D543}{\ensuremath{\mathbb{L}}}
+\DefineCharacter{120132}{1D544}{\ensuremath{\mathbb{M}}}
+\DefineCharacter{120134}{1D546}{\ensuremath{\mathbb{O}}}
+\DefineCharacter{120138}{1D54A}{\ensuremath{\mathbb{S}}}
+\DefineCharacter{120139}{1D54B}{\ensuremath{\mathbb{T}}}
+\DefineCharacter{120140}{1D54C}{\ensuremath{\mathbb{U}}}
+\DefineCharacter{120141}{1D54D}{\ensuremath{\mathbb{V}}}
+\DefineCharacter{120142}{1D54E}{\ensuremath{\mathbb{W}}}
+\DefineCharacter{120143}{1D54F}{\ensuremath{\mathbb{X}}}
+\DefineCharacter{120144}{1D550}{\ensuremath{\mathbb{Y}}}
+\DefineCharacter{120146}{1D552}{\ensuremath{\mathbb{a}}}
+\DefineCharacter{120147}{1D553}{\ensuremath{\mathbb{b}}}
+\DefineCharacter{120148}{1D554}{\ensuremath{\mathbb{c}}}
+\DefineCharacter{120149}{1D555}{\ensuremath{\mathbb{d}}}
+\DefineCharacter{120150}{1D556}{\ensuremath{\mathbb{e}}}
+\DefineCharacter{120151}{1D557}{\ensuremath{\mathbb{f}}}
+\DefineCharacter{120152}{1D558}{\ensuremath{\mathbb{g}}}
+\DefineCharacter{120153}{1D559}{\ensuremath{\mathbb{h}}}
+\DefineCharacter{120154}{1D55A}{\ensuremath{\mathbb{i}}}
+\DefineCharacter{120155}{1D55B}{\ensuremath{\mathbb{j}}}
+\DefineCharacter{120156}{1D55C}{\ensuremath{\mathbb{k}}}
+\DefineCharacter{120157}{1D55D}{\ensuremath{\mathbb{l}}}
+\DefineCharacter{120158}{1D55E}{\ensuremath{\mathbb{m}}}
+\DefineCharacter{120159}{1D55F}{\ensuremath{\mathbb{n}}}
+\DefineCharacter{120160}{1D560}{\ensuremath{\mathbb{o}}}
+\DefineCharacter{120161}{1D561}{\ensuremath{\mathbb{p}}}
+\DefineCharacter{120162}{1D562}{\ensuremath{\mathbb{q}}}
+\DefineCharacter{120163}{1D563}{\ensuremath{\mathbb{r}}}
+\DefineCharacter{120164}{1D564}{\ensuremath{\mathbb{s}}}
+\DefineCharacter{120165}{1D565}{\ensuremath{\mathbb{t}}}
+\DefineCharacter{120166}{1D566}{\ensuremath{\mathbb{u}}}
+\DefineCharacter{120167}{1D567}{\ensuremath{\mathbb{v}}}
+\DefineCharacter{120168}{1D568}{\ensuremath{\mathbb{w}}}
+\DefineCharacter{120169}{1D569}{\ensuremath{\mathbb{x}}}
+\DefineCharacter{120170}{1D56A}{\ensuremath{\mathbb{y}}}
+\DefineCharacter{120171}{1D56B}{\ensuremath{\mathbb{z}}}
+\DefineCharacter{120172}{1D56C}{\ensuremath{\mathslbb{A}}}
+\DefineCharacter{120173}{1D56D}{\ensuremath{\mathslbb{B}}}
+\DefineCharacter{120174}{1D56E}{\ensuremath{\mathslbb{C}}}
+\DefineCharacter{120175}{1D56F}{\ensuremath{\mathslbb{D}}}
+\DefineCharacter{120176}{1D570}{\ensuremath{\mathslbb{E}}}
+\DefineCharacter{120177}{1D571}{\ensuremath{\mathslbb{F}}}
+\DefineCharacter{120178}{1D572}{\ensuremath{\mathslbb{G}}}
+\DefineCharacter{120179}{1D573}{\ensuremath{\mathslbb{H}}}
+\DefineCharacter{120180}{1D574}{\ensuremath{\mathslbb{I}}}
+\DefineCharacter{120181}{1D575}{\ensuremath{\mathslbb{J}}}
+\DefineCharacter{120182}{1D576}{\ensuremath{\mathslbb{K}}}
+\DefineCharacter{120183}{1D577}{\ensuremath{\mathslbb{L}}}
+\DefineCharacter{120184}{1D578}{\ensuremath{\mathslbb{M}}}
+\DefineCharacter{120185}{1D579}{\ensuremath{\mathslbb{N}}}
+\DefineCharacter{120186}{1D57A}{\ensuremath{\mathslbb{O}}}
+\DefineCharacter{120187}{1D57B}{\ensuremath{\mathslbb{P}}}
+\DefineCharacter{120188}{1D57C}{\ensuremath{\mathslbb{Q}}}
+\DefineCharacter{120189}{1D57D}{\ensuremath{\mathslbb{R}}}
+\DefineCharacter{120190}{1D57E}{\ensuremath{\mathslbb{S}}}
+\DefineCharacter{120191}{1D57F}{\ensuremath{\mathslbb{T}}}
+\DefineCharacter{120192}{1D580}{\ensuremath{\mathslbb{U}}}
+\DefineCharacter{120193}{1D581}{\ensuremath{\mathslbb{V}}}
+\DefineCharacter{120194}{1D582}{\ensuremath{\mathslbb{W}}}
+\DefineCharacter{120195}{1D583}{\ensuremath{\mathslbb{X}}}
+\DefineCharacter{120196}{1D584}{\ensuremath{\mathslbb{Y}}}
+\DefineCharacter{120197}{1D585}{\ensuremath{\mathslbb{Z}}}
+\DefineCharacter{120198}{1D586}{\ensuremath{\mathslbb{a}}}
+\DefineCharacter{120199}{1D587}{\ensuremath{\mathslbb{b}}}
+\DefineCharacter{120200}{1D588}{\ensuremath{\mathslbb{c}}}
+\DefineCharacter{120201}{1D589}{\ensuremath{\mathslbb{d}}}
+\DefineCharacter{120202}{1D58A}{\ensuremath{\mathslbb{e}}}
+\DefineCharacter{120203}{1D58B}{\ensuremath{\mathslbb{f}}}
+\DefineCharacter{120204}{1D58C}{\ensuremath{\mathslbb{g}}}
+\DefineCharacter{120205}{1D58D}{\ensuremath{\mathslbb{h}}}
+\DefineCharacter{120206}{1D58E}{\ensuremath{\mathslbb{i}}}
+\DefineCharacter{120207}{1D58F}{\ensuremath{\mathslbb{j}}}
+\DefineCharacter{120208}{1D590}{\ensuremath{\mathslbb{k}}}
+\DefineCharacter{120209}{1D591}{\ensuremath{\mathslbb{l}}}
+\DefineCharacter{120210}{1D592}{\ensuremath{\mathslbb{m}}}
+\DefineCharacter{120211}{1D593}{\ensuremath{\mathslbb{n}}}
+\DefineCharacter{120212}{1D594}{\ensuremath{\mathslbb{o}}}
+\DefineCharacter{120213}{1D595}{\ensuremath{\mathslbb{p}}}
+\DefineCharacter{120214}{1D596}{\ensuremath{\mathslbb{q}}}
+\DefineCharacter{120215}{1D597}{\ensuremath{\mathslbb{r}}}
+\DefineCharacter{120216}{1D598}{\ensuremath{\mathslbb{s}}}
+\DefineCharacter{120217}{1D599}{\ensuremath{\mathslbb{t}}}
+\DefineCharacter{120218}{1D59A}{\ensuremath{\mathslbb{u}}}
+\DefineCharacter{120219}{1D59B}{\ensuremath{\mathslbb{v}}}
+\DefineCharacter{120220}{1D59C}{\ensuremath{\mathslbb{w}}}
+\DefineCharacter{120221}{1D59D}{\ensuremath{\mathslbb{x}}}
+\DefineCharacter{120222}{1D59E}{\ensuremath{\mathslbb{y}}}
+\DefineCharacter{120223}{1D59F}{\ensuremath{\mathslbb{z}}}
+\DefineCharacter{120224}{1D5A0}{\ensuremath{\mathsf{A}}}
+\DefineCharacter{120225}{1D5A1}{\ensuremath{\mathsf{B}}}
+\DefineCharacter{120226}{1D5A2}{\ensuremath{\mathsf{C}}}
+\DefineCharacter{120227}{1D5A3}{\ensuremath{\mathsf{D}}}
+\DefineCharacter{120228}{1D5A4}{\ensuremath{\mathsf{E}}}
+\DefineCharacter{120229}{1D5A5}{\ensuremath{\mathsf{F}}}
+\DefineCharacter{120230}{1D5A6}{\ensuremath{\mathsf{G}}}
+\DefineCharacter{120231}{1D5A7}{\ensuremath{\mathsf{H}}}
+\DefineCharacter{120232}{1D5A8}{\ensuremath{\mathsf{I}}}
+\DefineCharacter{120233}{1D5A9}{\ensuremath{\mathsf{J}}}
+\DefineCharacter{120234}{1D5AA}{\ensuremath{\mathsf{K}}}
+\DefineCharacter{120235}{1D5AB}{\ensuremath{\mathsf{L}}}
+\DefineCharacter{120236}{1D5AC}{\ensuremath{\mathsf{M}}}
+\DefineCharacter{120237}{1D5AD}{\ensuremath{\mathsf{N}}}
+\DefineCharacter{120238}{1D5AE}{\ensuremath{\mathsf{O}}}
+\DefineCharacter{120239}{1D5AF}{\ensuremath{\mathsf{P}}}
+\DefineCharacter{120240}{1D5B0}{\ensuremath{\mathsf{Q}}}
+\DefineCharacter{120241}{1D5B1}{\ensuremath{\mathsf{R}}}
+\DefineCharacter{120242}{1D5B2}{\ensuremath{\mathsf{S}}}
+\DefineCharacter{120243}{1D5B3}{\ensuremath{\mathsf{T}}}
+\DefineCharacter{120244}{1D5B4}{\ensuremath{\mathsf{U}}}
+\DefineCharacter{120245}{1D5B5}{\ensuremath{\mathsf{V}}}
+\DefineCharacter{120246}{1D5B6}{\ensuremath{\mathsf{W}}}
+\DefineCharacter{120247}{1D5B7}{\ensuremath{\mathsf{X}}}
+\DefineCharacter{120248}{1D5B8}{\ensuremath{\mathsf{Y}}}
+\DefineCharacter{120249}{1D5B9}{\ensuremath{\mathsf{Z}}}
+\DefineCharacter{120250}{1D5BA}{\ensuremath{\mathsf{a}}}
+\DefineCharacter{120251}{1D5BB}{\ensuremath{\mathsf{b}}}
+\DefineCharacter{120252}{1D5BC}{\ensuremath{\mathsf{c}}}
+\DefineCharacter{120253}{1D5BD}{\ensuremath{\mathsf{d}}}
+\DefineCharacter{120254}{1D5BE}{\ensuremath{\mathsf{e}}}
+\DefineCharacter{120255}{1D5BF}{\ensuremath{\mathsf{f}}}
+\DefineCharacter{120256}{1D5C0}{\ensuremath{\mathsf{g}}}
+\DefineCharacter{120257}{1D5C1}{\ensuremath{\mathsf{h}}}
+\DefineCharacter{120258}{1D5C2}{\ensuremath{\mathsf{i}}}
+\DefineCharacter{120259}{1D5C3}{\ensuremath{\mathsf{j}}}
+\DefineCharacter{120260}{1D5C4}{\ensuremath{\mathsf{k}}}
+\DefineCharacter{120261}{1D5C5}{\ensuremath{\mathsf{l}}}
+\DefineCharacter{120262}{1D5C6}{\ensuremath{\mathsf{m}}}
+\DefineCharacter{120263}{1D5C7}{\ensuremath{\mathsf{n}}}
+\DefineCharacter{120264}{1D5C8}{\ensuremath{\mathsf{o}}}
+\DefineCharacter{120265}{1D5C9}{\ensuremath{\mathsf{p}}}
+\DefineCharacter{120266}{1D5CA}{\ensuremath{\mathsf{q}}}
+\DefineCharacter{120267}{1D5CB}{\ensuremath{\mathsf{r}}}
+\DefineCharacter{120268}{1D5CC}{\ensuremath{\mathsf{s}}}
+\DefineCharacter{120269}{1D5CD}{\ensuremath{\mathsf{t}}}
+\DefineCharacter{120270}{1D5CE}{\ensuremath{\mathsf{u}}}
+\DefineCharacter{120271}{1D5CF}{\ensuremath{\mathsf{v}}}
+\DefineCharacter{120272}{1D5D0}{\ensuremath{\mathsf{w}}}
+\DefineCharacter{120273}{1D5D1}{\ensuremath{\mathsf{x}}}
+\DefineCharacter{120274}{1D5D2}{\ensuremath{\mathsf{y}}}
+\DefineCharacter{120275}{1D5D3}{\ensuremath{\mathsf{z}}}
+\DefineCharacter{120276}{1D5D4}{\ensuremath{\mathsfbf{A}}}
+\DefineCharacter{120277}{1D5D5}{\ensuremath{\mathsfbf{B}}}
+\DefineCharacter{120278}{1D5D6}{\ensuremath{\mathsfbf{C}}}
+\DefineCharacter{120279}{1D5D7}{\ensuremath{\mathsfbf{D}}}
+\DefineCharacter{120280}{1D5D8}{\ensuremath{\mathsfbf{E}}}
+\DefineCharacter{120281}{1D5D9}{\ensuremath{\mathsfbf{F}}}
+\DefineCharacter{120282}{1D5DA}{\ensuremath{\mathsfbf{G}}}
+\DefineCharacter{120283}{1D5DB}{\ensuremath{\mathsfbf{H}}}
+\DefineCharacter{120284}{1D5DC}{\ensuremath{\mathsfbf{I}}}
+\DefineCharacter{120285}{1D5DD}{\ensuremath{\mathsfbf{J}}}
+\DefineCharacter{120286}{1D5DE}{\ensuremath{\mathsfbf{K}}}
+\DefineCharacter{120287}{1D5DF}{\ensuremath{\mathsfbf{L}}}
+\DefineCharacter{120288}{1D5E0}{\ensuremath{\mathsfbf{M}}}
+\DefineCharacter{120289}{1D5E1}{\ensuremath{\mathsfbf{N}}}
+\DefineCharacter{120290}{1D5E2}{\ensuremath{\mathsfbf{O}}}
+\DefineCharacter{120291}{1D5E3}{\ensuremath{\mathsfbf{P}}}
+\DefineCharacter{120292}{1D5E4}{\ensuremath{\mathsfbf{Q}}}
+\DefineCharacter{120293}{1D5E5}{\ensuremath{\mathsfbf{R}}}
+\DefineCharacter{120294}{1D5E6}{\ensuremath{\mathsfbf{S}}}
+\DefineCharacter{120295}{1D5E7}{\ensuremath{\mathsfbf{T}}}
+\DefineCharacter{120296}{1D5E8}{\ensuremath{\mathsfbf{U}}}
+\DefineCharacter{120297}{1D5E9}{\ensuremath{\mathsfbf{V}}}
+\DefineCharacter{120298}{1D5EA}{\ensuremath{\mathsfbf{W}}}
+\DefineCharacter{120299}{1D5EB}{\ensuremath{\mathsfbf{X}}}
+\DefineCharacter{120300}{1D5EC}{\ensuremath{\mathsfbf{Y}}}
+\DefineCharacter{120301}{1D5ED}{\ensuremath{\mathsfbf{Z}}}
+\DefineCharacter{120302}{1D5EE}{\ensuremath{\mathsfbf{a}}}
+\DefineCharacter{120303}{1D5EF}{\ensuremath{\mathsfbf{b}}}
+\DefineCharacter{120304}{1D5F0}{\ensuremath{\mathsfbf{c}}}
+\DefineCharacter{120305}{1D5F1}{\ensuremath{\mathsfbf{d}}}
+\DefineCharacter{120306}{1D5F2}{\ensuremath{\mathsfbf{e}}}
+\DefineCharacter{120307}{1D5F3}{\ensuremath{\mathsfbf{f}}}
+\DefineCharacter{120308}{1D5F4}{\ensuremath{\mathsfbf{g}}}
+\DefineCharacter{120309}{1D5F5}{\ensuremath{\mathsfbf{h}}}
+\DefineCharacter{120310}{1D5F6}{\ensuremath{\mathsfbf{i}}}
+\DefineCharacter{120311}{1D5F7}{\ensuremath{\mathsfbf{j}}}
+\DefineCharacter{120312}{1D5F8}{\ensuremath{\mathsfbf{k}}}
+\DefineCharacter{120313}{1D5F9}{\ensuremath{\mathsfbf{l}}}
+\DefineCharacter{120314}{1D5FA}{\ensuremath{\mathsfbf{m}}}
+\DefineCharacter{120315}{1D5FB}{\ensuremath{\mathsfbf{n}}}
+\DefineCharacter{120316}{1D5FC}{\ensuremath{\mathsfbf{o}}}
+\DefineCharacter{120317}{1D5FD}{\ensuremath{\mathsfbf{p}}}
+\DefineCharacter{120318}{1D5FE}{\ensuremath{\mathsfbf{q}}}
+\DefineCharacter{120319}{1D5FF}{\ensuremath{\mathsfbf{r}}}
+\DefineCharacter{120320}{1D600}{\ensuremath{\mathsfbf{s}}}
+\DefineCharacter{120321}{1D601}{\ensuremath{\mathsfbf{t}}}
+\DefineCharacter{120322}{1D602}{\ensuremath{\mathsfbf{u}}}
+\DefineCharacter{120323}{1D603}{\ensuremath{\mathsfbf{v}}}
+\DefineCharacter{120324}{1D604}{\ensuremath{\mathsfbf{w}}}
+\DefineCharacter{120325}{1D605}{\ensuremath{\mathsfbf{x}}}
+\DefineCharacter{120326}{1D606}{\ensuremath{\mathsfbf{y}}}
+\DefineCharacter{120327}{1D607}{\ensuremath{\mathsfbf{z}}}
+\DefineCharacter{120328}{1D608}{\ensuremath{\mathsfsl{A}}}
+\DefineCharacter{120329}{1D609}{\ensuremath{\mathsfsl{B}}}
+\DefineCharacter{120330}{1D60A}{\ensuremath{\mathsfsl{C}}}
+\DefineCharacter{120331}{1D60B}{\ensuremath{\mathsfsl{D}}}
+\DefineCharacter{120332}{1D60C}{\ensuremath{\mathsfsl{E}}}
+\DefineCharacter{120333}{1D60D}{\ensuremath{\mathsfsl{F}}}
+\DefineCharacter{120334}{1D60E}{\ensuremath{\mathsfsl{G}}}
+\DefineCharacter{120335}{1D60F}{\ensuremath{\mathsfsl{H}}}
+\DefineCharacter{120336}{1D610}{\ensuremath{\mathsfsl{I}}}
+\DefineCharacter{120337}{1D611}{\ensuremath{\mathsfsl{J}}}
+\DefineCharacter{120338}{1D612}{\ensuremath{\mathsfsl{K}}}
+\DefineCharacter{120339}{1D613}{\ensuremath{\mathsfsl{L}}}
+\DefineCharacter{120340}{1D614}{\ensuremath{\mathsfsl{M}}}
+\DefineCharacter{120341}{1D615}{\ensuremath{\mathsfsl{N}}}
+\DefineCharacter{120342}{1D616}{\ensuremath{\mathsfsl{O}}}
+\DefineCharacter{120343}{1D617}{\ensuremath{\mathsfsl{P}}}
+\DefineCharacter{120344}{1D618}{\ensuremath{\mathsfsl{Q}}}
+\DefineCharacter{120345}{1D619}{\ensuremath{\mathsfsl{R}}}
+\DefineCharacter{120346}{1D61A}{\ensuremath{\mathsfsl{S}}}
+\DefineCharacter{120347}{1D61B}{\ensuremath{\mathsfsl{T}}}
+\DefineCharacter{120348}{1D61C}{\ensuremath{\mathsfsl{U}}}
+\DefineCharacter{120349}{1D61D}{\ensuremath{\mathsfsl{V}}}
+\DefineCharacter{120350}{1D61E}{\ensuremath{\mathsfsl{W}}}
+\DefineCharacter{120351}{1D61F}{\ensuremath{\mathsfsl{X}}}
+\DefineCharacter{120352}{1D620}{\ensuremath{\mathsfsl{Y}}}
+\DefineCharacter{120353}{1D621}{\ensuremath{\mathsfsl{Z}}}
+\DefineCharacter{120354}{1D622}{\ensuremath{\mathsfsl{a}}}
+\DefineCharacter{120355}{1D623}{\ensuremath{\mathsfsl{b}}}
+\DefineCharacter{120356}{1D624}{\ensuremath{\mathsfsl{c}}}
+\DefineCharacter{120357}{1D625}{\ensuremath{\mathsfsl{d}}}
+\DefineCharacter{120358}{1D626}{\ensuremath{\mathsfsl{e}}}
+\DefineCharacter{120359}{1D627}{\ensuremath{\mathsfsl{f}}}
+\DefineCharacter{120360}{1D628}{\ensuremath{\mathsfsl{g}}}
+\DefineCharacter{120361}{1D629}{\ensuremath{\mathsfsl{h}}}
+\DefineCharacter{120362}{1D62A}{\ensuremath{\mathsfsl{i}}}
+\DefineCharacter{120363}{1D62B}{\ensuremath{\mathsfsl{j}}}
+\DefineCharacter{120364}{1D62C}{\ensuremath{\mathsfsl{k}}}
+\DefineCharacter{120365}{1D62D}{\ensuremath{\mathsfsl{l}}}
+\DefineCharacter{120366}{1D62E}{\ensuremath{\mathsfsl{m}}}
+\DefineCharacter{120367}{1D62F}{\ensuremath{\mathsfsl{n}}}
+\DefineCharacter{120368}{1D630}{\ensuremath{\mathsfsl{o}}}
+\DefineCharacter{120369}{1D631}{\ensuremath{\mathsfsl{p}}}
+\DefineCharacter{120370}{1D632}{\ensuremath{\mathsfsl{q}}}
+\DefineCharacter{120371}{1D633}{\ensuremath{\mathsfsl{r}}}
+\DefineCharacter{120372}{1D634}{\ensuremath{\mathsfsl{s}}}
+\DefineCharacter{120373}{1D635}{\ensuremath{\mathsfsl{t}}}
+\DefineCharacter{120374}{1D636}{\ensuremath{\mathsfsl{u}}}
+\DefineCharacter{120375}{1D637}{\ensuremath{\mathsfsl{v}}}
+\DefineCharacter{120376}{1D638}{\ensuremath{\mathsfsl{w}}}
+\DefineCharacter{120377}{1D639}{\ensuremath{\mathsfsl{x}}}
+\DefineCharacter{120378}{1D63A}{\ensuremath{\mathsfsl{y}}}
+\DefineCharacter{120379}{1D63B}{\ensuremath{\mathsfsl{z}}}
+\DefineCharacter{120380}{1D63C}{\ensuremath{\mathsfbfsl{A}}}
+\DefineCharacter{120381}{1D63D}{\ensuremath{\mathsfbfsl{B}}}
+\DefineCharacter{120382}{1D63E}{\ensuremath{\mathsfbfsl{C}}}
+\DefineCharacter{120383}{1D63F}{\ensuremath{\mathsfbfsl{D}}}
+\DefineCharacter{120384}{1D640}{\ensuremath{\mathsfbfsl{E}}}
+\DefineCharacter{120385}{1D641}{\ensuremath{\mathsfbfsl{F}}}
+\DefineCharacter{120386}{1D642}{\ensuremath{\mathsfbfsl{G}}}
+\DefineCharacter{120387}{1D643}{\ensuremath{\mathsfbfsl{H}}}
+\DefineCharacter{120388}{1D644}{\ensuremath{\mathsfbfsl{I}}}
+\DefineCharacter{120389}{1D645}{\ensuremath{\mathsfbfsl{J}}}
+\DefineCharacter{120390}{1D646}{\ensuremath{\mathsfbfsl{K}}}
+\DefineCharacter{120391}{1D647}{\ensuremath{\mathsfbfsl{L}}}
+\DefineCharacter{120392}{1D648}{\ensuremath{\mathsfbfsl{M}}}
+\DefineCharacter{120393}{1D649}{\ensuremath{\mathsfbfsl{N}}}
+\DefineCharacter{120394}{1D64A}{\ensuremath{\mathsfbfsl{O}}}
+\DefineCharacter{120395}{1D64B}{\ensuremath{\mathsfbfsl{P}}}
+\DefineCharacter{120396}{1D64C}{\ensuremath{\mathsfbfsl{Q}}}
+\DefineCharacter{120397}{1D64D}{\ensuremath{\mathsfbfsl{R}}}
+\DefineCharacter{120398}{1D64E}{\ensuremath{\mathsfbfsl{S}}}
+\DefineCharacter{120399}{1D64F}{\ensuremath{\mathsfbfsl{T}}}
+\DefineCharacter{120400}{1D650}{\ensuremath{\mathsfbfsl{U}}}
+\DefineCharacter{120401}{1D651}{\ensuremath{\mathsfbfsl{V}}}
+\DefineCharacter{120402}{1D652}{\ensuremath{\mathsfbfsl{W}}}
+\DefineCharacter{120403}{1D653}{\ensuremath{\mathsfbfsl{X}}}
+\DefineCharacter{120404}{1D654}{\ensuremath{\mathsfbfsl{Y}}}
+\DefineCharacter{120405}{1D655}{\ensuremath{\mathsfbfsl{Z}}}
+\DefineCharacter{120406}{1D656}{\ensuremath{\mathsfbfsl{a}}}
+\DefineCharacter{120407}{1D657}{\ensuremath{\mathsfbfsl{b}}}
+\DefineCharacter{120408}{1D658}{\ensuremath{\mathsfbfsl{c}}}
+\DefineCharacter{120409}{1D659}{\ensuremath{\mathsfbfsl{d}}}
+\DefineCharacter{120410}{1D65A}{\ensuremath{\mathsfbfsl{e}}}
+\DefineCharacter{120411}{1D65B}{\ensuremath{\mathsfbfsl{f}}}
+\DefineCharacter{120412}{1D65C}{\ensuremath{\mathsfbfsl{g}}}
+\DefineCharacter{120413}{1D65D}{\ensuremath{\mathsfbfsl{h}}}
+\DefineCharacter{120414}{1D65E}{\ensuremath{\mathsfbfsl{i}}}
+\DefineCharacter{120415}{1D65F}{\ensuremath{\mathsfbfsl{j}}}
+\DefineCharacter{120416}{1D660}{\ensuremath{\mathsfbfsl{k}}}
+\DefineCharacter{120417}{1D661}{\ensuremath{\mathsfbfsl{l}}}
+\DefineCharacter{120418}{1D662}{\ensuremath{\mathsfbfsl{m}}}
+\DefineCharacter{120419}{1D663}{\ensuremath{\mathsfbfsl{n}}}
+\DefineCharacter{120420}{1D664}{\ensuremath{\mathsfbfsl{o}}}
+\DefineCharacter{120421}{1D665}{\ensuremath{\mathsfbfsl{p}}}
+\DefineCharacter{120422}{1D666}{\ensuremath{\mathsfbfsl{q}}}
+\DefineCharacter{120423}{1D667}{\ensuremath{\mathsfbfsl{r}}}
+\DefineCharacter{120424}{1D668}{\ensuremath{\mathsfbfsl{s}}}
+\DefineCharacter{120425}{1D669}{\ensuremath{\mathsfbfsl{t}}}
+\DefineCharacter{120426}{1D66A}{\ensuremath{\mathsfbfsl{u}}}
+\DefineCharacter{120427}{1D66B}{\ensuremath{\mathsfbfsl{v}}}
+\DefineCharacter{120428}{1D66C}{\ensuremath{\mathsfbfsl{w}}}
+\DefineCharacter{120429}{1D66D}{\ensuremath{\mathsfbfsl{x}}}
+\DefineCharacter{120430}{1D66E}{\ensuremath{\mathsfbfsl{y}}}
+\DefineCharacter{120431}{1D66F}{\ensuremath{\mathsfbfsl{z}}}
+\DefineCharacter{120432}{1D670}{\ensuremath{\mathtt{A}}}
+\DefineCharacter{120433}{1D671}{\ensuremath{\mathtt{B}}}
+\DefineCharacter{120434}{1D672}{\ensuremath{\mathtt{C}}}
+\DefineCharacter{120435}{1D673}{\ensuremath{\mathtt{D}}}
+\DefineCharacter{120436}{1D674}{\ensuremath{\mathtt{E}}}
+\DefineCharacter{120437}{1D675}{\ensuremath{\mathtt{F}}}
+\DefineCharacter{120438}{1D676}{\ensuremath{\mathtt{G}}}
+\DefineCharacter{120439}{1D677}{\ensuremath{\mathtt{H}}}
+\DefineCharacter{120440}{1D678}{\ensuremath{\mathtt{I}}}
+\DefineCharacter{120441}{1D679}{\ensuremath{\mathtt{J}}}
+\DefineCharacter{120442}{1D67A}{\ensuremath{\mathtt{K}}}
+\DefineCharacter{120443}{1D67B}{\ensuremath{\mathtt{L}}}
+\DefineCharacter{120444}{1D67C}{\ensuremath{\mathtt{M}}}
+\DefineCharacter{120445}{1D67D}{\ensuremath{\mathtt{N}}}
+\DefineCharacter{120446}{1D67E}{\ensuremath{\mathtt{O}}}
+\DefineCharacter{120447}{1D67F}{\ensuremath{\mathtt{P}}}
+\DefineCharacter{120448}{1D680}{\ensuremath{\mathtt{Q}}}
+\DefineCharacter{120449}{1D681}{\ensuremath{\mathtt{R}}}
+\DefineCharacter{120450}{1D682}{\ensuremath{\mathtt{S}}}
+\DefineCharacter{120451}{1D683}{\ensuremath{\mathtt{T}}}
+\DefineCharacter{120452}{1D684}{\ensuremath{\mathtt{U}}}
+\DefineCharacter{120453}{1D685}{\ensuremath{\mathtt{V}}}
+\DefineCharacter{120454}{1D686}{\ensuremath{\mathtt{W}}}
+\DefineCharacter{120455}{1D687}{\ensuremath{\mathtt{X}}}
+\DefineCharacter{120456}{1D688}{\ensuremath{\mathtt{Y}}}
+\DefineCharacter{120457}{1D689}{\ensuremath{\mathtt{Z}}}
+\DefineCharacter{120458}{1D68A}{\ensuremath{\mathtt{a}}}
+\DefineCharacter{120459}{1D68B}{\ensuremath{\mathtt{b}}}
+\DefineCharacter{120460}{1D68C}{\ensuremath{\mathtt{c}}}
+\DefineCharacter{120461}{1D68D}{\ensuremath{\mathtt{d}}}
+\DefineCharacter{120462}{1D68E}{\ensuremath{\mathtt{e}}}
+\DefineCharacter{120463}{1D68F}{\ensuremath{\mathtt{f}}}
+\DefineCharacter{120464}{1D690}{\ensuremath{\mathtt{g}}}
+\DefineCharacter{120465}{1D691}{\ensuremath{\mathtt{h}}}
+\DefineCharacter{120466}{1D692}{\ensuremath{\mathtt{i}}}
+\DefineCharacter{120467}{1D693}{\ensuremath{\mathtt{j}}}
+\DefineCharacter{120468}{1D694}{\ensuremath{\mathtt{k}}}
+\DefineCharacter{120469}{1D695}{\ensuremath{\mathtt{l}}}
+\DefineCharacter{120470}{1D696}{\ensuremath{\mathtt{m}}}
+\DefineCharacter{120471}{1D697}{\ensuremath{\mathtt{n}}}
+\DefineCharacter{120472}{1D698}{\ensuremath{\mathtt{o}}}
+\DefineCharacter{120473}{1D699}{\ensuremath{\mathtt{p}}}
+\DefineCharacter{120474}{1D69A}{\ensuremath{\mathtt{q}}}
+\DefineCharacter{120475}{1D69B}{\ensuremath{\mathtt{r}}}
+\DefineCharacter{120476}{1D69C}{\ensuremath{\mathtt{s}}}
+\DefineCharacter{120477}{1D69D}{\ensuremath{\mathtt{t}}}
+\DefineCharacter{120478}{1D69E}{\ensuremath{\mathtt{u}}}
+\DefineCharacter{120479}{1D69F}{\ensuremath{\mathtt{v}}}
+\DefineCharacter{120480}{1D6A0}{\ensuremath{\mathtt{w}}}
+\DefineCharacter{120481}{1D6A1}{\ensuremath{\mathtt{x}}}
+\DefineCharacter{120482}{1D6A2}{\ensuremath{\mathtt{y}}}
+\DefineCharacter{120483}{1D6A3}{\ensuremath{\mathtt{z}}}
+\DefineCharacter{120488}{1D6A8}{\ensuremath{\mathbf{\Alpha}}}
+\DefineCharacter{120489}{1D6A9}{\ensuremath{\mathbf{\Beta}}}
+\DefineCharacter{120490}{1D6AA}{\ensuremath{\mathbf{\Gamma}}}
+\DefineCharacter{120491}{1D6AB}{\ensuremath{\mathbf{\Delta}}}
+\DefineCharacter{120492}{1D6AC}{\ensuremath{\mathbf{\Epsilon}}}
+\DefineCharacter{120493}{1D6AD}{\ensuremath{\mathbf{\Zeta}}}
+\DefineCharacter{120494}{1D6AE}{\ensuremath{\mathbf{\Eta}}}
+\DefineCharacter{120495}{1D6AF}{\ensuremath{\mathbf{\Theta}}}
+\DefineCharacter{120496}{1D6B0}{\ensuremath{\mathbf{\Iota}}}
+\DefineCharacter{120497}{1D6B1}{\ensuremath{\mathbf{\Kappa}}}
+\DefineCharacter{120498}{1D6B2}{\ensuremath{\mathbf{\Lambda}}}
+\DefineCharacter{120499}{1D6B3}{\ensuremath{M}}
+\DefineCharacter{120500}{1D6B4}{\ensuremath{N}}
+\DefineCharacter{120501}{1D6B5}{\ensuremath{\mathbf{\Xi}}}
+\DefineCharacter{120502}{1D6B6}{\ensuremath{O}}
+\DefineCharacter{120503}{1D6B7}{\ensuremath{\mathbf{\Pi}}}
+\DefineCharacter{120504}{1D6B8}{\ensuremath{\mathbf{\Rho}}}
+\DefineCharacter{120505}{1D6B9}{\ifmmode \else \mathbf{\vartheta}\fi}%
+\DefineCharacter{120506}{1D6BA}{\ensuremath{\mathbf{\Sigma}}}
+\DefineCharacter{120507}{1D6BB}{\ensuremath{\mathbf{\Tau}}}
+\DefineCharacter{120508}{1D6BC}{\ensuremath{\mathbf{\Upsilon}}}
+\DefineCharacter{120509}{1D6BD}{\ensuremath{\mathbf{\Phi}}}
+\DefineCharacter{120510}{1D6BE}{\ensuremath{\mathbf{\Chi}}}
+\DefineCharacter{120511}{1D6BF}{\ensuremath{\mathbf{\Psi}}}
+\DefineCharacter{120512}{1D6C0}{\ensuremath{\mathbf{\Omega}}}
+\DefineCharacter{120513}{1D6C1}{\ensuremath{\mathbf{\nabla}}}
+\DefineCharacter{120514}{1D6C2}{\ensuremath{\mathbf{\Alpha}}}
+\DefineCharacter{120515}{1D6C3}{\ensuremath{\mathbf{\Beta}}}
+\DefineCharacter{120516}{1D6C4}{\ensuremath{\mathbf{\Gamma}}}
+\DefineCharacter{120517}{1D6C5}{\ensuremath{\mathbf{\Delta}}}
+\DefineCharacter{120518}{1D6C6}{\ensuremath{\mathbf{\Epsilon}}}
+\DefineCharacter{120519}{1D6C7}{\ensuremath{\mathbf{\Zeta}}}
+\DefineCharacter{120520}{1D6C8}{\ensuremath{\mathbf{\Eta}}}
+\DefineCharacter{120521}{1D6C9}{\ensuremath{\mathbf{\theta}}}
+\DefineCharacter{120522}{1D6CA}{\ensuremath{\mathbf{\Iota}}}
+\DefineCharacter{120523}{1D6CB}{\ensuremath{\mathbf{\Kappa}}}
+\DefineCharacter{120524}{1D6CC}{\ensuremath{\mathbf{\Lambda}}}
+\DefineCharacter{120525}{1D6CD}{\ensuremath{M}}
+\DefineCharacter{120526}{1D6CE}{\ensuremath{N}}
+\DefineCharacter{120527}{1D6CF}{\ensuremath{\mathbf{\Xi}}}
+\DefineCharacter{120528}{1D6D0}{\ensuremath{O}}
+\DefineCharacter{120529}{1D6D1}{\ensuremath{\mathbf{\Pi}}}
+\DefineCharacter{120530}{1D6D2}{\ensuremath{\mathbf{\Rho}}}
+\DefineCharacter{120531}{1D6D3}{\ensuremath{\mathbf{\varsigma}}}
+\DefineCharacter{120532}{1D6D4}{\ensuremath{\mathbf{\Sigma}}}
+\DefineCharacter{120533}{1D6D5}{\ensuremath{\mathbf{\Tau}}}
+\DefineCharacter{120534}{1D6D6}{\ensuremath{\mathbf{\Upsilon}}}
+\DefineCharacter{120535}{1D6D7}{\ensuremath{\mathbf{\Phi}}}
+\DefineCharacter{120536}{1D6D8}{\ensuremath{\mathbf{\Chi}}}
+\DefineCharacter{120537}{1D6D9}{\ensuremath{\mathbf{\Psi}}}
+\DefineCharacter{120538}{1D6DA}{\ensuremath{\mathbf{\Omega}}}
+\DefineCharacter{120539}{1D6DB}{\ensuremath{\partial }}
+\DefineCharacter{120540}{1D6DC}{\ensuremath{\in}}
+\DefineCharacter{120541}{1D6DD}{\ifmmode \else \mathbf{\vartheta}\fi}%
+\DefineCharacter{120542}{1D6DE}{\ifmmode \else \mathbf{\varkappa}\fi}%
+\DefineCharacter{120543}{1D6DF}{\ifmmode \else \mathbf{\phi}\fi}%
+\DefineCharacter{120544}{1D6E0}{\ifmmode \else \mathbf{\varrho}\fi}%
+\DefineCharacter{120545}{1D6E1}{\ifmmode \else \mathbf{\varpi}\fi}%
+\DefineCharacter{120546}{1D6E2}{\ensuremath{\mathsl{\Alpha}}}
+\DefineCharacter{120547}{1D6E3}{\ensuremath{\mathsl{\Beta}}}
+\DefineCharacter{120548}{1D6E4}{\ensuremath{\mathsl{\Gamma}}}
+\DefineCharacter{120549}{1D6E5}{\ensuremath{\mathsl{\Delta}}}
+\DefineCharacter{120550}{1D6E6}{\ensuremath{\mathsl{\Epsilon}}}
+\DefineCharacter{120551}{1D6E7}{\ensuremath{\mathsl{\Zeta}}}
+\DefineCharacter{120552}{1D6E8}{\ensuremath{\mathsl{\Eta}}}
+\DefineCharacter{120553}{1D6E9}{\ensuremath{\mathsl{\Theta}}}
+\DefineCharacter{120554}{1D6EA}{\ensuremath{\mathsl{\Iota}}}
+\DefineCharacter{120555}{1D6EB}{\ensuremath{\mathsl{\Kappa}}}
+\DefineCharacter{120556}{1D6EC}{\ensuremath{\mathsl{\Lambda}}}
+\DefineCharacter{120557}{1D6ED}{\ensuremath{M}}
+\DefineCharacter{120558}{1D6EE}{\ensuremath{N}}
+\DefineCharacter{120559}{1D6EF}{\ensuremath{\mathsl{\Xi}}}
+\DefineCharacter{120560}{1D6F0}{\ensuremath{O}}
+\DefineCharacter{120561}{1D6F1}{\ensuremath{\mathsl{\Pi}}}
+\DefineCharacter{120562}{1D6F2}{\ensuremath{\mathsl{\Rho}}}
+\DefineCharacter{120563}{1D6F3}{\ifmmode \else \mathsl{\vartheta}\fi}%
+\DefineCharacter{120564}{1D6F4}{\ensuremath{\mathsl{\Sigma}}}
+\DefineCharacter{120565}{1D6F5}{\ensuremath{\mathsl{\Tau}}}
+\DefineCharacter{120566}{1D6F6}{\ensuremath{\mathsl{\Upsilon}}}
+\DefineCharacter{120567}{1D6F7}{\ensuremath{\mathsl{\Phi}}}
+\DefineCharacter{120568}{1D6F8}{\ensuremath{\mathsl{\Chi}}}
+\DefineCharacter{120569}{1D6F9}{\ensuremath{\mathsl{\Psi}}}
+\DefineCharacter{120570}{1D6FA}{\ensuremath{\mathsl{\Omega}}}
+\DefineCharacter{120571}{1D6FB}{\ensuremath{\mathsl{\nabla}}}
+\DefineCharacter{120572}{1D6FC}{\ensuremath{\mathsl{\Alpha}}}
+\DefineCharacter{120573}{1D6FD}{\ensuremath{\mathsl{\Beta}}}
+\DefineCharacter{120574}{1D6FE}{\ensuremath{\mathsl{\Gamma}}}
+\DefineCharacter{120575}{1D6FF}{\ensuremath{\mathsl{\Delta}}}
+\DefineCharacter{120576}{1D700}{\ensuremath{\mathsl{\Epsilon}}}
+\DefineCharacter{120577}{1D701}{\ensuremath{\mathsl{\Zeta}}}
+\DefineCharacter{120578}{1D702}{\ensuremath{\mathsl{\Eta}}}
+\DefineCharacter{120579}{1D703}{\ensuremath{\mathsl{\Theta}}}
+\DefineCharacter{120580}{1D704}{\ensuremath{\mathsl{\Iota}}}
+\DefineCharacter{120581}{1D705}{\ensuremath{\mathsl{\Kappa}}}
+\DefineCharacter{120582}{1D706}{\ensuremath{\mathsl{\Lambda}}}
+\DefineCharacter{120583}{1D707}{\ensuremath{M}}
+\DefineCharacter{120584}{1D708}{\ensuremath{N}}
+\DefineCharacter{120585}{1D709}{\ensuremath{\mathsl{\Xi}}}
+\DefineCharacter{120586}{1D70A}{\ensuremath{O}}
+\DefineCharacter{120587}{1D70B}{\ensuremath{\mathsl{\Pi}}}
+\DefineCharacter{120588}{1D70C}{\ensuremath{\mathsl{\Rho}}}
+\DefineCharacter{120589}{1D70D}{\ensuremath{\mathsl{\varsigma}}}
+\DefineCharacter{120590}{1D70E}{\ensuremath{\mathsl{\Sigma}}}
+\DefineCharacter{120591}{1D70F}{\ensuremath{\mathsl{\Tau}}}
+\DefineCharacter{120592}{1D710}{\ensuremath{\mathsl{\Upsilon}}}
+\DefineCharacter{120593}{1D711}{\ensuremath{\mathsl{\Phi}}}
+\DefineCharacter{120594}{1D712}{\ensuremath{\mathsl{\Chi}}}
+\DefineCharacter{120595}{1D713}{\ensuremath{\mathsl{\Psi}}}
+\DefineCharacter{120596}{1D714}{\ensuremath{\mathsl{\Omega}}}
+\DefineCharacter{120597}{1D715}{\ensuremath{\partial }}
+\DefineCharacter{120598}{1D716}{\ensuremath{\in}}
+\DefineCharacter{120599}{1D717}{\ifmmode \else \mathsl{\vartheta}\fi}%
+\DefineCharacter{120600}{1D718}{\ifmmode \else \mathsl{\varkappa}\fi}%
+\DefineCharacter{120601}{1D719}{\ifmmode \else \mathsl{\phi}\fi}%
+\DefineCharacter{120602}{1D71A}{\ifmmode \else \mathsl{\varrho}\fi}%
+\DefineCharacter{120603}{1D71B}{\ifmmode \else \mathsl{\varpi}\fi}%
+\DefineCharacter{120604}{1D71C}{\ensuremath{\mathbit{\Alpha}}}
+\DefineCharacter{120605}{1D71D}{\ensuremath{\mathbit{\Beta}}}
+\DefineCharacter{120606}{1D71E}{\ensuremath{\mathbit{\Gamma}}}
+\DefineCharacter{120607}{1D71F}{\ensuremath{\mathbit{\Delta}}}
+\DefineCharacter{120608}{1D720}{\ensuremath{\mathbit{\Epsilon}}}
+\DefineCharacter{120609}{1D721}{\ensuremath{\mathbit{\Zeta}}}
+\DefineCharacter{120610}{1D722}{\ensuremath{\mathbit{\Eta}}}
+\DefineCharacter{120611}{1D723}{\ensuremath{\mathbit{\Theta}}}
+\DefineCharacter{120612}{1D724}{\ensuremath{\mathbit{\Iota}}}
+\DefineCharacter{120613}{1D725}{\ensuremath{\mathbit{\Kappa}}}
+\DefineCharacter{120614}{1D726}{\ensuremath{\mathbit{\Lambda}}}
+\DefineCharacter{120615}{1D727}{\ensuremath{M}}
+\DefineCharacter{120616}{1D728}{\ensuremath{N}}
+\DefineCharacter{120617}{1D729}{\ensuremath{\mathbit{\Xi}}}
+\DefineCharacter{120618}{1D72A}{\ensuremath{O}}
+\DefineCharacter{120619}{1D72B}{\ensuremath{\mathbit{\Pi}}}
+\DefineCharacter{120620}{1D72C}{\ensuremath{\mathbit{\Rho}}}
+\DefineCharacter{120621}{1D72D}{\ifmmode \else \mathbit{O}\fi}%
+\DefineCharacter{120622}{1D72E}{\ensuremath{\mathbit{\Sigma}}}
+\DefineCharacter{120623}{1D72F}{\ensuremath{\mathbit{\Tau}}}
+\DefineCharacter{120624}{1D730}{\ensuremath{\mathbit{\Upsilon}}}
+\DefineCharacter{120625}{1D731}{\ensuremath{\mathbit{\Phi}}}
+\DefineCharacter{120626}{1D732}{\ensuremath{\mathbit{\Chi}}}
+\DefineCharacter{120627}{1D733}{\ensuremath{\mathbit{\Psi}}}
+\DefineCharacter{120628}{1D734}{\ensuremath{\mathbit{\Omega}}}
+\DefineCharacter{120629}{1D735}{\ensuremath{\mathbit{\nabla}}}
+\DefineCharacter{120630}{1D736}{\ensuremath{\mathbit{\Alpha}}}
+\DefineCharacter{120631}{1D737}{\ensuremath{\mathbit{\Beta}}}
+\DefineCharacter{120632}{1D738}{\ensuremath{\mathbit{\Gamma}}}
+\DefineCharacter{120633}{1D739}{\ensuremath{\mathbit{\Delta}}}
+\DefineCharacter{120634}{1D73A}{\ensuremath{\mathbit{\Epsilon}}}
+\DefineCharacter{120635}{1D73B}{\ensuremath{\mathbit{\Zeta}}}
+\DefineCharacter{120636}{1D73C}{\ensuremath{\mathbit{\Eta}}}
+\DefineCharacter{120637}{1D73D}{\ensuremath{\mathbit{\Theta}}}
+\DefineCharacter{120638}{1D73E}{\ensuremath{\mathbit{\Iota}}}
+\DefineCharacter{120639}{1D73F}{\ensuremath{\mathbit{\Kappa}}}
+\DefineCharacter{120640}{1D740}{\ensuremath{\mathbit{\Lambda}}}
+\DefineCharacter{120641}{1D741}{\ensuremath{M}}
+\DefineCharacter{120642}{1D742}{\ensuremath{N}}
+\DefineCharacter{120643}{1D743}{\ensuremath{\mathbit{\Xi}}}
+\DefineCharacter{120644}{1D744}{\ensuremath{O}}
+\DefineCharacter{120645}{1D745}{\ensuremath{\mathbit{\Pi}}}
+\DefineCharacter{120646}{1D746}{\ensuremath{\mathbit{\Rho}}}
+\DefineCharacter{120647}{1D747}{\ensuremath{\mathbit{\varsigma}}}
+\DefineCharacter{120648}{1D748}{\ensuremath{\mathbit{\Sigma}}}
+\DefineCharacter{120649}{1D749}{\ensuremath{\mathbit{\Tau}}}
+\DefineCharacter{120650}{1D74A}{\ensuremath{\mathbit{\Upsilon}}}
+\DefineCharacter{120651}{1D74B}{\ensuremath{\mathbit{\Phi}}}
+\DefineCharacter{120652}{1D74C}{\ensuremath{\mathbit{\Chi}}}
+\DefineCharacter{120653}{1D74D}{\ensuremath{\mathbit{\Psi}}}
+\DefineCharacter{120654}{1D74E}{\ensuremath{\mathbit{\Omega}}}
+\DefineCharacter{120655}{1D74F}{\ensuremath{\partial }}
+\DefineCharacter{120656}{1D750}{\ensuremath{\in}}
+\DefineCharacter{120657}{1D751}{\ifmmode \else \mathbit{\vartheta}\fi}%
+\DefineCharacter{120658}{1D752}{\ifmmode \else \mathbit{\varkappa}\fi}%
+\DefineCharacter{120659}{1D753}{\ifmmode \else \mathbit{\phi}\fi}%
+\DefineCharacter{120660}{1D754}{\ifmmode \else \mathbit{\varrho}\fi}%
+\DefineCharacter{120661}{1D755}{\ifmmode \else \mathbit{\varpi}\fi}%
+\DefineCharacter{120662}{1D756}{\ensuremath{\mathsfbf{\Alpha}}}
+\DefineCharacter{120663}{1D757}{\ensuremath{\mathsfbf{\Beta}}}
+\DefineCharacter{120664}{1D758}{\ensuremath{\mathsfbf{\Gamma}}}
+\DefineCharacter{120665}{1D759}{\ensuremath{\mathsfbf{\Delta}}}
+\DefineCharacter{120666}{1D75A}{\ensuremath{\mathsfbf{\Epsilon}}}
+\DefineCharacter{120667}{1D75B}{\ensuremath{\mathsfbf{\Zeta}}}
+\DefineCharacter{120668}{1D75C}{\ensuremath{\mathsfbf{\Eta}}}
+\DefineCharacter{120669}{1D75D}{\ensuremath{\mathsfbf{\Theta}}}
+\DefineCharacter{120670}{1D75E}{\ensuremath{\mathsfbf{\Iota}}}
+\DefineCharacter{120671}{1D75F}{\ensuremath{\mathsfbf{\Kappa}}}
+\DefineCharacter{120672}{1D760}{\ensuremath{\mathsfbf{\Lambda}}}
+\DefineCharacter{120673}{1D761}{\ensuremath{M}}
+\DefineCharacter{120674}{1D762}{\ensuremath{N}}
+\DefineCharacter{120675}{1D763}{\ensuremath{\mathsfbf{\Xi}}}
+\DefineCharacter{120676}{1D764}{\ensuremath{O}}
+\DefineCharacter{120677}{1D765}{\ensuremath{\mathsfbf{\Pi}}}
+\DefineCharacter{120678}{1D766}{\ensuremath{\mathsfbf{\Rho}}}
+\DefineCharacter{120679}{1D767}{\ifmmode \else \mathsfbf{\vartheta}\fi}%
+\DefineCharacter{120680}{1D768}{\ensuremath{\mathsfbf{\Sigma}}}
+\DefineCharacter{120681}{1D769}{\ensuremath{\mathsfbf{\Tau}}}
+\DefineCharacter{120682}{1D76A}{\ensuremath{\mathsfbf{\Upsilon}}}
+\DefineCharacter{120683}{1D76B}{\ensuremath{\mathsfbf{\Phi}}}
+\DefineCharacter{120684}{1D76C}{\ensuremath{\mathsfbf{\Chi}}}
+\DefineCharacter{120685}{1D76D}{\ensuremath{\mathsfbf{\Psi}}}
+\DefineCharacter{120686}{1D76E}{\ensuremath{\mathsfbf{\Omega}}}
+\DefineCharacter{120687}{1D76F}{\ensuremath{\mathsfbf{\nabla}}}
+\DefineCharacter{120688}{1D770}{\ensuremath{\mathsfbf{\Alpha}}}
+\DefineCharacter{120689}{1D771}{\ensuremath{\mathsfbf{\Beta}}}
+\DefineCharacter{120690}{1D772}{\ensuremath{\mathsfbf{\Gamma}}}
+\DefineCharacter{120691}{1D773}{\ensuremath{\mathsfbf{\Delta}}}
+\DefineCharacter{120692}{1D774}{\ensuremath{\mathsfbf{\Epsilon}}}
+\DefineCharacter{120693}{1D775}{\ensuremath{\mathsfbf{\Zeta}}}
+\DefineCharacter{120694}{1D776}{\ensuremath{\mathsfbf{\Eta}}}
+\DefineCharacter{120695}{1D777}{\ensuremath{\mathsfbf{\Theta}}}
+\DefineCharacter{120696}{1D778}{\ensuremath{\mathsfbf{\Iota}}}
+\DefineCharacter{120697}{1D779}{\ensuremath{\mathsfbf{\Kappa}}}
+\DefineCharacter{120698}{1D77A}{\ensuremath{\mathsfbf{\Lambda}}}
+\DefineCharacter{120699}{1D77B}{\ensuremath{M}}
+\DefineCharacter{120700}{1D77C}{\ensuremath{N}}
+\DefineCharacter{120701}{1D77D}{\ensuremath{\mathsfbf{\Xi}}}
+\DefineCharacter{120702}{1D77E}{\ensuremath{O}}
+\DefineCharacter{120703}{1D77F}{\ensuremath{\mathsfbf{\Pi}}}
+\DefineCharacter{120704}{1D780}{\ensuremath{\mathsfbf{\Rho}}}
+\DefineCharacter{120705}{1D781}{\ensuremath{\mathsfbf{\varsigma}}}
+\DefineCharacter{120706}{1D782}{\ensuremath{\mathsfbf{\Sigma}}}
+\DefineCharacter{120707}{1D783}{\ensuremath{\mathsfbf{\Tau}}}
+\DefineCharacter{120708}{1D784}{\ensuremath{\mathsfbf{\Upsilon}}}
+\DefineCharacter{120709}{1D785}{\ensuremath{\mathsfbf{\Phi}}}
+\DefineCharacter{120710}{1D786}{\ensuremath{\mathsfbf{\Chi}}}
+\DefineCharacter{120711}{1D787}{\ensuremath{\mathsfbf{\Psi}}}
+\DefineCharacter{120712}{1D788}{\ensuremath{\mathsfbf{\Omega}}}
+\DefineCharacter{120713}{1D789}{\ensuremath{\partial }}
+\DefineCharacter{120714}{1D78A}{\ensuremath{\in}}
+\DefineCharacter{120715}{1D78B}{\ifmmode \else \mathsfbf{\vartheta}\fi}%
+\DefineCharacter{120716}{1D78C}{\ifmmode \else \mathsfbf{\varkappa}\fi}%
+\DefineCharacter{120717}{1D78D}{\ifmmode \else \mathsfbf{\phi}\fi}%
+\DefineCharacter{120718}{1D78E}{\ifmmode \else \mathsfbf{\varrho}\fi}%
+\DefineCharacter{120719}{1D78F}{\ifmmode \else \mathsfbf{\varpi}\fi}%
+\DefineCharacter{120720}{1D790}{\ensuremath{\mathsfbfsl{\Alpha}}}
+\DefineCharacter{120721}{1D791}{\ensuremath{\mathsfbfsl{\Beta}}}
+\DefineCharacter{120722}{1D792}{\ensuremath{\mathsfbfsl{\Gamma}}}
+\DefineCharacter{120723}{1D793}{\ensuremath{\mathsfbfsl{\Delta}}}
+\DefineCharacter{120724}{1D794}{\ensuremath{\mathsfbfsl{\Epsilon}}}
+\DefineCharacter{120725}{1D795}{\ensuremath{\mathsfbfsl{\Zeta}}}
+\DefineCharacter{120726}{1D796}{\ensuremath{\mathsfbfsl{\Eta}}}
+\DefineCharacter{120727}{1D797}{\ensuremath{\mathsfbfsl{\vartheta}}}
+\DefineCharacter{120728}{1D798}{\ensuremath{\mathsfbfsl{\Iota}}}
+\DefineCharacter{120729}{1D799}{\ensuremath{\mathsfbfsl{\Kappa}}}
+\DefineCharacter{120730}{1D79A}{\ensuremath{\mathsfbfsl{\Lambda}}}
+\DefineCharacter{120731}{1D79B}{\ensuremath{M}}
+\DefineCharacter{120732}{1D79C}{\ensuremath{N}}
+\DefineCharacter{120733}{1D79D}{\ensuremath{\mathsfbfsl{\Xi}}}
+\DefineCharacter{120734}{1D79E}{\ensuremath{O}}
+\DefineCharacter{120735}{1D79F}{\ensuremath{\mathsfbfsl{\Pi}}}
+\DefineCharacter{120736}{1D7A0}{\ensuremath{\mathsfbfsl{\Rho}}}
+\DefineCharacter{120737}{1D7A1}{\ifmmode \else \mathsfbfsl{\vartheta}\fi}%
+\DefineCharacter{120738}{1D7A2}{\ensuremath{\mathsfbfsl{\Sigma}}}
+\DefineCharacter{120739}{1D7A3}{\ensuremath{\mathsfbfsl{\Tau}}}
+\DefineCharacter{120740}{1D7A4}{\ensuremath{\mathsfbfsl{\Upsilon}}}
+\DefineCharacter{120741}{1D7A5}{\ensuremath{\mathsfbfsl{\Phi}}}
+\DefineCharacter{120742}{1D7A6}{\ensuremath{\mathsfbfsl{\Chi}}}
+\DefineCharacter{120743}{1D7A7}{\ensuremath{\mathsfbfsl{\Psi}}}
+\DefineCharacter{120744}{1D7A8}{\ensuremath{\mathsfbfsl{\Omega}}}
+\DefineCharacter{120745}{1D7A9}{\ensuremath{\mathsfbfsl{\nabla}}}
+\DefineCharacter{120746}{1D7AA}{\ensuremath{\mathsfbfsl{\Alpha}}}
+\DefineCharacter{120747}{1D7AB}{\ensuremath{\mathsfbfsl{\Beta}}}
+\DefineCharacter{120748}{1D7AC}{\ensuremath{\mathsfbfsl{\Gamma}}}
+\DefineCharacter{120749}{1D7AD}{\ensuremath{\mathsfbfsl{\Delta}}}
+\DefineCharacter{120750}{1D7AE}{\ensuremath{\mathsfbfsl{\Epsilon}}}
+\DefineCharacter{120751}{1D7AF}{\ensuremath{\mathsfbfsl{\Zeta}}}
+\DefineCharacter{120752}{1D7B0}{\ensuremath{\mathsfbfsl{\Eta}}}
+\DefineCharacter{120753}{1D7B1}{\ensuremath{\mathsfbfsl{\vartheta}}}
+\DefineCharacter{120754}{1D7B2}{\ensuremath{\mathsfbfsl{\Iota}}}
+\DefineCharacter{120755}{1D7B3}{\ensuremath{\mathsfbfsl{\Kappa}}}
+\DefineCharacter{120756}{1D7B4}{\ensuremath{\mathsfbfsl{\Lambda}}}
+\DefineCharacter{120757}{1D7B5}{\ensuremath{M}}
+\DefineCharacter{120758}{1D7B6}{\ensuremath{N}}
+\DefineCharacter{120759}{1D7B7}{\ensuremath{\mathsfbfsl{\Xi}}}
+\DefineCharacter{120760}{1D7B8}{\ensuremath{O}}
+\DefineCharacter{120761}{1D7B9}{\ensuremath{\mathsfbfsl{\Pi}}}
+\DefineCharacter{120762}{1D7BA}{\ensuremath{\mathsfbfsl{\Rho}}}
+\DefineCharacter{120763}{1D7BB}{\ensuremath{\mathsfbfsl{\varsigma}}}
+\DefineCharacter{120764}{1D7BC}{\ensuremath{\mathsfbfsl{\Sigma}}}
+\DefineCharacter{120765}{1D7BD}{\ensuremath{\mathsfbfsl{\Tau}}}
+\DefineCharacter{120766}{1D7BE}{\ensuremath{\mathsfbfsl{\Upsilon}}}
+\DefineCharacter{120767}{1D7BF}{\ensuremath{\mathsfbfsl{\Phi}}}
+\DefineCharacter{120768}{1D7C0}{\ensuremath{\mathsfbfsl{\Chi}}}
+\DefineCharacter{120769}{1D7C1}{\ensuremath{\mathsfbfsl{\Psi}}}
+\DefineCharacter{120770}{1D7C2}{\ensuremath{\mathsfbfsl{\Omega}}}
+\DefineCharacter{120771}{1D7C3}{\ensuremath{\partial }}
+\DefineCharacter{120772}{1D7C4}{\ensuremath{\in}}
+\DefineCharacter{120773}{1D7C5}{\ifmmode \else \mathsfbfsl{\vartheta}\fi}%
+\DefineCharacter{120774}{1D7C6}{\ifmmode \else \mathsfbfsl{\varkappa}\fi}%
+\DefineCharacter{120775}{1D7C7}{\ifmmode \else \mathsfbfsl{\phi}\fi}%
+\DefineCharacter{120776}{1D7C8}{\ifmmode \else \mathsfbfsl{\varrho}\fi}%
+\DefineCharacter{120777}{1D7C9}{\ifmmode \else \mathsfbfsl{\varpi}\fi}%
+\DefineCharacter{120782}{1D7CE}{\ensuremath{\mathbf{0}}}
+\DefineCharacter{120783}{1D7CF}{\ensuremath{\mathbf{1}}}
+\DefineCharacter{120784}{1D7D0}{\ensuremath{\mathbf{2}}}
+\DefineCharacter{120785}{1D7D1}{\ensuremath{\mathbf{3}}}
+\DefineCharacter{120786}{1D7D2}{\ensuremath{\mathbf{4}}}
+\DefineCharacter{120787}{1D7D3}{\ensuremath{\mathbf{5}}}
+\DefineCharacter{120788}{1D7D4}{\ensuremath{\mathbf{6}}}
+\DefineCharacter{120789}{1D7D5}{\ensuremath{\mathbf{7}}}
+\DefineCharacter{120790}{1D7D6}{\ensuremath{\mathbf{8}}}
+\DefineCharacter{120791}{1D7D7}{\ensuremath{\mathbf{9}}}
+\DefineCharacter{120792}{1D7D8}{\ensuremath{\mathbb{0}}}
+\DefineCharacter{120793}{1D7D9}{\ensuremath{\mathbb{1}}}
+\DefineCharacter{120794}{1D7DA}{\ensuremath{\mathbb{2}}}
+\DefineCharacter{120795}{1D7DB}{\ensuremath{\mathbb{3}}}
+\DefineCharacter{120796}{1D7DC}{\ensuremath{\mathbb{4}}}
+\DefineCharacter{120797}{1D7DD}{\ensuremath{\mathbb{5}}}
+\DefineCharacter{120798}{1D7DE}{\ensuremath{\mathbb{6}}}
+\DefineCharacter{120799}{1D7DF}{\ensuremath{\mathbb{7}}}
+\DefineCharacter{120800}{1D7E0}{\ensuremath{\mathbb{8}}}
+\DefineCharacter{120801}{1D7E1}{\ensuremath{\mathbb{9}}}
+\DefineCharacter{120802}{1D7E2}{\ensuremath{\mathsf{0}}}
+\DefineCharacter{120803}{1D7E3}{\ensuremath{\mathsf{1}}}
+\DefineCharacter{120804}{1D7E4}{\ensuremath{\mathsf{2}}}
+\DefineCharacter{120805}{1D7E5}{\ensuremath{\mathsf{3}}}
+\DefineCharacter{120806}{1D7E6}{\ensuremath{\mathsf{4}}}
+\DefineCharacter{120807}{1D7E7}{\ensuremath{\mathsf{5}}}
+\DefineCharacter{120808}{1D7E8}{\ensuremath{\mathsf{6}}}
+\DefineCharacter{120809}{1D7E9}{\ensuremath{\mathsf{7}}}
+\DefineCharacter{120810}{1D7EA}{\ensuremath{\mathsf{8}}}
+\DefineCharacter{120811}{1D7EB}{\ensuremath{\mathsf{9}}}
+\DefineCharacter{120812}{1D7EC}{\ensuremath{\mathsfbf{0}}}
+\DefineCharacter{120813}{1D7ED}{\ensuremath{\mathsfbf{1}}}
+\DefineCharacter{120814}{1D7EE}{\ensuremath{\mathsfbf{2}}}
+\DefineCharacter{120815}{1D7EF}{\ensuremath{\mathsfbf{3}}}
+\DefineCharacter{120816}{1D7F0}{\ensuremath{\mathsfbf{4}}}
+\DefineCharacter{120817}{1D7F1}{\ensuremath{\mathsfbf{5}}}
+\DefineCharacter{120818}{1D7F2}{\ensuremath{\mathsfbf{6}}}
+\DefineCharacter{120819}{1D7F3}{\ensuremath{\mathsfbf{7}}}
+\DefineCharacter{120820}{1D7F4}{\ensuremath{\mathsfbf{8}}}
+\DefineCharacter{120821}{1D7F5}{\ensuremath{\mathsfbf{9}}}
+\DefineCharacter{120822}{1D7F6}{\ensuremath{\mathtt{0}}}
+\DefineCharacter{120823}{1D7F7}{\ensuremath{\mathtt{1}}}
+\DefineCharacter{120824}{1D7F8}{\ensuremath{\mathtt{2}}}
+\DefineCharacter{120825}{1D7F9}{\ensuremath{\mathtt{3}}}
+\DefineCharacter{120826}{1D7FA}{\ensuremath{\mathtt{4}}}
+\DefineCharacter{120827}{1D7FB}{\ensuremath{\mathtt{5}}}
+\DefineCharacter{120828}{1D7FC}{\ensuremath{\mathtt{6}}}
+\DefineCharacter{120829}{1D7FD}{\ensuremath{\mathtt{7}}}
+\DefineCharacter{120830}{1D7FE}{\ensuremath{\mathtt{8}}}
+\DefineCharacter{120831}{1D7FF}{\ensuremath{\mathtt{9}}}
+\endinput
diff --git a/macros/xmltex/contrib/passivetex/unicode.sty b/macros/xmltex/contrib/passivetex/unicode.sty
new file mode 100644
index 0000000000..41111250e8
--- /dev/null
+++ b/macros/xmltex/contrib/passivetex/unicode.sty
@@ -0,0 +1,577 @@
+% $Id: unicode.sty,v 1.1.1.1 2001/07/02 19:52:12 rahtz Exp $
+\ProvidesPackage{unicode}[2000/01/13 S Rahtz: load various font-related
+ packages for Unicode]
+\let\tilde\relax
+%
+% Packages needed
+%
+\def\@ifundefined#1{%
+ \expandafter\ifx\csname#1\endcsname\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+\def\UnavailableSymbol#1{%
+ \ensuremath{\underline{\mbox{#1}}}%
+ \typeout{The Unicode package knows about symbol #1, but the font
+ package is not loaded}%
+}
+
+\@ifundefined{XMLelement}{}{\def\DefineCharacter#1#2#3{\UnicodeCharacter{#1}{#3}}}
+\def\DefaultfFamName{unknown}
+
+\IfFileExists{t3enc.def}
+ {
+ \IfFileExists{t2aenc.def}
+ {\RequirePackage[T3,T2A,T1]{fontenc}}
+ {\RequirePackage[T3,T1]{fontenc}}
+ \RequirePackage[noenc,safe]{tipa}
+ \RequirePackage{tone}
+ \DeclareFontSubstitution{T3}{ptm}{m}{n}
+ }{
+ \typeout{WARNING: tipa package not loaded. some symbols will fail}
+ \IfFileExists{t2aenc.def}
+ {\RequirePackage[T2A,T1]{fontenc}}
+ {\RequirePackage[T1]{fontenc}}
+ }
+\RequirePackage{amssymb}[1995/01/01]
+\def\bmmax{0}
+\RequirePackage{bm}
+\RequirePackage{textcomp}[1998/01/16]
+\RequirePackage{pifont}
+\IfFileExists{wasysym.sty}
+ {\usepackage{wasysym}}
+ {\typeout{WARNING: wasysym package not loaded. some symbols will fail}}
+\let\ee\relax
+\IfFileExists{stmaryrd.sty}
+ {\usepackage{stmaryrd}}
+ {\typeout{WARNING: stmaryrd package not loaded. some symbols will fail}}
+
+\IfFileExists{elfonts.sty}
+ {
+ \usepackage{elfonts}
+ \def\ElsevierGlyph##1{\csname U##1\endcsname}%
+ \def\textpertenthousand{\Pisymbol{ppi031}{33}}
+ \let\overrightharpoon\undefined
+ \let\overleftharpoon\undefined
+ }{
+ \typeout{WARNING: Elsevier font setup not found}%
+ \usepackage{dummyels}%
+ \let\ElsevierGlyph\UnavailableSymbol
+ }
+% don't ask
+\def\supppdf{supp-pdf}
+\DeclareMathSymbol{'}{\mathord}{symbols}{"30}
+% Adobe Math Pi
+\IfFileExists{uppi020.fd}{%
+\DeclareFontFamily{U}{ppi020}{}
+\DeclareFontShape{U}{ppi020}{m}{n}{<->ppi020}{}
+\DeclareFontFamily{U}{ppi021}{}
+\DeclareFontShape{U}{ppi021}{m}{n}{<->ppi021}{}
+\DeclareFontFamily{U}{ppi022}{}
+\DeclareFontShape{U}{ppi022}{m}{n}{<->ppi022}{}
+\DeclareFontFamily{U}{ppi023}{}
+\DeclareFontShape{U}{ppi023}{m}{n}{<->ppi023}{}
+\DeclareFontFamily{U}{ppi024}{}
+\DeclareFontShape{U}{ppi024}{m}{n}{<->ppi024}{}
+\DeclareFontFamily{U}{ppi025}{}
+\DeclareFontShape{U}{ppi025}{m}{n}{<->ppi025}{}
+\DeclareFontFamily{U}{ppi031}{}
+\DeclareFontShape{U}{ppi031}{m}{n}{<->ppi031}{}
+\DeclareFontFamily{T1}{mtms}{}
+\DeclareFontShape{T1}{mtms}{m}{n}{<->mtms}{}
+}{
+\DeclareFontFamily{U}{ppi020}{}
+\DeclareFontShape{U}{ppi020}{m}{n}{<->sub*pzd/m/n}{}
+\DeclareFontFamily{U}{ppi021}{}
+\DeclareFontShape{U}{ppi021}{m}{n}{<->sub*pzd/m/n}{}
+\DeclareFontFamily{U}{ppi022}{}
+\DeclareFontShape{U}{ppi022}{m}{n}{<->sub*pzd/m/n}{}
+\DeclareFontFamily{U}{ppi023}{}
+\DeclareFontShape{U}{ppi023}{m}{n}{<->sub*pzd/m/n}{}
+\DeclareFontFamily{U}{ppi024}{}
+\DeclareFontShape{U}{ppi024}{m}{n}{<->sub*pzd/m/n}{}
+\DeclareFontFamily{U}{ppi025}{}
+\DeclareFontShape{U}{ppi025}{m}{n}{<->sub*pzd/m/n}{}
+\DeclareFontFamily{T1}{mtms}{}
+\DeclareFontShape{T1}{mtms}{m}{n}{<->sub*pzd/m/n}{}
+\DeclareFontFamily{U}{ppi031}{}
+\DeclareFontShape{U}{ppi031}{m}{n}{<->sub*pzd/m/n}{}
+}
+\let\mathlowercal\mathcal
+
+\@ifpackageloaded{mmasym.sty}
+ {%
+% extra Wolfram characters
+\let\DownArrowUpArrow\downarrowuparrow
+\let\ReverseUpEquilibrium\revequilibrium
+\let\UpEquilibrium\upequilibrium
+\let\NotLessLess\nll %e2cb math3/102 146 234
+\let\NotHumpDownHump\nBumpeq %e616 math3/83 123
+\let\NotHumpEqual\RoundImplies %e84d math3/82 122
+\let\NotSquareSubset\nsqsubseteq %e604 math3/110 156
+\let\NotSquareSuperset\nsqsupseteq %e615 math3/126 176
+\let\NotEqualTilde\NotTildeEqual %e84e math3/79 117
+\let\LeftRightVector\leftrightharpoonup % f505 math4/50 62
+\let\DownLeftRightVector\leftrightharpoondown % f50b math4/53 65
+\let\RightUpDownVector\rightupdownharpoon %f510 math4/55 67
+\let\LeftUpDownVector\leftupdownharpoon %f515 math4/54 66
+}
+{\typeout{WARNING: mmasym package not loaded. some symbols will fail}}
+
+
+%
+% we are going to use Lucida fonts, so do some setup
+%
+\@ifpackageloaded{lucidabr}{%
+\def\DeclareLucidaFontShape#1#2#3#4#5#6{%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{%
+ <-5.5>s*[.98]#5%
+ <5.5-6.5>s*[.96]#5%
+ <6.5-7.5>s*[.94]#5%
+ <7.5-8.5>s*[.92]#5%
+ <8.5-9.5>s*[.91]#5%
+ <9.5-10.5>s*[.9]#5%
+ <10.5-11.5>s*[.89]#5%
+ <11.5-13>s*[.88]#5%
+ <13-15.5>s*[.87]#5%
+ <15.5-18.5>s*[.86]#5%
+ <18.5-22.5>s*[.85]#5%
+ <22.5->s*[.84]#5%
+ }{#6}}
+\DeclareFontFamily{U}{hlcm}{}
+\DeclareLucidaFontShape{U}{hlcm}{m}{n}{hlcrm}{}
+\DeclareLucidaFontShape{U}{hlcm}{b}{n}{hlcdm}{}
+\DeclareLucidaFontShape{U}{hlcm}{bx}{n}{hlcdm}{}
+\DeclareLucidaFontShape{U}{hlcm}{m}{it}{hlcrima}{}
+\DeclareLucidaFontShape{U}{hlcm}{b}{it}{hlcdima}{}
+\DeclareLucidaFontShape{U}{hlcm}{bx}{it}{hlcdima}{}
+\DeclareFontEncoding{LMR}{}{}
+\DeclareFontSubstitution{LMR}{hlcm}{m}{n}
+\DeclareSymbolFont{lucarrows}{LMR}{hlcm}{m}{n}
+\DeclareSymbolFont{lucmathupright}{OML}{hlcm}{m}{n}
+\DeclareSymbolFont{lucletters}{OML}{hlcm}{m}{it}
+\DeclareSymbolFont{lucsymbols}{OMS}{hlcy}{m}{n}
+\SetSymbolFont{lucmathupright}{bold}{OML}{hlcm}{b}{n}
+\SetSymbolFont{lucletters}{bold}{OML}{hlcm}{b}{it}
+\SetSymbolFont{lucsymbols}{bold}{OMS}{hlcy}{b}{n}
+}{
+\usepackage[mathscr]{eucal}
+}
+%
+% some new macros
+%
+\def\Longrightarrow{\Relbar\joinrel\Rightarrow}
+\DeclareRobustCommand\longrightarrow
+ {\relbar\joinrel\rightarrow}
+\DeclareRobustCommand\longleftarrow
+ {\leftarrow\joinrel\relbar}
+\def\Longleftarrow{\Leftarrow\joinrel\Relbar}
+\def\Alpha {A}
+\def\Beta {B}
+\def\Epsilon {E}
+\def\Zeta {Z}
+\def\Eta {E}
+\def\Iota {I}
+\def\Kappa {K}
+\def\Rho {R}
+\def\Chi {C}
+\def\Tau {T}
+%
+% funny accents and constructions
+%
+\newdimen\ex@
+\DeclareMathAccent{\mathring}{\mathalpha}{operators}{23}
+\def\dddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
+ \hbox{\normalfont ...}\vss}}}}
+\def\ddddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
+ \hbox{\normalfont....}\vss}}}}
+\def\textfrac#1#2{\leavevmode\kern.1em
+\raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
+/\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
+% from David Carlisle, low cedilla
+\DeclareTextCommand{\cX}{T1}[1]
+ {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}\char11\hidewidth}}}
+%
+% Cyrillic
+%
+%
+% T2A (Cyrillic) fonts
+%
+\IfFileExists{t2aftm.fd}
+ {\def\CYR@Family@unknown{ftm}}
+ {\def\CYR@Family@unknown{cmr}}
+\IfFileExists{t2afar.fd}
+ {\def\CYR@Family@Arial{far}
+ \def\CYR@Family@sansserif{far}
+ \def\CYR@Family@Helvetica{far}
+ \expandafter\def\csname CYR@Family@sans-serif\endcsname{far}
+ \expandafter\def\csname CYR@Family@iso-sanserif\endcsname{far}}
+ {\def\CYR@Family@Arial{cmss}
+ \def\CYR@Family@sansserif{cmss}
+ \def\CYR@Family@Helvetica{cmss}
+ \expandafter\def\csname CYR@Family@sans-serif\endcsname{cmss}
+ \expandafter\def\csname CYR@Family@iso-sanserif\endcsname{cmss}}
+\IfFileExists{t2afcr.fd}
+ {\def\CYR@Family@Courier{fcr}
+ \def\CYR@Family@monospace{fcr}
+ \expandafter\def\csname CYR@Family@Courier New\endcsname{fcr}
+ \expandafter\def\csname CYR@Family@Courier-New\endcsname{fcr}
+ \expandafter\def\csname CYR@Family@iso-monospace\endcsname{fcr}}
+ {\def\CYR@Family@Courier{cmtt}
+ \def\CYR@Family@monospace{cmtt}
+ \expandafter\def\csname CYR@Family@Courier New\endcsname{cmtt}
+ \expandafter\def\csname CYR@Family@Courier-New\endcsname{cmtt}
+ \expandafter\def\csname CYR@Family@iso-monospace\endcsname{cmtt}}
+\IfFileExists{t2aftm.fd}
+ {\def\CYR@Family@serif{ftm}
+ \expandafter\def\csname CYR@Family@Tiso-serif\endcsname{ftm}
+ \expandafter\def\csname CYR@Family@Times-Roman\endcsname{ftm}
+ \expandafter\def\csname CYR@Family@Times-New-Roman\endcsname{ftm}
+ \expandafter\def\csname CYR@Family@Times Roman\endcsname{ftm}
+ \expandafter\def\csname CYR@Family@Times New Roman\endcsname{ftm}
+ \expandafter\def\csname CYR@Family@Times-NR-MT\endcsname{ftm}}
+ {\def\CYR@Family@serif{cmr}
+ \expandafter\def\csname CYR@Family@Tiso-serif\endcsname{cmr}
+ \expandafter\def\csname CYR@Family@Times-Roman\endcsname{cmr}
+ \expandafter\def\csname CYR@Family@Times-New-Roman\endcsname{cmr}
+ \expandafter\def\csname CYR@Family@Times Roman\endcsname{cmr}
+ \expandafter\def\csname CYR@Family@Times New Roman\endcsname{cmr}
+ \expandafter\def\csname CYR@Family@Times-NR-MT\endcsname{cmr}}
+\IfFileExists{t2afha.fd}
+ {\def\CYR@Family@Bookman{faq}}
+ {\def\CYR@Family@Bookman{cmr}}
+\def\fFamName{cmr}
+\long\def\CYRFamily{%
+\expandafter\ifx\csname CYR@Family@\fFamName\endcsname\relax
+ \csname CYR@Family@\DefaultfFamName\endcsname
+\else
+ \csname CYR@Family@\fFamName\endcsname
+\fi
+}
+%
+\long\def\cyrchar#1{{\fontfamily{\CYRFamily}\fontencoding{T2A}\selectfont#1}}
+%
+% Greek
+%
+%
+% Lucida/Times math letters as a symbol font
+%
+\@ifpackageloaded{lucidabr}{%
+ \DeclareFontFamily{U}{ptmluc}{}
+ \DeclareFontShape{U}{ptmluc}{m}{it}{<-> ptmlucrm}{}
+ \DeclareFontShape{U}{ptmluc}{b}{it}{<-> ptmlucbf}{}
+ \DeclareFontShape{U}{ptmluc}{bx}{it}{<->ssub * ptmluc/b/it}{}
+ \DeclareFontShape{U}{ptmluc}{bx}{n}{<->ssub * ptmluc/b/it}{}
+ \DeclareFontShape{U}{ptmluc}{m}{n}{<->ssub * ptmluc/m/it}{}
+ \newcommand{\GkSymbol}[2]{{\fontfamily{#1}\fontencoding{U}%
+ \selectfont\char#2}}
+ \def\textGamma{\GkSymbol{hlcm}{0}}
+ \def\textDelta{\GkSymbol{hlcm}{1}}
+ \def\textTheta{\GkSymbol{hlcm}{2}}
+ \def\textLambda{\GkSymbol{hlcm}{3}}
+ \def\textXi{\GkSymbol{hlcm}{4}}
+ \def\textPi{\GkSymbol{hlcm}{5}}
+ \def\textSigma{\GkSymbol{hlcm}{6}}
+ \def\textUpsilon{\GkSymbol{hlcm}{7}}
+ \def\textPhi{\GkSymbol{hlcm}{8}}
+ \def\textPsi{\GkSymbol{hlcm}{9}}
+ \def\textOmega{\GkSymbol{hlcm}{10}}
+ \def\textalpha{\GkSymbol{hlcm}{11}}
+ \def\textbeta{\GkSymbol{hlcm}{12}}
+ \def\textgamma{\GkSymbol{hlcm}{13}}
+\def\textdelta{\GkSymbol{hlcm}{14}}
+\def\textepsilon{\GkSymbol{hlcm}{15}}
+\def\textzeta{\GkSymbol{hlcm}{16}}
+\def\texteta{\GkSymbol{hlcm}{17}}
+\def\texttheta{\GkSymbol{hlcm}{18}}
+\def\textiota{\GkSymbol{hlcm}{19}}
+\def\textkappa{\GkSymbol{hlcm}{20}}
+\def\textlambda{\GkSymbol{hlcm}{21}}
+\def\textmu{\GkSymbol{hlcm}{22}}
+\def\textnu{\GkSymbol{hlcm}{23}}
+\def\textxi{\GkSymbol{hlcm}{24}}
+\def\textpi{\GkSymbol{hlcm}{25}}
+\def\textrho{\GkSymbol{hlcm}{26}}
+\def\textsigma{\GkSymbol{hlcm}{27}}
+\def\texttau{\GkSymbol{hlcm}{28}}
+\def\textupsilon{\GkSymbol{hlcm}{29}}
+\def\textphi{\GkSymbol{hlcm}{30}}
+\def\textchi{\GkSymbol{hlcm}{31}}
+\def\textpsi{\GkSymbol{hlcm}{32}}
+\def\textomega{\GkSymbol{hlcm}{33}}
+\def\textvarepsilon{\GkSymbol{hlcm}{34}}
+\def\textvarGamma{\GkSymbol{ptmluc}{0}}
+\def\textvarDelta{\GkSymbol{ptmluc}{1}}
+\def\textvarTheta{\GkSymbol{ptmluc}{2}}
+\def\textvarLambda{\GkSymbol{ptmluc}{3}}
+\def\textvarXi{\GkSymbol{ptmluc}{4}}
+\def\textvarPi{\GkSymbol{ptmluc}{5}}
+\def\textvarSigma{\GkSymbol{ptmluc}{6}}
+\def\textvarUpsilon{\GkSymbol{ptmluc}{7}}
+\def\textvarPhi{\GkSymbol{ptmluc}{8}}
+\def\textvarPsi{\GkSymbol{ptmluc}{9}}
+\def\textvarOmega{\GkSymbol{ptmluc}{10}}
+\def\textvarkappa{\GkSymbol{ptmluc}{155}}
+\def\textvartheta{\GkSymbol{ptmluc}{35}}
+\def\textvarpi{\GkSymbol{ptmluc}{36}}
+\def\textvarrho{\GkSymbol{ptmluc}{37}}
+\def\textvarsigma{\GkSymbol{ptmluc}{38}}
+\def\textvarphi{\GkSymbol{ptmluc}{39}}
+\DeclareMathSymbol\Colon{0}{lucsymbols}{147}
+\DeclareMathSymbol\VDash{0}{letters}{172}
+\DeclareMathSymbol\allequal{0}{lucsymbols}{159}% unicode 224C
+\DeclareMathSymbol\apid{0}{lucsymbols}{158}
+\DeclareMathSymbol\approxnotequal{0}{lucarrows}{24}% unicode 2246
+\DeclareMathSymbol\arrowwaveleft{0}{lucarrows}{143}% unicode 219D
+\DeclareMathSymbol\arrowwaveright{0}{lucarrows}{144}% unicode 219C
+\DeclareMathSymbol\blackcircle{0}{lucarrows}{1}
+\DeclareMathSymbol\clwintegral{0}{lucletters}{141}% % unicode 2231
+\DeclareMathSymbol\colone{0}{lucsymbols}{205}
+\DeclareMathSymbol\dblarrowupdown{0}{lucarrows}{111}% % unicode 21C5
+\DeclareMathSymbol\dlcorn{0}{lucarrows}{93}
+\DeclareMathSymbol\downslopeellipsis{0}{lucarrows}{22}% unicode 22F1
+\DeclareMathSymbol\drcorn{0}{lucarrows}{94}
+\DeclareMathSymbol\estimates{0}{lucsymbols}{210}% unicode 2259
+\DeclareMathSymbol\eth{\mathrel}{operators}{240}
+\DeclareMathSymbol\forcesextra{0}{lucletters}{172}% % unicode 22A8
+\DeclareMathSymbol\greaterequivlnt{0}{lucsymbols}{221}% unicode 2273
+\DeclareMathSymbol\hermitconjmatrix{0}{lucsymbols}{241}% unicode 22B9
+\DeclareMathSymbol\homothetic{0}{lucsymbols}{151}% unicode 223B
+\DeclareMathSymbol\image{0}{lucletters}{198}% % unicode 22B7
+\DeclareMathSymbol\lazysinv{0}{lucsymbols}{198}% unicode 223E
+\DeclareMathSymbol\lessequivlnt{0}{lucsymbols}{220}% unicode 2272
+\DeclareMathSymbol\notgreaterless{0}{lucarrows}{197}% unicode 2279
+\DeclareMathSymbol\notlessgreater{0}{lucarrows}{127}% unicode 2278
+\DeclareMathSymbol\openbracketleft{0}{lucletters}{130}% % unicode 301A
+\DeclareMathSymbol\openbracketright{0}{lucletters}{131}% % unicode 301B
+\DeclareMathSymbol\original{0}{lucletters}{197}% % unicode 22B6
+\DeclareMathSymbol\perspcorrespond{\mathbin}{lucsymbols}{212}% % unicode 2306
+\DeclareMathSymbol\precedesnotsimilar{0}{lucarrows}{235}% unicode 22E8
+\DeclareMathSymbol\rightanglearc{0}{lucsymbols}{142}% unicode 22BE
+\DeclareMathSymbol\rightangle{0}{lucsymbols}{138}% unicode 221F
+\DeclareMathSymbol\starequal{0}{lucarrows}{26}% unicode 225B
+\DeclareMathSymbol\surfintegral{0}{lucletters}{139}% % unicode 222F
+\DeclareMathSymbol\tildetrpl{0}{lucsymbols}{158}% % unicode 224B
+\DeclareMathSymbol\truestate{0}{lucletters}{214}% unicode 22A7
+\DeclareMathSymbol\ulcorn{0}{lucarrows}{91}
+\DeclareMathSymbol\upalpha{\mathord}{lucmathupright}{11}
+\DeclareMathSymbol\upbeta{\mathord}{lucmathupright}{12}
+\DeclareMathSymbol\upchi{\mathord}{lucmathupright}{31}
+\DeclareMathSymbol\updelta{\mathord}{lucmathupright}{14}
+\DeclareMathSymbol\upepsilon{\mathord}{lucmathupright}{15}
+\DeclareMathSymbol\upeta{\mathord}{lucmathupright}{17}
+\DeclareMathSymbol\upgamma{\mathord}{lucmathupright}{13}
+\DeclareMathSymbol\upiota{\mathord}{lucmathupright}{19}
+\DeclareMathSymbol\upkappa{\mathord}{lucmathupright}{20}
+\DeclareMathSymbol\uplambda{\mathord}{lucmathupright}{21}
+\DeclareMathSymbol\upmu{\mathord}{lucmathupright}{22}
+\DeclareMathSymbol\upnu{\mathord}{lucmathupright}{23}
+\DeclareMathSymbol\upomega{\mathord}{lucmathupright}{33}
+\DeclareMathSymbol\upphi{\mathord}{lucmathupright}{30}
+\DeclareMathSymbol\uppi{\mathord}{lucmathupright}{25}
+\DeclareMathSymbol\uppsi{\mathord}{lucmathupright}{32}
+\DeclareMathSymbol\uprho{\mathord}{lucmathupright}{26}
+\DeclareMathSymbol\upsigma{\mathord}{lucmathupright}{27}
+\DeclareMathSymbol\upslopeellipsis{0}{lucarrows}{21}% unicode 22F0
+\DeclareMathSymbol\uptau{\mathord}{lucmathupright}{28}
+\DeclareMathSymbol\uptheta{\mathord}{lucmathupright}{18}
+\DeclareMathSymbol\upupsilon{\mathord}{lucmathupright}{29}
+\DeclareMathSymbol\upvarepsilon{\mathord}{lucmathupright}{34}
+\DeclareMathSymbol\upxi{\mathord}{lucmathupright}{24}
+\DeclareMathSymbol\upzeta{\mathord}{lucmathupright}{16}
+\DeclareMathSymbol\urcorn{0}{lucarrows}{92}
+\DeclareMathSymbol\vDash{\mathrel}{lucsymbols}{238}
+\DeclareMathSymbol\verymuchgreater{\mathrel}{lucletters}{223}% % unicode 22D9
+\DeclareMathSymbol\verymuchless{\mathrel}{lucletters}{222}% % unicode 22D8
+\DeclareMathSymbol\volintegral{0}{lucletters}{140}% % unicode 2230
+\DeclareMathSymbol\zutdot{0}{lucarrows}{21}
+}{%
+\def\textGamma{\UnavailableSymbol{textGamma}}
+\def\textDelta{\UnavailableSymbol{textDelta}}
+\def\textTheta{\UnavailableSymbol{textTheta}}
+\def\textLambda{\UnavailableSymbol{textLambda}}
+\def\textXi{\UnavailableSymbol{textXi}}
+\def\textPi{\UnavailableSymbol{textPi}}
+\def\textSigma{\UnavailableSymbol{textSigma}}
+\def\textUpsilon{\UnavailableSymbol{textUpsilon}}
+\def\textPhi{\UnavailableSymbol{textPhi}}
+\def\textPsi{\UnavailableSymbol{textPsi}}
+\def\textOmega{\UnavailableSymbol{textOmega}}
+\def\textalpha{\UnavailableSymbol{textalpha}}
+\def\textbeta{\UnavailableSymbol{textbeta}}
+\def\textgamma{\UnavailableSymbol{textgamma}}
+\def\textdelta{\UnavailableSymbol{textdelta}}
+\def\textepsilon{\UnavailableSymbol{textepsilon}}
+\def\textzeta{\UnavailableSymbol{textzeta}}
+\def\texteta{\UnavailableSymbol{texteta}}
+\def\texttheta{\UnavailableSymbol{texttheta}}
+\def\textiota{\UnavailableSymbol{textiota}}
+\def\textkappa{\UnavailableSymbol{textkappa}}
+\def\textlambda{\UnavailableSymbol{textlambda}}
+\def\textmu{\UnavailableSymbol{textmu}}
+\def\textnu{\UnavailableSymbol{textnu}}
+\def\textxi{\UnavailableSymbol{textxi}}
+\def\textpi{\UnavailableSymbol{textpi}}
+\def\textrho{\UnavailableSymbol{textrho}}
+\def\textsigma{\UnavailableSymbol{textsigma}}
+\def\texttau{\UnavailableSymbol{texttau}}
+\def\textupsilon{\UnavailableSymbol{textupsilon}}
+\def\textphi{\UnavailableSymbol{textphi}}
+\def\textchi{\UnavailableSymbol{textchi}}
+\def\textpsi{\UnavailableSymbol{textpsi}}
+\def\textomega{\UnavailableSymbol{textomega}}
+\def\textvarepsilon{\UnavailableSymbol{textvarepsilon}}
+\def\textvarGamma{\UnavailableSymbol{textvarGamma}}
+\def\textvarDelta{\UnavailableSymbol{textvarDelta}}
+\def\textvarTheta{\UnavailableSymbol{textvarTheta}}
+\def\textvarLambda{\UnavailableSymbol{textvarLambda}}
+\def\textvarXi{\UnavailableSymbol{textvarXi}}
+\def\textvarPi{\UnavailableSymbol{textvarPi}}
+\def\textvarSigma{\UnavailableSymbol{textvarSigma}}
+\def\textvarUpsilon{\UnavailableSymbol{textvarUpsilon}}
+\def\textvarPhi{\UnavailableSymbol{textvarPhi}}
+\def\textvarPsi{\UnavailableSymbol{textvarPsi}}
+\def\textvarOmega{\UnavailableSymbol{textvarOmega}}
+\def\textvarkappa{\UnavailableSymbol{textvarkappa}}
+\def\textvartheta{\UnavailableSymbol{textvartheta}}
+\def\textvarpi{\UnavailableSymbol{textvarpi}}
+\def\textvarrho{\UnavailableSymbol{textvarrho}}
+\def\textvarsigma{\UnavailableSymbol{textvarsigma}}
+\def\textvarphi{\UnavailableSymbol{textvarphi}}
+\def\Colon{\UnavailableSymbol{Colon}}
+\def\VDash{\UnavailableSymbol{VDash}}
+\def\allequal{\UnavailableSymbol{allequal}}
+\def\apid{\UnavailableSymbol{apid}}
+\def\approxnotequal{\UnavailableSymbol{approxnotequal}}
+\def\arrowwaveleft{\UnavailableSymbol{arrowwaveleft}}
+\def\arrowwaveright{\UnavailableSymbol{arrowwaveright}}
+\def\blackcircle{\UnavailableSymbol{blackcircle}}
+\def\clwintegral{\UnavailableSymbol{clwintegral}}
+\def\colone{\UnavailableSymbol{colone}}
+\def\dblarrowupdown{\UnavailableSymbol{dblarrowupdown}}
+\def\dlcorn{\UnavailableSymbol{dlcorn}}
+\def\downslopeellipsis{\UnavailableSymbol{downslopeellipsis}}
+\def\drcorn{\UnavailableSymbol{drcorn}}
+\def\estimates{\UnavailableSymbol{estimates}}
+\def\eth{\UnavailableSymbol{eth}}
+\def\forcesextra{\UnavailableSymbol{forcesextra}}
+\def\greaterequivlnt{\UnavailableSymbol{greaterequivlnt}}
+\def\hermitconjmatrix{\UnavailableSymbol{hermitconjmatrix}}
+\def\homothetic{\UnavailableSymbol{homothetic}}
+\def\image{\UnavailableSymbol{image}}
+\def\lazysinv{\UnavailableSymbol{lazysinv}}
+\def\lessequivlnt{\UnavailableSymbol{lessequivlnt}}
+\def\notgreaterless{\UnavailableSymbol{notgreaterless}}
+\def\notlessgreater{\UnavailableSymbol{notlessgreater}}
+\def\openbracketleft{\UnavailableSymbol{openbracketleft}}
+\def\openbracketright{\UnavailableSymbol{openbracketright}}
+\def\original{\UnavailableSymbol{original}}
+\def\perspcorrespond{\UnavailableSymbol{perspcorrespond}}
+\def\precedesnotsimilar{\UnavailableSymbol{precedesnotsimilar}}
+\def\rightangle{\UnavailableSymbol{rightangle}}
+\def\rightanglearc{\UnavailableSymbol{rightanglearc}}
+\def\starequal{\UnavailableSymbol{starequal}}
+\def\surfintegral{\UnavailableSymbol{surfintegral}}
+\def\tildetrpl{\UnavailableSymbol{tildetrpl}}
+\def\truestate{\UnavailableSymbol{truestate}}
+\def\ulcorn{\UnavailableSymbol{ulcorn}}
+\def\upalpha{\UnavailableSymbol{upalpha}}
+\def\upbeta{\UnavailableSymbol{upbeta}}
+\def\upchi{\UnavailableSymbol{upchi}}
+\def\updelta{\UnavailableSymbol{updelta}}
+\def\upepsilon{\UnavailableSymbol{upepsilon}}
+\def\upeta{\UnavailableSymbol{upeta}}
+\def\upgamma{\UnavailableSymbol{upgamma}}
+\def\upiota{\UnavailableSymbol{upiota}}
+\def\upkappa{\UnavailableSymbol{upkappa}}
+\def\uplambda{\UnavailableSymbol{uplambda}}
+\def\upmu{\UnavailableSymbol{upmu}}
+\def\upnu{\UnavailableSymbol{upnu}}
+\def\upomega{\UnavailableSymbol{upomega}}
+\def\upphi{\UnavailableSymbol{upphi}}
+\def\uppi{\UnavailableSymbol{uppi}}
+\def\uppsi{\UnavailableSymbol{uppsi}}
+\def\uprho{\UnavailableSymbol{uprho}}
+\def\upsigma{\UnavailableSymbol{upsigma}}
+\def\upslopeellipsis{\UnavailableSymbol{upslopeellipsis}}
+\def\uptau{\UnavailableSymbol{uptau}}
+\def\uptheta{\UnavailableSymbol{uptheta}}
+\def\upupsilon{\UnavailableSymbol{upupsilon}}
+\def\upvarepsilon{\UnavailableSymbol{upvarepsilon}}
+\def\upxi{\UnavailableSymbol{upxi}}
+\def\upzeta{\UnavailableSymbol{upzeta}}
+\def\urcorn{\UnavailableSymbol{urcorn}}
+\def\vDash{\UnavailableSymbol{vDash}}
+\def\verymuchgreater{\UnavailableSymbol{verymuchgreater}}
+\def\verymuchless{\UnavailableSymbol{verymuchless}}
+\def\volintegral{\UnavailableSymbol{volintegral}}
+\def\zutdot{\UnavailableSymbol{zutdot}}
+}
+
+%
+% the Omega fonts
+%
+\DeclareFontEncoding{LECO}{}{}
+\DeclareFontEncoding{LECX}{}{}
+\DeclareFontEncoding{LECY}{}{}
+\DeclareFontEncoding{LEGR}{}{}
+\DeclareFontEncoding{LEHA}{}{}
+\DeclareFontEncoding{LEIP}{}{}
+\DeclareFontEncoding{LELA}{}{}
+\DeclareFontEncoding{LETI}{}{}
+\DeclareFontFamily{LECO}{omseco}{}
+\DeclareFontFamily{LECX}{omsecx}{}
+\DeclareFontFamily{LECY}{omsecy}{}
+\DeclareFontFamily{LEGR}{omsegr}{}
+\DeclareFontFamily{LEHA}{omseha}{}
+\DeclareFontFamily{LEIP}{omseip}{}
+\DeclareFontFamily{LELA}{omsela}{}
+\DeclareFontFamily{LETI}{omseti}{}
+\DeclareFontSubstitution{LECO}{omseco}{m}{n}
+\DeclareFontSubstitution{LECX}{omsecx}{m}{n}
+\DeclareFontSubstitution{LECY}{omsecy}{m}{n}
+\DeclareFontSubstitution{LEGR}{omsegr}{m}{n}
+\DeclareFontSubstitution{LEHA}{omseha}{m}{n}
+\DeclareFontSubstitution{LEIP}{omseip}{m}{n}
+\DeclareFontSubstitution{LELA}{omsela}{m}{n}
+\DeclareFontSubstitution{LETI}{omseti}{m}{n}
+\DeclareFontShape{LECO}{omseco}{m}{n}{<->omseco}{}
+\DeclareFontShape{LECX}{omsecx}{m}{n}{<->omsecx}{}
+\DeclareFontShape{LECY}{omsecy}{m}{n}{<->omsecy}{}
+\DeclareFontShape{LEGR}{omsegr}{m}{n}{<->omsegr}{}
+\DeclareFontShape{LEHA}{omseha}{m}{n}{<->omseha}{}
+\DeclareFontShape{LEIP}{omseip}{m}{n}{<->omseip}{}
+\DeclareFontShape{LELA}{omsela}{m}{n}{<->omsela}{}
+\DeclareFontShape{LETI}{omseti}{m}{n}{<->omseti}{}
+% other funny font setups
+
+\DeclareFontFamily{U}{euf}{}%
+\DeclareFontShape{U}{euf}{m}{n}{<-6>eufm5<6-8>eufm7<8->eufm10}{}%
+\DeclareFontShape{U}{euf}{b}{n}{<-6>eufb5<6-8>eufb7<8->eufb10}{}%
+
+
+\endinput
+F6E6 218 bbold a
+
+stmary 65 = 101 = E3/UE344
+stmary 66 = 102 = E3/UE343
+\expandafter\def\csname UE244\endcsname{msam/32}
+\expandafter\def\csname UE232\endcsname{msam/75}
+\expandafter\def\csname UE233\endcsname{msam/76}
+\expandafter\def\csname UE847\endcsname{msam/95}
+\expandafter\def\csname UE817\endcsname{msbm/30}
+\expandafter\def\csname UE816\endcsname{msbm/31}
+\expandafter\def\csname UE81C\endcsname{msbm/97}
+\expandafter\def\csname UE364\endcsname{mtmi/102}
+\expandafter\def\csname UE629\endcsname{mtmi/15}
+\expandafter\def\csname UE256\endcsname{mtsyn/10}
+\expandafter\def\csname UE254\endcsname{mtsyn/12}
+\expandafter\def\csname U2661\endcsname{mtsyn/126}
+\expandafter\def\csname UE809\endcsname{mtsyn/2}
+\expandafter\def\csname UE36A\endcsname{mtsyn/3}
+\expandafter\def\csname U220A\endcsname{mtsyn/50}
+\expandafter\def\csname U220D\endcsname{mtsyn/51}
+\expandafter\def\csname UE255\endcsname{mtsyn/8}
+