<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="remap.xsl"?>
<document>
<style type="text/css"><![CDATA[
table {border-width:thin; border-style: outset; margin-left:auto; margin-right:auto;}
td {border-width:thin; border-style: inset; padding: 0.5em;}
a.lociheader:link{ color: white; text-decoration: none; }
a.lociheader:visited { color: white; text-decoration: none; } 
a.lociheader:hover { color: red; text-decoration: none; } 
]]></style>
<div style="width:0px;height:0px;overflow:hidden"><form><input type="text"/></form></div>
<div style="border: thick blue solid">
<div style="background:blue;color:white;font-size:18pt;font-family:sans-serif;
border-bottom:thin white solid;">
<a class="lociheader" href="http://mathdl.maa.org/mathDL/23/">Loci</a>
</div></div>

<title><a id="topmat"/>Math Authoring for the Web Made Easier</title>
<subtitle>A Stylesheet for a LaTeX-HTML Hybrid Document Format</subtitle>
<author>Thomas E. Leathrum
<affiliation>Jacksonville State Univ.</affiliation>
<email><user>leathrum</user><host>jsu.edu</host></email>
<url>http://cs.jsu.edu/~leathrum/</url>
</author>
<date>January 2009</date>

<abstract>
This article was written using a new stylesheet which provides a hybrid of
XHTML with some new elements intended to reflect LaTeX-like document structure.
Most of the elements familiar from XHTML are available here, as is nearly all
of SVG.
Instead of remapping MathML, though, the embedding interface for 
Content Pseudo-TeX (CPT) is provided,
with special tags.
Also included are:  topmatter formatting, including
automatic generation of the table of contents, with internal linking; 
LaTeX-like elements for definitions,
theorems, proofs, and similar environments; automatic numbering of sections,
equations, and figures; basic citation formatting, including internal reference 
annotations; and identifier referencing with automatic internal page linking
for citations and numbers.
</abstract>
<contents/>

<h1><section/>Introduction</h1>
<p>
In January of 2007, the MAA Special Interest Group
on the use of the World-Wide Web in Undergraduate Mathematics Instruction
(WebSIGMAA) sponsored a panel discussion at the AMS/MAA Joint Mathematics
Meetings on
"Best Practices for Mathematics on the World-Wide Web," at which I served as
a panelist.  In my comments, I focused on ways to facilitate
internationalization and accessibility of Web-based materials, in
particular the advantages of content-oriented mark-up
such as Content MathML.  Following
the panelists' comments, questions from the audience got me wondering
about whether it would be possible to build software 
which would make it
easier for authors accustomed to writing LaTeX mark-up to write
instead standards-compliant content-oriented Web mark-up.
In a conversation with a colleague a month later, I wondered openly if it
would be possible, as a first step in this direction, 
to translate a compact and readable LaTeX-like mark-up for mathematics
expressions into Content MathML.  The result of that discussion was
the Content Pseudo-TeX Translator applet. <citeref refid="cpt"/>
But I knew that would only be the first step.
</p>
<p>
The next step is represented here, with this article, and with the
document format I used to write this article.  This
format supplements the earlier Content Pseudo-TeX with new LaTeX-like
document structure environments and many structure-related elements
from existing Web standards.
Documents written in this format
are translated by a stylesheet (and by the earlier translator applet)
into fully standards-compliant Web mark-up for the current generation
of advanced Web browsers.
</p>
<p>
The document format is designed to be easy and efficient for authors to
learn and use, but it is by no means entirely self-contained -- indeed, most
of the tags and environments available to authors are explicitly remapped from 
other Web standard formats.  An author should have no need to understand the 
more advanced technologies used to implement the document format, but
nonetheless some knowledge of other formats is prerequisite to using this
document format effectively.  
In particular, an author using this document format should understand
basic XML syntax, <citeref refid="xml"/> common XHTML tags 
(XHTML is essentially just HTML with
the restrictions imposed by XML syntax), <citeref refid="xhtml"/> 
and SVG for graphics. <citeref refid="svg"/>
Math expressions are included using an embedded form of Content Pseudo-TeX,
<citeref refid="cpt"/>
which inherits its identifiers from Content MathML 
<citeref refid="mml">Chapter 4</citeref>
and its syntactic
structure from LaTeX. <citeref refid="ltx"/>
Lists of all tags available in this format
are included in the <a href="#allapps">Appendices</a> to this article, 
but for detailed documentation of Content Pseudo-TeX and 
of the tags remapped from XHTML or SVG, please see the <a href="#ref">References</a>.
</p>

<h1><section/>Getting Started</h1>

<p>
This document formatting stylesheet manages internally many issues which have
confounded novice authors of Web materials as browsers have developed more sophisticated
uses of XML, the eXtensible Mark-up Language from the World Wide Web Consortium
(W3C). <citeref refid="xml"/>  For example,
XHTML and other recent variations on HTML are notorious for their use of
rather cryptic header elements, such as DOCTYPE declarations and namespaces.  In 
this document format, all such issues are handled internally, invisible to the
author.  To begin a page in this format, the browser need only be informed that
the document is an XML document, and to load the stylesheet <code>remap.xsl</code> --
so the basic document structure looks like:
</p>
<pre><![CDATA[<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="remap.xsl"?>
<document>
<title>Article Title Here</title>
<author>Your Name
<affiliation>Your School</affiliation>
...
</author>
<abstract>
...
</abstract>
...
</document>]]></pre>
<p>
It should be noted at this point that the document structure does adhere to
the rather strict rules of XML formatting:  tags must either be empty, as
in <xempty name="section"/> (to be seen later), 
or balanced, as in the <xenv name="document"/> environment
seen above, and attribute values must be enclosed in quotation marks, as in 
the <xatt name="type"/> identifier seen above.  Moreover, all element and attribute
identifiers must be all lower case letters.
</p>
<p>
The file must also be saved in such a way as to be served to the browser
as an XML file -- in most cases, this just means saving the file with
filename suffix "<code>.xml</code>."
The reference above to the stylesheet, <code>remap.xsl</code>, is a local
reference -- due to browser security issues, the stylesheet and several related
files must be saved locally, in the same folder as the document being
set using this format.  The relevant files are available for download in a 
compressed archive (available formats:
<a href="http://cs.jsu.edu/~leathrum/mathtrans/remap-files.zip">ZIP</a> or
<a href="http://cs.jsu.edu/~leathrum/mathtrans/remap-files.tgz">TGZ</a>).
</p>

