Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git

Removed unit test and unused TeX code

AuthorDaveJarvis <email>
Date2020-09-12 11:43:59 GMT-0700
Commit11f3591616e0f3884ec7f550dc327a416ffde0c8
Parent5e4723f
Delta991 lines added, 8482 lines removed, 7491-line decrease
tex/texmml.xml
-<?xml version="1.0" encoding="utf-8"?>
-
-<pat:tex2mmlmap xmlns:pat="http://www.orcca.on.ca/mathml/tex2mml.xml" xmlns="http://www.w3.org/1998/Math/MathML" version="0.13">
-
-
-
-<!-- ========================================================================== -->
-
-<!-- NOTE: the precedences only have effect when translating from TeX to MathML -->
-
-<!-- NOTE: direct use of <, & and " or ' is not legal in XML; use entities instead -->
-
-<!-- NOTE: <pat:mml> has implied <mrow>, so <mrow> does not have to be added explicitly -->
-
-
-
-<!-- =================== Approximated characters ==================== -->
-
-<!-- \shortmid \shortparallel \smallsetminus \jmath \longrightarrow \scshape
- \lgroup \rgroup \arrowvert \Arrowvert \bracevert \leftarrowfill \rightarrowfill \mspace
--->
-
-
-
-<!-- =========================== TO DO ============================== -->
-
-<!-- \above \abovewithdelims \penalty -->
-
-
-
-<!-- ************************************************************************* -->
-<!-- *** The following are mappings of TEX macros/symbols to MathML markup *** -->
-<!-- ************************************************************************* -->
-
-
-<!-- Matrices & Arrays -->
-
-<pat:template>
- <pat:tex op="\begin" params="{matrix} \patREP+{\patVAR+{firstCol}\patREP*{&amp;\patVAR+{rest}}\\} \end{matrix}"/>
- <pat:mml op="mtable">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{smallmatrix} \patREP+{\patVAR+{firstCol}\patREP*{&amp;\patVAR+{rest}}\\} \end{smallmatrix}"/>
- <pat:mml op="mtable">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\matrix" params="{\patREP+{\patVAR+{firstCol}\patREP*{&amp;\patVAR+{rest}}\cr}}"/>
- <pat:mml op="mtable">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{pmatrix} \patREP+{\patVAR+{firstCol}\patREP*{&amp;\patVAR+{rest}}\\} \end{pmatrix}"/>
- <pat:mml op="mtable">
- <mfenced separators="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\pmatrix" params="{\patREP+{\patVAR+{firstCol}\patREP*{&amp;\patVAR+{rest}}\cr}}"/>
- <pat:mml op="mtable">
- <mfenced separators="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{bmatrix} \patREP+{\patVAR+{firstCol}\patREP*{&amp;\patVAR+{rest}}\\} \end{bmatrix}"/>
- <pat:mml op="mtable">
- <mfenced open="[" close="]" separators="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{Bmatrix} \patREP+{\patVAR+{firstCol}\patREP*{&amp;\patVAR+{rest}}\\} \end{Bmatrix}"/>
- <pat:mml op="mtable">
- <mfenced open="{" close="}" separators="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{vmatrix} \patREP+{\patVAR+{firstCol}\patREP*{&amp;\patVAR+{rest}}\\} \end{vmatrix}"/>
- <pat:mml op="mtable">
- <mfenced open="&#x2223;" close="&#x2223;" separators="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{Vmatrix} \patREP+{\patVAR+{firstCol}\patREP*{&amp;\patVAR+{rest}}\\} \end{Vmatrix}"/>
- <pat:mml op="mtable">
- <mfenced open="&#x2225;" close="&#x2225;" separators="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-
-
-<pat:template>
- <pat:tex op="\begin" params="{array} [\patREP*{\patVAR!{valign}}] {\patREP*{\patVAR!{hjust}}} \patREP*{\patVAR*{firstCol}\patREP*{&amp;\patVAR*{rest}}\\} \end{array}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <pat:variable name="valign" attribute="align" map="t=top b=bottom"/>
- </pat:rep>
- <pat:rep>
- <pat:variable name="hjust" attribute="columnalign" map="l=left c=center r=right"/>
- </pat:rep>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{array} {\patREP*{\patVAR!{hjust}}} \patREP*{\patVAR*{firstCol}\patREP*{&amp;\patVAR*{rest}}\\} \end{array}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <pat:variable name="hjust" attribute="columnalign" map="l=left c=center r=right"/>
- </pat:rep>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Equations -->
-
-<pat:template>
- <pat:tex op="\begin" params="{equation} \patVAR*{eqn} \end{equation}"/>
- <pat:mml op="">
- <pat:variable name="eqn"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{equation*} \patVAR*{eqn} \end{equation*}"/>
- <pat:mml op="">
- <pat:variable name="eqn"/>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{multline} \patVAR*{first} \\ \patREP*{\patVAR*{mid} \\} \patVAR*{last} \end{multline}"/>
- <pat:mml op="">
- <mtable>
- <mtr columnalign="left">
- <mtd> <pat:variable name="first"/> </mtd>
- </mtr>
- <pat:rep>
- <mtr columnalign="center">
- <mtd> <pat:variable name="mid"/> </mtd>
- </mtr>
- </pat:rep>
- <mtr columnalign="right">
- <mtd> <pat:variable name="last"/> </mtd>
- </mtr>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{multline} \patVAR*{first} \\ \end{multline}"/>
- <pat:mml op="">
- <mtable>
- <mtr columnalign="left">
- <mtd> <pat:variable name="first"/> </mtd>
- </mtr>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{multline*} \patVAR*{first} \\ \patREP*{\patVAR*{mid} \\} \patVAR*{last} \end{multline*}"/>
- <pat:mml op="">
- <mtable>
- <mtr columnalign="left">
- <mtd> <pat:variable name="first"/> </mtd>
- </mtr>
- <pat:rep>
- <mtr columnalign="center">
- <mtd> <pat:variable name="mid"/> </mtd>
- </mtr>
- </pat:rep>
- <mtr columnalign="right">
- <mtd> <pat:variable name="last"/> </mtd>
- </mtr>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{multline*} \patVAR*{first} \\ \end{multline*}"/>
- <pat:mml op="">
- <mtable>
- <mtr columnalign="left">
- <mtd> <pat:variable name="first"/> </mtd>
- </mtr>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{split} \patREP+{\patVAR*{firstCol}\patREP*{&amp;\patVAR*{rest}}\\} \end{split}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr columnalign="right">
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd columnalign="left"> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{eqnarray*} \patREP+{\patVAR*{left} &amp; \patVAR*{mid} &amp; \patVAR*{right} \\} \end{eqnarray*}"/>
- <pat:mml op="">
- <mtable columnalign="right center left">
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="left"/> </mtd>
- <mtd> <pat:variable name="mid"/> </mtd>
- <mtd> <pat:variable name="right"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{eqnarray*} \patVAR*{first} \end{eqnarray*}"/>
- <pat:mml op="">
- <mtable columnalign="left">
- <mtr>
- <mtd> <pat:variable name="first"/> </mtd>
- </mtr>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{eqnarray} \patREP+{\patVAR*{left} &amp; \patVAR*{mid} &amp; \patVAR*{right} \\} \end{eqnarray}"/>
- <pat:mml op="">
- <mtable columnalign="right center left">
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="left"/> </mtd>
- <mtd> <pat:variable name="mid"/> </mtd>
- <mtd> <pat:variable name="right"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{eqnarray} \patVAR*{first} \end{eqnarray}"/>
- <pat:mml op="">
- <mtable columnalign="left">
- <mtr>
- <mtd> <pat:variable name="first"/> </mtd>
- </mtr>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\eqalign" params="{\patREP+{\patVAR*{left}&amp;\patVAR*{right}\cr}}"/>
- <pat:mml op="">
- <mtable columnspacing="2em">
- <pat:rep>
- <mtr>
- <mtd columnalign="right"> <pat:variable name="left"/> </mtd>
- <mtd columnalign="left"> <pat:variable name="right"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\eqno" params="\patVAR+{tag}"/>
- <pat:mml op="">
- <pat:variable name="tag"/>
- <mspace linebreak="newline"/>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Tables and other table-like environments -->
-
-<pat:template>
- <pat:tex op="\begin" params="{tabular} [\patREP+{\patVAR!{valign}}] {\patREP*{\patVAR!{hjust}}} \patREP*{\patVAR*{firstCol}\patREP*{&amp;\patVAR*{rest}}\\} \end{tabular}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <pat:variable name="valign" attribute="align" map="t=top b=bottom"/>
- </pat:rep>
- <pat:rep>
- <pat:variable name="hjust" attribute="columnalign" map="l=left c=center r=right"/>
- </pat:rep>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{tabular} {\patREP*{\patVAR!{hjust}}} \patREP*{\patVAR*{firstCol}\patREP*{&amp;\patVAR*{rest}}\\} \end{tabular}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <pat:variable name="hjust" attribute="columnalign" map="l=left c=center r=right"/>
- </pat:rep>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{align} \patREP*{\patVAR*{beg}&amp;\patVAR*{end}\\} \end{align}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd columnalign="right"> <pat:variable name="beg"/> </mtd>
- <mtd columnalign="left"> <pat:variable name="end"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{align*} \patREP*{\patVAR*{beg}&amp;\patVAR*{end}\\} \end{align*}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd columnalign="right"> <pat:variable name="beg"/> </mtd>
- <mtd columnalign="left"> <pat:variable name="end"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{gather} \patREP+{\patVAR*{line}\\} \end{gather}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="line"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{gather*} \patREP+{\patVAR*{line}\\} \end{gather*}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="line"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{aligned} [\patREP+{\patVAR!{valign}}] \patREP*{\patVAR*{beg}&amp;\patVAR*{end}\\} \end{aligned}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <pat:variable name="valign" attribute="align" map="t=top b=bottom"/>
- </pat:rep>
- <pat:rep>
- <mtr>
- <mtd columnalign="right"> <pat:variable name="beg"/> </mtd>
- <mtd columnalign="left"> <pat:variable name="end"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{aligned} \patREP*{\patVAR*{beg}&amp;\patVAR*{end}\\} \end{aligned}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd columnalign="right"> <pat:variable name="beg"/> </mtd>
- <mtd columnalign="left"> <pat:variable name="end"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{gathered} [\patREP+{\patVAR!{valign}}] \patREP*{\patVAR*{line}\\} \end{gathered}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <pat:variable name="valign" attribute="align" map="t=top b=bottom"/>
- </pat:rep>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="line"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{gathered} \patREP*{\patVAR*{line}\\} \end{gathered}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="line"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{alignat} {\patVAR+{num}} \patREP*{\patVAR*{beg}&amp;\patVAR*{end}\\} \end{alignat}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd columnalign="right"> <pat:variable name="beg"/> </mtd>
- <mtd columnalign="left"> <pat:variable name="end"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{alignat*} {\patVAR+{num}} \patREP*{\patVAR*{beg}&amp;\patVAR*{end}\\} \end{alignat*}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd columnalign="right"> <pat:variable name="beg"/> </mtd>
- <mtd columnalign="left"> <pat:variable name="end"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{falign} \patREP*{\patVAR*{beg}&amp;\patVAR*{end}\\} \end{falign}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd columnalign="right"> <pat:variable name="beg"/> </mtd>
- <mtd columnalign="left"> <pat:variable name="end"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{falign*} \patREP*{\patVAR*{beg}&amp;\patVAR*{end}\\} \end{falign*}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd columnalign="right"> <pat:variable name="beg"/> </mtd>
- <mtd columnalign="left"> <pat:variable name="end"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{center} \patREP*{\patVAR*{line}\\} \end{center}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="line"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{cases} \patREP+{\patVAR+{firstCol} &amp; \patVAR+{rest} \\} \end{cases}"/>
- <pat:mml op="mtable">
- <mrow>
- <mo stretchy="true"> { </mo>
- <mtable columnalign="left" columnspacing="2em">
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <mtd> <pat:variable name="rest"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </mrow>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cases" params="{\patREP+{\patVAR+{firstCol}&amp;\patVAR+{rest}\cr}}"/>
- <pat:mml op="mtable">
- <mrow>
- <mo stretchy="true"> { </mo>
- <mtable columnalign="left" columnspacing="2em">
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <mtd> <pat:variable name="rest"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </mrow>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cases" params="{\patREP*{\patVAR*{firstCase}&amp;\patVAR*{firstCond}\cr} \patVAR*{lastCase}&amp;\patVAR*{lastCond}}"/>
- <pat:mml op="mtable">
- <mrow>
- <mo stretchy="true"> { </mo>
- <mtable columnalign="left" columnspacing="2em">
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCase"/> </mtd>
- <mtd> <pat:variable name="firstCond"/> </mtd>
- </mtr>
- </pat:rep>
- <mtr>
- <mtd> <pat:variable name="lastCase"/> </mtd>
- <mtd> <pat:variable name="lastCond"/> </mtd>
- </mtr>
- </mtable>
- </mrow>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\begin" params="{description} \patREP*{\item[\patVAR*{item}] \patVAR*{desc}} \end{description}"/>
- <pat:mml op="">
- <mtable columnalign="left">
- <pat:rep>
- <mtr>
- <mtd>
- <mstyle mathvariant="bold">
- <pat:variable name="item"/>
- </mstyle>
- </mtd>
- <mtd> <pat:variable name="desc"/> </mtd>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-
-
-<pat:template>
- <pat:tex op="" params="\patVAR+{a}"/>
- <pat:mml op="mtd">
- <mtd> <pat:variable name="a"/> </mtd>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Quotes -->
-
-<pat:template>
- <pat:tex op="'" params="'"/>
- <pat:mml op="">
- <mo> &quot; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="`" params="`"/>
- <pat:mml op="">
- <mo> &quot; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="&quot;"/>
- <pat:mml op="">
- <mo> &quot; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Brackets -->
-
-<pat:template>
- <pat:tex op="\|"/>
- <pat:mml op="&#x2225;">
- <mo> &#x2225; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Vert"/>
- <pat:mml op="&#x2225;">
- <mo> &#x2225; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="|"/>
- <pat:mml op="&#x2223;">
- <mo> &#x2223; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vert"/>
- <pat:mml op="&#x2223;">
- <mo> &#x2223; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="("/>
- <pat:mml op="(">
- <mo> ( </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="["/>
- <pat:mml op="[">
- <mo> [ </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lbrack"/>
- <pat:mml op="[">
- <mo> [ </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\{"/>
- <pat:mml op="{">
- <mo> { </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lbrace"/>
- <pat:mml op="{">
- <mo> { </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="&lt;"/>
- <pat:mml op="&lt;">
- <mo> &lt; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="/"/>
- <pat:mml op="/">
- <mo> / </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lfloor"/>
- <pat:mml op="&#x230A;">
- <mo> &#x230A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lceil"/>
- <pat:mml op="&#x2308;">
- <mo> &#x2308; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\langle"/> <!-- 27E8 U3.2 -->
- <pat:mml op="&#x2329;">
- <mo> &#x2329; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lgroup"/>
- <pat:mml op="">
- <mo> ( </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<pat:template>
- <pat:tex op=")"/>
- <pat:mml op=")">
- <mo> ) </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="]"/>
- <pat:mml op="]">
- <mo> ] </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rbrack"/>
- <pat:mml op="]">
- <mo> ] </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\}"/>
- <pat:mml op="}">
- <mo> } </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rbrace"/>
- <pat:mml op="}">
- <mo> } </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="&gt;"/>
- <pat:mml op="&gt;">
- <mo> &gt; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\backslash"/>
- <pat:mml op="\">
- <mo> \ </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rfloor"/>
- <pat:mml op="&#x230B;">
- <mo> &#x230B; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rceil"/>
- <pat:mml op="&#x2309;">
- <mo> &#x2309; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rangle"/> <!-- 27E9 U3.2 -->
- <pat:mml op="&#x232A;">
- <mo> &#x232A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rgroup"/>
- <pat:mml op="">
- <mo> ) </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\uparrow"/>
- <pat:mml op="&#x2191;">
- <mo> &#x2191; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Uparrow"/>
- <pat:mml op="&#x21D1;">
- <mo> &#x21D1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\downarrow"/>
- <pat:mml op="&#x2193;">
- <mo> &#x2193; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Downarrow"/>
- <pat:mml op="&#x21D3;">
- <mo> &#x21D3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\updownarrow"/>
- <pat:mml op="&#x21C5;">
- <mo> &#x21C5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Updownarrow"/>
- <pat:mml op="&#x21D5;">
- <mo> &#x21D5; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Arrows -->
-
-<pat:template>
- <pat:tex op="\leftarrow"/>
- <pat:mml op="&#x2190;">
- <mo> &#x2190; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gets"/>
- <pat:mml op="&#x2190;">
- <mo> &#x2190; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Leftarrow"/>
- <pat:mml op="&#x21D0;">
- <mo> &#x21D0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightarrow"/>
- <pat:mml op="&#x2192;">
- <mo> &#x2192; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\to"/>
- <pat:mml op="&#x2192;">
- <mo> &#x2192; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Rightarrow"/>
- <pat:mml op="&#x21D2;">
- <mo> &#x21D2; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftrightarrow"/>
- <pat:mml op="&#x21C6;">
- <mo> &#x21C6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Leftrightarrow"/>
- <pat:mml op="&#x21D4;">
- <mo> &#x21D4; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mapsto"/>
- <pat:mml op="&#x21A6;">
- <mo> &#x21A6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hookleftarrow"/>
- <pat:mml op="&#x21A9;">
- <mo> &#x21A9; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftharpoonup"/>
- <pat:mml op="&#x21BC;">
- <mo> &#x21BC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftharpoondown"/>
- <pat:mml op="&#x21BD;">
- <mo> &#x21BD; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightleftharpoons"/>
- <pat:mml op="&#x21CC;">
- <mo> &#x21CC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\longleftarrow"/>
- <pat:mml op="&#x2190;">
- <mo> &#x2190; </mo> <!-- Should be 27F5 -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Longleftarrow"/>
- <pat:mml op="&#x21D0;">
- <mo> &#x21D0; </mo> <!-- Should be 27F8 -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\longrightarrow"/>
- <pat:mml op="&#x2192;">
- <mo> &#x2192; </mo> <!-- Should be 27F6 -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Longrightarrow"/>
- <pat:mml op="&#x21D2;">
- <mo> &#x21D2; </mo> <!-- Should be 27F9 -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\longleftrightarrow"/>
- <pat:mml op="&#x2194;">
- <mo> &#x2194; </mo> <!-- Should be 27F7 -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Longleftrightarrow"/>
- <pat:mml op="&#x21D4;">
- <mo> &#x21D4; </mo> <!-- Should be 27FA -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\longmapsto"/>
- <pat:mml op="&#x21A6;">
- <mo> &#x21A6; </mo> <!-- Should be 27FC -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leadsto"/>
- <pat:mml op="&#x21DD;">
- <mo> &#x21DD; </mo> <!-- Should be 27FF -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hookrightarrow"/>
- <pat:mml op="&#x21AA;">
- <mo> &#x21AA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightharpoonup"/>
- <pat:mml op="&#x21C0;">
- <mo> &#x21C0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightharpoondown"/>
- <pat:mml op="&#x21C1;">
- <mo> &#x21C1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nearrow"/>
- <pat:mml op="&#x2197;">
- <mo> &#x2197; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\searrow"/>
- <pat:mml op="&#x2198;">
- <mo> &#x2198; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\swarrow"/>
- <pat:mml op="&#x2199;">
- <mo> &#x2199; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nwarrow"/>
- <pat:mml op="&#x2196;">
- <mo> &#x2196; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\arrowvert"/>
- <pat:mml op="">
- <mo> &#x2223; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Arrowvert"/>
- <pat:mml op="">
- <mo> &#x2225; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bracevert"/>
- <pat:mml op="">
- <mo mathvariant="bold"> &#x2223; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lmoustache"/>
- <pat:mml op="">
- <mo> &#x23B0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rmoustache"/>
- <pat:mml op="">
- <mo> &#x23B1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftarrowfill"/>
- <pat:mml op="">
- <mo stretchy="true"> &#x2190; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightarrowfill"/>
- <pat:mml op="">
- <mo stretchy="true"> &#x2192; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iff"/>
- <pat:mml op="">
- <mo> &#x21D4; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- AMS arrows -->
-
-<pat:template>
- <pat:tex op="\dashrightarrow"/>
- <pat:mml op="&#x21E2;">
- <mo> &#x21E2; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dashleftarrow"/>
- <pat:mml op="&#x21E0;">
- <mo> &#x21E0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftleftarrows"/>
- <pat:mml op="&#x21C7;">
- <mo> &#x21C7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftrightarrows"/>
- <pat:mml op="&#x21C6;">
- <mo> &#x21C6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Lleftarrow"/>
- <pat:mml op="&#x21DA;">
- <mo> &#x21DA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\twoheadleftarrow"/>
- <pat:mml op="&#x219E;">
- <mo> &#x219E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftarrowtail"/>
- <pat:mml op="&#x21A2;">
- <mo> &#x21A2; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\looparrowleft"/>
- <pat:mml op="&#x21AB;">
- <mo> &#x21AB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftrightharpoons"/>
- <pat:mml op="&#x21CB;">
- <mo> &#x21CB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\curvearrowleft"/>
- <pat:mml op="&#x21B6;">
- <mo> &#x21B6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\circlearrowleft"/>
- <pat:mml op="&#x21BA;">
- <mo> &#x21BA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Lsh"/>
- <pat:mml op="&#x21B0;">
- <mo> &#x21B0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\upuparrows"/>
- <pat:mml op="&#x21C8;">
- <mo> &#x21C8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\upharpoonleft"/>
- <pat:mml op="&#x21BF;">
- <mo> &#x21BF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\downharpoonleft"/>
- <pat:mml op="&#x21C3;">
- <mo> &#x21C3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\multimap"/>
- <pat:mml op="&#x22B8;">
- <mo> &#x22B8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftrightsquigarrow"/>
- <pat:mml op="&#x21AD;">
- <mo> &#x21AD; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightrightarrows"/>
- <pat:mml op="&#x21C9;">
- <mo> &#x21C9; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightleftarrows"/>
- <pat:mml op="&#x21C4;">
- <mo> &#x21C4; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\twoheadrightarrow"/>
- <pat:mml op="&#x21A0;">
- <mo> &#x21A0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightarrowtail"/>
- <pat:mml op="&#x21A3;">
- <mo> &#x21A3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\looparrowright"/>
- <pat:mml op="&#x21AC;">
- <mo> &#x21AC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightleftharpoons"/>
- <pat:mml op="&#x21CC;">
- <mo> &#x21CC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\curvearrowright"/>
- <pat:mml op="&#x21B7;">
- <mo> &#x21B7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\circlearrowright"/>
- <pat:mml op="&#x21BB;">
- <mo> &#x21BB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Rsh"/>
- <pat:mml op="&#x21B1;">
- <mo> &#x21B1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\downdownarrows"/>
- <pat:mml op="&#x21CA;">
- <mo> &#x21CA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\upharpoonright"/>
- <pat:mml op="&#x21BE;">
- <mo> &#x21BE; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightsquigarrow"/>
- <pat:mml op="&#x21DD;">
- <mo> &#x21DD; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\nleftarrow"/>
- <pat:mml op="&#x219A;">
- <mo> &#x219A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nrightarrow"/>
- <pat:mml op="&#x219B;">
- <mo> &#x219B; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nLeftarrow"/>
- <pat:mml op="&#x21CD;">
- <mo> &#x21CD; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nRightarrow"/>
- <pat:mml op="&#x21CF;">
- <mo> &#x21CF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nleftrightarrow"/>
- <pat:mml op="&#x21AE;">
- <mo> &#x21AE; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nLeftrightarrow"/>
- <pat:mml op="&#x21CE;">
- <mo> &#x21CE; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\xleftarrow" params="[\patVAR*{below}]\patVAR!{above}"/>
- <pat:mml op="">
- <munderover>
- <mo> &#x2190; </mo> <!-- Should be 27F5 -->
- <pat:variable name="below"/>
- <pat:variable name="above"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\xleftarrow" params="\patVAR!{above}"/>
- <pat:mml op="">
- <munderover>
- <mo> &#x2190; </mo> <!-- Should be 27F5 -->
- <mrow/>
- <pat:variable name="above"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\xrightarrow" params="[\patVAR*{below}]\patVAR!{above}"/>
- <pat:mml op="">
- <munderover>
- <mo> &#x2192; </mo> <!-- Should be 27F6 -->
- <pat:variable name="below"/>
- <pat:variable name="above"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\xrightarrow" params="\patVAR!{above}"/>
- <pat:mml op="">
- <munderover>
- <mo> &#x2192; </mo> <!-- Should be 27F6 -->
- <mrow/>
- <pat:variable name="above"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\overleftarrow" params="\patVAR!{expr}"/>
- <pat:mml op="">
- <mover>
- <pat:variable name="expr"/>
- <mo> &#x2190; </mo> <!-- Should be 27F5 -->
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\overrightarrow" params="\patVAR!{expr}"/>
- <pat:mml op="">
- <mover>
- <pat:variable name="expr"/>
- <mo> &#x2192; </mo> <!-- Should be 27F6 -->
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\overleftrightarrow" params="\patVAR!{expr}"/>
- <pat:mml op="">
- <mover>
- <pat:variable name="expr"/>
- <mo> &#x2194; </mo> <!-- Should be 27F7 -->
- </mover>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- AMS binary operation symbols -->
-
-<pat:template>
- <pat:tex op="\dotplus"/>
- <pat:mml op="&#x2214;">
- <mo> &#x2214; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\smallsetminus"/>
- <pat:mml op="">
- <mo> &#x2216; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Cap"/>
- <pat:mml op="&#x22D2;">
- <mo> &#x22D2; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Cup"/>
- <pat:mml op="&#x22D3;">
- <mo> &#x22D3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\barwedge"/>
- <pat:mml op="&#x22BC;">
- <mo> &#x22BC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\doublebarwedge"/>
- <pat:mml op="&#x2306;">
- <mo> &#x2306; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\veebar"/>
- <pat:mml op="&#x22BB;">
- <mo> &#x22BB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\boxminus"/>
- <pat:mml op="&#x229F;">
- <mo> &#x229F; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\boxtimes"/>
- <pat:mml op="&#x22A0;">
- <mo> &#x22A0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\boxdot"/>
- <pat:mml op="&#x22A1;">
- <mo> &#x22A1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\boxplus"/>
- <pat:mml op="&#x229E;">
- <mo> &#x229E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\divideontimes"/>
- <pat:mml op="&#x22C7;">
- <mo> &#x22C7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ltimes"/>
- <pat:mml op="&#x22C9;">
- <mo> &#x22C9; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rtimes"/>
- <pat:mml op="&#x22CA;">
- <mo> &#x22CA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftthreetimes"/>
- <pat:mml op="&#x22CB;">
- <mo> &#x22CB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rightthreetimes"/>
- <pat:mml op="&#x22CC;">
- <mo> &#x22CC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\curlywedge"/>
- <pat:mml op="&#x22CF;">
- <mo> &#x22CF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\curlyvee"/>
- <pat:mml op="&#x22CF;">
- <mo> &#x22CF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\circleddash"/>
- <pat:mml op="&#x229D;">
- <mo> &#x229D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\circledast"/>
- <pat:mml op="&#x229B;">
- <mo> &#x229B; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\circledcirc"/>
- <pat:mml op="&#x229A;">
- <mo> &#x229A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\centerdot"/>
- <pat:mml op="&#x22C5;">
- <mo> &#x22C5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\intercal"/>
- <pat:mml op="&#x22BA;">
- <mo> &#x22BA; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- AMS Greek and Hebrew letters -->
-
-<pat:template>
- <pat:tex op="\digamma"/>
- <pat:mml op="&#x03DC;">
- <mo> &#x03DC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varkappa"/>
- <pat:mml op="&#x03F0;">
- <mo> &#x03F0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\beth"/>
- <pat:mml op="&#x2136;">
- <mo> &#x2136; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\daleth"/>
- <pat:mml op="&#x2138;">
- <mo> &#x2138; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gimel"/>
- <pat:mml op="&#x2137;">
- <mo> &#x2137; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- AMS delimiters -->
-
-<pat:template>
- <pat:tex op="\ulcorner"/>
- <pat:mml op="&#x231C;">
- <mo> &#x231C; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\urcorner"/>
- <pat:mml op="&#x231D;">
- <mo> &#x231D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\llcorner"/>
- <pat:mml op="&#x231E;">
- <mo> &#x231E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lrcorner"/>
- <pat:mml op="&#x231F;">
- <mo> &#x231F; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- AMS relational symbols -->
-
-<pat:template>
- <pat:tex op="\leqq"/>
- <pat:mml op="&#x2266;">
- <mo> &#x2266; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leqslant"/>
- <pat:mml op="">
- <mo> &#x2A7D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\eqslantless"/>
- <pat:mml op="">
- <mo> &#x2A95; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lessapprox"/>
- <pat:mml op="">
- <mo> &#x2A85; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lesssim"/>
- <pat:mml op="&#x2272;">
- <mo> &#x2272; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\approxeq"/>
- <pat:mml op="&#x224A;">
- <mo> &#x224A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lessdot"/>
- <pat:mml op="&#x22D6;">
- <mo> &#x22D6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lll"/>
- <pat:mml op="&#x22D8;">
- <mo> &#x22D8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lessgtr"/>
- <pat:mml op="&#x2276;">
- <mo> &#x2276; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lesseqgtr"/>
- <pat:mml op="&#x22DA;">
- <mo> &#x22DA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lesseqqgtr"/>
- <pat:mml op="">
- <mo> &#x2A8B; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\doteqdot"/>
- <pat:mml op="&#x2251;">
- <mo> &#x2251; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\risingdotseq"/>
- <pat:mml op="&#x2253;">
- <mo> &#x2253; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\fallingdotseq"/>
- <pat:mml op="&#x2252;">
- <mo> &#x2252; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\backsim"/>
- <pat:mml op="&#x223D;">
- <mo> &#x223D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\backsimeq"/>
- <pat:mml op="&#x22CD;">
- <mo> &#x22CD; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\subseteqq"/>
- <pat:mml op="">
- <mo> &#x2AC5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Subset"/>
- <pat:mml op="&#x22D0;">
- <mo> &#x22D0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sqsubset"/>
- <pat:mml op="&#x228F;">
- <mo> &#x228F; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\preccurlyeq"/>
- <pat:mml op="&#x227C;">
- <mo> &#x227C; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\curlyeqprec"/>
- <pat:mml op="&#x22DE;">
- <mo> &#x22DE; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\precsim"/>
- <pat:mml op="&#x227E;">
- <mo> &#x227E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\precapprox"/>
- <pat:mml op="">
- <mo> &#x2AB7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vartriangleleft"/>
- <pat:mml op="&#x22B2;">
- <mo> &#x22B2; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\trianglelefteq"/>
- <pat:mml op="&#x22B4;">
- <mo> &#x22B4; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Vvdash"/>
- <pat:mml op="&#x22AA;">
- <mo> &#x22AA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\smallsmile"/>
- <pat:mml op="&#x2323;">
- <mo> &#x2323; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\smallfrown"/>
- <pat:mml op="&#x2322;">
- <mo> &#x2322; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bumpeq"/>
- <pat:mml op="&#x224F;">
- <mo> &#x224F; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bumpeq"/>
- <pat:mml op="&#x224E;">
- <mo> &#x224E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\geqq"/>
- <pat:mml op="&#x2267;">
- <mo> &#x2267; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\geqslant"/>
- <pat:mml op="">
- <mo> &#x2A7E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\eqslantgtr"/>
- <pat:mml op="">
- <mo> &#x2A96; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\eqslantgtr"/>
- <pat:mml op="">
- <mo> &#x22DD; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gtrsim"/>
- <pat:mml op="&#x2273;">
- <mo> &#x2273; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gtrapprox"/>
- <pat:mml op="">
- <mo> &#x2A86; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gtrdot"/>
- <pat:mml op="&#x22D7;">
- <mo> &#x22D7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ggg"/>
- <pat:mml op="&#x22D9;">
- <mo> &#x22D9; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gtrless"/>
- <pat:mml op="&#x2277;">
- <mo> &#x2277; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gtreqless"/>
- <pat:mml op="&#x22DB;">
- <mo> &#x22DB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gtreqqless"/>
- <pat:mml op="">
- <mo> &#x2A8C; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\eqcirc"/>
- <pat:mml op="&#x2256;">
- <mo> &#x2256; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\circeq"/>
- <pat:mml op="&#x2257;">
- <mo> &#x2257; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\triangleq"/>
- <pat:mml op="&#x225C;">
- <mo> &#x225C; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\thicksim"/>
- <pat:mml op="&#x223C;">
- <mo> &#x223C; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\supseteqq"/>
- <pat:mml op="">
- <mo> &#x2AC6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\thickapprox"/>
- <pat:mml op="&#x2248;">
- <mo> &#x2248; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Supset"/>
- <pat:mml op="&#x22D1;">
- <mo> &#x22D1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sqsupset"/>
- <pat:mml op="&#x2290;">
- <mo> &#x2290; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\succcurlyeq"/>
- <pat:mml op="&#x227D;">
- <mo> &#x227D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\curlyeqsucc"/>
- <pat:mml op="&#x22DF;">
- <mo> &#x22DF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\succsim"/>
- <pat:mml op="&#x227F;">
- <mo> &#x227F; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\succapprox"/>
- <pat:mml op="">
- <mo> &#x2AB8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vartriangleright"/>
- <pat:mml op="&#x22B3;">
- <mo> &#x22B3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\trianglerighteq"/>
- <pat:mml op="&#x22B5;">
- <mo> &#x22B5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Vdash"/>
- <pat:mml op="&#x22A9;">
- <mo> &#x22A9; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\shortmid"/>
- <pat:mml op="">
- <mo> &#x2223; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\shortparallel"/>
- <pat:mml op="">
- <mo> &#x2225; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\between"/>
- <pat:mml op="&#x226C;">
- <mo> &#x226C; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\pitchfork"/>
- <pat:mml op="&#x23D4;">
- <mo> &#x23D4; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varpropto"/>
- <pat:mml op="&#x221D;">
- <mo> &#x221D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\blacktriangleleft"/>
- <pat:mml op="&#x25C0;">
- <mo> &#x25C0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\therefore"/>
- <pat:mml op="&#x2234;">
- <mo> &#x2234; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\backepsilon"/>
- <pat:mml op="&#x220B;">
- <mo> &#x220B; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\blacktriangleright"/>
- <pat:mml op="&#x25B6;">
- <mo> &#x25B6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\because"/>
- <pat:mml op="&#x2235;">
- <mo> &#x2235; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- AMS negated relational symbols -->
-
-<pat:template>
- <pat:tex op="\nless"/>
- <pat:mml op="&#x226E;">
- <mo> &#x226E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nleq"/>
- <pat:mml op="&#x2270;">
- <mo> &#x2270; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lneq"/>
- <pat:mml op="">
- <mo> &#x2A87; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lneqq"/>
- <pat:mml op="&#x2268;">
- <mo> &#x2268; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lnsim"/>
- <pat:mml op="&#x22E6;">
- <mo> &#x22E6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lnapprox"/>
- <pat:mml op="">
- <mo> &#x2A89; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\precnsim"/>
- <pat:mml op="&#x22E8;">
- <mo> &#x22E8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\precnapprox"/>
- <pat:mml op="">
- <mo> &#x2AB9; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nsim"/>
- <pat:mml op="&#x2241;">
- <mo> &#x2241; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nmid"/>
- <pat:mml op="&#x2224;">
- <mo> &#x2224; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nvdash"/>
- <pat:mml op="&#x22AC;">
- <mo> &#x22AC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nvDash"/>
- <pat:mml op="&#x22AD;">
- <mo> &#x22AD; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ntriangleleft"/>
- <pat:mml op="&#x22EA;">
- <mo> &#x22EA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ntrianglelefteq"/>
- <pat:mml op="&#x22EC;">
- <mo> &#x22EC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nsubseteq"/>
- <pat:mml op="&#x2288;">
- <mo> &#x2288; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\subsetneq"/>
- <pat:mml op="&#x228A;">
- <mo> &#x228A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\subsetneqq"/>
- <pat:mml op="">
- <mo> &#x2ACB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ntrianglelefteq"/>
- <pat:mml op="&#x22EC;">
- <mo> &#x22EC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ngtr"/>
- <pat:mml op="&#x226F;">
- <mo> &#x226F; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ngeq"/>
- <pat:mml op="&#x2271;">
- <mo> &#x2271; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gneq"/>
- <pat:mml op="">
- <mo> &#x2A88; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gneqq"/>
- <pat:mml op="&#x2269;">
- <mo> &#x2269; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gnsim"/>
- <pat:mml op="&#x22E7;">
- <mo> &#x22E7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gnapprox"/>
- <pat:mml op="">
- <mo> &#x2A8A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\succnsim"/>
- <pat:mml op="&#x22E9;">
- <mo> &#x22E9; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\succnapprox"/>
- <pat:mml op="">
- <mo> &#x2ABA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ncong"/>
- <pat:mml op="&#x2247;">
- <mo> &#x2247; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nshortparallel"/>
- <pat:mml op="&#x2226;">
- <mo> &#x2226; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nparallel"/>
- <pat:mml op="&#x2226;">
- <mo> &#x2226; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nVDash"/>
- <pat:mml op="&#x22AF;">
- <mo> &#x22AF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ntriangleright"/>
- <pat:mml op="&#x22EB;">
- <mo> &#x22EB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ntrianglerighteq"/>
- <pat:mml op="&#x22ED;">
- <mo> &#x22ED; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nsupseteq"/>
- <pat:mml op="&#x2289;">
- <mo> &#x2289; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nsupseteq"/>
- <pat:mml op="&#x2289;">
- <mo> &#x2289; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\supsetneq"/>
- <pat:mml op="&#x228B;">
- <mo> &#x228B; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\supsetneqq"/>
- <pat:mml op="">
- <mo> &#x2ACC; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Miscellaneous AMS symbols -->
-
-<pat:template>
- <pat:tex op="\hbar"/>
- <pat:mml op="&#x0127;">
- <mo> &#x0127; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hslash"/>
- <pat:mml op="&#x210F;">
- <mo> &#x210F; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vartriangle"/>
- <pat:mml op="&#x25B3;">
- <mo> &#x25B3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\triangledown"/>
- <pat:mml op="&#x25BD;">
- <mo> &#x25BD; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\square"/>
- <pat:mml op="&#x25A1;">
- <mo> &#x25A1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lozenge"/>
- <pat:mml op="&#x25CA;">
- <mo> &#x25CA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\circledS"/>
- <pat:mml op="&#x24C8;">
- <mo> &#x24C8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\measuredangle"/>
- <pat:mml op="&#x2221;">
- <mo> &#x2221; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nexists"/>
- <pat:mml op="&#x2204;">
- <mo> &#x2204; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mho"/>
- <pat:mml op="&#x2127;">
- <mo> &#x2127; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Finv"/>
- <pat:mml op="&#x2132;">
- <mo> &#x2132; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\backprime"/>
- <pat:mml op="&#x2035;">
- <mo> &#x2035; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varnothing"/>
- <pat:mml op="&#x00D8;">
- <mo> &#x00D8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\blacktriangle"/>
- <pat:mml op="&#x25B2;">
- <mo> &#x25B2; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\blacktriangledown"/>
- <pat:mml op="&#x25BC;">
- <mo> &#x25BC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\blacksquare"/>
- <pat:mml op="&#x25A0;">
- <mo> &#x25A0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\blacklozenge"/>
- <pat:mml op="&#x25CA;">
- <mo> &#x25CA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigstar"/>
- <pat:mml op="&#x2605;">
- <mo> &#x2605; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sphericalangle"/>
- <pat:mml op="&#x2222;">
- <mo> &#x2222; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\complement"/>
- <pat:mml op="&#x2201;">
- <mo> &#x2201; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\eth"/>
- <pat:mml op="&#x00F0;">
- <mo> &#x00F0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\qed"/>
- <pat:mml op="&#x25A1;">
- <mo> &#x25A1; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Handlers for parenthesized structures -->
-
-<pat:template>
- <pat:tex op="\left" params=". \patVAR*{expr} \right." prec="154"/>
- <pat:mml op="">
- <pat:variable name="expr"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\left" params="\patVAR!{lDelim} \patVAR*{expr} \right." prec="152"/>
- <pat:mml op="">
- <mfenced separators="" close="">
- <pat:variable name="lDelim" attribute="open"/>
- <pat:variable name="expr"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\left" params=". \patVAR*{expr} \right\patVAR!{rDelim}" prec="152"/>
- <pat:mml op="">
- <mfenced separators="" open="">
- <pat:variable name="expr"/>
- <pat:variable name="rDelim" attribute="close"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\left" params="\patVAR!{lDelim} \patVAR*{expr} \right\patVAR!{rDelim}" prec="150"/>
- <pat:mml op="">
- <mfenced separators="">
- <pat:variable name="lDelim" attribute="open"/>
- <pat:variable name="expr"/>
- <pat:variable name="rDelim" attribute="close"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-
-<!-- Used by MathML to TeX only -->
-
-<!-- {B} -->
-<pat:template>
- <pat:tex op="" params="\left\{ \patVAR*{c} \right\}"/>
- <pat:mml op="mfenced">
- <mfenced open="{" close="}">
- <pat:variable name="c"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- {BsBsT} -->
-<pat:template>
- <pat:tex op="" params="\left\{ \patREP*{\patVAR*{b}\patREP*{\patVAR{~s}}}\patVAR*{t} \right\}"/>
- <pat:mml op="mfenced">
- <mfenced open="{" close="}" separators="rep:variable =~s">
- <pat:rep> <pat:variable name="b"/> </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- {B,B,T} -->
-<pat:template>
- <pat:tex op="" params="\left\{ \patREP*{\patVAR*{b},}\patVAR*{t} \right\}"/>
- <pat:mml op="mfenced">
- <mfenced open="{" close="}">
- <pat:rep> <pat:variable name="b"/> </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- {B \left.C -->
-<pat:template>
- <pat:tex op="" params="\left\{ \patVAR*{b} \right\patVAR!{c}"/>
- <pat:mml op="mfenced">
- <mfenced open="{" close="pat:variable =c">
- <pat:variable name="b"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- {BsBsT \left.C -->
-<pat:template>
- <pat:tex op="" params="\left\{ \patREP*{\patVAR*{b}\patREP*{\patVAR{~s}}}\patVAR*{t} \right\patVAR!{c}"/>
- <pat:mml op="mfenced">
- <mfenced open="{" close="pat:variable =c" separators="rep:variable =~s">
- <pat:rep> <pat:variable name="b"/> </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- {B,B,T \left.C -->
-<pat:template>
- <pat:tex op="" params="\left\{ \patREP*{\patVAR*{b},}\patVAR*{t} \right\patVAR!{c}"/>
- <pat:mml op="mfenced">
- <mfenced open="{" close="pat:variable =c">
- <pat:rep> <pat:variable name="b"/> </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- \right.O B} -->
-<pat:template>
- <pat:tex op="" params="\left \patVAR!{o} \patVAR*{c} \right\}"/>
- <pat:mml op="mfenced">
- <mfenced open="pat:variable =o" close="}">
- <pat:variable name="c"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- \right.O BsBsT}-->
-<pat:template>
- <pat:tex op="" params="\left\patVAR!{o} \patREP*{\patVAR*{b}\patREP*{\patVAR{~s}}}\patVAR{t} \right\}"/>
- <pat:mml op="mfenced">
- <mfenced open="pat:variable =o" close="}" separators="rep:variable =~s">
- <pat:rep> <pat:variable name="b"/></pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- \right.O B,B,T} -->
-<pat:template>
- <pat:tex op="" params="\left\patVAR!{o} \patREP*{\patVAR*{b},}\patVAR{t} \right\}"/>
- <pat:mml op="mfenced">
- <mfenced open="pat:variable =o" close="}">
- <pat:rep> <pat:variable name="b"/></pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- \right.O B \left.C -->
-<pat:template>
- <pat:tex op="" params="\left\patVAR!{o} \patVAR*{b} \right\patVAR!{c}"/>
- <pat:mml op="mfenced">
- <mfenced open="pat:variable=o" close="pat:variable=c">
- <pat:variable name="b"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- \right.O B s B s T\left.C -->
-<pat:template>
- <pat:tex op="" params="\left\patVAR!{o} \patREP*{\patVAR*{b} \patREP*{\patVAR{~s}}} \patVAR{t} \right\patVAR!{c}"/>
- <pat:mml op="mfenced">
- <mfenced open="pat:variable=o" close="pat:variable=c" separators="rep:variable=~s">
- <pat:rep><pat:variable name="b"/></pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- \right.O B,B,T \left.C -->
-<pat:template>
- <pat:tex op="" params="\left\patVAR!{o} \patREP*{\patVAR*{b},}\patVAR{t} \right\patVAR!{c}"/>
- <pat:mml op="mfenced">
- <mfenced open="pat:variable=o" close="pat:variable=c">
- <pat:rep> <pat:variable name="b"/> </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- {B) -->
-<pat:template>
- <pat:tex op="" params="\left\{ \patVAR*{b} \right)"/>
- <pat:mml op="mfenced">
- <mfenced open="{">
- <pat:variable name="b"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- \left.O B) -->
-<pat:template>
- <pat:tex op="" params="\left\patVAR{o} \patVAR*{b} \right)"/>
- <pat:mml op="mfenced">
- <mfenced open="pat:variable =o">
- <pat:variable name="b"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- (B} -->
-<pat:template>
- <pat:tex op="" params="\left( \patVAR*{b} \right\}"/>
- <pat:mml op="mfenced">
- <mfenced open="{">
- <pat:variable name="b"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- (B \.c -->
-<pat:template>
- <pat:tex op="" params="\left( \patVAR*{a} \right\patVAR*{c}"/>
- <pat:mml op="mfenced">
- <mfenced close="pat:variable =c">
- <pat:variable name="b"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- (B) -->
-<pat:template>
- <pat:tex op="" params="\left( \patVAR*{c} \right)"/>
- <pat:mml op="mfenced">
- <mfenced>
- <pat:variable name="c"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- (B s B s T) -->
-<pat:template>
- <pat:tex op="" params="\left( \patREP*{\patVAR{b} \patREP*{\patVAR!{~s}}} \patVAR{t} \right)"/>
- <pat:mml op="mfenced">
- <mfenced separators="rep:variable name =~s">
- <pat:rep>
- <pat:variable name="b"/>
- </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- { B,B,T) -->
-<pat:template>
- <pat:tex op="" params="\left\{ \patREP*{\patVAR*{b},} \patVAR{t} \right)"/>
- <pat:mml op="mfenced">
- <mfenced open="{">
- <pat:rep>
- <pat:variable name="b"/>
- </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- \open B,B,T) -->
-<pat:template>
- <pat:tex op="" params="\left\patVAR!{o} \patREP*{\patVAR*{b},} \patVAR{t} \right)"/>
- <pat:mml op="mfenced">
- <mfenced open="pat:variable name=o">
- <pat:rep>
- <pat:variable name="b"/>
- </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- (B,B,T } -->
-<pat:template>
- <pat:tex op="" params="\left( \patREP*{\patVAR*{b},} \patVAR{t} \right\}"/>
- <pat:mml op="mfenced">
- <mfenced close="}">
- <pat:rep>
- <pat:variable name="b"/>
- </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- \open B,B,T) -->
-<pat:template>
- <pat:tex op="" params="\left\patVAR!{o} \patREP*{\patVAR*{b},} \patVAR{t} \right)"/>
- <pat:mml op="mfenced">
- <mfenced open="pat:variable name=o">
- <pat:rep>
- <pat:variable name="b"/>
- </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- (B,B,T \close -->
-<pat:template>
- <pat:tex op="" params="\left( \patREP*{\patVAR*{b},} \patVAR{t} \right\patVAR!{c}"/>
- <pat:mml op="mfenced">
- <mfenced close="pat:variable name=c">
- <pat:rep>
- <pat:variable name="b"/>
- </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- (B,B,T) -->
-<pat:template>
- <pat:tex op="" params="\left( \patREP*{\patVAR*{b},} \patVAR{t} \right)"/>
- <pat:mml op="mfenced">
- <mfenced>
- <pat:rep>
- <pat:variable name="b"/>
- </pat:rep>
- <pat:variable name="t"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<!-- END: MathML to TeX -->
-
-
-
-<!-- Under/over modifiers -->
-
-<pat:template>
- <pat:tex op="\underbrace" params="\patVAR!{expr}_\patVAR!{lims}"/>
- <pat:mml op="">
- <munder>
- <munder>
- <pat:variable name="expr"/>
- <mo stretchy="true"> &#xFE38; </mo>
- </munder>
- <pat:variable name="lims"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\underbrace" params="\patVAR!{expr}"/>
- <pat:mml op="munder &#xFE38;">
- <munder>
- <pat:variable name="expr"/>
- <mo stretchy="true"> &#xFE38; </mo>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\overbrace" params="\patVAR!{expr}^\patVAR!{lims}"/>
- <pat:mml op="">
- <mover>
- <mover>
- <pat:variable name="expr"/>
- <mo stretchy="true"> &#xFE37; </mo>
- </mover>
- <pat:variable name="lims"/>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\overbrace" params="\patVAR!{expr}"/>
- <pat:mml op="mover &#xFE37;">
- <mover>
- <pat:variable name="expr"/>
- <mo stretchy="true"> &#xFE37; </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\underline" params="\patVAR!{expr}"/> <!-- 02CD 005F 00AF -->
- <pat:mml op="munder &#x0332;">
- <munder>
- <pat:variable name="expr"/>
- <mo stretchy="true"> &#x00AF; </mo>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\overline" params="\patVAR!{expr}"/> <!-- 02C9 00AF -->
- <pat:mml op="mover &#x00AF;">
- <mover>
- <pat:variable name="expr"/>
- <mo stretchy="true"> &#x00AF; </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\widehat" params="\patVAR!{expr}"/> <!-- 02C6 0060 -->
- <pat:mml op="mover &#x0302;">
- <mover>
- <pat:variable name="expr"/>
- <mo>&#x02C6;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\widetilde" params="\patVAR!{expr}"/> <!-- 02DC 007E -->
- <pat:mml op="mover &#x0303;">
- <mover>
- <pat:variable name="expr"/>
- <mo>&#x02DC;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Math accents -->
-
-<pat:template>
- <pat:tex op="\hat" params="\patVAR!{symbol}"/> <!-- 02C6 005E -->
- <pat:mml op="mover &#x0302;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02C6;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Hat" params="\patVAR!{symbol}"/>
- <pat:mml op="mover &#x0302;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02C6;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\breve" params="\patVAR!{symbol}"/> <!-- 02D8 -->
- <pat:mml op="mover &#x0306;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02D8;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Breve" params="\patVAR!{symbol}"/>
- <pat:mml op="mover &#x0306;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02D8;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\grave" params="\patVAR!{symbol}"/> <!-- 02CB 0060 -->
- <pat:mml op="mover &#x0300;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02CB;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Grave" params="\patVAR!{symbol}"/>
- <pat:mml op="mover &#x0300;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02CB;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bar" params="\patVAR!{symbol}"/> <!-- 02C9 00AF -->
- <pat:mml op="mover &#x0304;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02C9;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bar" params="\patVAR!{symbol}"/>
- <pat:mml op="mover &#x0304;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02C9;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\check" params="\patVAR!{symbol}"/> <!-- 02C7 -->
- <pat:mml op="mover &#x030C;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02C7;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Check" params="\patVAR!{symbol}"/>
- <pat:mml op="mover &#x030C;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02C7;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\acute" params="\patVAR!{symbol}"/> <!-- 02B9 00B4 -->
- <pat:mml op="mover &#x0301;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02B9;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Acute" params="\patVAR!{symbol}"/>
- <pat:mml op="mover &#x0301;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02B9;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\tilde" params="\patVAR!{symbol}"/> <!-- 02DC 007E -->
- <pat:mml op="mover &#x0303;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02DC;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Tilde" params="\patVAR!{symbol}"/>
- <pat:mml op="mover &#x0303;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02DC;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vec" params="\patVAR!{symbol}"/>
- <pat:mml op="mover &#x0304;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x20D7;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Vec" params="\patVAR!{symbol}"/>
- <pat:mml op="mover &#x0304;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x20D7;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\dot" params="\patVAR!{symbol}"/> <!-- 02D9 -->
- <pat:mml op="">
- <mover>
- <pat:variable name="symbol"/>
- <mo> . </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Dot" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <mover>
- <pat:variable name="symbol"/>
- <mo> . </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ddot" params="\patVAR!{symbol}"/> <!-- 00A8 -->
- <pat:mml op="">
- <mover>
- <pat:variable name="symbol"/>
- <mo> .. </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Ddot" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <mover>
- <pat:variable name="symbol"/>
- <mo> .. </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dddot" params="\patVAR!{symbol}"/> <!-- 20DB -->
- <pat:mml op="">
- <mover>
- <pat:variable name="symbol"/>
- <mo> ... </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ddddot" params="\patVAR!{symbol}"/> <!-- 20DC -->
- <pat:mml op="">
- <mover>
- <pat:variable name="symbol"/>
- <mo> .... </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathring" params="\patVAR!{symbol}"/> <!-- 20DA -->
- <pat:mml op="mover &#x030A;">
- <mover>
- <pat:variable name="symbol"/>
- <mo>&#x02DA;</mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Accents -->
-
-<pat:template>
- <pat:tex op="\`" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0300;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\'" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0301;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\^" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0302;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\&quot;" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0308;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\~" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0303;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\=" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0304;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\." params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0307;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\u" params="{\patVAR+{symbol}}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0306;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\v" params="{\patVAR+{symbol}}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x030C;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\H" params="{\patVAR+{symbol}}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x030B;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\t" params="{\patVAR+{symbol}}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0361;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\c" params="{\patVAR+{symbol}}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0327;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\d" params="{\patVAR+{symbol}}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0323;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\b" params="{\patVAR+{symbol}}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x0320;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\r" params="{\patVAR+{symbol}}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>&#x030A;
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\i"/>
- <pat:mml op="">
- <mo> &#x0131; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\j"/> <!-- nothing even close -->
- <pat:mml op="">
- <mo> &#x006A; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Greek alphabet -->
-
-<pat:template>
- <pat:tex op="\alpha"/>
- <pat:mml op="&#x03B1;">
- <mi> &#x03B1; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\beta"/>
- <pat:mml op="&#x03B2;">
- <mi> &#x03B2; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gamma"/>
- <pat:mml op="&#x03B3;">
- <mi> &#x03B3; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\delta"/>
- <pat:mml op="&#x03B4;">
- <mi> &#x03B4; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\epsilon"/>
- <pat:mml op="&#x03B5;">
- <mi> &#x03B5; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varepsilon"/>
- <pat:mml op="&#x03B5;">
- <mi> &#x03B5; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\zeta"/>
- <pat:mml op="&#x03B6;">
- <mi> &#x03B6; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\eta"/>
- <pat:mml op="&#x03B7;">
- <mi> &#x03B7; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\theta"/>
- <pat:mml op="&#x03B8;">
- <mi> &#x03B8; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vartheta"/>
- <pat:mml op="&#x03D1;">
- <mi> &#x03D1; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iota"/>
- <pat:mml op="&#x03B9;">
- <mi> &#x03B9; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\kappa"/>
- <pat:mml op="&#x03BA;">
- <mi> &#x03BA; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lambda"/>
- <pat:mml op="&#x03BB;">
- <mi> &#x03BB; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mu"/>
- <pat:mml op="&#x03BC;">
- <mi> &#x03BC; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nu"/>
- <pat:mml op="&#x03BD;">
- <mi> &#x03BD; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\xi"/>
- <pat:mml op="&#x03BE;">
- <mi> &#x03BE; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\pi"/>
- <pat:mml op="&#x03C0;">
- <mi> &#x03C0; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varpi"/>
- <pat:mml op="&#x03D6;">
- <mi> &#x03D6; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rho"/>
- <pat:mml op="&#x03C1;">
- <mi> &#x03C1; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varrho"/>
- <pat:mml op="&#x03F1;">
- <mi> &#x03F1; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varsigma"/>
- <pat:mml op="&#x03C2;">
- <mi> &#x03C2; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sigma"/>
- <pat:mml op="&#x03C3;">
- <mi> &#x03C3; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\tau"/>
- <pat:mml op="&#x03C4;">
- <mi> &#x03C4; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\upsilon"/>
- <pat:mml op="&#x03C5;">
- <mi> &#x03C5; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\phi"/>
- <pat:mml op="&#x03C6;">
- <mi> &#x03C6; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varphi"/>
- <pat:mml op="&#x03D5;">
- <mi> &#x03D5; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\chi"/>
- <pat:mml op="&#x03C7;">
- <mi> &#x03C7; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\psi"/>
- <pat:mml op="&#x03C8;">
- <mi> &#x03C8; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\omega"/>
- <pat:mml op="&#x03C9;">
- <mi> &#x03C9; </mi>
- </pat:mml>
-</pat:template>
-
-
-
-<pat:template>
- <pat:tex op="\Gamma"/>
- <pat:mml op="&#x0393;">
- <mi> &#x0393; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Delta"/>
- <pat:mml op="&#x0394;">
- <mi> &#x0394; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Theta"/>
- <pat:mml op="&#x0398;">
- <mi> &#x0398; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Lambda"/>
- <pat:mml op="&#x039B;">
- <mi> &#x039B; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Xi"/>
- <pat:mml op="&#x039E;">
- <mi> &#x039E; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Pi"/>
- <pat:mml op="&#x03A0;">
- <mi> &#x03A0; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Sigma"/>
- <pat:mml op="&#x03A3;">
- <mi> &#x03A3; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Upsilon"/>
- <pat:mml op="&#x03A5;">
- <mi> &#x03A5; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Phi"/>
- <pat:mml op="&#x03A6;">
- <mi> &#x03A6; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Psi"/>
- <pat:mml op="&#x03A8;">
- <mi> &#x03A8; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Omega"/>
- <pat:mml op="&#x03A9;">
- <mi> &#x03A9; </mi>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\varGamma"/>
- <pat:mml op="&#x1D6E4;">
- <mi> &#x0393; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varDelta"/>
- <pat:mml op="&#x1D6E5;">
- <mi> &#x0394; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varTheta"/>
- <pat:mml op="&#x1D6E9;">
- <mi> &#x0398; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varLambda"/>
- <pat:mml op="&#x1D6EC;">
- <mi> &#x039B; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varXi"/>
- <pat:mml op="&#x1D6EF;">
- <mi> &#x039E; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varPi"/>
- <pat:mml op="&#x1D6F1;">
- <mi> &#x03A0; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varSigma"/>
- <pat:mml op="&#x1D6F4;">
- <mi> &#x03A3; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varUpsilon"/>
- <pat:mml op="&#x1D6F6;">
- <mi> &#x03A5; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varPhi"/>
- <pat:mml op="&#x1D6F7;">
- <mi> &#x03A6; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varPsi"/>
- <pat:mml op="&#x1D6F9;">
- <mi> &#x03A8; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varOmega"/>
- <pat:mml op="&#x1D6FA;">
- <mi> &#x03A9; </mi>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Miscellaneous common characters -->
-
-<pat:template>
- <pat:tex op="\colon"/>
- <pat:mml op=":">
- <mo> : </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="*"/>
- <pat:mml op="*">
- <mo> * </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\#"/>
- <pat:mml op="#">
- <mo> # </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\$"/>
- <pat:mml op="$">
- <mo> $ </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\%"/>
- <pat:mml op="%">
- <mo> % </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\&amp;"/>
- <pat:mml op="&amp;">
- <mo> &amp; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\_"/>
- <pat:mml op="_">
- <mo> _ </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="!"/>
- <pat:mml op="!">
- <mo> ! </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Miscellaneous symbols -->
-
-<pat:template>
- <pat:tex op="\aleph"/>
- <pat:mml op="&#x2135;">
- <mo> &#x2135; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\imath"/> <!-- 0269 -->
- <pat:mml op="">
- <mo> &#x2373; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\jmath"/> <!-- nothing even close -->
- <pat:mml op="">
- <mo> &#x006A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ell"/>
- <pat:mml op="&#x2113;">
- <mo> &#x2113; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\wp"/>
- <pat:mml op="&#x2118;">
- <mo> &#x2118; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Re"/>
- <pat:mml op="&#x211C;">
- <mo> &#x211C; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Im"/>
- <pat:mml op="&#x2111;">
- <mo> &#x2111; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\prime"/>
- <pat:mml op="&#x2032;">
- <mo> &#x2032; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\emptyset"/>
- <pat:mml op="&#x2205;">
- <mo> &#x2205; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nabla"/>
- <pat:mml op="&#x2207;">
- <mo> &#x2207; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\surd"/>
- <pat:mml op="&#x221A;">
- <mo> &#x221A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\partial"/>
- <pat:mml op="&#x2202;">
- <mo> &#x2202; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\top"/>
- <pat:mml op="&#x03A4;">
- <mo> &#x03A4; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bot"/>
- <pat:mml op="&#x03A5;">
- <mo> &#x03A5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vdash"/>
- <pat:mml op="&#x22A2;">
- <mo> &#x22A2; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dashv"/>
- <pat:mml op="&#x22A3;">
- <mo> &#x22A3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\forall"/>
- <pat:mml op="&#x2200;">
- <mo> &#x2200; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\exists"/>
- <pat:mml op="&#x2203;">
- <mo> &#x2203; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\neg"/>
- <pat:mml op="&#x00AC;">
- <mo> &#x00AC; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\flat"/>
- <pat:mml op="&#x266D;">
- <mo> &#x266D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\natural"/>
- <pat:mml op="&#x266E;">
- <mo> &#x266E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sharp"/>
- <pat:mml op="&#x266F;">
- <mo> &#x266F; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\angle"/>
- <pat:mml op="&#x2220;">
- <mo> &#x2220; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Box"/>
- <pat:mml op="&#x25AB;">
- <mo> &#x25AB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Diamond"/>
- <pat:mml op="&#x25CA;">
- <mo> &#x25CA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\triangle"/>
- <pat:mml op="&#x25B3;">
- <mo> &#x25B3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\clubsuit"/>
- <pat:mml op="&#x2663;">
- <mo> &#x2663; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\diamondsuit"/>
- <pat:mml op="&#x2666;">
- <mo> &#x2666; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\heartsuit"/>
- <pat:mml op="&#x2665;">
- <mo> &#x2665; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\spadesuit"/>
- <pat:mml op=" &#x2660;">
- <mo> &#x2660; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Join"/>
- <pat:mml op="&#x22C8;">
- <mo> &#x22C8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\infty"/>
- <pat:mml op=" &#x221E;">
- <mo> &#x221E; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\lnot"/>
- <pat:mml op="&#x2310;">
- <mo> &#x2310; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bull"/>
- <pat:mml op="">
- <mo> &#x25AA; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cents"/>
- <pat:mml op="">
- <mo> &#x00A2; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Math symbols in two sizes -->
-
-<pat:template>
- <pat:tex op="\sum" params="\nolimits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x02211;">
- <msubsup>
- <mo> &#x02211; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sum" params="\limits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x02211;">
- <munderover>
- <mo> &#x02211; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sum" params="\nolimits_\patVAR!{a}"/>
- <pat:mml op="&#x02211;">
- <msub>
- <mo> &#x02211; </mo>
- <pat:variable name="a"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sum" params="_\patVAR!{a}&#x005E;\patVAR!{b}" prec="350"/>
- <pat:mml op="&#x02211;">
- <munderover>
- <mo> &#x02211; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sum" params="_\patVAR!{a}" prec="350"/>
- <pat:mml op="&#x02211;">
- <munder>
- <mo> &#x02211; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sum"/>
- <pat:mml op="&#x02211;">
- <mo> &#x02211; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\prod" params="\nolimits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x220F;">
- <msubsup>
- <mo> &#x220F; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\prod" params="\limits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x220F;">
- <munderover>
- <mo> &#x220F; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\prod" params="\nolimits_\patVAR!{a}"/>
- <pat:mml op="&#x220F;">
- <msub>
- <mo> &#x220F; </mo>
- <pat:variable name="a"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\prod" params="_\patVAR!{a}&#x005E;\patVAR!{b}" prec="350"/>
- <pat:mml op="&#x220F;">
- <munderover>
- <mo> &#x220F; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\prod" params="_\patVAR!{a}" prec="350"/>
- <pat:mml op="&#x220F;">
- <munder>
- <mo> &#x220F; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\prod"/>
- <pat:mml op="&#x220F;">
- <mo> &#x220F; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\coprod" params="\nolimits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x2210;">
- <msubsup>
- <mo> &#x2210; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\coprod" params="\nolimits_\patVAR!{a}"/>
- <pat:mml op="&#x2210;">
- <msub>
- <mo> &#x2210; </mo>
- <pat:variable name="a"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\coprod" params="_\patVAR!{a}&#x005E;\patVAR!{b}" prec="350"/>
- <pat:mml op="&#x2210;">
- <munderover>
- <mo> &#x2210; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\coprod" params="_\patVAR!{a}" prec="350"/>
- <pat:mml op="&#x2210;">
- <munder>
- <mo> &#x2210; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\coprod"/>
- <pat:mml op="&#x2210;">
- <mo> &#x2210; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\int" params="\limits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222B;">
- <munderover>
- <mo> &#x222B; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\int" params="\limits_\patVAR!{a}"/>
- <pat:mml op="&#x222B;">
- <munder>
- <mo> &#x222B; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\int" params="\nolimits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222B;">
- <msubsup>
- <mo> &#x222B; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\int" params="\nolimits_\patVAR!{a}"/>
- <pat:mml op="&#x222B;">
- <msub>
- <mo> &#x222B; </mo>
- <pat:variable name="a"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\int" params="_\patVAR!{a}&#x005E;\patVAR!{b}" prec="350"/>
- <pat:mml op="&#x222B;">
- <munderover>
- <mo> &#x222B; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\int" params="_\patVAR!{a}" prec="350"/>
- <pat:mml op="&#x222B;">
- <munder>
- <mo> &#x222B; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\int"/>
- <pat:mml op="&#x222B;">
- <mo> &#x222B; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\iint" params="\limits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222C;">
- <munderover>
- <mo> &#x222C; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iint" params="\limits_\patVAR!{a}"/>
- <pat:mml op="&#x222C;">
- <munder>
- <mo> &#x222C; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iint" params="\nolimits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222C;">
- <msubsup>
- <mo> &#x222C; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iint" params="\nolimits_\patVAR!{a}"/>
- <pat:mml op="&#x222C;">
- <msub>
- <mo> &#x222C; </mo>
- <pat:variable name="a"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iint" params="_\patVAR!{a}&#x005E;\patVAR!{b}" prec="350"/>
- <pat:mml op="&#x222C;">
- <munderover>
- <mo> &#x222C; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iint" params="_\patVAR!{a}" prec="350"/>
- <pat:mml op="&#x222C;">
- <munder>
- <mo> &#x222C; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iint"/>
- <pat:mml op="&#x222C;">
- <mo> &#x222C; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\iiint" params="\limits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222D;">
- <munderover>
- <mo> &#x222D; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiint" params="\limits_\patVAR!{a}"/>
- <pat:mml op="&#x222D;">
- <munder>
- <mo> &#x222D; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiint" params="\nolimits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222D;">
- <msubsup>
- <mo> &#x222D; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiint" params="\nolimits_\patVAR!{a}"/>
- <pat:mml op="&#x222D;">
- <msub>
- <mo> &#x222D; </mo>
- <pat:variable name="a"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiint" params="_\patVAR!{a}&#x005E;\patVAR!{b}" prec="350"/>
- <pat:mml op="&#x222D;">
- <munderover>
- <mo> &#x222D; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiint" params="_\patVAR!{a}" prec="350"/>
- <pat:mml op="&#x222D;">
- <munder>
- <mo> &#x222D; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiint"/>
- <pat:mml op="&#x222D;">
- <mo> &#x222D; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\iiiint" params="\limits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x2A0C;">
- <munderover>
- <mo> &#x2A0C; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiiint" params="\limits_\patVAR!{a}"/>
- <pat:mml op="&#x2A0C;">
- <munder>
- <mo> &#x2A0C; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiiint" params="\nolimits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x2A0C;">
- <msubsup>
- <mo> &#x2A0C; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiiint" params="\nolimits_\patVAR!{a}"/>
- <pat:mml op="&#x2A0C;">
- <msub>
- <mo> &#x2A0C; </mo>
- <pat:variable name="a"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiiint" params="_\patVAR!{a}&#x005E;\patVAR!{b}" prec="350"/>
- <pat:mml op="&#x2A0C;">
- <munderover>
- <mo> &#x2A0C; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiiint" params="_\patVAR!{a}" prec="350"/>
- <pat:mml op="&#x2A0C;">
- <munder>
- <mo> &#x2A0C; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\iiiint"/>
- <pat:mml op="&#x2A0C;">
- <mo> &#x2A0C; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\idotsint" params="\limits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222B;">
- <munderover>
- <mrow>
- <mo> &#x222B; </mo>
- <mo> &#x22EF; </mo>
- <mo> &#x222B; </mo>
- </mrow>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\idotsint" params="\limits_\patVAR!{a}"/>
- <pat:mml op="&#x222B;">
- <munder>
- <mrow>
- <mo> &#x222B; </mo>
- <mo> &#x22EF; </mo>
- <mo> &#x222B; </mo>
- </mrow>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\idotsint" params="\nolimits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222B;">
- <msubsup>
- <mrow>
- <mo> &#x222B; </mo>
- <mo> &#x22EF; </mo>
- <mo> &#x222B; </mo>
- </mrow>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\idotsint" params="\nolimits_\patVAR!{a}"/>
- <pat:mml op="&#x222B;">
- <msub>
- <mrow>
- <mo> &#x222B; </mo>
- <mo> &#x22EF; </mo>
- <mo> &#x222B; </mo>
- </mrow>
- <pat:variable name="a"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\idotsint" params="_\patVAR!{a}&#x005E;\patVAR!{b}" prec="350"/>
- <pat:mml op="&#x222B;">
- <munderover>
- <mrow>
- <mo> &#x222B; </mo>
- <mo> &#x22EF; </mo>
- <mo> &#x222B; </mo>
- </mrow>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\idotsint" params="_\patVAR!{a}" prec="350"/>
- <pat:mml op="&#x222B;">
- <munder>
- <mrow>
- <mo> &#x222B; </mo>
- <mo> &#x22EF; </mo>
- <mo> &#x222B; </mo>
- </mrow>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\idotsint"/>
- <pat:mml op="&#x222B;">
- <mo> &#x222B; </mo>
- <mo> &#x22EF; </mo>
- <mo> &#x222B; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\oint" params="\limits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222E;">
- <munderover>
- <mo> &#x222E; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\oint" params="\limits_\patVAR!{a}"/>
- <pat:mml op="&#x222E;">
- <munder>
- <mo> &#x222E; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\oint" params="\nolimits_\patVAR!{a}&#x005E;\patVAR!{b}"/>
- <pat:mml op="&#x222E;">
- <msubsup>
- <mo> &#x222E; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\oint" params="\nolimits_\patVAR!{a}"/>
- <pat:mml op="&#x222E;">
- <msub>
- <mo> &#x222E; </mo>
- <pat:variable name="a"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\oint" params="_\patVAR!{a}&#x005E;\patVAR!{b}" prec="350"/>
- <pat:mml op="&#x222E;">
- <munderover>
- <mo> &#x222E; </mo>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\oint" params="_\patVAR!{a}" prec="350"/>
- <pat:mml op="&#x222E;">
- <munder>
- <mo> &#x222E; </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\oint"/>
- <pat:mml op="&#x222E;">
- <mo> &#x222E; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<pat:template>
- <pat:tex op="\bigcap"/>
- <pat:mml op="&#x2229;">
- <mo> &#x2229; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigcup"/>
- <pat:mml op="&#x222A;">
- <mo> &#x222A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigsqcup"/>
- <pat:mml op="&#x2294;">
- <mo> &#x2294; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigvee"/>
- <pat:mml op="&#x22C1;">
- <mo> &#x22C1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigwedge"/>
- <pat:mml op="&#x22C0;">
- <mo> &#x22C0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigodot"/>
- <pat:mml op="&#x2299;">
- <mo> &#x2299; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigotimes"/>
- <pat:mml op="&#x2297;">
- <mo> &#x2297; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigoplus"/>
- <pat:mml op="&#x2295;">
- <mo> &#x2295; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\biguplus"/>
- <pat:mml op="&#x228E;">
- <mo> &#x228E; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Special letters from other languages -->
-
-<pat:template>
- <pat:tex op="\oe"/>
- <pat:mml op="&#x0153;">
- <mo> &#x0153; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\OE"/>
- <pat:mml op="&#x0152;">
- <mo> &#x0152; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ae"/>
- <pat:mml op="&#x00E6;">
- <mo> &#x00E6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\AE"/>
- <pat:mml op="&#x00C6;">
- <mo> &#x00C6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\aa"/>
- <pat:mml op="&#x00E5;">
- <mo> &#x00E5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\AA"/>
- <pat:mml op="&#x00C5;">
- <mo> &#x00C5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\o"/>
- <pat:mml op="&#x00F8;">
- <mo> &#x00F8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\O"/>
- <pat:mml op="&#x00D8;">
- <mo> &#x00D8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\l"/>
- <pat:mml op="&#x0142;">
- <mo> &#x0142; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\L"/>
- <pat:mml op="&#x0141;">
- <mo> &#x0141; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\SS"/>
- <pat:mml op="&#x00DF;">
- <mo> &#x00DF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="!" params="`"/>
- <pat:mml op="&#x00A1;">
- <mo> &#x00A1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="?" params="`"/>
- <pat:mml op="&#x00BF;">
- <mo> &#x00BF; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Special symbols -->
-
-<pat:template>
- <pat:tex op="\S"/>
- <pat:mml op="&#x00A7;">
- <mo> &#x00A7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\copyright"/>
- <pat:mml op="&#x00A9;">
- <mo> &#x00A9; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\P"/>
- <pat:mml op="&#x00B6;">
- <mo> &#x00B6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\pounds"/>
- <pat:mml op="&#x00A3;">
- <mo> &#x00A3; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Binary operation symbols -->
-
-<pat:template>
- <pat:tex op="+"/>
- <pat:mml op="+">
- <mo> + </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="-"/>
- <pat:mml op="-">
- <mo> - </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\pm"/>
- <pat:mml op="&#x00B1;">
- <mo> &#x00B1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mp"/>
- <pat:mml op="&#x2213;">
- <mo> &#x00B1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\times"/>
- <pat:mml op="&#x00D7;">
- <mo> &#x00D7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\div"/>
- <pat:mml op="&#x00F7;">
- <mo> &#x00F7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cdot"/>
- <pat:mml op="&#x22C5;">
- <mo> &#x22C5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ast"/>
- <pat:mml op="*">
- <mo> * </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\star"/>
- <pat:mml op="&#x22C6;">
- <mo> &#x22C6; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dagger"/>
- <pat:mml op="&#x2020;">
- <mo> &#x2020; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dag"/>
- <pat:mml op="">
- <mo> &#x2020; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ddagger"/>
- <pat:mml op="&#x2021;">
- <mo> &#x2021; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ddag"/>
- <pat:mml op="">
- <mo> &#x2021; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\amalg"/>
- <pat:mml op="">
- <mo> &#x2210; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cap"/>
- <pat:mml op="&#x2229;">
- <mo> &#x2229; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cup"/>
- <pat:mml op="&#x222A;">
- <mo> &#x222A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\uplus"/>
- <pat:mml op="&#x228E;">
- <mo> &#x228E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sqcap"/>
- <pat:mml op="&#x2293;">
- <mo> &#x2293; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sqcup"/>
- <pat:mml op="&#x2294;">
- <mo> &#x2294; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vee"/>
- <pat:mml op="&#x2228;">
- <mo> &#x2228; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\wedge"/>
- <pat:mml op="&#x2227;">
- <mo> &#x2227; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\oplus"/>
- <pat:mml op="&#x2295;">
- <mo> &#x2295; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ominus"/>
- <pat:mml op="&#x2296;">
- <mo> &#x2296; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\otimes"/>
- <pat:mml op="&#x2297;">
- <mo> &#x2297; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\oslash"/>
- <pat:mml op="&#x2298;">
- <mo> &#x2298; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\odot"/>
- <pat:mml op="&#x2299;">
- <mo> &#x2299; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\circ"/>
- <pat:mml op="&#x2218;">
- <mo> &#x2218; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bullet"/>
- <pat:mml op="&#x2219;">
- <mo> &#x2219; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\diamond"/>
- <pat:mml op="&#x22C4;">
- <mo> &#x22C4; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lhd"/>
- <pat:mml op="&#x22B2;">
- <mo> &#x22B2; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rhd"/>
- <pat:mml op="&#x22B3;">
- <mo> &#x22B3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\unlhd"/>
- <pat:mml op="&#x22B4;">
- <mo> &#x22B4; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\unrhd"/>
- <pat:mml op="&#x22B5;">
- <mo> &#x22B5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigcirc"/>
- <pat:mml op="&#x25EF;">
- <mo> &#x25EF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigtriangleup"/>
- <pat:mml op="&#x25B3;">
- <mo> &#x25B3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigtriangledown"/>
- <pat:mml op="&#x25BD;">
- <mo> &#x25BD; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\triangleleft"/>
- <pat:mml op="&#x25C5;">
- <mo> &#x25C5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\triangleright"/>
- <pat:mml op="&#x25BB;">
- <mo> &#x25BB; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\setminus"/>
- <pat:mml op="&#x2216;">
- <mo> &#x2216; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\wr"/>
- <pat:mml op="&#x2240;">
- <mo> &#x2240; </mo>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\lor"/>
- <pat:mml op="&#x2228;">
- <mo> &#x2228; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\land"/>
- <pat:mml op="&#x2227;">
- <mo> &#x2227; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Dots -->
-
-<pat:template>
- <pat:tex op="\cdots"/>
- <pat:mml op="&#x22EF;">
- <mo> &#x22EF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ddots"/>
- <pat:mml op="&#x22F1;">
- <mo> &#x22F1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vdots"/>
- <pat:mml op="&#x22EE;">
- <mo> &#x22EE; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ldots"/>
- <pat:mml op="&#x2026;">
- <mo> &#x2026; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dots"/>
- <pat:mml op="&#x22EF;">
- <mo> &#x22EF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dots" params=","/>
- <pat:mml op="&#x2026;">
- <mo> &#x2026; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dotsb"/>
- <pat:mml op="&#x22EF;">
- <mo> &#x22EF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dotsc"/>
- <pat:mml op="&#x2026;">
- <mo> &#x2026; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dotsi"/>
- <pat:mml op="&#x22EF;">
- <mo> &#x22EF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dotsm"/>
- <pat:mml op="&#x22EF;">
- <mo> &#x22EF; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dotso"/>
- <pat:mml op="&#x22EF;">
- <mo> &#x22EF; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Relational symbols -->
-
-<pat:template>
- <pat:tex op="="/>
- <pat:mml op="=">
- <mo> = </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leq"/>
- <pat:mml op="&#x2264;">
- <mo> &#x2264; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\le"/>
- <pat:mml op="&#x2264;">
- <mo> &#x2264; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ll"/>
- <pat:mml op="&#x226A;">
- <mo> &#x226A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\geq"/>
- <pat:mml op="&#x2265;">
- <mo> &#x2265; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ge"/>
- <pat:mml op="&#x2265;">
- <mo> &#x2265; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gg"/>
- <pat:mml op="&#x226B;">
- <mo> &#x226B; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ne"/>
- <pat:mml op="&#x2260;">
- <mo> &#x2260; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\neq"/>
- <pat:mml op="&#x2260;">
- <mo> &#x2260; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\doteq"/>
- <pat:mml op="&#x2250;">
- <mo> &#x2250; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\subset"/>
- <pat:mml op="&#x2282;">
- <mo> &#x2282; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\subseteq"/>
- <pat:mml op="&#x2286;">
- <mo> &#x2286; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sqsubseteq"/>
- <pat:mml op="&#x2291;">
- <mo> &#x2291; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\supset"/>
- <pat:mml op="&#x2283;">
- <mo> &#x2283; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\supseteq"/>
- <pat:mml op="&#x2287;">
- <mo> &#x2287; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sqsupseteq"/>
- <pat:mml op="&#x2292;">
- <mo> &#x2292; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\in"/>
- <pat:mml op="&#x2208;">
- <mo> &#x2208; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ni"/>
- <pat:mml op="&#x220B;">
- <mo> &#x220B; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\models"/>
- <pat:mml op="&#x22A7;">
- <mo> &#x22A7; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\perp"/>
- <pat:mml op="&#x22A5;">
- <mo> &#x22A5; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\approx"/>
- <pat:mml op="&#x2248;">
- <mo> &#x2248; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cong"/>
- <pat:mml op="&#x2245;">
- <mo> &#x2245; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\equiv"/>
- <pat:mml op="&#x2261;">
- <mo> &#x224D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\propto"/>
- <pat:mml op="&#x221D;">
- <mo> &#x221D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\prec"/>
- <pat:mml op="&#x227A;">
- <mo> &#x227A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\preceq"/>
- <pat:mml op="&#x227C;">
- <mo> &#x227C; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\parallel"/>
- <pat:mml op="&#x2225;">
- <mo> &#x2225; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sim"/>
- <pat:mml op="&#x223C;">
- <mo> &#x223C; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\simeq"/>
- <pat:mml op="&#x2243;">
- <mo> &#x2243; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\asymp"/>
- <pat:mml op="&#x224D;">
- <mo> &#x224D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\smile"/>
- <pat:mml op="&#x2323;">
- <mo> &#x2323; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\frown"/>
- <pat:mml op="&#x2322;">
- <mo> &#x2322; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bowtie"/>
- <pat:mml op="&#x22C8;">
- <mo> &#x22C8; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\succ"/>
- <pat:mml op="&#x227B;">
- <mo> &#x227B; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\succeq"/>
- <pat:mml op="&#x227D;">
- <mo> &#x227D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mid"/>
- <pat:mml op="&#x2223;">
- <mo> &#x2223; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\owns"/>
- <pat:mml op="&#x220B;">
- <mo> &#x220B; </mo>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- NOTs -->
-
-<pat:template>
- <pat:tex op="\not" params="&lt;"/>
- <pat:mml op="&#x226E;">
- <mo> &#x226E; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="&gt;"/>
- <pat:mml op="&#x226F;">
- <mo> &#x226F; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="="/>
- <pat:mml op="&#x2260;">
- <mo> &#x2260; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\equiv"/>
- <pat:mml op="&#x2262;">
- <mo> &#x2262; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\le"/>
- <pat:mml op="&#x2270;">
- <mo> &#x2270; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\leq"/>
- <pat:mml op="&#x2270;">
- <mo> &#x2270; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\ge"/>
- <pat:mml op="&#x2271;">
- <mo> &#x2271; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\geq"/>
- <pat:mml op="&#x2271;">
- <mo> &#x2271; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\prec"/>
- <pat:mml op="&#x2280;">
- <mo> &#x2280; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\preceq"/>
- <pat:mml op="&#x22E0;">
- <mo> &#x22E0; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\subset"/>
- <pat:mml op="&#x2284;">
- <mo> &#x2284; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\subseteq"/>
- <pat:mml op="&#x2288;">
- <mo> &#x2288; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\sqsubseteq"/>
- <pat:mml op="&#x22E2;">
- <mo> &#x22E2; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\in"/>
- <pat:mml op="&#x2209;">
- <mo> &#x2209; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\notin"/>
- <pat:mml op="&#x2209;">
- <mo> &#x2209; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\succ"/>
- <pat:mml op="&#x2281;">
- <mo> &#x2281; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\succeq"/>
- <pat:mml op="&#x22E1;">
- <mo> &#x22E1; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\supset"/>
- <pat:mml op="&#x2285;">
- <mo> &#x2285; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\supseteq"/>
- <pat:mml op="&#x2289;">
- <mo> &#x2289; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\sqsupseteq"/>
- <pat:mml op="&#x22E3;">
- <mo> &#x22E3; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\sim"/>
- <pat:mml op="&#x2241;">
- <mo> &#x2241; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\simeq"/>
- <pat:mml op="&#x2244;">
- <mo> &#x2244; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\approx"/>
- <pat:mml op="&#x2249;">
- <mo> &#x2249; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\cong"/>
- <pat:mml op="&#x2247;">
- <mo> &#x2247; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\asymp"/>
- <pat:mml op="&#x226D;">
- <mo> &#x226D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\not" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <pat:variable name="symbol"/>
- <mpadded width="0em" lspace="-1em"><mo>/</mo></mpadded>
- </pat:mml>
-</pat:template>
-
-
-
-<pat:template>
- <pat:tex op="\frac" params="\patVAR!{num}\patVAR!{den}"/>
- <pat:mml op="mfrac">
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cfrac" params="[\patVAR!{pos}]\patVAR!{num}\patVAR!{den}"/>
- <pat:mml op="mfrac">
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cfrac" params="\patVAR!{num}\patVAR!{den}"/>
- <pat:mml op="mfrac">
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dfrac" params="{\patVAR*{num}}{\patVAR*{den}}"/>
- <pat:mml op="">
- <mstyle displaystyle="true">
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\tfrac" params="{\patVAR*{num}}{\patVAR*{den}}"/>
- <pat:mml op="">
- <mstyle displaystyle="false" scriptlevel="0">
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\genfrac" params="{\patVAR*{l}}{\patVAR*{r}}{}{}{\patVAR*{num}}{\patVAR*{den}}"/>
- <pat:mml op="">
- <pat:variable name="l"/>
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- <pat:variable name="r"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\genfrac" params="{\patVAR*{l}}{\patVAR*{r}}{\patVAR*{thickness}}{0}{\patVAR*{num}}{\patVAR*{den}}"/>
- <pat:mml op="">
- <mstyle displaystyle="true">
- <pat:variable name="l"/>
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- <pat:variable name="r"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\genfrac" params="{\patVAR*{l}}{\patVAR*{r}}{\patVAR*{thickness}}{\patVAR*{style}}{\patVAR*{num}}{\patVAR*{den}}"/>
- <pat:mml op="">
- <mstyle displaystyle="false">
- <pat:variable name="style" attribute="scriptlevel" map="0=0 1=0 2=1 3=2"/>
- <pat:variable name="l"/>
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- <pat:variable name="r"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Elementary functions -->
-
-<pat:template>
- <pat:tex op="\sqrt" params="[\patVAR+{deg}]\patVAR!{expr}"/>
- <pat:mml op="mroot">
- <mroot>
- <pat:variable name="expr"/>
- <pat:variable name="deg"/>
- </mroot>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sqrt" params="\patVAR!{expr}"/>
- <pat:mml op="msqrt">
- <msqrt>
- <pat:variable name="expr"/>
- </msqrt>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\root" params="\patVAR+{deg} \of \patVAR!{expr}"/>
- <pat:mml op="mroot">
- <mroot>
- <pat:variable name="expr"/>
- <pat:variable name="deg"/>
- </mroot>
- </pat:mml>
-</pat:template>
-
-
-
-<pat:template>
- <pat:tex op="\arccos"/>
- <pat:mml op="arccos">
- <mi> arccos </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\arcsin"/>
- <pat:mml op="arcsin">
- <mi> arcsin </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\arctan"/>
- <pat:mml op="arctan">
- <mi> arctan </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\arg"/>
- <pat:mml op="arg">
- <mi> arg </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cos"/>
- <pat:mml op="cos">
- <mi> cos </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cosh"/>
- <pat:mml op="cosh">
- <mi> cosh </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cot"/>
- <pat:mml op="cot">
- <mi> cot </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\coth"/>
- <pat:mml op="coth">
- <mi> coth </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\csc"/>
- <pat:mml op="csc">
- <mi> csc </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\deg"/>
- <pat:mml op="deg">
- <mi> deg </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\det" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> det </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\det"/>
- <pat:mml op="det">
- <mi> det </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dim"/>
- <pat:mml op="dim">
- <mi> dim </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\exp"/>
- <pat:mml op="exp">
- <mi> exp </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gcd" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> gcd </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\gcd"/>
- <pat:mml op="gcd">
- <mi> gcd </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hom"/>
- <pat:mml op="hom">
- <mi> hom </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\inf" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> inf </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\inf"/>
- <pat:mml op="inf">
- <mi> inf </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ker"/>
- <pat:mml op="ker">
- <mi> ker </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lg"/>
- <pat:mml op="lg">
- <mi> lg </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lim" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> lim </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lim"/>
- <pat:mml op="lim">
- <mi> lim </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\liminf" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> lim inf </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\liminf"/>
- <pat:mml op="lim inf">
- <mi> lim inf </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\limsup" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> lim sup </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\limsup"/>
- <pat:mml op="lim sup">
- <mi> lim sum </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ln"/>
- <pat:mml op="ln">
- <mi> ln </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\log"/>
- <pat:mml op="log">
- <mi> log </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bmod"/>
- <pat:mml op="mod">
- <mi> mod </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mod"/>
- <pat:mml op="">
- <mi lspace="1em"> mod </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\pmod" params="\patVAR!{arg}"/>
- <pat:mml op="">
- <mspace width="1em"/>
- <mfenced separators="">
- <mi> mod </mi>
- <pat:variable name="arg"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\pod" params="\patVAR!{arg}"/>
- <pat:mml op="">
- <mspace width="1em"/>
- <mfenced separators="">
- <pat:variable name="arg"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\max" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> max </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\max"/>
- <pat:mml op="max">
- <mi> max </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\min" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> min </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\min"/>
- <pat:mml op="min">
- <mi> min </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Pr" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> Pr </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Pr"/>
- <pat:mml op="Pr">
- <mi> Pr </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sec"/>
- <pat:mml op="sec">
- <mi> sec </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sin"/>
- <pat:mml op="sin">
- <mi> sin </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sinh"/>
- <pat:mml op="sinh">
- <mi> sin </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sup" params="_\patVAR!{limit}" prec="500"/>
- <pat:mml op="">
- <munder>
- <mi> sup </mi>
- <pat:variable name="limit"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sup"/>
- <pat:mml op="sup">
- <mi> sup </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\tan"/>
- <pat:mml op="tan">
- <mi> tan </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\tanh"/>
- <pat:mml op="tanh">
- <mi> tanh </mi>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Under, over, sup & sub - scripts for specitial cases:
- sum, proc, lim, inf, max etc. MathML to TeX -->
-
-<pat:template>
- <pat:tex op="" params="\lim_\patVAR!{a}" prec="350"/>
- <pat:mml op="lim">
- <munder>
- <mi> lim </mi>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\liminf_\patVAR!{a}" prec="350"/>
- <pat:mml op="lim inf">
- <munder>
- <mi> lim inf </mi>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\limsup_\patVAR!{a}" prec="350"/>
- <pat:mml op="lim sup">
- <munder>
- <mi> lim sup </mi>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\inf_\patVAR!{a}" prec="350"/>
- <pat:mml op="inf">
- <munder>
- <mo> inf </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\sup_\patVAR!{a}" prec="350"/>
- <pat:mml op="sup">
- <munder>
- <mo> sup </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\min_\patVAR!{a}" prec="350"/>
- <pat:mml op="min">
- <munder>
- <mo> min </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\max_\patVAR!{a}" prec="350"/>
- <pat:mml op="max">
- <munder>
- <mo> max </mo>
- <pat:variable name="a"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Mathematical operators -->
-
-<pat:template>
- <pat:tex op="\mathop" params="\patVAR+{a}\limits_\patVAR!{b}&#x005E;\patVAR!{c}"/>
- <pat:mml op="munderover">
- <munderover>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- <pat:variable name="c"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathop" params="\patVAR+{a}\limits&#x005E;\patVAR!{c}_\patVAR!{b}"/>
- <pat:mml op="munderover">
- <munderover>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- <pat:variable name="c"/>
- </munderover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathop" params="\patVAR+{a}\limits_\patVAR!{b}"/>
- <pat:mml op="munder">
- <munder>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathop" params="\patVAR+{a}\limits&#x005E;\patVAR!{b}"/>
- <pat:mml op="mover">
- <mover>
- <pat:variable name="a"/>
- <pat:variable name="b"/>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathop"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathord"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbin"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathrel"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathopen"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathclose"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathpunct"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathinner"/>
- <pat:mml op=""/>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\stackrel" params="\patVAR!{upper}\patVAR!{lower}"/>
- <pat:mml op="">
- <mover>
- <pat:variable name="lower"/>
- <pat:variable name="upper"/>
- </mover>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- LaTeX 2e math alphabet commands -->
-
-<pat:template>
- <pat:tex op="\mathrm" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathsf" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="sans-serif">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathnormal" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathtt" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="sans-serif">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathit" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbf" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="bold">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathcal" params="{B}"/>
- <pat:mml op="">
- <mi> &#x212C; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathcal" params="{E}"/>
- <pat:mml op="">
- <mi> &#x2130; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathcal" params="{F}"/>
- <pat:mml op="">
- <mi> &#x2131; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathcal" params="{H}"/>
- <pat:mml op="">
- <mi> &#x210B; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathcal" params="{I}"/>
- <pat:mml op="">
- <mi> &#x2110; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathcal" params="{L}"/>
- <pat:mml op="">
- <mi> &#x2112; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathcal" params="{M}"/>
- <pat:mml op="">
- <mi> &#x2133; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathcal" params="{R}"/>
- <pat:mml op="">
- <mi> &#x211B; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathcal" params="\patVAR!{text}"/> <!-- Others in plane 1 - not yet widely supported -->
- <pat:mml op="mstyle">
- <mstyle mathvariant="script">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathscr" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="script">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbb" params="{C}"/>
- <pat:mml op="">
- <mi> &#x2102; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbb" params="{H}"/>
- <pat:mml op="">
- <mi> &#x210D; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbb" params="{N}"/>
- <pat:mml op="">
- <mi> &#x2115; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbb" params="{P}"/>
- <pat:mml op="">
- <mi> &#x2119; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbb" params="{Q}"/>
- <pat:mml op="">
- <mi> &#x211A; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbb" params="{R}"/>
- <pat:mml op="">
- <mi> &#x211D; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbb" params="{Z}"/>
- <pat:mml op="">
- <mi> &#x2124; </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathbb" params="\patVAR!{text}"/> <!-- Others in plane 1 - not yet widely supported -->
- <pat:mml op="mstyle">
- <mstyle mathvariant="double-struck">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bmit" params="\patVAR*{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="bold-italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- LaTeX 2.09 font declarations -->
-
-<pat:template>
- <pat:tex op="\rm" params="\patVAR*{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bf" params="\patVAR*{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="bold">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\tt" params="\patVAR*{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="sans-serif">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\it" params="\patVAR*{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sl" params="\patVAR*{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mit" params="\patVAR*{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sc" params="\patVAR*{text}"/>
- <pat:mml op="">
- <pat:variable name="text"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sf" params="\patVAR*{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="sans-serif">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cal" params="\patVAR*{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="script">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Text font type control commands -->
-
-<pat:template>
- <pat:tex op="" params="\textrm \patVAR!{text}"/>
- <pat:mml op="mtext">
- <mtext><pat:variable name="text"/></mtext>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\textrm" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\texttt" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mstyle mathvariant="sans-serif">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\textsf" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mstyle mathvariant="sans-serif">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\textup" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <pat:variable name="text"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\textit" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\textsl" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\textsc" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <pat:variable name="text"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\textmd" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <pat:variable name="text"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\textbf" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\textnormal" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\text" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\emph" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\em" params="\patVAR*{text}"/>
- <pat:mml op="">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\upshape" params="\patVAR*{text}"/>
- <pat:mml op="">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\itshape" params="\patVAR*{text}"/>
- <pat:mml op="">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\slshape" params="\patVAR*{text}"/>
- <pat:mml op="">
- <mstyle mathvariant="italic">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\scshape" params="\patVAR*{text}"/>
- <pat:mml op="">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Other font type control commands -->
-
-<pat:template>
- <pat:tex op="\Bbb" params="C"/>
- <pat:mml op="mstyle">
- <mo> &#x2102; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bbb" params="H"/>
- <pat:mml op="mstyle">
- <mo> &#x210D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bbb" params="N"/>
- <pat:mml op="mstyle">
- <mo> &#x2115; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bbb" params="P"/>
- <pat:mml op="mstyle">
- <mo> &#x2119; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bbb" params="Q"/>
- <pat:mml op="mstyle">
- <mo> &#x211A; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bbb" params="R"/>
- <pat:mml op="mstyle">
- <mo> &#x211D; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bbb" params="Z"/>
- <pat:mml op="mstyle">
- <mo> &#x2124; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bbb" params="\patVAR!{cap}"/> <!-- Others in plane 1 - not yet widely supported -->
- <pat:mml op="mstyle">
- <mstyle mathvariant="double-struck">
- <pat:variable name="cap"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\roman" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rom" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="normal">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Cal" params="\patVAR!{text}"/>
- <pat:mml op="mstyle">
- <mstyle mathvariant="script">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bold" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <mstyle mathvariant="bold">
- <pat:variable name="symbol"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\boldkey" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <mstyle mathvariant="bold">
- <pat:variable name="symbol"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\boldsymbol" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <mstyle mathvariant="bold">
- <pat:variable name="symbol"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\pmb" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <mstyle mathvariant="bold">
- <pat:variable name="symbol"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mathfrak" params="\patVAR!{symbol}"/>
- <pat:mml op="">
- <mstyle mathvariant="fraktur">
- <pat:variable name="symbol"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\intertext" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mspace linebreak="newline"/>
- <pat:variable name="text"/>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Font size control -->
-
-<pat:template>
- <pat:tex op="\tiny" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="+4">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\scriptsize" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="+3">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\footnotesize" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="+2">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\small" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="+1">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\normalsize" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="0">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\large" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="-1">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Large" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="-2">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\LARGE" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="-3">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\huge" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="-4">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\HUGE" params="\patVAR+{text}"/>
- <pat:mml op="">
- <mstyle scriptlevel="-5">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\displaystyle" params="\patVAR*{text}"/>
- <pat:mml op="">
- <mstyle displaystyle="true" scriptlevel="0">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\textstyle" params="\patVAR*{text}"/>
- <pat:mml op="">
- <mstyle displaystyle="false" scriptlevel="0">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\scriptstyle" params="\patVAR*{text}"/>
- <pat:mml op="">
- <mstyle displaystyle="false" scriptlevel="1">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\scriptscriptstyle" params="\patVAR*{text}"/>
- <pat:mml op="">
- <mstyle displaystyle="false" scriptlevel="2">
- <pat:variable name="text"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Big delimiter modifiers -->
-
-<pat:template>
- <pat:tex op="\bigl" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="prefix" scriptlevel="-1">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\bigr" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="postfix" scriptlevel="-1">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\Bigl" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="prefix" scriptlevel="-2">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bigr" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="postfix" scriptlevel="-2">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\biggl" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="prefix" scriptlevel="-3">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\biggr" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="postfix" scriptlevel="-3">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\Biggl" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="prefix" scriptlevel="-4">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Biggr" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="postfix" scriptlevel="-1">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\bigm" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="infix" scriptlevel="-1">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bigm" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="infix" scriptlevel="-2">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\biggm" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="infix" scriptlevel="-3">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Biggm" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle form="infix" scriptlevel="-4">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\big" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle scriptlevel="-1">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Big" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle scriptlevel="-2">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\bigg" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle scriptlevel="-3">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\Bigg" params="\patVAR!{a}" prec="350"/>
- <pat:mml op="">
- <mstyle scriptlevel="-4">
- <pat:variable name="a"/>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Layout related TeX macros -->
-
-<pat:template>
- <pat:tex op="\buildrel" params="\patVAR*{cond} \over \patVAR!{base}" prec="777"/>
- <pat:mml op="">
- <mover>
- <pat:variable name="base"/>
- <pat:variable name="cond"/>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lefteqn" params="\patVAR!{eqn}"/>
- <pat:mml op="">
- <pat:variable name="eqn"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hbox" params="to \patVAR+{size} {\patVAR*{sequence}}"/>
- <pat:mml op="">
- <mpadded>
- <pat:variable name="size" attribute="width"/>
- <pat:variable name="sequence"/>
- </mpadded>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hbox" params="spread \patVAR+{size} {\patVAR*{sequence}}"/>
- <pat:mml op="">
- <mpadded>
- <pat:variable name="sequence"/>
- </mpadded>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hbox" params="{\patVAR*{sequence}}"/>
- <pat:mml op="">
- <mpadded>
- <pat:variable name="sequence"/>
- </mpadded>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hspace" params="{\patVAR+{width}}"/>
- <pat:mml op="">
- <mspace width="1em"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hspace" params="*{\patVAR+{width}}"/>
- <pat:mml op="">
- <mspace width="1em"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vspace" params="{\patVAR+{width}}"/>
- <pat:mml op="">
- <mspace width="1ex"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vspace" params="*{\patVAR+{width}}"/>
- <pat:mml op="">
- <mspace width="1ex"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\strut"/>
- <pat:mml op="">
- <mspace width="0pt" height="8.5pt" depth="3.5pt"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\phantom" params="{\patVAR+{expr}}"/>
- <pat:mml op="mphantom">
- <mphantom>
- <pat:variable name="expr"/>
- </mphantom>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vphantom" params="{\patVAR+{expr}}"/>
- <pat:mml op="mphantom">
- <mphantom>
- <mpadded width="0">
- <pat:variable name="expr"/>
- </mpadded>
- </mphantom>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\smashed" params="{\patVAR+{expr}}"/>
- <pat:mml op="">
- <mphantom>
- <mpadded height="0" depth="0">
- <pat:variable name="expr"/>
- </mpadded>
- </mphantom>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\llap" params="\patVAR!{expr}"/>
- <pat:mml op="">
- <mpadded width="-1 width">
- <pat:variable name="expr"/>
- </mpadded>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rlap" params="\patVAR!{expr}"/>
- <pat:mml op="">
- <mpadded width="0">
- <pat:variable name="expr"/>
- </mpadded>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Spaces / new line characters -->
-
-<pat:template>
- <pat:tex op="\enskip"/>
- <pat:mml op="">
- <mspace width="0.5em"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\enspace"/>
- <pat:mml op="">
- <mspace width="0.5em"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ "/>
- <pat:mml op="">
- <mspace width="1em"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="~"/>
- <pat:mml op="">
- <mspace width="1em" linebreak="nobreak"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\,"/>
- <pat:mml op="&#x2009;">
- <mo> &#x2009; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\thinspace"/>
- <pat:mml op="&#x2009;">
- <mo> &#x2009; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\:"/>
- <pat:mml op="">
- <mspace width="0.22222em"/> <!-- 4/18 em -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\>"/>
- <pat:mml op="">
- <mspace width="0.22222em"/> <!-- 4/18 em -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\medspace"/>
- <pat:mml op="">
- <mspace width="0.22222em"/> <!-- 4/18 em -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\;"/>
- <pat:mml op="">
- <mspace width="0.27778em"/> <!-- 5/18 em -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\thickspace"/>
- <pat:mml op="">
- <mspace width="0.27778em"/> <!-- 5/18 em -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\!"/>
- <pat:mml op="">
- <mspace width="-0.16667em"/> <!-- -3/18 em -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\negthinspace"/>
- <pat:mml op="">
- <mspace width="-0.16667em"/> <!-- -3/18 em -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\negmedspace"/>
- <pat:mml op="">
- <mspace width="-0.22222em"/> <!-- -4/18 em -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\negthickspace"/>
- <pat:mml op="">
- <mspace width="-0.27778em"/> <!-- -5/18 em -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\quad"/>
- <pat:mml op="">
- <mspace width="1em"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\qquad"/>
- <pat:mml op="">
- <mspace width="2em"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\mspace" params="{\patVAR+{space}}"/>
- <pat:mml op="">
- <mspace width="0.16667em"/> <!-- default -->
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\cr" prec="-1"/>
- <pat:mml op="">
- <mspace linebreak="newline"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\\" params="[\patVAR+{space}]"/>
- <pat:mml op="">
- <mspace linebreak="newline"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\\" params="*[\patVAR+{space}]"/>
- <pat:mml op="">
- <mspace linebreak="newline"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\\" prec="-1"/>
- <pat:mml op="\\">
- <mspace linebreak="newline"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\linebreak" params="[4]"/>
- <pat:mml op="">
- <mspace linebreak="newline"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\linebreak" params="[\patVAR!{level}]"/>
- <pat:mml op="">
- <mspace linebreak="goodbreak"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\linebreak"/>
- <pat:mml op="">
- <mspace linebreak="newline"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nolinebreak" params="[4]"/>
- <pat:mml op="">
- <mspace linebreak="nobreak"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nolinebreak" params="[\patVAR!{level}]"/>
- <pat:mml op="">
- <mspace linebreak="badbreak"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nolinebreak"/>
- <pat:mml op="">
- <mspace linebreak="nobreak"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\allowbreak"/>
- <pat:mml op="">
- <mspace linebreak="goodbreak"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nobreak"/>
- <pat:mml op="">
- <mspace linebreak="nobreak"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\break"/>
- <pat:mml op="">
- <mspace linebreak="newline"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\newpage"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\displaybreak" params="[\patVAR*{level}]"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\displaybreak"/>
- <pat:mml op=""/>
-</pat:template>
-
-
-
-<!-- Pseudo macros (for infix operators) - DO NOT RENAME/REMOVE! -->
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR+{num}\over\patVAR+{den}" prec="666"/>
- <pat:mml op="mfrac">
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR+{num}\choose\patVAR+{den}" prec="666"/>
- <pat:mml op="mfrac">
- <mfrac linethickness="0">
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR+{num}\atop\patVAR+{den}" prec="666"/>
- <pat:mml op="mfrac">
- <mfrac linethickness="0">
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR!{base}_\patVAR!{sub}&#x005E;\patVAR!{sup}" prec="333"/>
- <pat:mml op="msubsup">
- <msubsup>
- <pat:variable name="base"/>
- <pat:variable name="sub"/>
- <pat:variable name="sup"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR!{base}&#x005E;\patVAR!{sup}_\patVAR!{sub}" prec="333"/>
- <pat:mml op="msupsub">
- <msubsup>
- <pat:variable name="base"/>
- <pat:variable name="sub"/>
- <pat:variable name="sup"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR!{base}_\patVAR!{sub}" prec="330"/>
- <pat:mml op="msub">
- <msub>
- <pat:variable name="base"/>
- <pat:variable name="sub"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR!{base}&#x005E;\patVAR!{sup}" prec="330"/>
- <pat:mml op="msup">
- <msup>
- <pat:variable name="base"/>
- <pat:variable name="sup"/>
- </msup>
- </pat:mml>
-</pat:template>
-
-
-<!-- The following four are variations without base explicitly given -->
-
-<pat:template>
- <pat:tex op="_" params="\patVAR!{sub}&#x005E;\patVAR!{sup}" prec="333"/>
- <pat:mml op="msubsup">
- <msubsup>
- <mrow/>
- <pat:variable name="sub"/>
- <pat:variable name="sup"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="&#x005E;" params="\patVAR!{sup}_\patVAR!{sub}" prec="333"/>
- <pat:mml op="msupsub">
- <msubsup>
- <mrow/>
- <pat:variable name="sub"/>
- <pat:variable name="sup"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="_" params="\patVAR!{sub}" prec="330"/>
- <pat:mml op="msub">
- <msub>
- <mrow/>
- <pat:variable name="sub"/>
- </msub>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="&#x005E;" params="\patVAR!{sup}" prec="330"/>
- <pat:mml op="msup">
- <msup>
- <mrow/>
- <pat:variable name="sup"/>
- </msup>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- \def handling - DO NOT RENAME/REMOVE! -->
-
-<pat:template>
- <pat:tex op="\def" params="\patVAR!{name}\patVAR!{def}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\newcommand" params="\patVAR!{name}\patVAR!{def}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\renewcommand" params="\patVAR!{name}\patVAR!{def}"/>
- <pat:mml op=""/>
-</pat:template>
-
-
-
-<!-- Math/Text mode switchers -->
-
-<!--pat:template>
- <pat:tex op="\mbox" params="{$\patVAR*{math}$}"/>
- <pat:mml op="">
- <pat:variable name="math"/>
- </pat:mml>
-</pat:template-->
-
-<pat:template>
- <pat:tex op="\mbox" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <pat:variable name="text"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\fbox" params="{\patVAR*{text}}"/>
- <pat:mml op="">
- <mo> <pat:variable name="text"/> </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ensuremath" params="{\patVAR*{math}}"/>
- <pat:mml op="">
- <pat:variable name="math"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="$" params="\patVAR+{math} $"/>
- <pat:mml op="">
- <pat:variable name="math"/>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- Other miscellaneuos TeX macros -->
-
-<pat:template>
- <pat:tex op="\label" params="\patVAR!{~label}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\cite" params="\patVAR!{key}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nonumber"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\limits"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nolimits"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\hline"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\vline"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\relax"/>
- <pat:mml op=""/>
-</pat:template>
-
-
-
-<!-- Other other stuff (used by MathML to TeX only) -->
-
-<pat:template>
- <pat:tex op=""/>
- <pat:mml op="&#x02062;">
- <mo> &#x02062; </mo> <!-- invisible times -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op=""/>
- <pat:mml op="&#x02061;">
- <mo> &#x02061; </mo> <!-- apply function -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op=""/>
- <pat:mml op="&#x0200B;">
- <mo> &#x0200B; </mo> <!-- invisible comma -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="{\patVAR+{text}}"/>
- <pat:mml op="mo">
- <mo> <pat:variable name="text"/> </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\hbox{\patVAR{a}}"/>
- <pat:mml op="mspace">
- <mspace width="pat:variable =a"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\patREP*{\patVAR!{a}}"/>
- <pat:mml op="mrow">
- <mrow>
- <pat:rep> <pat:variable name="a"/> </pat:rep>
- </mrow>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\patVAR!{a}"/>
- <pat:mml op="mi">
- <mi> <pat:variable name="a"/> </mi>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\patVAR!{a}"/>
- <pat:mml op="mn">
- <mn> <pat:variable name="a"/> </mn>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\patREP*{\patVAR!{a}}"/>
- <pat:mml op="math">
- <math>
- <pat:rep> <pat:variable name="a"/> </pat:rep>
- </math>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params=""/>
- <pat:mml op="none">
- <none/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\patREP*{\patVAR{a}}"/>
- <pat:mml op="mstyle">
- <mstyle>
- <pat:rep> <pat:variable name="a"/> </pat:rep>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\patREP*{\patVAR{a}}"/>
- <pat:mml op="merror">
- <merror>
- <pat:rep> <pat:variable name="a"/> </pat:rep>
- </merror>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\patREP*{\patVAR{a}}"/>
- <pat:mml op="menclose">
- <menclose>
- <pat:rep> <pat:variable name="a"/> </pat:rep>
- </menclose>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params="\patREP*{\patVAR{a}}"/>
- <pat:mml op="mpadded">
- <mpadded>
- <pat:rep> <pat:variable name="a"/> </pat:rep>
- </mpadded>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="" params=""/>
- <pat:mml op="~none">
- <pat:empty/>
- </pat:mml>
-</pat:template>
-
-
-
-<!-- ========================= NEW STUFF ============================ -->
-
-<pat:template>
- <pat:tex op="\*"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\-"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR*{num} \overwithdelims \patVAR!{delim1} \patVAR!{delim2} \patVAR*{den}" prec="666"/>
- <pat:mml op="">
- <pat:variable name="delim1"/>
- <mfrac>
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- <pat:variable name="delim2"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR*{num} \atopwithdelims \patVAR!{delim1} \patVAR!{delim2} \patVAR*{den}" prec="666"/>
- <pat:mml op="">
- <pat:variable name="delim1"/>
- <mfrac linethickness="0">
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- <pat:variable name="delim2"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR*{num} \brack \patVAR*{den}" prec="666"/>
- <pat:mml op="">
- <mfenced open="[" close="]" separators="">
- <mfrac linethickness="0">
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\patPSEUDO" params="\patVAR*{num} \brace \patVAR*{den}" prec="666"/>
- <pat:mml op="">
- <mfenced open="{" close="}" separators="">
- <mfrac linethickness="0">
- <pat:variable name="num"/>
- <pat:variable name="den"/>
- </mfrac>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-
-<pat:template>
- <pat:tex op="\implies"/>
- <pat:mml op="&#x21D2;">
- <mo> &#x21D2; </mo> <!-- Should be 27F9 -->
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{picture} \patVAR*{whatever} \end{picture}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\setlength" params="{\patVAR*{cmd}}{\patVAR*{spec}}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\if" params="\patVAR*{stuff}\fi"/>
- <pat:mml op="">
- <pat:variable name="stuff"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ifx" params="\patVAR!{token1}\patVAR!{token2}\patVAR*{stuff}\fi"/>
- <pat:mml op="">
- <pat:variable name="stuff"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\fontencoding" params="{\patVAR*{whatever}}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\fontfamily" params="{\patVAR*{whatever}}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\fontseries" params="{\patVAR*{whatever}}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\fontshape" params="{\patVAR*{whatever}}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\fontsize" params="{\patVAR*{size}}{\patVAR*{lspacing}}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\selectfont"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\begin" params="{minipage} {\patVAR*{width}} \patVAR*{text} \end{minipage}"/>
- <pat:mml op="">
- <pat:variable name="text"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\noindent"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\substack" params="{\patREP*{\patVAR+{line}\\}\patVAR*{last}}"/>
- <pat:mml op="">
- <mtable>
- <pat:rep>
- <mtr> <pat:variable name="line"/> </mtr>
- </pat:rep>
- <mtr> <pat:variable name="last"/> </mtr>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\binom" params="{\patVAR*{top}}{\patVAR*{bot}}"/>
- <pat:mml op="">
- <mfenced separators="">
- <mfrac linethickness="0">
- <pat:variable name="top"/>
- <pat:variable name="bot"/>
- </mfrac>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\dbinom" params="{\patVAR*{top}}{\patVAR*{bot}}"/>
- <pat:mml op="">
- <mstyle displaystyle="true">
- <mfenced separators="">
- <mfrac linethickness="0">
- <pat:variable name="top"/>
- <pat:variable name="bot"/>
- </mfrac>
- </mfenced>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\tbinom" params="{\patVAR*{top}}{\patVAR*{bot}}"/>
- <pat:mml op="">
- <mstyle displaystyle="false" scriptlevel="0">
- <mfenced separators="">
- <mfrac linethickness="0">
- <pat:variable name="top"/>
- <pat:variable name="bot"/>
- </mfrac>
- </mfenced>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\notag"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\protect"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rule" params="[\patVAR*{lift}]{\patVAR*{w}}{\patVAR*{h}}"/>
- <pat:mml op="">
- <mstyle color="black">
- <mspace>
- <pat:variable name="w" attribute="width"/>
- <pat:variable name="h" attribute="height"/>
- <pat:variable name="lift" attribute="depth"/>
- </mspace>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rule" params="{\patVAR*{w}}{\patVAR*{h}}"/>
- <pat:mml op="">
- <mstyle color="black">
- <mspace>
- <pat:variable name="w" attribute="width"/>
- <pat:variable name="h" attribute="height"/>
- </mspace>
- </mstyle>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\shorthandoff" params="{\patVAR*{arg}}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\shorthandon" params="{\patVAR*{arg}}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\xymatrix" params="{\patREP+{\patVAR*{firstCol}\patREP*{&amp;\patVAR*{rest}}\\}}"/>
- <pat:mml op="mtable">
- <mtable>
- <pat:rep>
- <mtr>
- <mtd> <pat:variable name="firstCol"/> </mtd>
- <pat:rep>
- <mtd> <pat:variable name="rest"/> </mtd>
- </pat:rep>
- </mtr>
- </pat:rep>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ar" params="@\patVAR!{style}[\patVAR*{dir}]"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ar" params="[\patVAR*{dir}]"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\injlim"/>
- <pat:mml op="">
- <mo> inj lim </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\projlim"/>
- <pat:mml op="">
- <mo> proj lim </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varlimsup"/>
- <pat:mml op="">
- <mover>
- <mo> lim </mo>
- <mo stretchy="true"> &#x00AF; </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varliminf"/>
- <pat:mml op="">
- <munder>
- <mo> lim </mo>
- <mo stretchy="true"> &#x00AF; </mo>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varinjlim"/>
- <pat:mml op="">
- <mover>
- <mo> lim </mo>
- <mo stretchy="true"> &#x2192; </mo>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\varprojlim"/>
- <pat:mml op="">
- <munder>
- <mo> lim </mo>
- <mo stretchy="true"> &#x2190; </mo>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\operatorname" params="{\patVAR*{op}}"/>
- <pat:mml op="">
- <pat:variable name="op"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\operatorname" params="*{\patVAR*{op}}"/>
- <pat:mml op="">
- <pat:variable name="op"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\shoveleft" params="{\patVAR*{formula}}"/>
- <pat:mml op="">
- <pat:variable name="formula"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\shoveright" params="{\patVAR*{formula}}"/>
- <pat:mml op="">
- <pat:variable name="formula"/>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\ref"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\eqref"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\leftroot" params="\patVAR!{shift}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\uproot" params="\patVAR!{shift}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\nobreakdash"/>
- <pat:mml op="">
- <mo> &#x2011; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\boxed" params="\patVAR!{formula}"/>
- <pat:mml op="">
- <mtable frame="solid">
- <mtr>
- <mtd>
- <pat:variable name="formula"/>
- </mtd>
- </mtr>
- </mtable>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\overset" params="\patVAR!{over}\patVAR!{base}"/>
- <pat:mml op="">
- <mover>
- <pat:variable name="base"/>
- <pat:variable name="over"/>
- </mover>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\underset" params="\patVAR!{under}\patVAR!{base}"/>
- <pat:mml op="">
- <munder>
- <pat:variable name="base"/>
- <pat:variable name="under"/>
- </munder>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lvert"/>
- <pat:mml op="">
- <mo form="prefix"> | </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rvert"/>
- <pat:mml op="">
- <mo form="postfix"> | </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\lVert"/>
- <pat:mml op="">
- <mo form="prefix"> &#x2016; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\rVert"/>
- <pat:mml op="">
- <mo form="postfix"> &#x2016; </mo>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\abs" params="\patVAR!{formula}"/>
- <pat:mml op="">
- <mfenced open="|" close="|" separators="">
- <pat:variable name="formula"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\norm" params="\patVAR!{formula}"/>
- <pat:mml op="">
- <mfenced open="&#x2016;" close="&#x2016;" separators="">
- <pat:variable name="formula"/>
- </mfenced>
- </pat:mml>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\DeclareMathOperator" params="\patVAR!{name}\patVAR!{def}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\DeclareMathOperator" params="*\patVAR!{name}\patVAR!{def}"/>
- <pat:mml op=""/>
-</pat:template>
-
-<pat:template>
- <pat:tex op="\sideset" params="{\patVAR*{sub}}{\patVAR*{sup}}\patVAR!{symbol}"/>
- <pat:mml op="">
- <msubsup>
- <pat:variable name="symbol"/>
- <pat:variable name="sub"/>
- <pat:variable name="sup"/>
- </msubsup>
- </pat:mml>
-</pat:template>
-
-
-</pat:tex2mmlmap>
testing/editor.sikuli/editor.py
+# -----------------------------------------------------------------------------
+# Copyright 2020 White Magic Software, Ltd.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and 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.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# This script contains helper functions used by the other scripts.
+#
+# Do not run this script.
+# -----------------------------------------------------------------------------
+
+from sikuli import *
+import sys
+import os
+from os.path import expanduser
+
+dir_home = expanduser( "~" )
+app_home = dir_home + "/bin"
+app_bin = app_home + "/scrivenvar.jar"
+
+wpm_typing_speed = 80
+
+# -----------------------------------------------------------------------------
+# Try to delete the file pointed to by the path variable. If there is no such
+# file, this will silently ignore the exception.
+# -----------------------------------------------------------------------------
+def rm( path ):
+ try:
+ os.remove( path )
+ except:
+ print "Ignored"
+
+# -----------------------------------------------------------------------------
+# Changes the current typing speed, where speed is given in words per minute.
+# -----------------------------------------------------------------------------
+def set_typing_speed( wpm ):
+ global wpm_typing_speed
+ wpm_typing_speed = wpm
+
+# -----------------------------------------------------------------------------
+# Creates a delay between keystrokes to emulate typing at a particular speed.
+# -----------------------------------------------------------------------------
+def random_wait():
+ from time import sleep
+ from random import uniform
+ cpm = wpm_typing_speed * 5.1
+ cps = cpm / 60.0
+ ms_per_char = 1000.0 / cps
+ ms_per_stroke = ms_per_char / 2.0
+
+ noise = uniform( 0, ms_per_stroke / 2 )
+ duration = (ms_per_stroke + noise ) / 1000
+
+ sleep( duration )
+
+# -----------------------------------------------------------------------------
+# Repeats a function call, f, n times.
+# -----------------------------------------------------------------------------
+def recur( n, f, *args ):
+ for i in range( n ):
+ f( *args )
+ random_wait()
+
+# -----------------------------------------------------------------------------
+# Emulate a typist who is typing in the given text.
+# -----------------------------------------------------------------------------
+def typer( text ):
+ for c in text:
+ type( c )
+ random_wait()
+
+# -----------------------------------------------------------------------------
+# Type a line of text followed by typing the ENTER key.
+# -----------------------------------------------------------------------------
+def typeln( text ):
+ typer( text )
+ enter()
+
+# -----------------------------------------------------------------------------
+# Injects a definition.
+# -----------------------------------------------------------------------------
+def autoinsert():
+ type( Key.SPACE, Key.CTRL )
+ random_wait()
+
+# -----------------------------------------------------------------------------
+# Types the TAB key.
+# -----------------------------------------------------------------------------
+def tab():
+ typer( Key.TAB )
+
+# -----------------------------------------------------------------------------
+# Types the ENTER key.
+# -----------------------------------------------------------------------------
+def enter():
+ typer( Key.ENTER )
+
+# -----------------------------------------------------------------------------
+# Types the ESC key.
+# -----------------------------------------------------------------------------
+def esc():
+ typer( Key.ESC )
+
+# -----------------------------------------------------------------------------
+# Types the DOWN arrow key.
+# -----------------------------------------------------------------------------
+def down():
+ typer( Key.DOWN )
+
+# -----------------------------------------------------------------------------
+# Types the HOME key.
+# -----------------------------------------------------------------------------
+def home():
+ typer( Key.HOME )
+
+# -----------------------------------------------------------------------------
+# Types the END key.
+# -----------------------------------------------------------------------------
+def end():
+ typer( Key.END )
+
+# -----------------------------------------------------------------------------
+# Types the BACKSPACE key.
+# -----------------------------------------------------------------------------
+def backspace():
+ typer( Key.BACKSPACE )
+
+# -----------------------------------------------------------------------------
+# Types the INSERT key, often to insert a new definition.
+# -----------------------------------------------------------------------------
+def insert():
+ typer( Key.INSERT )
+
+# -----------------------------------------------------------------------------
+# Types the DELETE key, often to remove selected text.
+# -----------------------------------------------------------------------------
+def delete():
+ typer( Key.DELETE )
+
+# -----------------------------------------------------------------------------
+# Moves the cursor one word to the right.
+# -----------------------------------------------------------------------------
+def skip_right():
+ type( Key.RIGHT, Key.CTRL )
+ random_wait()
+
+def select_word_right():
+ type( Key.RIGHT, Key.CTRL + Key.SHIFT )
+ random_wait()
+
+# -----------------------------------------------------------------------------
+# Types ENTER twice to begin a new paragraph.
+# -----------------------------------------------------------------------------
+def paragraph():
+ recur( 2, enter )
+ wait( 1.5 )
+
+# -----------------------------------------------------------------------------
+# Writes a heading to the document using the given text value as the content.
+# -----------------------------------------------------------------------------
+def heading( text ):
+ typer( "# " + text )
+ paragraph()
+
+# -----------------------------------------------------------------------------
+# Clicks the "Create" button to add a new definition.
+# -----------------------------------------------------------------------------
+def click_create():
+ click("1594187923258.png")
+ wait( .5 )
+
+# -----------------------------------------------------------------------------
+# Changes the text for the actively selected definition.
+# -----------------------------------------------------------------------------
+def rename_definition( text ):
+ typer( Key.F2 )
+ typer( text )
+ enter()
+ wait( .5 )
+
+# -----------------------------------------------------------------------------
+# Searches for the given text within the document.
+# -----------------------------------------------------------------------------
+def edit_find( text ):
+ type( "f", Key.CTRL )
+ typer( text )
+ enter()
+ wait( .25 )
+ esc()
+ wait( .5 )
+
+# -----------------------------------------------------------------------------
+# Searches for the next occurrence of the previous search term.
+# -----------------------------------------------------------------------------
+def edit_find_next():
+ typer( Key.F3 )
+ wait( .5 )
+
+# -----------------------------------------------------------------------------
+# Opens a dialog for selecting a file.
+# -----------------------------------------------------------------------------
+def file_open():
+ type( "o", Key.CTRL )
+ wait( 1 )
testing/demo.sikuli/1594593710440.png
Binary files differ
testing/demo.sikuli/1594593794335.png
Binary files differ
testing/demo.sikuli/1594594984108.png
Binary files differ
testing/demo.sikuli/1594689573764.png
Binary files differ
testing/demo.sikuli/demo.py
+# -----------------------------------------------------------------------------
+# Copyright 2020 White Magic Software, Ltd.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and 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.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# Runs all scripts
+# -----------------------------------------------------------------------------
+
+import s01
+import s02
+import s03
+import s04
testing/demo.sikuli/s01.py
+# -----------------------------------------------------------------------------
+# Copyright 2020 White Magic Software, Ltd.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and 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.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# This script introduces the editor and its purpose.
+# -----------------------------------------------------------------------------
+from sikuli import *
+import sys
+
+if not "../editor.sikuli" in sys.path:
+ sys.path.append( "../editor.sikuli" )
+
+from editor import *
+
+# ---------------------------------------------------------------
+# Fresh start
+# ---------------------------------------------------------------
+rm( app_home + "/variables.yaml" )
+rm( app_home + "/untitled.md" )
+rm( dir_home + "/.scrivenvar" )
+
+# ---------------------------------------------------------------
+# Wait for application to launch
+# ---------------------------------------------------------------
+openApp( "java -jar " + app_bin )
+
+wait("1594187265140.png", 30)
+
+# Breathing room for video recording.
+wait( 4 )
+
+# ---------------------------------------------------------------
+# Introduction
+# ---------------------------------------------------------------
+set_typing_speed( 240 )
+
+heading( "What is this application?" )
+typer( "Well, this application is a text editor that supports interpolated definitions, ")
+typer( "a few different text formats, real-time preview, spell check ")
+typer( "as you tipe" )
+wait( 0.5 )
+recur( 3, backspace )
+typer( "ype, and R statements." )
+paragraph()
+wait( 1 )
+
+# ---------------------------------------------------------------
+# Definition demo
+# ---------------------------------------------------------------
+heading( "What are definitions?" )
+typer( "Watch. " )
+wait( .5 )
+
+# Focus the definition editor.
+click_create()
+recur( 4, tab )
+
+wait( .5 )
+rename_definition( "application" )
+
+insert()
+rename_definition( "title" )
+
+insert()
+rename_definition( "Scrivenvar" )
+
+# Set focus to the text editor.
+tab()
+
+typer( "The left-hand pane contains a nested, folder-like structure of names " )
+typer( "and values that are called *definitions*. " )
+wait( .5 )
+typer( "Such definitions can simplify updating documents. " )
+wait( 1 )
+
+edit_find( "this application" )
+typer( "$application.title$" )
+
+edit_find_next()
+typer( "$application.title$" )
+
+type( Key.END, Key.CTRL )
+
+typer( "The right-hand pane shows the result after having substituted definition " )
+typer( "values into the document." )
+
+paragraph()
+typer( "Now nobody wants to type definition names all the time. Instead, type any " )
+typer( "partial definition value followed by `Ctrl+Space`, such as: scr" )
+wait( 0.5 )
+autoinsert()
+wait( 1 )
+typer( ". *Much* better!" )
+paragraph()
+
+heading( "What is interpolation?" )
+typer( "Definition values can reference definition names. " )
+wait( .5 )
+typer( "The definition names act as placeholders. Substituting placeholders with " )
+typer( "their definition value is called *interpolation*. Let's see how it works." )
+wait( 2 )
testing/demo.sikuli/s02.py
+# -----------------------------------------------------------------------------
+# Copyright 2020 White Magic Software, Ltd.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and 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.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# This script demonstrates how to use interpolated strings.
+# -----------------------------------------------------------------------------
+from sikuli import *
+import sys
+
+if not "../editor.sikuli" in sys.path:
+ sys.path.append( "../editor.sikuli" )
+
+from editor import *
+
+# -----------------------------------------------------------------------------
+# Open sample chapter.
+# -----------------------------------------------------------------------------
+file_open()
+type( Key.UP, Key.ALT )
+wait( 1 )
+typer( Key.END )
+wait( 1 )
+enter()
+wait( 0.5 )
+enter()
+wait( 1 )
+
+# -----------------------------------------------------------------------------
+# Open the corresponding definition file.
+# -----------------------------------------------------------------------------
+file_open()
+recur( 2, down )
+wait( 1 )
+enter()
+wait( 1 )
+
+# -----------------------------------------------------------------------------
+# Edit the sample document.
+# -----------------------------------------------------------------------------
+set_typing_speed( 80 )
+
+type( Key.HOME, Key.CTRL )
+recur( 2, down )
+
+# Grey
+recur( 3, skip_right )
+autoinsert()
+
+# 34
+recur( 4, skip_right )
+autoinsert()
+
+# Central
+recur( 10, skip_right )
+autoinsert()
+
+# London
+skip_right()
+autoinsert()
+
+# Hatchery
+skip_right()
+autoinsert()
+
+# and Conditioning
+recur( 2, select_word_right )
+delete()
+
+# Centre
+skip_right()
+autoinsert()
+
+set_typing_speed( 220 )
+
+typer( " Let's interpolate those four definitions instead!" )
+wait( 4 )
+recur( 13, type, Key.BACKSPACE, Key.CTRL )
+recur( 9, backspace )
+
+set_typing_speed( 60 )
+
+typer( "name$" )
+wait( 2 )
+
+# Collapse all definitions
+tab()
+recur( 8, typer, Key.LEFT )
+
+# Expand to city
+recur( 4, typer, Key.RIGHT )
+
+# Jump to name
+recur( 2, down )
+recur( 2, typer, Key.RIGHT )
+
+# Open the text field to show the full value
+typer( Key.F2 )
+
+# Traverse the text field
+home()
+recur( 16, type, Key.RIGHT, Key.CTRL )
+esc()
+
+restore_typing_speed()
+
+tab()
+type( Key.HOME, Key.CTRL )
+edit_find( "Director" )
+autoinsert()
+
+edit_find_next()
+autoinsert()
+
+edit_find_next()
+typer( Key.RIGHT )
+recur( 2, delete )
+autoinsert()
+typer( "'s" )
+
+edit_find( "Hatcheries" )
+autoinsert()
+
+# and Conditioning
+recur( 2, select_word_right )
+delete()
+
+edit_find( "Central" )
+autoinsert()
+
+skip_right()
+autoinsert()
+
+typer( " How about a different city?" )
+wait( 2 )
+recur( 5, type, Key.BACKSPACE, Key.CTRL )
+wait( 1 )
+tab()
+typer( Key.F2 )
+typer( "Seattle" )
+enter()
+tab()
+wait( 2 )
+
+type( Key.END, Key.CTRL )
+paragraph()
+typer( "No?" )
+paragraph()
+
+tab()
+typer( Key.F2 )
+typer( "London" )
+enter()
+
+tab()
+typer( "Organizing definitions is left to your ")
+typer( "doub" )
+autoinsert()
+typer( " Good imagination." )
+tab()
+
+# Jump to "char" definition
+home()
+
+# Jump to "char.a.primary.name" definition
+recur( 6, typer, Key.RIGHT )
+
+# Jump to "char.a.primary.caste" definition
+down()
+typer( Key.RIGHT )
+
+# Jump to root-level "caste" definition
+recur( 7, down )
+
+# Reselect "super"
+recur( 5, typer, Key.RIGHT )
+wait( 2 )
+
+# Close the window, no save
+type( "w", Key.CTRL )
+wait( 0.5 )
+tab()
+wait( 0.5 )
+typer( Key.SPACE )
+wait( 1 )
testing/demo.sikuli/s03.py
+# -----------------------------------------------------------------------------
+# Copyright 2020 White Magic Software, Ltd.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and 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.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# This script introduces images and R.
+# -----------------------------------------------------------------------------
+from sikuli import *
+import sys
+
+if not "../editor.sikuli" in sys.path:
+ sys.path.append( "../editor.sikuli" )
+
+from editor import *
+
+set_typing_speed( 80 )
+
+file_open()
+type( Key.UP, Key.ALT )
+wait( 0.5 )
+home()
+wait( 0.25 )
+enter()
+wait( 1 )
+end()
+wait( 0.25 )
+enter()
+wait( 1 )
+
+set_typing_speed( 200 )
+
+paragraph()
+heading( "What text formats are supported?" )
+
+typer( "Scr" )
+autoinsert()
+typer( " supports Markdown, R Markdown, XML, and R XML; however, the software " )
+typer( "architecture enables it to easily add new formats. The following figure " )
+typer( "depicts the overall architecture: " )
+paragraph()
+typer( "![](../writing/images/architecture)" )
+paragraph()
+typer( "Many text editors can only open one type of plain text markup format that is " )
+typer( "only output as HTML. With a little more effort, text editors could support " )
+typer( "multiple input and output formats. Scr" )
+autoinsert()
+typer( " does so and goes one step further by introducing interpolated definitions." )
+paragraph()
+typer( "Kitten interlude:" )
+paragraph()
+typer( "![](https://i.imgur.com/jboueQH.jpg)" )
+paragraph()
+
+heading( "What is R?" )
+typer( "R is a programming language. You might have noticed a few potential grammar " )
+typer( "problems with direct substitution. Rules for possessive forms, numbers, and " )
+typer( "other quirks can be tackled using R." )
+
+# -----------------------------------------------------------------------------
+# Demo bootstrapping
+# -----------------------------------------------------------------------------
+
+# Jump to the end
+type( Key.END, Key.CTRL )
+paragraph()
+
+set_typing_speed( 300 )
+heading( "How is R used?" )
+typer( "R must be instructed where to find script files and what ones to load. The " )
+typer( "*working directory* is the full path to those R files; the *startup script* " )
+typer( "defines what R files to load. Both preferences must be changed before prose " )
+typer( "may be processed. Preferences can be opened using either the " )
+typeln( "**Edit > Preferences** menu or by pressing `Ctrl+Alt+s`. Here goes!" )
+wait( 2 )
+
+# -----------------------------------------------------------------------------
+# Select the R script directory
+# -----------------------------------------------------------------------------
+
+# Change the working directory by clicking "Browse"
+type( "s", Key.CTRL + Key.ALT )
+wait("1594592396134.png", 1)
+click("1594592396134.png")
+wait( 0.5 )
+
+# Navigate to and select the "r" directory
+type( Key.UP, Key.ALT )
+wait( 0.5 )
+end()
+wait( 0.5 )
+enter()
+wait( 0.5 )
+end()
+wait( 0.5 )
+type( Key.UP )
+wait( 0.5 )
+recur( 2, tab )
+wait( 0.5 )
+enter()
+wait( 1 )
+
+# -----------------------------------------------------------------------------
+# Set the R startup script instructions
+# -----------------------------------------------------------------------------
+
+wait("1594593710440.png", 5)
+click("1594593710440.png")
+
+set_typing_speed( 440 )
+
+typeln( "setwd( '$application.r.working.directory$' )" )
+typeln( "assign( 'anchor', '$date.anchor$', envir = .GlobalEnv )" )
+typeln( "source( 'pluralize.R' )" )
+typeln( "source( 'possessive.R' )" )
+typeln( "source( 'conversion.R' )" )
+typeln( "source( 'csv.R' )" )
+
+wait("1594593794335.png", 3)
+click("1594593794335.png")
+
+paragraph()
+set_typing_speed( 220 )
+
+typer( "R is now configured. The startup script and other R " )
+typer( "files can be found in the " )
+typer( "[repository](https://github.com/DaveJarvis/scrivenvar/tree/master/R). " )
+wait( 1.5 )
+
+# Wait for the browser to appear.
+wait("1594594984108.png", 5)
+click("1594594984108.png")
+
+wait( 5 )
+click("1594689573764.png")
+
+paragraph()
+typer( "Next, we'll see how definitions and R can work together." )
+wait( 2 )
testing/demo.sikuli/s04.py
+# -----------------------------------------------------------------------------
+# Copyright 2020 White Magic Software, Ltd.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and 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.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# This script demonstrates using R.
+# -----------------------------------------------------------------------------
+from sikuli import *
+import sys
+
+if not "../editor.sikuli" in sys.path:
+ sys.path.append( "../editor.sikuli" )
+
+from editor import *
+
+set_typing_speed( 220 )
+
+# -----------------------------------------------------------------------------
+# Open the demo text.
+# -----------------------------------------------------------------------------
+file_open()
+type( Key.UP, Key.ALT )
+wait( 0.5 )
+end()
+wait( 0.5 )
+enter()
+wait( 0.5 )
+down()
+wait( 0.5 )
+enter()
+wait( 2 )
+
+# -----------------------------------------------------------------------------
+# Re-open the corresponding definition file.
+# -----------------------------------------------------------------------------
+file_open()
+recur( 2, down )
+wait( 1 )
+enter()
+wait( 2 )
+
+# -----------------------------------------------------------------------------
+# Brief introduction to R
+# -----------------------------------------------------------------------------
+type( Key.HOME, Key.CTRL )
+end()
+paragraph()
+
+typer( "## Using R" )
+paragraph()
+typer( "Insert R code into documents as follows: `r# 1+1`. " )
+wait( 1.5 )
+typer( "Notice how the right-hand pane shows the computed result. I'll wait. " )
+wait( 3 )
+typer( "The syntax is: open backtick, r#, *computable expression*, close " )
+typer( "backtick. That expression can be any valid R statement. The status bar " )
+typer( "will provide clues when an R expression cannot be computed by the " )
+typer( "editor. `r# glitch`" )
+wait( 4 )
+recur( 11, backspace )
+typer( "Let's swap 34 storeys for a definition value and replace the number " )
+typer( "according to the Chicago Manual of Style (cms) rules." )
+
+# -----------------------------------------------------------------------------
+# Demo pluralization
+# -----------------------------------------------------------------------------
+set_typing_speed( 80 )
+
+edit_find( "34" )
+autoinsert()
+
+edit_find( "x(" )
+typer( "cms(" )
+
+edit_find( "storeys." )
+typer( "34." )
+autoinsert()
+edit_find( "x(" )
+typer( "pl( 'storey'," )
+wait( 4 )
+
+tab()
+rename_definition( "1" )
+wait( 4 )
+rename_definition( "142" )
+wait( 4 )
+rename_definition( "34" )
+wait( 4 )
+tab()
+
+# -----------------------------------------------------------------------------
+# Demo possessives (it, her, his, Director)
+# -----------------------------------------------------------------------------
+type( Key.HOME, Key.CTRL )
+edit_find( "Director" )
+autoinsert()
+edit_find_next()
+autoinsert()
+edit_find_next()
+autoinsert()
+type( Key.RIGHT )
+recur( 2, delete )
+autoinsert()
+home()
+edit_find( "x(" )
+typer( "pos(" )
+wait( 2 )
+
+tab()
+rename_definition( "Headmistress" )
+wait( 4 )
+rename_definition( "Director" )
+wait( 2 )
+tab()
+
+type( Key.END, Key.CTRL )
+paragraph()
+typer( "Other possessives: `r# pos( 'it' )`, `r# pos( 'her' )`, `r# pos( 'his' )`, " )
+typer( "and `r# pos( 'my' )`." )
+
+# -----------------------------------------------------------------------------
+# Demo conversion, including ordinal numbers
+# -----------------------------------------------------------------------------
+set_typing_speed( 160 )
+
+paragraph()
+heading( "Date Conversions" )
+typer( "Mixing R code with definitions invites endless possibilities. " )
+typer( "Imagine someone racing to the " )
+typer( "`r#cms( v$location$breeder$storeys, ordinal=TRUE )` floor, whereby that " )
+typer( "ordinal stems from the Hatchery's storeys' definition. Or how about " )
+typer( "a complex timeline where dates are expressed in days relative to one " )
+typer( "point in time. Let's call this the *anchor date* and define it." )
+
+tab()
+home()
+typer( Key.SPACE )
+insert()
+rename_definition( "date" )
+insert()
+rename_definition( "anchor" )
+insert()
+rename_definition( "1969-10-29" )
+tab()
+
+paragraph()
+typer( "Next, set an R variable named `now` to the current date" )
+typer( "`r# now = format( Sys.time(), '%Y-%m-%d' ); ''`--- the empty single quotes " )
+typer( "prevent the date from appearing in the output document. " )
+
+paragraph()
+typer( "We set the anchor date to `r# annal()`, which was " )
+typer( "`r# elapsed( 0, days( v$date$anchor, format( Sys.time(), '%Y-%m-%d' ) ) )` " )
+typer( "ago from `r# format( as.Date( now ), '%B %d, %Y' )`. " )
+
+# -----------------------------------------------------------------------------
+# Demo CSV file import
+# -----------------------------------------------------------------------------
+paragraph()
+heading( "Tabular Data" )
+typer( "The following table shows average Canadian lifespans by birth " )
+typer( "year and sex:" )
+paragraph()
+typer( "`r# csv2md( '../data.csv', total=FALSE )`" )
+paragraph()
+typer( "Calling `csv2md` converts the comma-separated values in the spreadsheet " )
+typer( "to a table formatted using Markdown. The HTML preview pane changes the " )
+typer( "appearance of the resulting table. Using `../data.csv` instructs R to " )
+typer( "open `data.csv` from one directory above the *working directory*." )
+
+# -----------------------------------------------------------------------------
+# Demo HTML export
+# -----------------------------------------------------------------------------
+paragraph()
+heading( "Export" )
+typer( "Retrieve the output HTML by using the **Edit > Copy HTML** menu. Let's " )
+typer( "peek at the output." )
+wait( 2 )
+
+type( "e", Key.ALT )
+wait( 0.5 )
+down()
+wait( 0.25 )
+enter()
+wait( 0.25 )
+
+type( "a", Key.CTRL )
+wait( 0.25 )
+type( "v", Key.CTRL )
+wait( 5 )
+
+set_typing_speed( 40 )
+
+# Jump to page bottom (should already be there, but just in case)
+type( Key.END, Key.CTRL )
+recur( 3, typer, Key.PAGE_UP )
+type( Key.HOME, Key.CTRL )
+wait( 3 )
+
+set_typing_speed( 220 )
+type( "z", Key.CTRL )
+type( Key.END, Key.CTRL )
+
+paragraph()
+typer( "That's all for now, thank you!" )
+wait( 5 )
+
+# Delete the anchor date.
+tab()
+end()
+recur( 2, type, Key.UP )
+delete()
+tab()
testing/demo.sikuli/test.py
+from sikuli import *
+
+import sys
+import os
+
+def set_class_path():
+ path_script = getBundlePath()
+ dir_script = os.path.dirname( path_script )
+ path_lib = dir_script + "/keycast/build/libs/keycast.jar"
+
+ sys.path.append( path_lib )
+
+def launch():
+ from com.whitemagicsoftware.keycast import KeyCast
+ kc = KeyCast()
+ kc.show()
+
+def main():
+ set_class_path()
+ launch()
+
+
+if __name__ == "__main__":
+ main()