]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl
New version 0.0.2:
[helm.git] / helm / DEVEL / mathml_editor / xsl / tml-mmlp.xsl
index ddbf91eb7870d26c4da54b68b1c087daf8fc2f86..f5e1b6f74cc415601a2169432cb91acf011f7963 100644 (file)
@@ -1,29 +1,31 @@
 <?xml version="1.0"?>
-<!--
- Copyright (C) 2002-2003, Luca Padovani <luca.padovani@cs.unibo.it>,
-                    2003, Paolo Marinelli <pmarinel@cs.unibo.it>.
 
+<!--
  This file is part of EdiTeX, an editor of mathematical
- expressions based on TeX syntax
+ expressions based on TeX syntax.
  
- EdiTeX is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
+ 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.
 
EdiTeX is distributed in the hope that it will be useful,
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 General Public License for more details.
+ 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 General Public License
along with EdiTeX; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- For details, see the EdiTeX World-Wide-Web page,
- http://helm.cs.unibo.it/editex, or send a mail to
<luca.padovani@cs.unibo.it>
+ 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"
     </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="contains(@val, '\')">
+        <m:mrow>
+         <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">&#x2329;</m:mo>
+          <m:mtext mathcolor="blue"><xsl:value-of select="concat('\', substring-after(@val, '\'))"/></m:mtext>
+          <m:mo stretchy="false">&#x232a;</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>
+         <m:mtext mathcolor="blue">I</m:mtext>
+       </m:mrow>
+      </xsl:when>
+      <xsl:otherwise>
+        <m:mtext mathcolor="blue">
+         <xsl:if test="@id">
+           <xsl:attribute name="xref">
+             <xsl:value-of select="@id"/>
+           </xsl:attribute>
+         </xsl:if>I</m:mtext>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  -->
+
   <xsl:template match="tml:o[@val='-']">
     <m:mo>
       <xsl:if test="@id">
     </m:mo>
   </xsl:template>
 
-  <xsl:template match="tml:cursor[@visible='1']">
+  <xsl:template match="tml:cursor">
     <xsl:choose>
       <xsl:when test="substring(@val,1,1)='\'">
         <m:mrow>
           <m:mo stretchy="false">&#x232a;</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>
-        <m:mtext mathcolor="blue">
-         <xsl:if test="@id">
-           <xsl:attribute name="xref">
-             <xsl:value-of select="@id"/>
-           </xsl:attribute>
-         </xsl:if><xsl:value-of select="@val"/>I</m:mtext>
+       <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 match="tml:cursor[not(@visible) or @visible='0']">
-  </xsl:template>
-
   <xsl:template match="tml:sb[@under='1'][*[1]/tml:sp[@over='1']]">
     <m:munderover>
       <xsl:if test="@id">
     </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='space']">
-    <m:mspace width="veryverythickmathspace">
-    </m:mspace>
+  <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>