From e330b3dfab40cd38e6ff2cf2b99abd47c29b593e Mon Sep 17 00:00:00 2001 From: henrikjust Date: Sun, 8 Apr 2012 09:42:52 +0000 Subject: [PATCH] w2x: Recognize display equations + add MathJax support git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@148 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- build.xml | 4 +- source/distro/changelog.txt | 10 +- source/distro/doc/user-manual.odt | Bin 52404 -> 53530 bytes .../w2lcommon/filter/ExportFilterBase.java | 4 +- .../filter/GraphicConverterImpl2.java | 13 +- .../writer2latex/api/ConverterFactory.java | 4 +- .../java/writer2latex/base/ConverterBase.java | 148 +++++++++++++++++- .../writer2latex/latex/MathmlConverter.java | 2 + .../java/writer2latex/office/ImageLoader.java | 2 +- source/java/writer2latex/xhtml/Converter.java | 22 ++- .../writer2latex/xhtml/DrawConverter.java | 4 +- .../writer2latex/xhtml/MathConverter.java | 9 +- .../writer2latex/xhtml/TextConverter.java | 11 +- .../java/writer2latex/xhtml/XhtmlConfig.java | 33 ++-- .../writer2latex/xhtml/XhtmlDocument.java | 28 +++- 15 files changed, 254 insertions(+), 40 deletions(-) diff --git a/build.xml b/build.xml index 7d893c7..1748893 100644 --- a/build.xml +++ b/build.xml @@ -8,8 +8,8 @@ - - + + writer2latex - build file diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index 0eabbf0..5e775db 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -2,7 +2,15 @@ Changelog for Writer2LaTeX version 1.2 -> 1.4 ---------- version 1.3.1 alpha ---------- -[w2x] New boolean option use_svg (default false): If export format is HTML5 vector graphics are exported as inline SVG, if possible +[w2x] Display equations are now recognized by the same means as in the LaTeX export: A single equation in a paragraph with no + text content except whitespace and an optional sequence number in brackets is considered a display equation. In that case + it is exported with display="block" + +[w2x] New boolean option use_mathjax (default false): If set to true and export format is HTML5, documents will load the MathJax + JavaScript library for rendering of formulas (otherwise the document will rely on native MathML support in the browser) + +[w2x] New boolean option use_svg (default false): If set to true and export format is HTML5, vector graphics are exported as + inline SVG, if possible [w2x] Added support for HTML5 as export type (the ConverterFactory understands the pseudo-MIME type text/html5). The converter creates polyglot HTML5 documents, i.e. documents will be conforming to HTML5 as well as XML standards. diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index a340305b8bddd8933aa6851c867e6f0057c24723..93da70f5aaf24f2232df2327a033b54a959855ee 100644 GIT binary patch literal 53530 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 KSaL<30r3EES5N%_ literal 52404 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 P1c5M#g@M851c(O!i|5bP diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java index d389e60..9aae583 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java @@ -93,8 +93,7 @@ XTypeProvider { xComponentContext = xComponentContext1; xMSF = null; } - - + // Utility method: String getFileName(String origName) { @@ -125,7 +124,6 @@ XTypeProvider { public boolean exporter(com.sun.star.beans.PropertyValue[] aSourceData, java.lang.String[] msUserData) throws com.sun.star.uno.RuntimeException{ - sURL=null; filterData = null; diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/GraphicConverterImpl2.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/GraphicConverterImpl2.java index 84b9082..a9d0670 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/GraphicConverterImpl2.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/GraphicConverterImpl2.java @@ -125,7 +125,7 @@ public class GraphicConverterImpl2 implements GraphicConverter { PropertyValue[] fileProps = new PropertyValue[3]; fileProps[0] = new PropertyValue(); fileProps[0].Name = "FilterName"; - fileProps[0].Value = (String) importFilter.get(sSourceMime); + fileProps[0].Value = importFilter.get(sSourceMime); fileProps[1] = new PropertyValue(); fileProps[1].Name = "InputStream"; fileProps[1].Value = new ByteArrayToXInputStreamAdapter(source); @@ -135,11 +135,12 @@ public class GraphicConverterImpl2 implements GraphicConverter { XComponent xDocument = xComponentLoader.loadComponentFromURL( "private:stream", "_blank", 0, fileProps); - + // Get the first draw page as xDrawPage XDrawPagesSupplier xDrawPagesSupplier = (XDrawPagesSupplier) UnoRuntime.queryInterface(XDrawPagesSupplier.class, xDocument); XDrawPages xDrawPages = xDrawPagesSupplier.getDrawPages(); + Object drawPage = xDrawPages.getByIndex(0); XDrawPage xDrawPage = (XDrawPage) UnoRuntime.queryInterface( XDrawPage.class, drawPage); @@ -164,16 +165,16 @@ public class GraphicConverterImpl2 implements GraphicConverter { xPageProps.setPropertyValue("BorderBottom", new Integer(0)); xPageProps.setPropertyValue("BorderLeft", new Integer(0)); xPageProps.setPropertyValue("BorderRight", new Integer(0)); - + // Export the draw document (xDocument) refreshDocument(xDocument); - + XOutputStreamToByteArrayAdapter outputStream = new XOutputStreamToByteArrayAdapter(); PropertyValue[] exportProps = new PropertyValue[3]; exportProps[0] = new PropertyValue(); exportProps[0].Name = "FilterName"; - exportProps[0].Value = (String) exportFilter.get(sTargetMime); + exportProps[0].Value = exportFilter.get(sTargetMime); exportProps[1] = new PropertyValue(); exportProps[1].Name = "OutputStream"; exportProps[1].Value = outputStream; @@ -189,7 +190,7 @@ public class GraphicConverterImpl2 implements GraphicConverter { byte[] result = outputStream.getBuffer(); xDocument.dispose(); - + if (MIMETypes.EPS.equals(sTargetMime)) { return epsCleaner.cleanEps(result); } diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index f7bc6bf..d2666e6 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.4 (2012-04-03) + * Version 1.4 (2012-04-07) * */ @@ -33,7 +33,7 @@ public class ConverterFactory { // Version information private static final String VERSION = "1.3.1"; - private static final String DATE = "2012-04-03"; + private static final String DATE = "2012-04-07"; /** Return the Writer2LaTeX version in the form * (major version).(minor version).(patch level)
diff --git a/source/java/writer2latex/base/ConverterBase.java b/source/java/writer2latex/base/ConverterBase.java index d6a7864..a1e89f3 100644 --- a/source/java/writer2latex/base/ConverterBase.java +++ b/source/java/writer2latex/base/ConverterBase.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.4 (2012-03-23) + * Version 1.4 (2012-04-07) * */ @@ -31,15 +31,24 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.IOException; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; + import writer2latex.api.GraphicConverter; import writer2latex.api.Converter; import writer2latex.api.ConverterResult; import writer2latex.api.OutputFile; import writer2latex.office.EmbeddedObject; +import writer2latex.office.EmbeddedXMLObject; import writer2latex.office.ImageLoader; +import writer2latex.office.MIMETypes; import writer2latex.office.MetaData; import writer2latex.office.OfficeDocument; import writer2latex.office.OfficeReader; +import writer2latex.office.XMLString; +import writer2latex.util.Misc; /**

Abstract base implementation of writer2latex.api.Converter

*/ @@ -57,6 +66,10 @@ public abstract class ConverterBase implements Converter { // The output file(s) protected String sTargetFileName; protected ConverterResultImpl converterResult; + + // Result of latest parsing of a display equation + private Element theEquation = null; + private Element theSequence = null; // Constructor public ConverterBase() { @@ -137,6 +150,139 @@ public abstract class ConverterBase implements Converter { public EmbeddedObject getEmbeddedObject(String sHref) { return odDoc.getEmbeddedObject(sHref); } + + /** Get the equation found by the last invocation of parseDisplayEquation + * + * @return the equation or null if no equation was found + */ + public Element getEquation() { + return theEquation; + } + + /** Get the sequence number found by the last invocation of parseDisplayEquation + * + * @return the sequence number or null if no sequence number was found + */ + public Element getSequence() { + return theSequence; + } + + /** Determine whether or not a paragraph contains a display equation. + * A paragraph is a display equation if it contains a single formula and no text content except whitespace + * and an optional sequence number which may be in brackets. + * As a side effect, this method keeps a reference to the equation and the sequence number + * + * @param node the paragraph + * @return true if this is a display equation + */ + public boolean parseDisplayEquation(Node node) { + theEquation = null; + theSequence = null; + return doParseDisplayEquation(node); + } + + private boolean doParseDisplayEquation(Node node) { + Node child = node.getFirstChild(); + while (child!=null) { + Node equation = getFormula(child); + if (equation!=null) { + if (theEquation==null) { + theEquation = (Element) equation; + } + else { // two or more equations -> not a display + return false; + } + } + else if (Misc.isElement(child)) { + String sName = child.getNodeName(); + if (XMLString.TEXT_SEQUENCE.equals(sName)) { + if (theSequence==null) { + theSequence = (Element) child; + } + else { // two sequence numbers -> not a display + return false; + } + } + else if (XMLString.TEXT_SPAN.equals(sName)) { + if (!doParseDisplayEquation(child)) { + return false; + } + } + else if (XMLString.TEXT_S.equals(sName)) { + // Spaces are allowed + } + else if (XMLString.TEXT_TAB.equals(sName)) { + // Tab stops are allowed + } + else if (XMLString.TEXT_TAB_STOP.equals(sName)) { // old + // Tab stops are allowed + } + else if (XMLString.TEXT_SOFT_PAGE_BREAK.equals(sName)) { // since ODF 1.1 + // Soft page breaks are allowed + } + else { + // Other elements -> not a display + return false; + } + } + else if (Misc.isText(child)) { + String s = child.getNodeValue(); + int nLen = s.length(); + for (int i=0; i not a display + return false; + } + } + } + child = child.getNextSibling(); + } + return true; + } + + // TODO: Extend OfficeReader to handle frames + private Node getFormula(Node node) { + if (Misc.isElement(node,XMLString.DRAW_FRAME)) { + node=Misc.getFirstChildElement(node); + } + + String sHref = Misc.getAttribute(node,XMLString.XLINK_HREF); + + if (sHref!=null) { // Embedded object in package or linked object + if (ofr.isInPackage(sHref)) { // Embedded object in package + if (sHref.startsWith("#")) { sHref=sHref.substring(1); } + if (sHref.startsWith("./")) { sHref=sHref.substring(2); } + EmbeddedObject object = getEmbeddedObject(sHref); + if (object!=null) { + if (MIMETypes.MATH.equals(object.getType()) || MIMETypes.ODF.equals(object.getType())) { // Formula! + try { + Document formuladoc = ((EmbeddedXMLObject) object).getContentDOM(); + Element formula = Misc.getChildByTagName(formuladoc,XMLString.MATH); // Since OOo 3.2 + if (formula==null) { + formula = Misc.getChildByTagName(formuladoc,XMLString.MATH_MATH); + } + return formula; + } + catch (org.xml.sax.SAXException e) { + e.printStackTrace(); + } + catch (java.io.IOException e) { + e.printStackTrace(); + } + } + } + } + } + else { // flat XML, object is contained in node + Element formula = Misc.getChildByTagName(node,XMLString.MATH); // Since OOo 3.2 + if (formula==null) { + formula = Misc.getChildByTagName(node,XMLString.MATH_MATH); + } + return formula; + } + return null; + } diff --git a/source/java/writer2latex/latex/MathmlConverter.java b/source/java/writer2latex/latex/MathmlConverter.java index f374243..20a0bac 100644 --- a/source/java/writer2latex/latex/MathmlConverter.java +++ b/source/java/writer2latex/latex/MathmlConverter.java @@ -26,6 +26,8 @@ package writer2latex.latex; +// TODO: Use parseDisplayEquation of ConverterBase + //import java.util.Hashtable; import org.w3c.dom.Document; diff --git a/source/java/writer2latex/office/ImageLoader.java b/source/java/writer2latex/office/ImageLoader.java index 4f702d4..2c5e768 100644 --- a/source/java/writer2latex/office/ImageLoader.java +++ b/source/java/writer2latex/office/ImageLoader.java @@ -172,7 +172,7 @@ public final class ImageLoader { // Try vector format first newBlob = gcv.convert(blob, sMIME, sTargetMIME=sDefaultVectorFormat); } - else if (gcv.supportsConversion(sMIME,sDefaultFormat,false,false)) { + if (newBlob==null && gcv.supportsConversion(sMIME,sDefaultFormat,false,false)) { // Then try bitmap format newBlob = gcv.convert(blob,sMIME,sTargetMIME=sDefaultFormat); } diff --git a/source/java/writer2latex/xhtml/Converter.java b/source/java/writer2latex/xhtml/Converter.java index 7065430..919469c 100644 --- a/source/java/writer2latex/xhtml/Converter.java +++ b/source/java/writer2latex/xhtml/Converter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.4 (2012-04-03) + * Version 1.4 (2012-04-07) * */ @@ -349,6 +349,23 @@ public class Converter extends ConverterBase { } } + // Load MathJax + // TODO: Should we support different configurations of MathJax? + if (nType==XhtmlDocument.HTML5 && config.useMathJax()) { + for (int i=0; i<=nOutFileIndex; i++) { + if (outFiles.get(i).hasMath()) { + XhtmlDocument doc = outFiles.get(i); + Element head = doc.getHeadNode(); + if (head!=null) { + Element script = doc.getContentDOM().createElement("script"); + head.appendChild(script); + script.setAttribute("type", "text/javascript"); + script.setAttribute("src", "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=MML_HTMLorMML"); + } + } + } + } + // Create headers & footers (if nodes are available) if (ofr.isSpreadsheet()) { for (int i=0; i<=nOutFileIndex; i++) { @@ -486,6 +503,7 @@ public class Converter extends ConverterBase { converterResult.addDocument(cssDoc); } } + } private void addNavigationLink(Document dom, Node node, String s, int nIndex) { @@ -600,7 +618,7 @@ public class Converter extends ConverterBase { public boolean outFileHasContent() { return htmlDoc.getContentNode().hasChildNodes(); } - + // Use another document. TODO: This is very ugly; clean it up!!! public void changeOutFile(int nIndex) { nOutFileIndex = nIndex; diff --git a/source/java/writer2latex/xhtml/DrawConverter.java b/source/java/writer2latex/xhtml/DrawConverter.java index e759be9..9fa4ce0 100644 --- a/source/java/writer2latex/xhtml/DrawConverter.java +++ b/source/java/writer2latex/xhtml/DrawConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.4 (2012-04-03) + * Version 1.4 (2012-04-07) * */ @@ -399,7 +399,7 @@ public class DrawConverter extends ConverterHelper { } } else { // flat xml format - Node formula = Misc.getChildByTagName(onode,XMLString.MATH); // Since OOo 3.2 + Element formula = Misc.getChildByTagName(onode,XMLString.MATH); // Since OOo 3.2 if (formula==null) { formula = Misc.getChildByTagName(onode,XMLString.MATH_MATH); } diff --git a/source/java/writer2latex/xhtml/MathConverter.java b/source/java/writer2latex/xhtml/MathConverter.java index 1a9a00f..0f92654 100644 --- a/source/java/writer2latex/xhtml/MathConverter.java +++ b/source/java/writer2latex/xhtml/MathConverter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2012 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-03-15) + * Version 1.4 (2012-04-07) * */ @@ -70,8 +70,11 @@ public class MathConverter extends ConverterHelper { * @param onode the math node * @param hnode the xhtml node to which content should be added */ - public void convert(Node image, Node onode, Node hnode) { + public void convert(Node image, Element onode, Node hnode) { if (bSupportMathML) { + if (converter.getTextCv().isDisplayEquation()) { + onode.setAttribute("display", "block"); + } convertAsMathML(onode,hnode); } else { diff --git a/source/java/writer2latex/xhtml/TextConverter.java b/source/java/writer2latex/xhtml/TextConverter.java index 87928f9..f8bba1f 100644 --- a/source/java/writer2latex/xhtml/TextConverter.java +++ b/source/java/writer2latex/xhtml/TextConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2012-03-07) + * Version 1.4 (2012-04-07) * */ @@ -140,6 +140,9 @@ public class TextConverter extends ConverterHelper { // (labels for footnotes and endnotes) // We put it here and insert it in the first paragraph/heading to come: private Node asapNode = null; + + // Are we within a display equation? + private boolean bDisplayEquation = false; // When generating toc, a few things should be done differently private boolean bInToc = false; @@ -357,6 +360,10 @@ public class TextConverter extends ConverterHelper { p.appendChild(inline); return inline; } + + public boolean isDisplayEquation() { + return bDisplayEquation; + } //////////////////////////////////////////////////////////////////////// // BLOCK TEXT (returns current html node at end of block) @@ -813,7 +820,9 @@ public class TextConverter extends ConverterHelper { insertListLabel(currentListStyle, nCurrentListLevel, "ItemNumber", null, sCurrentListLabel, par); } sCurrentListLabel = null; + bDisplayEquation=converter.parseDisplayEquation(onode); traverseInlineText(onode,par); + bDisplayEquation=false; } else { // An empty paragraph (this includes paragraphs that only contains diff --git a/source/java/writer2latex/xhtml/XhtmlConfig.java b/source/java/writer2latex/xhtml/XhtmlConfig.java index e887d4b..6e99808 100644 --- a/source/java/writer2latex/xhtml/XhtmlConfig.java +++ b/source/java/writer2latex/xhtml/XhtmlConfig.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.4 (2012-04-03) + * Version 1.4 (2012-04-07) * */ @@ -41,7 +41,7 @@ import writer2latex.util.Misc; public class XhtmlConfig extends writer2latex.base.ConfigBase { // Implement configuration methods - protected int getOptionCount() { return 57; } + protected int getOptionCount() { return 58; } protected String getDefaultConfigPath() { return "/writer2latex/xhtml/config/"; } // Override setOption: To be backwards compatible, we must accept options @@ -138,19 +138,20 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { private static final int IMAGE_SPLIT = 41; private static final int COVER_IMAGE = 42; private static final int USE_SVG = 43; - private static final int CALC_SPLIT = 44; - private static final int DISPLAY_HIDDEN_SHEETS = 45; - private static final int DISPLAY_HIDDEN_ROWS_COLS = 46; - private static final int DISPLAY_FILTERED_ROWS_COLS = 47; - private static final int APPLY_PRINT_RANGES = 48; - private static final int USE_TITLE_AS_HEADING = 49; - private static final int USE_SHEET_NAMES_AS_HEADINGS = 50; - private static final int XSLT_PATH = 51; - private static final int SAVE_IMAGES_IN_SUBDIR = 52; - private static final int UPLINK = 53; - private static final int DIRECTORY_ICON = 54; - private static final int DOCUMENT_ICON = 55; - private static final int ZEN_HACK = 56; // temporary hack for ePub Zen Garden styles + private static final int USE_MATHJAX = 44; + private static final int CALC_SPLIT = 45; + private static final int DISPLAY_HIDDEN_SHEETS = 46; + private static final int DISPLAY_HIDDEN_ROWS_COLS = 47; + private static final int DISPLAY_FILTERED_ROWS_COLS = 48; + private static final int APPLY_PRINT_RANGES = 49; + private static final int USE_TITLE_AS_HEADING = 50; + private static final int USE_SHEET_NAMES_AS_HEADINGS = 51; + private static final int XSLT_PATH = 52; + private static final int SAVE_IMAGES_IN_SUBDIR = 53; + private static final int UPLINK = 54; + private static final int DIRECTORY_ICON = 55; + private static final int DOCUMENT_ICON = 56; + private static final int ZEN_HACK = 57; // temporary hack for ePub Zen Garden styles protected ComplexOption xheading = addComplexOption("heading-map"); protected ComplexOption xpar = addComplexOption("paragraph-map"); @@ -262,6 +263,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { options[IMAGE_SPLIT] = new Option("image_split","none"); options[COVER_IMAGE] = new BooleanOption("cover_image","false"); options[USE_SVG] = new BooleanOption("use_svg","false"); + options[USE_MATHJAX] = new BooleanOption("use_mathjax","false"); options[CALC_SPLIT] = new BooleanOption("calc_split","false"); options[DISPLAY_HIDDEN_SHEETS] = new BooleanOption("display_hidden_sheets", "false"); options[DISPLAY_HIDDEN_ROWS_COLS] = new BooleanOption("display_hidden_rows_cols","false"); @@ -389,6 +391,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public String imageSplit() { return options[IMAGE_SPLIT].getString(); } public boolean coverImage() { return ((BooleanOption) options[COVER_IMAGE]).getValue(); } public boolean useSVG() { return ((BooleanOption) options[USE_SVG]).getValue(); } + public boolean useMathJax() { return ((BooleanOption) options[USE_MATHJAX]).getValue(); } public boolean xhtmlCalcSplit() { return ((BooleanOption) options[CALC_SPLIT]).getValue(); } public boolean xhtmlDisplayHiddenSheets() { return ((BooleanOption) options[DISPLAY_HIDDEN_SHEETS]).getValue(); } public boolean displayHiddenRowsCols() { return ((BooleanOption) options[DISPLAY_HIDDEN_ROWS_COLS]).getValue(); } diff --git a/source/java/writer2latex/xhtml/XhtmlDocument.java b/source/java/writer2latex/xhtml/XhtmlDocument.java index 4936cc6..d89faf7 100644 --- a/source/java/writer2latex/xhtml/XhtmlDocument.java +++ b/source/java/writer2latex/xhtml/XhtmlDocument.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.4 (2012-04-01) + * Version 1.4 (2012-04-07) * */ @@ -44,6 +44,7 @@ import javax.xml.parsers.DocumentBuilder; //import javax.xml.parsers.ParserConfigurationException; import writer2latex.api.MIMETypes; +import writer2latex.office.XMLString; import writer2latex.xmerge.DOMDocument; import java.io.InputStream; @@ -351,6 +352,31 @@ public class XhtmlDocument extends DOMDocument { super.setContentDOM(doc); collectNodes(); } + + /** Does this document contain any math nodes? + * + * @return true if so + */ + public boolean hasMath() { + return hasMath(getContentDOM().getDocumentElement()); + } + + private boolean hasMath(Element node) { + // Check this element + if (node.getTagName().equals(XMLString.MATH)) { + return true; + } + // Check children + Node child = node.getFirstChild(); + while (child!=null) { + if (child.getNodeType()==Node.ELEMENT_NODE && hasMath((Element)child)) { + return true; + } + child = child.getNextSibling(); + } + // Found nothing + return false; + } public void read(InputStream is) throws IOException { super.read(is);