<h1><section/> XHTML and SVG elements</h1>

<p>
Nearly all XHTML elements are remapped in this stylesheet to elements available within
this document format. <citeref refid="xhtml"/>
  The complete list of remapped XHTML elements is given
in <numref refid="xhapp"/> "Remapped XHTML Elements."  
All attributes are copied with the supported elements, also.
Some elements are given new meanings, or are not
available because their functions are handled by other elements instead.
</p>
<p>
For example, the <xenv name="title"/> environment in XHTML places a title in
the browser's top bar.  In this document format, the <xenv name="title"/>
environment does that and also places a main title centered within the
article text.
</p>
<p>The heading elements (<xenv name="h1"/>, <xenv name="h2"/>, etc.) are redefined
(except for <xenv name="h6"/>, which is not available) in order to reduce their
presented sizes and provide special code needed to properly handle automatic
section numbering and table of contents generation.  Any XHTML attributes
which are applied to these redefined versions of the elements are copied and
applied appropriately.</p>
<p>
The XHTML environments <xenv name="html"/>, <xenv name="head"/>, and
<xenv name="body"/> are not available because their functions
are all handled in this document format by the
<xenv name="document"/> environment.
</p>
<p>
The document format does not attempt to redefine or replace the XHTML elements
for handling tables or itemized lists, even though they do not closely 
correspond with LaTeX environments, since the elements already available
suffice for nearly all purposes.
</p>
<p>
Some XHTML elements, however, are not available in any form
within this document format, either because they
are deprecated within XHTML or because they are heavily presentation-oriented,
and this document format attempts to maintain content-level structured formatting.
The unavailable elements are: 
style elements <code>big</code>, <code>small</code>, <code>font</code>,  
<code>b</code>, <code>i</code>, <code>tt</code>,  <code>s</code>, 
<code>strike</code>, <code>u</code> 
<code>basefont</code>, and <code>center</code> 
(same effects can be achieved using
<xatt name="style"/> attributes instead);
presentation elements <code>br</code> and <code>hr</code>;
frames-related elements <code>frame</code>, <code>frameset</code>, and <code>noframe</code>;
deprecated form elements <code>dir</code>, <code>isindex</code>, and <code>menu</code>; and
HTTP instruction element <code>meta</code>.
</p>

<p>All SVG elements are remapped in this stylesheet to elements available within
this document format.  <citeref refid="svg"/> 
The complete list of SVG elements available in this document 
format is given in <numref refid="svapp"/> "Remapped SVG Elements."
Two SVG elements require a bit of extra handling in
the stylesheet:  <code>title</code> and <code>metadata</code>
--  name clashes with new elements in
the document format are handled by the internal namespace management, but only
when they appear within the <xenv name="svg"/> environment.  
All attributes are copied with the supported elements, also.
However, in cases where SVG requires additional care for proper use of XML
namespaces, the stylesheet manages the namespaces internally.  In particular,
the <xatt name="href"/> attribute to the <xenv name="a"/> linking
environment in SVG ordinarily requires explicit reference to the XLink
XML namespace. <citeref refid="svg">sec. 17</citeref>
There is, of course, a corresponding <xenv name="a"/> linking
environment in XHTML, but it does not require the XLink namespace in normal use.
In this document format, all namespace references are managed
internally, so the author does not need to worry about it.
</p>
<p>
There are two other elements which XHTML and SVG have in common:
<xenv name="script"/> and <xenv name="style"/>.  The syntax of these elements
is identical between XHTML and SVG, though, so the stylesheet only needs to manage
the XHTML and SVG namespaces for these elements.  Again, this is handled internally
so that the author does not need to worry about it.
As in both XHTML and SVG, the contents of <xenv name="script"/> and <xenv name="style"/>
environments must be protected from the XML parser by enclosing the contents within
a <code>&lt;![CDATA[...]]&gt;</code> environment.</p>
<p>
Here is a simple example of SVG:
</p>
<div style="text-align:center;">
<svg width="70%" height="100%" version="1.1">
<ellipse cx="240" cy="100" rx="220" ry="30" transform="rotate(-5)"
fill="white" stroke="red" stroke-width="5"/>
<ellipse cx="220" cy="70" rx="190" ry="20" transform="rotate(5)"
fill="white" stroke="green" stroke-width="5"/>
<ellipse cx="210" cy="45" rx="170" ry="15" transform="rotate(15)"
fill="white" stroke="blue" stroke-width="5"/>
</svg></div>
<p>
This was generated with the following code:
</p>
<pre><![CDATA[<div style="text-align:center;">
<svg width="70%" height="100%" version="1.1">
<ellipse cx="240" cy="100" rx="220" ry="30" transform="rotate(-5)"
fill="white" stroke="red" stroke-width="5"/>
<ellipse cx="220" cy="70" rx="190" ry="20" transform="rotate(5)"
fill="white" stroke="green" stroke-width="5"/>
<ellipse cx="210" cy="45" rx="170" ry="15" transform="rotate(15)"
fill="white" stroke="blue" stroke-width="5"/>
</svg> </div>]]></pre>
<p>
Note here also the use of the <xenv name="div"/> environment and its
<xatt name="style"/> attribute.  These center the SVG image.
This example is repeated in Section <numref refid="auto"/>, "Automatic Numbering,"
where figure numbering and captions are demonstrated as well.
</p>
<p>
There are many ways to generate mathematically useful SVG images.  For example,
the <a href="http://www.gnuplot.info/"><kbd>gnuplot</kbd></a> 
program can generate graphs of functions using
straightforward commands, and it can export its output in SVG format.
The <a href="http://www.inkscape.org/">Inkscape</a> program provides a graphical
interface with SVG output, but does not have particular support for
generating graphs of functions.  
The <a href="http://www.gnome.org/projects/gnumeric/"><kbd>gnumeric</kbd></a>
spreadsheet program can generate a graph from data within a spreadsheet and
export the graph in SVG format.
The <a href="http://www.wolfram.com/">Mathematica</a> 
software package can export graphics as SVG, 
but apparently the <a href="http://www.maplesoft.com/">Maple</a> 
software package cannot (as of Maple version 12).
</p>

<h1><section/> Emedded Content Pseudo-TeX</h1>

