]> matita.cs.unibo.it Git - helm.git/commitdiff
New version 0.0.2:
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 19 Jun 2003 15:25:33 +0000 (15:25 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 19 Jun 2003 15:25:33 +0000 (15:25 +0000)
* Bug fixed:
  - the *PushLexer reset method did not notify the PushParser of the
    buffer reset
  - the reset() method of the ocaml binding did not reset the Lexer.
    Closes #85 and #86
  - Even if the cursor is not visible, its value should be rendered
    in MathML Presentation and it should be printed in TeX. Fixed
    both xml-mmlp.xsl and tml-tex.xsl

* New stuff:
  - the LPushLexer now recognized \/ as a long identifier character.
  - Added a new tml-litex.xsl stylesheet from TML to TeX + long identifiers.
    It should be (but it is not yet) the inverse function of the
    parser

helm/DEVEL/mathml_editor/configure.ac
helm/DEVEL/mathml_editor/debian/changelog
helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc
helm/DEVEL/mathml_editor/src/LPushLexer.cc
helm/DEVEL/mathml_editor/src/TPushLexer.cc
helm/DEVEL/mathml_editor/src/TPushParser.cc
helm/DEVEL/mathml_editor/xsl/tml-litex.xsl [new file with mode: 0644]
helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl
helm/DEVEL/mathml_editor/xsl/tml-tex.xsl

index 1defca274d6cd3ed907564c08028e8e7d4aa127d..4cc45b00a4fad82dabcc03bbf3196464e1f5a339 100644 (file)
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT(editex, [0.0.1])
+AC_INIT(editex, [0.0.2])
 AC_CONFIG_SRCDIR(src/TToken.hh)
 AM_INIT_AUTOMAKE($AC_PACKAGE_NAME, $AC_PACKAGE_VERSION)
 
index 7d1e3421b1032c2a9d529115fb6ac1ebf1e72741..c17361844ba3c3f5f75865e090fa10c4cb430768 100644 (file)
@@ -1,3 +1,9 @@
+editex (0.0.2-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Claudio Sacerdoti Coen <sacerdot@cs.unibo.it>  Thu, 19 Jun 2003 12:58:21 +0200
+
 editex (0.0.1-1) unstable; urgency=low
 
   * Initial Release.
index 8ab2a05cc095c6ee6fdb3c6d9b9c41fb5004ce52..6a4eacad165fee6671625c0cd4a5e766fd60b354 100644 (file)
@@ -197,6 +197,7 @@ extern "C" void
 c_mathml_editor_reset(Editor* editor)
 {
   assert(editor);
+  editor->lexer->reset();
   editor->parser->reset();
 }
 
index 8a22d6678bad9c13ae1c7cda52b2c73d18adfb3b..414dd7826c10af94601698ea2093ab8e1fe47b29 100644 (file)
@@ -41,6 +41,8 @@ LPushLexer::reset()
 {
   buffer.erase();
   state = ACCEPT;
+
+  displayCursor();
 }
 
 void
@@ -188,7 +190,7 @@ LPushLexer::push(char ch)
        }
       break;
     case ESCAPED_CHARACTER:
-      if ((ch == '-') || (ch == '_'))
+      if ((ch == '-') || (ch == '_') || (ch == '/'))
         {
          buffer.push_back(ch);
          state = IDENTIFIER;
index ee884cfe991c6a980e02a85c6dbdddb19c5d64c2..3d2abc097821f5fe3c78d1b021f32e8f8b6eb934 100644 (file)
@@ -40,6 +40,8 @@ TPushLexer::reset()
 {
   buffer.erase();
   state = ACCEPT;
+
+  displayCursor();
 }
 
 void
index 1a477078503c6f489fb5093db7732aaf16ddf576..31b6e986728679a9b3485c7f78d557b85e9b5d83 100644 (file)
@@ -55,6 +55,7 @@ TPushParser::reset()
 {
   nextId = 1;
   if (cursor.parent()) cursor.remove();
+  cursor["val"] = "";
   doc.reset();
   doc.root().append(cursor);
   if (factory && !frozen()) factory->documentModified(doc);
diff --git a/helm/DEVEL/mathml_editor/xsl/tml-litex.xsl b/helm/DEVEL/mathml_editor/xsl/tml-litex.xsl
new file mode 100644 (file)
index 0000000..a39c6f0
--- /dev/null
@@ -0,0 +1,158 @@
+<?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>
+-->
+
+<!-- TML ===> TeX + Long Identifiers                                -->
+<!-- Example: <tml:i val="hello"/> is transformed simply to "hello" -->
+<!-- and not to its TeX "rendering" "{\rm hello}"                   -->
+
+<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"
+     version="1.0">
+
+  <xsl:output method="text" indent="yes"/>
+
+  <xsl:param name="id" select="/.."/>
+
+  <xsl:template match="/">
+    <xsl:choose>
+      <xsl:when test="$id">
+        <xsl:apply-templates select="descendant::*[@id=$id]"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select="*"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="tml:tex">
+    <xsl:apply-templates select="*"/>
+  </xsl:template>
+
+  <xsl:template match="tml:math">
+    <xsl:choose>
+      <xsl:when test="@display='1'">$$<xsl:apply-templates select="*"/>$$</xsl:when>
+      <xsl:otherwise>$<xsl:apply-templates select="*"/>$</xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="tml:i">
+    <xsl:choose>
+      <xsl:when test="@name">\<xsl:value-of select="@name"/>
+        <xsl:if test="parent::tml:g and following-sibling::tml:i"><xsl:value-of select="' '"/></xsl:if>
+      </xsl:when>
+      <xsl:otherwise><xsl:value-of select="@val"/></xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="tml:n">
+    <xsl:choose>
+      <xsl:when test="@name">\<xsl:value-of select="@name"/>
+        <xsl:if test="parent::tml:g and following-sibling::tml:i"><xsl:value-of select="' '"/></xsl:if>
+      </xsl:when>
+      <xsl:otherwise><xsl:value-of select="@val"/></xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="tml:o">
+    <xsl:choose>
+      <xsl:when test="@name">\<xsl:value-of select="@name"/>
+        <xsl:if test="parent::tml:g and following-sibling::tml:i"><xsl:value-of select="' '"/></xsl:if>
+      </xsl:when>
+      <xsl:when test="string-length(@val)=1"><xsl:value-of select="@val"/></xsl:when>
+      <xsl:otherwise><xsl:value-of select="@val"/></xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="tml:s">
+    <xsl:text> </xsl:text>
+  </xsl:template>
+
+  <xsl:template match="tml:sb">
+    <xsl:choose>
+      <xsl:when test="@under='1'">
+        <xsl:apply-templates select="*[1]"/>__<xsl:apply-templates select="*[2]"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select="*[1]"/>_<xsl:apply-templates select="*[2]"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="tml:sp">
+    <xsl:choose>
+      <xsl:when test="@over='1'">
+        <xsl:apply-templates select="*[1]"/>^^<xsl:apply-templates select="*[2]"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select="*[1]"/>^<xsl:apply-templates select="*[2]"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="tml:g[@id]">{<xsl:apply-templates select="*"/>}</xsl:template>
+
+  <xsl:template match="tml:g[count(*)&gt;1]">{<xsl:apply-templates select="*"/>}</xsl:template>
+
+  <xsl:template match="tml:g">
+    <xsl:apply-templates select="*"/>
+  </xsl:template>
+
+  <xsl:template match="tml:row">
+    <xsl:apply-templates select="cell"/>\cr </xsl:template>
+
+  <xsl:template match="tml:cell">
+    <xsl:apply-templates select="*"/>
+    <xsl:if test="position() &lt; last()">&amp;</xsl:if>
+  </xsl:template>
+
+<!--/// CONTROL SEQUENCES ///-->
+
+  <xsl:template match="tml:c[*[1][self::tml:g[@left-open='1']]]">
+    <xsl:apply-templates select="*[1]"/>\<xsl:value-of select="@name"/>
+    <xsl:if test="*[2][self::tml:i]"><xsl:value-of select="' '"/></xsl:if>
+    <xsl:apply-templates select="*[position()&gt;1]"/>
+  </xsl:template>
+
+  <xsl:template match="tml:c">\<xsl:value-of select="@name"/>
+    <xsl:if test="*[1][self::tml:i]"><xsl:value-of select="' '"/></xsl:if>
+    <xsl:apply-templates select="*"/>
+  </xsl:template>
+
+<!--/// CURSOR ///-->
+
+  <xsl:template match="tml:cursor[@val]">
+    <xsl:choose>
+      <xsl:when test="string-length(@val)=0"/>
+      <xsl:otherwise><xsl:value-of select="@val"/></xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+</xsl:stylesheet>
+
index cd4ee601fc516f044ff3bc07aa91065b635b347e..f5e1b6f74cc415601a2169432cb91acf011f7963 100644 (file)
     </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:mi>
            </xsl:otherwise>
          </xsl:choose>
-         <m:mtext mathcolor="blue">I</m:mtext>
+         <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">
index 553172d14463d4cf2d0a9c246d22cae3d014ac39..ea0a6b94e5e4ae73aa24b6ea1fb5d1cf0ef42427 100644 (file)
  or send an email to <lpadovan@cs.unibo.it>
 -->
 
+<!-- TML ===> TeX                                    -->
+<!-- Example: <tml:i val="hello"/> is transformed to -->
+<!-- it TeX "rendering" "{\rm hello}"                -->
+
 <xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:tml="http://helm.cs.unibo.it/2002/TML"
 
 <!--/// CURSOR ///-->
 
-  <xsl:template match="tml:cursor[@visible='1' and @val]">
+  <xsl:template match="tml:cursor[@val]">
     <xsl:choose>
       <xsl:when test="string-length(@val)=0"/>
       <xsl:when test="string-length(@val)=1"><xsl:value-of select="@val"/></xsl:when>