<?xml version="1.0"?>
+
+<!--
+ This file is part of EdiTeX, an editor of mathematical
+ expressions based on TeX syntax.
+
+ Copyright (C) 2002-2003 Luca Padovani <lpadovan@cs.unibo.it>,
+ 2003 Paolo Marinelli <pmarinel@cs.unibo.it>.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ For more information, please visit the project's home page
+ http://helm.cs.unibo.it/editex/
+ or send an email to <lpadovan@cs.unibo.it>
+-->
+
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tml="http://helm.cs.unibo.it/2002/TML"
xmlns:m="http://www.w3.org/1998/Math/MathML"
+ exclude-result-prefixes="tml"
version="1.0">
<xsl:output indent="yes"/>
</xsl:choose>
</xsl:template>
+ <xsl:template match="tml:tex[not(tml:math)]">
+ <!-- This is an empty TeX document. We generate the corresponding -->
+ <!-- empty MathML document. -->
+ <m:math/>
+ </xsl:template>
+
<xsl:template match="tml:math">
<m:math>
<xsl:if test="@id">
</m:mo>
</xsl:template>
+ <xsl:template match="tml:s">
+<!-- this template is used only for testing purpose and should not be here-->
+ <m:mspace width="veryverythickmathspace">
+ <xsl:if test="@id">
+ <xsl:attribute name="xref">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ </m:mspace>
+ </xsl:template>
+
+<!--
<xsl:template name="cursor">
<xsl:choose>
- <xsl:when test="substring(@val,1,1)='\'">
+ <xsl:when test="contains(@val, '\')">
<m:mrow>
- <xsl:if test="@id">
- <xsl:attribute name="xref">
- <xsl:value-of select="@id"/>
- </xsl:attribute>
- </xsl:if>
+ <xsl:if test="@id">
+ <xsl:attribute name="xref">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="substring-before(@val, '\')">
+ <m:mtext><xsl:value-of select="substring-before(@val, '\')"/></m:mtext>
+ </xsl:if>
<m:mo stretchy="false">〈</m:mo>
- <m:mtext mathcolor="blue"><xsl:value-of select="@val"/></m:mtext>
+ <m:mtext mathcolor="blue"><xsl:value-of select="concat('\', substring-after(@val, '\'))"/></m:mtext>
<m:mo stretchy="false">〉</m:mo>
- </m:mrow>
+ </m:mrow>
+ </xsl:when>
+ <xsl:when test="string-length(@val)>=1">
+ <m:mrow>
+ <xsl:if test="@id">
+ <xsl:attribute name="xref">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="contains('0123456789', substring(@val, 1, 1))">
+ <m:mn>
+ <xsl:value-of select="@val"/>
+ </m:mn>
+ </xsl:when>
+ <xsl:otherwise>
+ <m:mi>
+ <xsl:value-of select="@val"/>
+ </m:mi>
+ </xsl:otherwise>
+ </xsl:choose>
+ <m:mtext mathcolor="blue">I</m:mtext>
+ </m:mrow>
</xsl:when>
<xsl:otherwise>
<m:mtext mathcolor="blue">
<xsl:attribute name="xref">
<xsl:value-of select="@id"/>
</xsl:attribute>
- </xsl:if>
- I
- </m:mtext>
+ </xsl:if>I</m:mtext>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
+ -->
+
+ <xsl:template match="tml:o[@val='-']">
+ <m:mo>
+ <xsl:if test="@id">
+ <xsl:attribute name="xref">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ −
+ </m:mo>
+ </xsl:template>
<xsl:template match="tml:cursor">
- <xsl:param name="annotation" select="/.."/>
<xsl:choose>
- <xsl:when test="$annotation">
- <m:msub>
- <xsl:call-template name="cursor"/>
- <m:mtext>
- <xsl:value-of select="$annotation"/>
- </m:mtext>
- </m:msub>
+ <xsl:when test="substring(@val,1,1)='\'">
+ <m:mrow>
+ <xsl:if test="@id">
+ <xsl:attribute name="xref">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <m:mo stretchy="false">〈</m:mo>
+ <m:mtext mathcolor="blue"><xsl:value-of select="@val"/></m:mtext>
+ <m:mo stretchy="false">〉</m:mo>
+ </m:mrow>
+ </xsl:when>
+ <xsl:when test="string-length(@val)>=1">
+ <m:mrow>
+ <xsl:if test="@id">
+ <xsl:attribute name="xref">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="contains('0123456789', substring(@val, 1, 1))">
+ <m:mn>
+ <xsl:value-of select="@val"/>
+ </m:mn>
+ </xsl:when>
+ <xsl:otherwise>
+ <m:mi>
+ <xsl:value-of select="@val"/>
+ </m:mi>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="@visible='1'">
+ <m:mtext mathcolor="blue">I</m:mtext>
+ </xsl:if>
+ </m:mrow>
</xsl:when>
<xsl:otherwise>
- <xsl:call-template name="cursor"/>
+ <xsl:if test="@visible='1'">
+ <m:mtext mathcolor="blue">
+ <xsl:if test="@id">
+ <xsl:attribute name="xref">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:text>I</xsl:text>
+ </m:mtext>
+ </xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:template>
<xsl:template match="tml:g">
- <xsl:param name="annotation" select="/.."/>
<xsl:choose>
<xsl:when test="not(@id) and count(*) = 1">
- <xsl:apply-templates select="*[1]">
- <xsl:with-param name="annotation" select="$annotation"/>
- </xsl:apply-templates>
+ <xsl:apply-templates select="*[1]"/>
</xsl:when>
<xsl:when test="tml:cursor">
<m:mstyle mathbackground="#e0e0e0">
</xsl:attribute>
</xsl:if>
<m:mrow>
- <xsl:apply-templates select="*">
- <xsl:with-param name="annotation" select="$annotation"/>
- </xsl:apply-templates>
+ <xsl:apply-templates select="*"/>
</m:mrow>
</m:mstyle>
</xsl:when>
<xsl:value-of select="@id"/>
</xsl:attribute>
</xsl:if>
- <xsl:apply-templates select="*">
- <xsl:with-param name="annotation" select="$annotation"/>
- </xsl:apply-templates>
+ <xsl:apply-templates select="*"/>
</m:mrow>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="@id"/>
</xsl:attribute>
</xsl:if>
- <xsl:apply-templates select="*[2]"/>
- <xsl:apply-templates select="*[1]"/>
+ <xsl:choose>
+ <xsl:when test="count(*) < 2">
+ <m:mrow/>
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[2]"/>
+ <xsl:apply-templates select="*[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</m:mroot>
</xsl:template>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="*[1]"/>
- <xsl:if test="tml:g/tml:cursor">
+ <xsl:if test="tml:g/tml:cursor[@visible='1']">
<m:msub>
<m:mtext mathcolor="#808080">}</m:mtext>
<m:mtext><xsl:value-of select="@name"/></m:mtext>
</m:mstyle>
</xsl:template>
+ <xsl:template match="tml:c[@name='_']">
+<!-- _ -->
+ <m:mi>
+ <xsl:if test="@id">
+ <xsl:attribute name="xref">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:text>_</xsl:text>
+ </m:mi>
+ </xsl:template>
+
<xsl:template match="tml:c[@name=',']">
<!-- , -->
<m:mspace width="thinmathspace">
</m:mfrac>
</xsl:template>
+ <xsl:template match="tml:c[@name='nodeside']">
+<!-- nodeside -->
+ <m:mfrac>
+ <xsl:if test="@id">
+ <xsl:attribute name="xref">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:apply-templates select="*[2]"/>
+ </m:mfrac>
+ </xsl:template>
+
</xsl:stylesheet>