<p>
Mathematical expressions can be included within a document using the
<a href="http://cs.jsu.edu/~leathrum/mathtrans/in-page-doc.xml">embedding interface</a> 
for Content Pseudo-TeX. <citeref refid="cpt"/>  The header references to the
JavaScript file and Java applet normally needed to invoke embedded CPT
are included automatically by the stylesheet,
so the author does not have to worry about them.
Embedded mathematics are included using the  <xenv name='math'/>
environment.  CPT expressions within the <xenv name='math'/>
environment must be protected from the XML parser, though, using
a <code>CDATA</code> section.
</p>
<p>
The <xenv name="math"/> environment takes the attribute <xatt name="display"/>,
similar to ordinary MathML.  Setting <code>display="block"</code> sets the
mathematics in block displayed mode, similar to "<code>$$</code>" in TeX
or the "<code>\[...\]</code>" environment in LaTeX.  The default setting for
this attribute is <code>block="inline"</code>, which sets the mathematics 
in-line with the surrounding text.
</p>
<p>
The <xenv name='dmath'/> environment is provided as a convenient abbreviation
for <code>&lt;math display="block"&gt;...&lt;/math&gt;</code>.
</p>
<p>
Here is an example of embedded mathematics, using the <xenv name="dmath"/> environment
for block display mode:
</p>
<dmath><![CDATA[
\int[v:x][l:0][u:\pi;]{\sin{x}}=2
]]></dmath>
<p>
This was generated using the following code:
</p>
<pre><![CDATA[<dmath><![CDATA[
\int[v:x][l:0][u:\pi;]{\sin{x}}=2
]]]]>><![CDATA[></dmath>]]></pre>
<p>
The <xenv name='dmath'/> environment and <xenv name='math'/>
with <code>display="block"</code> both also allow a <xenv name="label"/>
environment for including left-justified labels such as equation numbers.
The <xenv name="label"/> environment must be <em>inside</em> the
<xenv name='dmath'/> or <xenv name='math'/> environment, but
<em>outside</em> the <code>CDATA</code> zone.  For example:
</p>
<dmath><label><subsection/></label><![CDATA[
\int[v:x][l:0][u:\pi;]{\sin{x}}=2
]]></dmath>
<p>
This was generated using the following code:
</p>
<pre><![CDATA[<dmath><label><subsection/></label><![CDATA[
\int[v:x][l:0][u:\pi;]{\sin{x}}=2
]]]]>><![CDATA[></dmath>]]></pre>
<p>
Use of the <xempty name="subsection"/> element above and other related numbering elements
is explained in Section <numref refid="auto"/>,  "Automatic Numbering."
Other labels are allowed within the <xenv name="label"/> environment as well.
For example:
</p>
<dmath><label>equation</label><![CDATA[
\int[v:x][l:0][u:\pi;]{\sin{x}}=2
]]></dmath>
<p>
This was generated using the following code:
</p>
<pre><![CDATA[<dmath><label>equation</label><![CDATA[
\int[v:x][l:0][u:\pi;]{\sin{x}}=2
]]]]>><![CDATA[></dmath>]]></pre>
<p>
The following table includes several more examples of embedded Content Pseudo-TeX,
all set using the <xenv name="dmath"/> environment:
</p>
<table>
<tr>
<td><code>\limit[v:x][c:{x\tendsto@above|0}]{\sin{x}/x}=1</code></td>
<td><dmath><![CDATA[
\limit[v:x][c:{x\tendsto@above|0}]{\sin{x}/x}=1
]]></dmath></td>
</tr>
<tr>
<td><code>\sum[v:n][l:1][u:\infinity;]{1/n^2}=\pi;^2/6</code></td>
<td><dmath><![CDATA[
\sum[v:n][l:1][u:\infinity;]{1/n^2}=\pi;^2/6
]]></dmath></td>
</tr>
<tr>
<td><pre><![CDATA[\begin{matrix}
\begin{matrixrow}
\cos{&theta;} (-\sin{&theta;})
\end{matrixrow}
\begin{matrixrow}
\sin{&theta;} \cos{&theta;}
\end{matrixrow}
\end{matrix}]]></pre></td>
<td><dmath><![CDATA[
\begin{matrix}
\begin{matrixrow}
\cos{&theta;} (-\sin{&theta;})
\end{matrixrow}
\begin{matrixrow}
\sin{&theta;} \cos{&theta;}
\end{matrixrow}
\end{matrix}
]]></dmath></td>
</tr>
<tr>
<td><pre>\int[v:x][l:-\infinity;][u:\infinity;]
    {\exp{-(x^2)}}=\root{\pi;}</pre></td>
<td><dmath><![CDATA[
\int[v:x][l:-\infinity;][u:\infinity;]
     {\exp{-(x^2)}}=\root{\pi;}
]]></dmath></td>
</tr>
<tr>
<td><pre>f(x)\approx|
  \sum[v:n][l:0][u:k]{
  (\begin{apply}\diff[n:n]{f}c\end{apply}/n!)*(x-c)^n}</pre></td>
<td><dmath><![CDATA[
f(x)\approx|
\sum[v:n][l:0][u:k]{
(\begin{apply}\diff[n:n]{f}c\end{apply}/n!)*(x-c)^n}
]]></dmath></td>
</tr>
</table>
<caption><figure/>Table of CPT Examples.</caption>
<p>
The previous article on Content Pseudo-TeX <citeref refid="cpt"/> 
includes complete documentation on the source syntax. Since CPT derives
most of its identifiers from corresponding Content MathML elements,
authors will also need to refer to the W3C documentation
on MathML, which includes descriptions of all Content MathML elements. 
<citeref refid="mml">Chapter 4</citeref>
</p>

<h1><section/> LaTeX-Like Document Structure Elements</h1>

<p>This document format supports several theorem-like environments, similar
to those in LaTeX, <citeref refid="ltx"/>
which allow an author to introduce basic structural elements
into a document without being concerned with layout issues.  The supported
environments are:</p>
<ul>
<li><xenv name="definition"/>: Definition</li>
<li><xenv name="theorem"/>: Theorem</li>
<li><xenv name="proof"/>: Proof</li>
<li><xenv name="lemma"/>: Lemma (typeset similar to Theorem)</li>
<li><xenv name="claim"/>: Claim (typeset similar to Theorem)</li>
<li><xenv name="proposition"/>: Proposition (typeset similar to Theorem)</li>
<li><xenv name="corollary"/>: Corollary (typeset similar to Theorem)</li>
<li><xenv name="example"/>: Example (typeset similar to Definition)</li>
<li><xenv name="exercise"/>: Exercise (typeset similar to Definition)</li>
<li><xenv name="problem"/>: Problem (typeset similar to Definition)</li>
</ul>

