Fix bug 6630 and improve LaTeX in documentation
Calixte DENIZET [Sat, 20 Feb 2010 19:57:01 +0000 (20:57 +0100)]
scilab/CHANGES_5.3.X
scilab/modules/helptools/schema/extendedStyle.xsl
scilab/modules/helptools/src/java/org/scilab/modules/helptools/BuildDocObject.java
scilab/modules/helptools/src/java/org/scilab/modules/helptools/CopyConvert.java

index 38c3e06..86eaf23 100644 (file)
@@ -14,6 +14,9 @@ Documentation:
 * It is now possible to use LaTeX inline in the documentation. Thanks to 
  Calixte Denizet for this feature. (See bug #4329)
 
+* bug 6630 fixed - JavaHelp does not update existing image files when building help.
+
+
 Xcos:
 =====
 
index 1653097..a544af4 100644 (file)
@@ -7,12 +7,34 @@
 <xsl:include href="STYLE_DOC"/>
 
 <xsl:template match="latex:*">
-  <fo:instream-foreign-object>
-    <xsl:copy>
-      <xsl:copy-of select="@*"/>
-      <xsl:apply-templates/>
-    </xsl:copy>
-  </fo:instream-foreign-object>
+  <xsl:choose>
+    <xsl:when test="@align != ''">
+      <fo:block>
+       <xsl:attribute name="text-align">
+         <xsl:value-of select="@align"/>
+       </xsl:attribute>
+       <fo:instream-foreign-object>
+         <xsl:copy>
+           <xsl:copy-of select="@*"/>
+           <xsl:if test="@align = 'center'">
+             <xsl:attribute name="fwidth">
+               <xsl:value-of select="concat($page.width,',-',$body.start.indent,',-',$page.margin.inner,',-',$page.margin.outer)"/>
+             </xsl:attribute>
+           </xsl:if>
+           <xsl:apply-templates/>
+         </xsl:copy>
+       </fo:instream-foreign-object>
+      </fo:block>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:instream-foreign-object>
+       <xsl:copy>
+         <xsl:copy-of select="@*"/>
+         <xsl:apply-templates/>
+       </xsl:copy>
+      </fo:instream-foreign-object>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 </xsl:stylesheet>
index a640d5b..130b0f5 100644 (file)
@@ -313,7 +313,12 @@ public class BuildDocObject extends StyleSheet {
                        throw new FileNotFoundException(COULD_NOT_FIND_STYLE_DOC + this.styleDoc);
                }
 
-               File processedStyle = generateExtendedStyle();
+               String path = styleDoc;
+               File processedStyle = null;
+               if (!isLatexConverted) {
+                   processedStyle = generateExtendedStyle();
+                   path = processedStyle.getAbsolutePath();
+               }
 
                if (!new File(this.outputDirectory).isDirectory()) {
                        throw new FileNotFoundException("Could not find directory: " + this.outputDirectory);
@@ -332,7 +337,7 @@ public class BuildDocObject extends StyleSheet {
                }
                //args.add("-t");
                args.add(sourceDocProcessed);
-               args.add(processedStyle.getAbsolutePath());
+               args.add(path);
                args.add("base.dir=" + this.outputDirectory);
                args.add("html.stylesheet=" + new File(styleSheet).getName());
                args.addAll(specificArgs);
@@ -347,7 +352,10 @@ public class BuildDocObject extends StyleSheet {
                        /* Delete the master temp file to avoid to be shipped with the rest */
                        new File(sourceDocProcessed).delete();
                }
-               processedStyle.delete();
+               
+               if (processedStyle != null) {
+                   processedStyle.delete();
+               }
 
                return this.postProcess();
 
index f787f03..15b6256 100644 (file)
@@ -427,7 +427,7 @@ public class CopyConvert extends DefaultHandler implements ErrorHandler {
             }
             File convertedFile = new File(outDir, baseName);
 
-            if (!convertedFile.exists()) {
+            if (!convertedFile.exists() || convertedFile.lastModified() < graphicsFile.lastModified()) {
                 reportInfo("Converting TeX '" + graphicsFile + "' to '"
                            + convertedFile + "'...");
 
@@ -439,7 +439,7 @@ public class CopyConvert extends DefaultHandler implements ErrorHandler {
             baseName = rootName + "_mml.png";
             File convertedFile = new File(outDir, baseName);
 
-            if (!convertedFile.exists()) {
+            if (!convertedFile.exists() || convertedFile.lastModified() < graphicsFile.lastModified()) {
                 reportInfo("Converting MathML '" + graphicsFile + "' to '"
                            + convertedFile + "'...");
 
@@ -451,7 +451,7 @@ public class CopyConvert extends DefaultHandler implements ErrorHandler {
             baseName = rootName + "_svg.png";
             File convertedFile = new File(outDir, baseName);
 
-            if (!convertedFile.exists()) {
+            if (!convertedFile.exists() || convertedFile.lastModified() < graphicsFile.lastModified()) {
                 reportInfo("Converting SVG '" + graphicsFile + "' to '"
                            + convertedFile + "'...");
 
@@ -463,7 +463,7 @@ public class CopyConvert extends DefaultHandler implements ErrorHandler {
             // Just copy the file ---
 
             File outFile = new File(outDir, baseName);
-            if (!outFile.exists()) {
+            if (!outFile.exists() || outFile.lastModified() < graphicsFile.lastModified()) {
                 reportInfo("Copying '" + graphicsFile + "' to '"
                            + outFile + "'...");
 
@@ -816,17 +816,16 @@ public class CopyConvert extends DefaultHandler implements ErrorHandler {
         int size = 18;
         Color fg = null, bg = null;
         int disp = TeXConstants.STYLE_DISPLAY;
-        String code = "imagedata";
+        String code = "imageobject><imagedata";
         String LaTeX = "";
         boolean exported;
-        String attribs;
+        String attribs, align = "";
 
         protected LaTeXElement(Attributes attrs, boolean exported) {
             this.exported = exported;
             int n = attrs.getLength();
             String fgS = "", bgS = "";
             String dispS = "display";
-            String align = "center";
             
             for (int i = 0; i < n; i++) {
                 String attr = attrs.getValue(i);
@@ -834,7 +833,7 @@ public class CopyConvert extends DefaultHandler implements ErrorHandler {
                 if ("align".equals(name)) {
                     code += " align=\'" + attr + "\'";
                     align = attr;
-                } else if ("display".equals(name)) {
+                } else if ("style".equals(name)) {
                     if ("text".equals(attr)) {
                         disp = TeXConstants.STYLE_TEXT;
                     } else if ("script".equals(attr)) {
@@ -860,7 +859,7 @@ public class CopyConvert extends DefaultHandler implements ErrorHandler {
 
             attribs = " align='" + align + "'";
             attribs += " size='" + size + "'";
-            attribs += " display='" + dispS + "'";
+            attribs += " style='" + dispS + "'";
             if (bg != null) {
                 attribs += " bg='" + bgS + "'";
             }
@@ -880,14 +879,14 @@ public class CopyConvert extends DefaultHandler implements ErrorHandler {
             }
             out.write("latex" + attribs  + " xmlns=\"http://forge.scilab.org/p/jlatexmath\"><![CDATA[" + LaTeX + "]]></latex>");
         }
-            
-        
+                  
         protected void generatePNG() {
             TeXFormula tf = new TeXFormula(LaTeX);
-            File f = new File(outDir, "graphics-" + (++graphicsCounter) + "_latex.png");
-            tf.createPNG(disp, size, f.getPath(), bg, fg);
+           File f = new File(outDir, "graphics-" + (++graphicsCounter) + "_latex.png");
+           reportInfo("Converting LaTeX formula to " + f + "'...");
+            tf.createPNG(disp, size, f.getPath(), bg, fg);         
 
-            out.write(code + " fileref='graphics-" + graphicsCounter + "_latex.png'/>");
+            out.write(code + " fileref='graphics-" + graphicsCounter + "_latex.png'/></imageobject>");
         }
     }