<p>
All of these theorem-like environments allow a <xenv name="name"/> environment,
for which the contents are used to replace the default label on the environment.
The <xenv name="name"/> environment must be inside the theorem-like
environment.
Here are examples of a few of these environments:
</p>
<definition>A term is defined here.</definition>
<theorem>This is a theorem based on the defined term.</theorem>
<proof>The theorem is proven here.</proof>
<theorem><name>Renamed theorem</name>This is a renamed theorem.</theorem>

<p>
These examples were set with the following code:
</p>
<pre><![CDATA[<definition>A term is defined here.</definition>
<theorem>This is a theorem based on the defined term.</theorem>
<proof>The theorem is proven here.</proof>
<theorem><name>Renamed theorem</name>This is a renamed theorem.</theorem>]]></pre>
<p>
All of these theorem-like environments, <em>except</em>
the <xenv name="proof"/> environment, 
also allow a <xenv name="label"/>
environment for including labels such as subsection numbers.
The <xenv name="proof"/> environment does not support labels
because a proof is always associated
with a theorem, so the label applies to the theorem.
The <xenv name="label"/> environment must be <em>inside</em> the theorem-like
environment.  Here is an example:
</p>
<theorem><label><subsection/></label>This theorem includes a label.</theorem>
<p>
This example was set with the following code:
</p>
<pre><![CDATA[<theorem><label><subsection/></label>This theorem includes a label.</theorem>]]></pre>
<p>
Use of the <xempty name="subsection"/> element above and other related numbering elements
is explained in Section <numref refid="auto"/>,  "Automatic Numbering."
Other labels are allowed within the <xenv name="label"/> environment as well.
For example:
</p>
<theorem><label>label</label>This is another labeled theorem.</theorem>
<p>
This was set with the following code:
</p>
<pre><![CDATA[<theorem><label>label</label>This is another labeled theorem.</theorem>]]></pre>

<h1><section/> Topmatter Formatting</h1>

<p>
The material which typically appears at the beginning of an article or
similar document (the "topmatter"), such as title, author, and abstract,
are set in this document format using the following elements:
</p>
<ul>
<li><xenv name="title"/>: Contains the article's title.  
The contents of this environment are
placed in the browser's top window bar (the function the XHTML
<xenv name="title"/> environment usually performs), and also
within the document in title position.</li>
<li><xenv name="subtitle"/>:  Contains the article's subtitle.</li>
<li><xenv name="author"/>: Contains the article's author, and related information.  
The document may
contain more than one <xenv name="author"/> environment.
The following optional environments are allowed only <em>inside</em> the
<xenv name="author"/> environment:
<ul>
<li><xenv name="affiliation"/>:  Contains the affiliation of the  author.</li>
<li><xenv name="email"/>:  Contains the e-mail address of the  author.
Inside this environment, the <xenv name="user"/> and <xenv name="host"/>
environments are required.  The string "<em>user</em><code>@</code><em>host</em>"
is set within the document, and a "<kbd>mailto:</kbd>" link is automatically provided.</li>
<li><xenv name="url"/>:  Contains the URL of the  author's Web homepage.
The contents of the <xenv name="url"/> environment
are set within the document, and a link is automatically provided.</li>
</ul></li>
<li><xenv name="date"/>: Contains the article's date. No particular date format is enforced.</li>
<li><xenv name="abstract"/>:  Contains the article's abstract.
The "Abstract:" label is included automatically.</li>
<li><xempty name="contents"/>:  Automatically generates a table of contents for the
article, based on heading elements (<xenv name="h1"/>, <xenv name="h2"/>, etc.)
within the article.    The "Contents:" label is included automatically.</li>
</ul>
<p>
Indentation in the table of contents
is determined by the level of heading element within the article, so for
example a line from an <xenv name="h2"/> heading is indented more than
a line from an <xenv name="h1"/> heading.
Internal page links are automatically included for
each item.
Also, if the <xempty name="contents"/> element is included in the topmatter, then
a link back to the table of contents is included
with each heading element within the article.
</p>
<p>The <a href="#topmat">topmatter for this article</a> was set using the following code:
</p>
<pre><![CDATA[<title>Math Authoring for the Web Made Easier</title>
<subtitle>A Stylesheet for a LaTeX-HTML Hybrid Document Format</subtitle>
<author>Thomas E. Leathrum
<affiliation>Jacksonville State Univ.</affiliation>
<email><user>leathrum</user><host>jsu.edu</host></email>
<url>http://cs.jsu.edu/~leathrum/</url>
</author>
<date>July 2008</date>
<abstract>
This article was written...
</abstract>
<contents/>]]></pre>
<p>
The order in which these elements appear in the document is not relevant -- they
will be set in the proper order in the browser.
</p>
<p>
The stylesheet also provides a 
<xenv name="metadata"/> environment for including arbitrary data in the
source XML file (provided the XML formatting is not violated).
The contents of this environment do not appear in the document when it
is set in a browser.  Using the W3C's RDF metadata format within this element
is recommended, but not required. <citeref refid="rdf"/>
</p>
<p>
There is no explicit prohibition in the stylesheet preventing these
elements from being used anywhere in the document, but it wouldn't make 
much sense to put them anywhere but the beginning, immediately after
the opening <code>&lt;document&gt;</code> element.
</p>
<p>
The format described above for e-mail addresses is used instead of simply
including an e-mail address string in the document in order to foil
automated Internet "robots" which mine pages for e-mail address strings.
</p>
<p>
If the page includes a <xenv name="style"/> environment for local style
declarations, it should be included in the topmatter, immediately after
the opening <code>&lt;document&gt;</code> element.
</p>

<h1><section id="auto"/> Automatic Numbering</h1>

<p>
For numbering chapters, sections, subsections, etc., within a document, the
following elements are provided:
<xempty name="chapter"/>,
<xempty name="section"/>,
<xempty name="subsection"/>,
<xempty name="subsubsection"/>,
etc. (down to <xempty name="subsubsubsubsubsection"/>).
Chapters and sections are numbered sequentially, with section numbers
resetting to 1 when a new chapter begins.  Chapter labels have the form
"Chapter I" (using Roman numerals).  Section labels include only the section number.
Subsection labels have the form "2.3," where the first number is the
section number and the second number is the subsection number.
Subsection numbers reset to 1 when a new section begins.
Similarly, subsubsection labels have the form "2.3.4," etc.
There is no requirement that chapter numbers be used
(for example, this article does not use them), but using
subsection numbers without preceding section numbers will cause
problems with how the labels appear when they are set.
</p>
<p>
Appendix number labels are provided with the elements
<xempty name="appendix"/>,
<xempty name="appendixsection"/>,
<xempty name="appendixsubsection"/>,
<xempty name="appendixsubsubsection"/>,
etc. (down to <xempty name="appendixsubsubsubsection"/>).
Appendix labels have the form "Appendix A," where the capital roman
letters proceed sequentially for all appendices.
Appendix section labels have the form "A.2," appendix subsection numbers
have the form "A.2.3," etc.  Again, numbering and number resetting is
automatic.
</p>
<p>
If section numbers are included in heading environments (<xenv name="h1"/>,
<xenv name="h2"/>, etc.), then the section number element must be the
<em>first</em> item inside the heading environment, or the automatic generation
of the table of contents and automatic adjustments to punctuation will fail.
</p>
<p>
A typical use of these automatic numbering elements is to provide subsection
labels on theorem-like environments.  In order to properly place the
subsection label when the environment is set in the document, the
<xenv name="label"/> environment is provided within each of the
theorem-like environments (except the <xenv name="proof"/> environment).
Here is a typical example:
</p>
<theorem><label><subsection/></label>This is a numbered theorem.</theorem>
<p>
This was set with the following code:
</p>
<pre><![CDATA[<theorem><label><subsection/></label>This is a numbered theorem.</theorem>]]></pre>
<p>
Punctuation around these automatically-generated number labels is generally
handled automatically as well, although the punctuation is treated somewhat 
differently depending on whether the number label is in a heading element,
a label in a theorem-like environment, or elsewhere.
</p>
<p>
Figures and equations can be numbered automatically using the
<xempty name="figure"/> and <xempty name="equation"/> elements.
For labeling figures, the <xenv name="caption"/> environment is provided.
Here is an example showing the use of an automatically generated figure number
in a caption under an SVG image:
</p>
<div style="text-align:center;">
<svg width="70%" height="100%" version="1.1">
<ellipse cx="240" cy="100" rx="220" ry="30" transform="rotate(-5)"
fill="white" stroke="red" stroke-width="5"/>
<ellipse cx="220" cy="70" rx="190" ry="20" transform="rotate(5)"
fill="white" stroke="green" stroke-width="5"/>
<ellipse cx="210" cy="45" rx="170" ry="15" transform="rotate(15)"
fill="white" stroke="blue" stroke-width="5"/>
</svg> </div>
<caption><figure/> SVG example.</caption>
<p>
This was generated with the following code:
</p>
<pre><![CDATA[<div style="text-align:center;">
<svg width="70%" height="100%" version="1.1">
<ellipse cx="240" cy="100" rx="220" ry="30" transform="rotate(-5)"
fill="white" stroke="red" stroke-width="5"/>
<ellipse cx="220" cy="70" rx="190" ry="20" transform="rotate(5)"
fill="white" stroke="green" stroke-width="5"/>
<ellipse cx="210" cy="45" rx="170" ry="15" transform="rotate(15)"
fill="white" stroke="blue" stroke-width="5"/>
</svg> </div>
<caption><figure/> SVG example.</caption>]]></pre>
<p>
Note here also the use of the <xenv name="div"/> environment and its
<xatt name="style"/> attribute.  These center the SVG image.  The stylesheet
automatically centers the caption.
</p>
<p>
Similarly, the <xempty name="equation"/> element provides automatically
generated equation number labels.
The <xenv name='dmath'/> environment and <xenv name='math'/>
with <code>display="block"</code> both also allow a <xenv name="label"/>
environment for including left-justified labels such as equation numbers.
For example:
</p>
<dmath><label><equation/></label><![CDATA[
\int[v:x][l:0][u:\pi;]{\sin{x}}=2
]]></dmath>
<p>
This was generated using the following code:
</p>
<pre><![CDATA[<dmath><label><equation/></label><![CDATA[
\int[v:x][l:0][u:\pi;]{\sin{x}}=2
]]]]>><![CDATA[></dmath>]]></pre>
<p>
Both figure numbers and equation numbers have the form "2.3," where the first 
number is the section number and the second number is sequential within the
section -- so there are three independent sequences of numbers within a
section:  the subsections, the figures, and the equations.
That is why, in this section, the numbered theorem, the numbered figure,
and the numbered equation all take the same number:  they are each the
first of their type in this section, and the three types are numbered
independently.
</p>
<p>
If any of these number elements has an <xatt name="id"/> attribute, then
that number can be referenced abstractly elsewhere in the document using the
<xempty name="numref"/>  element, which supports the
<xatt name="refid"/> attribute.  For example, the section heading for this section
is generated using the following code:
</p>
<pre><![CDATA[<h1><section id="auto"/> Automatic Numbering</h1>]]></pre>
<p>
Elsewhere in this document, then, this section can be referenced as follows:
</p>
<pre><![CDATA[Section <numref refid="auto"/>,  "Automatic Numbering."]]></pre>
<p>
The stylesheet keeps track of the cross-referenced numbering automatically.
The cross-referenced elements are also provided with internal page links,
so that (in the example above) the label set by the <xempty name="numref"/> element
is a link with the <xempty name="section"/> element as its destination.  
(This linking can be suppressed by setting the 
optional attribute <code>link="false"</code> in <xempty name="numref"/>.)
To see this example, the following is set with the code above: 
Section <numref refid="auto"/>,  "Automatic Numbering."
</p>
<p>
The <xempty name="count"/> element,
which can be used either as an empty element <xempty name="count"/> or as
an environment <xenv  name="count"/>,
provides a more customizable way to generate
numbering sequences.  This element takes two attributes, a required
<xatt name="countid"/> attribute and an optional <xatt name="pre"/> attribute.  
In its basic form, as an empty element with only the <xatt name="countid"/> attribute,
the <xempty name="count"/> element provides a sequence of numbers ("1," "2," "3," etc.)
for each unique identifier provided in the <xatt name="countid"/> attribute.
With both attributes present, the <xempty name="count"/> element provides a
number in the form "2.3.4.5," where the last number ("5") is the number of occurences
of <xempty name="count"/> with the same value of the <xatt name="countid"/> attribute, 
and  the value of <xatt name="pre"/> specifies that the string of numbers before
the last number ("2.3.4") is copied from the last occurence of the counting 
element named in the attribute.  For example, occurences of:
</p><p>
<code><![CDATA[<count countid="n" pre="section"/>]]></code>
</p><p>
would establish another sequence of the form "2.3" (similar to 
<xempty name="subsection"/>, <xempty name="equation"/>, and <xempty name="figure"/>).
There is one important caveat:  
the numbers shown last do <em>not</em> reset to 1 when there is
another occurence of the element named in the <xatt name="pre"/> attribute.
In other words, if occurences of <xempty name="count"/> as shown in the code above
generate numbers "2.1," "2.2," and "2.3," followed by a
<xempty name="section"/> element giving the number "3," then another occurence of 
<xempty name="count"/> as in the code above would give the 
number "3.4," because it is the fourth occurence of <code>countid="n"</code>
and copies the "3" from the previous occurence of <xempty name="section"/>.
Any counting element other than <xempty name="count"/> iteself
can be named in the <xatt name="pre"/> attribute.
If the <xatt name="pre"/> attribute is not present <em>and</em>
<xenv name="count"/> is used as an environment, the contents of the environment
provide the initial part of the number label -- for example, occurences of:
</p><p>
<code><![CDATA[<count countid="n">M</count>]]></code>
</p><p>
would provide a sequence in the
form "M.1," "M.2," "M.3," etc.  Note that a <xempty name="numref"/> element
can also be used in the contents of a <xenv name="count"/> environment, although
the link automatically provided in the <xempty name="numref"/> only applies
to that part of the label, not to the last number -- this is a context in
which the <code>link="false"</code> attribute to <xempty name="numref"/>
may be appropriate.  For example, if <code><![CDATA[<section id="q"/>]]></code> provides
the section number "3," then:
</p><p>
<code><![CDATA[<count id="n"><numref refid="q" link="false"/></count>]]></code>
</p><p>
will provide labels in the form "3.1," "3.2," etc., without internal links.
Finally, a <xempty name="count"/> element can also be given an
<xatt name="id"/> attribute and linked using <xempty name="numref"/>, as with
the other numbering elements.
</p>

<h1><section/> Citations and Bibliographic References</h1>

<p>
Bibliographic entries are set in a document using the
<xenv name="cite"/> environment, which will ordinarily appear at the end
of the document.  Each <xenv name="cite"/> environment is required to also
include a <xenv name="tag"/> environment, which is intended to allow the author
to provide a unique identifying label for each entry.
Elements valid within the <xenv name="cite"/> environment 
to supply the reference data
are given in the following list (names of elements are self-explanatory):
</p>
<ul>
<li><xenv name="author"/> (may appear more than once for multiple authors)</li>
<li><xenv name="editor"/> (may appear more than once for multiple editors)</li>
<li><xenv name="article"/></li>
<li><xenv name="chapternum"/> (for chapter number)</li>
<li><xenv name="chapter"/> (for chapter title)</li>
<li><xenv name="journal"/></li>
<li><xenv name="book"/></li>
<li><xenv name="volume"/></li>
<li><xenv name="number"/></li>
<li><xenv name="edition"/></li>
<li><xenv name="publisher"/>
<ul>
<li><xenv name="city"/> (may only appear inside <xenv name="publisher"/> environment)</li>
</ul></li>
<li><xenv name="date"/> (no particular date format is enforced)</li>
<li><xenv name="url"/> (internet link URL, automatically set as active link)</li>
<li><xenv name="page"/> (see below) </li>
</ul>
<p>
The <xenv name="page"/> environment tests its contents for instances of punctuation 
(dashes or commas) which would indicate that the page
reference is to multiple pages, 
and uses a "pp." label if such punctuation is found; otherwise, it uses
a "p." label, indicating only a single page.
</p>
<p>
The <xenv name="chapter"/> and <xenv name="chapternum"/> environments may be
used together, and indeed the punctuation is a bit different when they are, but
neither element should be inside the other.
</p>
<p>
There are no prohibitions implemented to prevent clashes between elements
within the citation, so for example even though there should never be any reason
to refer
to both a journal and a book in one citation, the elements do not prohibit
such use.
Some such clashes may cause problems with punctuation or
other presentation issues in the citation when it is set in the document, though.
Also, there is no explicit prohibition preventing the 
<xenv name="cite"/> environment from being used anywhere in a document, but
standard placement would be at the end of the document, perhaps in a "References"
section, as seen at the <a href="#ref">end of this article</a>.
</p>
<p>
Note also that the <xenv name="author"/>, <xenv name="url"/>,  and <xenv name="date"/> 
environments take  different meanings and presentations
within the <xenv name="cite"/> environment than when they are used in
the document's topmatter.  Similarly, the <xenv name="chapter"/> environment
has a different meaning and presentation
within the <xenv name="cite"/> environment than when it is used 
as an empty element, <xempty name="chapter"/>,
for automatic numbering of chapters.
</p>
<p>
If a <xenv name="cite"/> environment has an <xatt name="id"/>
attribute, then the
bibliographic entry can be referenced abstractly elsewhere in the document
using the
<xempty name="citeref"/> element, which can be used either as an empty element
as shown or as an environment, <xenv name="citeref"/>, both of which support the
<xatt name="refid"/> attribute.
For example, in the <a href="#ref">References</a> section of this article, the entry
with tag "CPT" (to an earlier article regarding Content Pseudo-TeX)
is set using the <xenv name="cite"/> environment in the
following form:
</p>
<pre><![CDATA[<cite id="cpt"><tag>CPT</tag>...</cite>]]></pre>
<p>
Then an inline citation to that entry, such as <citeref refid="cpt"/>,
can be set with the following code:
</p>
<pre><![CDATA[<citeref refid="cpt"/>]]></pre>
<p>
When <xenv name="citeref"/> is
used as an environment, the contents of the environment are placed inside
the tag's brackets.  For example, a reference to a particular section in
the above article may look like
<citeref refid="cpt">sec. 4.4</citeref>.  This can be set with the following
code:
</p>
<pre><![CDATA[<citeref refid="cpt">sec. 4.4</citeref>]]></pre>

<p>
Note that the <xempty name="citeref"/> element also provides internal page
links to the bibliographic entries.
</p>

<h1><section/> Compatibility and Usage Notes</h1>

<p>
This document style, and this article, were written and tested using the
Firefox browser.  The embedded Content Pseudo-TeX is known not to work in the
Microsoft Internet Explorer browser, but other elements should work.
</p>
<p>
So the ideal environment for viewing this article, and for using the
document format, would be the 
<a href="http://www.mozilla.org/firefox/">Firefox</a> browser (version 2.0 or later) 
with the <a href="http://www.java.com">Java</a> runtime plug-in (version 1.5 or later).
It may be necessary to 
<a href="http://www.mozilla.org/projects/mathml/fonts/">install fonts</a> 
in order to view mathematics correctly
in the Firefox browser -- the 
<a href="http://www.stixfonts.org">STIX fonts</a> are recommended, even though
they are still in beta test stage at this writing.
</p>
<p>
Other browsers may work as well.  The document format and associated files 
require several advanced Web technologies, though.  
First of all, a document using the format will be written as an XML file,
and transformed to XHTML  using the stylesheet, so the browser must
support XML and the XML Stylesheet Language with Transformations. 
<citeref refid="xsl"/>
The browser must also
support the Java plug-in and JavaScript in order to load the files
required for embedded CPT.  
The embedding procedure requires the JavaScript commands to dynamically
manipulate the XML document's Document Object Model (DOM) using
a set of methods collectively referred to as Asynchronous JavaScript and
XML (AJAX).
In particular, the JavaScript methods manipulate the MathML portions
of the DOM in order to embed mathematics expressions after the Java applet
completes the translation from CPT to Content MathML.
The mapping from Content MathML to Presentation MathML is carried out
using another XSLT stylesheet.
So the browser needs <em>native</em> support for Presentation MathML.
This is the issue for Internet Explorer -- support for MathML 
in Explorer requires
the Design Science MathPlayer plug-in, so the JavaScript methods do not
have dynamic access to the MathML portions of the DOM, the MathML is
instead rendered by the plug-in only at the time the document is loaded.
At that point, the document still contains the untranslated CPT, not
the MathML.
</p>
<p>
A final comment regarding XML document types (for advanced users):  as noted earlier,
this document style does not call for a document type element at the beginning
of the document, but nonetheless documents written using this
stylesheet can (and arguably should) be validated using a Document Type Definition
(DTD).  The stylesheet adds a document type element to the document in the
process of transforming to XHTML -- in particular, the document type refers
to the DTD for the profile provided by W3C for XHTML, MathML, and SVG combined.
However, the stylesheet transforms must be applied before the resulting document
is validated against the DTD.  In writing this article, I carried out the
transformation and validation using plug-ins for the <kbd>jEdit</kbd> editor:
the XSLT plug-in uses the Apache Xalan Java engine for XSLT transforms,
and the XML plug-in checks XML against DTD's using the Apache Xerces Java
engine.  I also wrote a basic local DTD to check the document format
before applying the stylesheet; however, that DTD is not distributed with the
stylesheet because its coverage of XHTML and SVG is incomplete but loading
the complete W3C profile prior to defining the new elements 
left unresolvable name and context clashes.
If validation is important in a particular application, I recommend
performing the stylesheet transformations prior to validation.
Note, however, that the translation of Content Pseudo-TeX will not have been
applied when the document is validated against the DTD -- the CDATA zones
will be intact, albeit with the "CDATA" environment stripped off.  
This behavior may appear to cause some problems with validation
if the untranslated CPT math expressions contain the characters
"&lt;" or "&amp;" -- the validator may conclude that the XML output is malformed.
This is because the XSLT processor needs to cast its output as a text document
in order for the XML validator to test it against a DTD.  Ordinarily
(i.e. when the stylesheet is applied by a browser),
the XSLT processor should actually generate its output as a DOM tree representing
the transformed document, and in this case the CPT expression appears in the
tree correctly as a text node, unparsed and ready to be sent to the translator applet.
</p>

<h1><section/> Conclusion</h1>

<p>
In an earlier article on Content Pseudo-TeX, <citeref refid="cpt">sec. 6</citeref>
I wrote about Future Directions for CPT and math on the Web:
</p>
<blockquote><p>
A more draconian, but perhaps nonetheless ultimately preferable, recommendation 
would be to create a new stylesheet using XSLT transformations to implement a 
new tag set, with tag names derived from document structure macros in LaTeX.  
For example, the stylesheet could implement a 
<code><![CDATA[<theorem>...</theorem>]]></code> 
XML environment 
analogous to the LaTeX <code>\begin{theorem}...\end{theorem}</code> 
environment. The document 
structure environments in LaTeX do not specify any particular presentation for 
theorems or definitions, leaving such decisions to the LaTeX style -- in other 
words, they provide content-level information about the document. The syntax of 
tags in a document written for this stylesheet would still be XML-based, but at 
least the tag identifiers would be familiar to LaTeX users.  I am working on a 
stylesheet based on this idea, and I hope to have a prototype available soon. 
</p></blockquote>
<p>
The document structure described in this article implements that vision.
I expect this stylesheet to be subject to changes based on the demands
of editorial processes as it comes into wider use.
These changes may include new elements, changes in various presentations, and 
localization (e.g. translating automatic labels into other languages).
The point of any stylesheet is to make such changes invisible to the author.
I hope that other authors will find this stylesheet useful, and that editors
of online mathematics journals will recognize its merits.
</p>
<p>
The project which has led to this stylesheet could proceed in a number
of different directions.  It may be possible, for example, to provide some degree
of translation between this document format and LaTeX, although there are some
inconsistencies in both directions which may make the translations difficult
or imprecise.  It may also be possible to develop a compressed syntax, similar
to CPT, which translates into SVG elements and provides an easier way to describe
graphs of functions.
</p>

<a id="allapps"/>
<h1><appendix id="xhapp"/> Remapped XHTML Elements</h1>

<p>
The following elements have been remapped from XHTML,
with all attributes copied, to make them available
within this document format:
</p>
<ul>
<li>Basic XHTML formatting: <code>p em strong sup sub</code></li>
<li>Advanced XHTML formatting: 
<code>abbr acronym address blockquote code dfn div span kbd pre q samp var</code>
</li>
<li>Bidirectional text: <code>bdo </code></li>
<li>Editing: <code>del ins </code></li>
<li>Embedded content and other advanced HTML: 
<code>img area map object param link base</code>
<ul>
<li>Deprecated, but supported anyway: <code>applet iframe</code></li>
</ul>
</li>
<li>Lists: <code>dl dt dd ol ul li</code>
</li>
<li>Tables: <code>table tr td th caption col colgroup tbody thead tfoot</code>
</li>
<li>Forms: <code>form input label select option textarea button fieldset optgroup</code>
</li>
<li>Elements overlapping with SVG, available to both with
namespaces managed automatically: <code>a script style</code> </li>
</ul>
<p>
In addition, some XHTML elements are available with new meanings:
</p>
<ul>
<li>Main title <em>and</em> browser window title: <code>title</code></li>
<li>Headings redefined: <code>h1 h2 h3 h4 h5</code> 
(<code>h6</code> is not available)</li>
<li>Citation: <code>cite</code></li>
</ul>
<p>
Other XHTML elements are unavailable:
</p>
<ul>
<li>Some are unavailable because other tags cover their role: 
<code>html head body</code>
</li>
<li>
Other unavailable elements:
<ul>
<li>   style: <code>big small font b i tt s strike u center basefont </code></li>
<li>   presentation: <code>br hr</code></li>
<li>   frames: <code>frame frameset noframe</code></li>
<li>   deprecated form elements: <code>dir isindex menu</code></li>          
<li>   HTTP instructions: <code>meta </code></li>
</ul>
</li>
</ul>

<h1><appendix id="svapp"/> Remapped SVG Elements</h1>

<p>
The following is an alphabetical list of all SVG elements which are
remapped, with all attributes copied, to make them available in this 
document format:
</p>
<p>
<code>altGlyph altGlyphDef altGlyphItem animate animateColor animateMotion animateTransform
circle clipPath color-profile cursor definition-src defs desc ellipse
feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix
feDiffuseLighting feDisplacementMap feDistantLight feFlood
feFuncA feFuncB feFuncG feFuncR feGaussianBlur
feImage feMerge feMergeNode feMorphology feOffset fePointLight
feSpecularLighting feSpotLight feTile feTurbulence
filter font font-face font-face-format font-face-name font-face-src
font-face-uri foreignObject g glyph glyphRef hkern image
line linearGradient marker mask missing-glyph mpath
path pattern polygon polyline radialGradient rect
set stop svg switch symbol
text textPath tref tspan use view vkern</code></p>
<p>
Other changes to SVG elements:
</p>
<ul>
<li>Elements overlapping with XHTML, available to both with
namespaces managed automatically: <code>a script style</code> </li>
<li>Elements overlapping with new elements, available to both with
namespaces managed automatically: <code>metadata title</code></li>
</ul>

<h1><appendix/> List of All New Elements</h1>

<p>The following are new elements introduced by this document format:
</p>
<ul>
<li>main document: <code>document</code></li>
<li>topmatter: <code>author affiliation email user host url date abstract contents metadata</code>
<ul>
<li>redefined XHTML element: <code>title</code></li>
</ul>
</li>
<li>mathematics: <code>math dmath</code></li>
<li>theorem-like environments: <code>definition theorem proof lemma claim proposition 
corollary exercise example problem</code></li>
<ul><li>renaming: <code>name</code></li></ul>
<li>labels and captions: <code>label caption</code></li>
<li>automatic numbering: 
<ul>
  <li>chapters and sections: <code>chapter section subsection subsubsection subsubsubsection subsubsubsubsection subsubsubsubsubsection</code></li>
  <li>appendix: <code>appendix appendixsection appendixsubsection appendixsubsubsection appendixsubsubsubsection appendixsubsubsubsubsection</code></li>
  <li>figures and equations: <code>figure equation</code></li>
  <li>referencing: <code>numref</code></li>
  <li>configurable: <code>count</code></li>
</ul></li>
<li>bibliography:  <code>tag author editor article chapternum chapter book journal volume number edition publisher city date url page</code>
<ul>
  <li>referencing: <code>citeref</code></li>
  <li>redefined XHTML element: <code>cite</code></li>
</ul></li>
</ul>

<h1><a id="ref"/>References</h1>

<cite id="xml"><tag>XML</tag>
<author>W3C</author>
<article>Extensible Markup Language (XML) 1.0</article>
<edition>4th</edition>
<date>29 September 2006</date>
<url>http://www.w3.org/TR/2006/REC-xml-20060816/</url>
</cite>
<cite id="xhtml"><tag>XHTML</tag>
<author>W3C</author>
<article>XHTML 1.0 The Extensible HyperText Markup Language</article>
<edition>revised 2nd</edition>
<date>1 August 2002</date>
<url>http://www.w3.org/TR/xhtml1/</url>
</cite>
<cite id="svg"><tag>SVG</tag>
<author>W3C</author>
<article>Scalable Vector Graphics (SVG) 1.1 Specification</article>
<date>14 January 2003</date>
<url>http://www.w3.org/TR/SVG/</url>
</cite>
<cite id="mml"><tag>MathML</tag>
<author>W3C</author>
<article>Mathematical Markup Language (MathML) Version 2.0</article>
<edition>2nd</edition>
<date>21 October 2003</date>
<url>http://www.w3.org/TR/MathML2/</url>
</cite>
<cite id="xsl"><tag>XSLT</tag>
<author>W3C</author>
<article>XSL Transformations (XSLT), Version 1.0</article>
<date>16 November 1999</date>
<url>http://www.w3.org/TR/xslt</url>
</cite>
<cite id="rdf"><tag>RDF</tag>
<author>W3C</author>
<article>RDF Primer</article>
<date>10 February 2004</date>
<url>http://www.w3.org/TR/rdf-primer/</url>
</cite>
<cite id="ltx"><tag>LaTeX</tag>
<author>Leslie Lamport</author>
<book>LaTeX: A Document Preparation System</book>
<edition>2nd</edition>
<publisher>Addison Wesley Professional</publisher>
<date>30 June 1994</date>
</cite>
<cite id="cpt"><tag>CPT</tag>
<author>Leathrum</author>
<article>A Tool for Content MathML Authoring:
Content Pseudo-TeX Translator Applet</article>
<journal>Journal of Online Mathematics and its Applications</journal>
<date>June 2007</date>
<url>http://www.maa.org/joma/Volume7/Leathrum/index.xml</url>
</cite>

</document>

