From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jambunathan K Subject: Re: bug in odt export via mathml of equations containing '&' Date: Wed, 09 Nov 2011 02:47:36 +0530 Message-ID: <817h3amhzj.fsf@gmail.com> References: <87fwi3wk56.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([140.186.70.92]:44168) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RNt3U-0007IH-HX for emacs-orgmode@gnu.org; Tue, 08 Nov 2011 16:18:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RNt3Q-0006LN-9e for emacs-orgmode@gnu.org; Tue, 08 Nov 2011 16:18:04 -0500 Received: from mail-vx0-f169.google.com ([209.85.220.169]:44006) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RNt3O-0006Jz-Rp for emacs-orgmode@gnu.org; Tue, 08 Nov 2011 16:17:59 -0500 Received: by vcbfo13 with SMTP id fo13so1032365vcb.0 for ; Tue, 08 Nov 2011 13:17:58 -0800 (PST) In-Reply-To: <87fwi3wk56.fsf@gmail.com> (Myles English's message of "Fri, 04 Nov 2011 23:19:33 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode --=-=-= Content-Type: text/plain Hello Myles The example that you have cited encounters issues on every step along the way - plastex, mathtoweb and odt. I have tried my best to be useful here. I sincerely appreciate you exercising the LaTeX to MathML conversion facilities included in Org. I hope we get robust LaTeX->MathML converters *ultimately*. I see that there is plenty of scope for the LaTeX to MathML converters to improve and mature. This is going to be a long mail. Read on. --=-=-= Content-Type: text/x-org Content-Disposition: inline; filename=improvements.org Content-Description: improvements.org #+TITLE: improvements.org #+AUTHOR: Jambunathan K #+EMAIL: kjambunathan@gmail.com #+DATE: 2011-11-09 Wed #+DESCRIPTION: #+KEYWORDS: #+LANGUAGE: en #+OPTIONS: H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport #+LINK_UP: #+LINK_HOME: #+XSLT: * Improvements to LaTeX->MathML handling in ODF exporter Firstly, I felt a need for some support infrastructure for working with LaTeX fragments in the ODT exporter. I am listing few things that I have added since our last interaction: 1. Dvipng images & Math formulae created from LaTeX fragments will now have the LaTeX fragment as metadata. i.e., In LibreOffice you can see the LaTeX source by Image/Equation->Right Click->Description 2. New interactive commands - M-x org-export-as-odf and M-x org-export-as-odf-and-open. With these commands you can mark a latex fragment and export it as a odf - OpenDocument formula - document. The MathML source will be available as part of kill ring after the export. (See the docstrings) 3. Embed OpenDocument formula within the exported document by providing a link to *.mathml or *.odf file as below. #+CAPTION: cases with MathJaX [[./mathjax-cases.odf]] A link with neither caption or nor label will formatted inline type while one either or both of these attributes will be formatted as display. --=-=-= Content-Type: text/plain > If an org file contains a latex equation with a '&' in it then when it is > exported to odt it makes dodgy xml. Unzipping the odt, opening the > content.xml and doing M-x rng-first-error gives the message: > > `&' that is not markup must be entered as `&' > > To reproduce, insert this: > > \begin{equation} > \delta_{mn} = > \begin{cases} > 1& \text{if $n=m$}\\ > 0& \text{if $n\nem$} > \end{cases} > \end{equation} > > (which I got from here > http://www.mathtoweb.com/cgi-bin/mathtoweb_users_guide.pl , search for > 'cases') > > into the file math-to-web-with-plastex.org in this post: > http://permalink.gmane.org/gmane.emacs.orgmode/48815 and export as per > instructions. > > There may be a similar error with equations containing '<', '>'. --=-=-= Content-Type: text/x-org; charset=utf-8 Content-Disposition: inline; filename=diagnosis.org Content-Transfer-Encoding: quoted-printable Content-Description: diagnosis.org #+TITLE: diagnosis.org #+AUTHOR: Jambunathan K #+EMAIL: kjambunathan@gmail.com #+DATE: 2011-11-09 Wed #+DESCRIPTION: #+KEYWORDS: #+LANGUAGE: en #+OPTIONS: H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport #+LINK_UP:=20=20=20 #+LINK_HOME:=20 #+XSLT: #+STARTUP: hideblocks * Diagnosis 1) User provided LaTeX fragment #+begin_src latex \begin{equation} \delta_{mn} =3D=20 \begin{cases} 1& \text{if $n=3Dm$}\\ 0& \text{if $n\nem$} \end{cases} \end{equation} #+end_src 2) Output from Plastex Note that plastex output includes a SPACE in two instances: - within `\text{blah}' - within `m$' #+begin_src latex \begin{equation} \delta _{mn} =3D \begin{cases} 1& \text {if $n=3Dm= $}\\ 0& \text {if $n\nem $} \end{cases} \end{equation}=20 #+end_src #+begin_src latex \begin{equation} \delta _{mn} =3D \begin{cases} 1& \text{if $n=3Dm$}= \\ 0& \text{if $n\nem$} \end{cases} \end{equation}=20 #+end_src 3) Output from MathWeb The extraneous SPACE is unacceptable to MathWeb and it complains.=20 #+begin_src text Checking Syntax: ** =20=20=20=20 -- found 1 syntax error(s) -- =20=20=20=20 ** (em) Nesting Error: $..$ can not be nested inside \begin{equation}..\end{equation} unless it is within a \text{..} environment.=20 =20=20=20=20 line: 1 \begin{equation} \delta _{mn} ... ^ #+end_src If I remove the extraneous SPACEs by hand MathToWeb crashes. #+begin_src text Checking Syntax: *** -- no errors -- =20=20=20=20 >> stand-alone math environments: [1] Converting: 1Exception in threa= d "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 1 at MathToWeb.convertEachLatexMatrixToAMathMLExpression(MathToW= eb.java:15511) at MathToWeb.doMatrixConversions(MathToWeb.java:3495) at MathToWeb.convertLatexToMathML(MathToWeb.java:2106) at ConvertLatexToMathMLThread.run(ConvertLatexToMathMLThread.j= ava:64) #+end_src Question: Is the snippet output from plastex a valid LaTeX? Depending on the answer there is a bug in either plastex or mathtoweb. The moral of the story is that pre-processsing the LaTeX fragment with plastex - while it may help with circumventing ncf limitations of MathToWeb - may create side-effects which will be allergic to MathToweb. 4) How ODT handles LaTeX->MathML failures If ODT didn't receive a ... element it assumes failure and tries to embed the LaTeX fragment verbatim in to the exporter. There was a bug in embedding LaTeX fragment as plain text in the ODT file which you have reported as below. This I have fixed. #+begin_src text > If an org file contains a latex equation with a '&' in it then when = it is > exported to odt it makes dodgy xml. Unzipping the odt, opening the > content.xml and doing M-x rng-first-error gives the message: > > `&' that is not markup must be entered as `&' > There may be a similar error with equations containing '<', '>'. #+end_src * Some comments on "cases" ** Bug in MathToWeb wrt cases A comparison of [fn:1] and [fn:2] and a little experimentation with LibreOffice shows following issues with MathToWeb handling of \beign{cases}...\end{cases} which is allergic to LibreOffice. 1. MathJax uses:=20 - ... - while mathtoweb uses: - { and } 2. MathJax the scope of ... to just the "if" while MathToWeb extends the scope to the entire "sub-equation" 3. MathJax uses   while MathToWeb uses   for non-breaking space. If 1, 2 and 3 are "hand-fixed" in MathToWeb output then LibreOffice not only opens the MathToWeb produced formula fine but also displays it correctly[fn:3]. ** A near-equivalent of MathToWeb's cases that is LibreOffice-friendly =20=20=20 The below snippet is near-equivalent of "cases" formulation which is also LibreOffice-friendly. See the attached "workable-alternative-to-cases.odf". #+srcname: workable-alternative-to-cases #+begin_src latex \begin{equation*} \delta_{mn} =3D=20 \left\{ \begin{smallmatrix} 1 & \text{if } n=3Dm \\ 0 & \text{if } n\nem \end{smallmatrix} \right\} \end{equation*} #+end_src The best alternative in LaTeX would be to use the \left\{ and \right. (note the "dot") construct as below[fn:4]. Unfortunately MathToWeb fails miserably while MathJax succeeds with flying colors. #+srcname: exact-equivalent-of-cases #+begin_src latex \begin{equation*} \delta_{mn} =3D=20 \left\{ \begin{smallmatrix} 1 & \text{if } n=3Dm \\ 0 & \text{if } n\nem \end{smallmatrix} \right. \end{equation*} #+end_src * Workarounds ** Use plastex with discretion and consider MathJax as a potential option? An example scenario where it creates undesirable side-effects has been seen earlier.=20 Interestingly, the original latex fragment DOES NOT rely on any user-defined newcommand for interpretation and can be passed on to MathToWeb directly. When the original snippet is exported with M-x org-export-as-odf-and-open RET, export to odf happens fine but LibreOffice fails to open the resulting formula[fn:1]. Also see the attached file "mathtoweb-cases.odf" If I open the resulting odf file and overwrite "content.xml" with the MathML produced by MathJax[fn:2][fn:5][fn:6] - see the attached "mathjax-cases.odf" - LibreOffice is happy. ** Provide the MathML or OpenDocument formula directly in the Org file =20=20=20 One can provide the "right" MathML or OpenDocument formula directly in the Org file. The formula could either be created with LibreOffice's StarMath directly or by using the output from LaTeX to MathML converters as a first cut [fn:7] and improving the results subsequently with LibreOffice. * Footnotes [fn:1] #+srcname: output-from-mathtoweb-for-cases #+begin_src nxml δ m n =3D { 1 if  n =3D m 0 if  n m } #+end_src [fn:2] #+srcname: output-from-mathjax-for-cases #+begin_src nxml δ m n =3D 1 if  n =3D m 0 if  n \nem #+end_src [fn:3] Would you like to this forward as a bug report to MathToWeb team? [fn:4] For LaTeX, see the last example here: http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/Matrices.html [fn:5] MathJax doesn't seem to handle \ne well. [fn:6] Is there a command-line interface to MathJax? This will permit MathJax as a potential alternative to MathToWeb. If there is no command-line converter, can someone reverse-engineer the MathJax javascript and see what magic it does over the network or cloud. [fn:7] In case of matrices, MathToWeb produces a MathML which displays fine save for some characters that are displayed as "questions". --=-=-= Content-Type: text/plain Jambunathan K. -- --=-=-= Content-Type: text/x-org; charset=utf-8 Content-Disposition: attachment; filename=diagnosis.org Content-Transfer-Encoding: quoted-printable #+TITLE: diagnosis.org #+AUTHOR: Jambunathan K #+EMAIL: kjambunathan@gmail.com #+DATE: 2011-11-09 Wed #+DESCRIPTION: #+KEYWORDS: #+LANGUAGE: en #+OPTIONS: H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport #+LINK_UP:=20=20=20 #+LINK_HOME:=20 #+XSLT: #+STARTUP: hideblocks * Diagnosis 1) User provided LaTeX fragment #+begin_src latex \begin{equation} \delta_{mn} =3D=20 \begin{cases} 1& \text{if $n=3Dm$}\\ 0& \text{if $n\nem$} \end{cases} \end{equation} #+end_src 2) Output from Plastex Note that plastex output includes a SPACE in two instances: - within `\text{blah}' - within `m$' #+begin_src latex \begin{equation} \delta _{mn} =3D \begin{cases} 1& \text {if $n=3Dm= $}\\ 0& \text {if $n\nem $} \end{cases} \end{equation}=20 #+end_src #+begin_src latex \begin{equation} \delta _{mn} =3D \begin{cases} 1& \text{if $n=3Dm$}= \\ 0& \text{if $n\nem$} \end{cases} \end{equation}=20 #+end_src 3) Output from MathWeb The extraneous SPACE is unacceptable to MathWeb and it complains.=20 #+begin_src text Checking Syntax: ** =20=20=20=20 -- found 1 syntax error(s) -- =20=20=20=20 ** (em) Nesting Error: $..$ can not be nested inside \begin{equation}..\end{equation} unless it is within a \text{..} environment.=20 =20=20=20=20 line: 1 \begin{equation} \delta _{mn} ... ^ #+end_src If I remove the extraneous SPACEs by hand MathToWeb crashes. #+begin_src text Checking Syntax: *** -- no errors -- =20=20=20=20 >> stand-alone math environments: [1] Converting: 1Exception in threa= d "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 1 at MathToWeb.convertEachLatexMatrixToAMathMLExpression(MathToW= eb.java:15511) at MathToWeb.doMatrixConversions(MathToWeb.java:3495) at MathToWeb.convertLatexToMathML(MathToWeb.java:2106) at ConvertLatexToMathMLThread.run(ConvertLatexToMathMLThread.j= ava:64) #+end_src Question: Is the snippet output from plastex a valid LaTeX? Depending on the answer there is a bug in either plastex or mathtoweb. The moral of the story is that pre-processsing the LaTeX fragment with plastex - while it may help with circumventing ncf limitations of MathToWeb - may create side-effects which will be allergic to MathToweb. 4) How ODT handles LaTeX->MathML failures If ODT didn't receive a ... element it assumes failure and tries to embed the LaTeX fragment verbatim in to the exporter. There was a bug in embedding LaTeX fragment as plain text in the ODT file which you have reported as below. This I have fixed. #+begin_src text > If an org file contains a latex equation with a '&' in it then when = it is > exported to odt it makes dodgy xml. Unzipping the odt, opening the > content.xml and doing M-x rng-first-error gives the message: > > `&' that is not markup must be entered as `&' > There may be a similar error with equations containing '<', '>'. #+end_src * Some comments on "cases" ** Bug in MathToWeb wrt cases A comparison of [fn:1] and [fn:2] and a little experimentation with LibreOffice shows following issues with MathToWeb handling of \beign{cases}...\end{cases} which is allergic to LibreOffice. 1. MathJax uses:=20 - ... - while mathtoweb uses: - { and } 2. MathJax the scope of ... to just the "if" while MathToWeb extends the scope to the entire "sub-equation" 3. MathJax uses   while MathToWeb uses   for non-breaking space. If 1, 2 and 3 are "hand-fixed" in MathToWeb output then LibreOffice not only opens the MathToWeb produced formula fine but also displays it correctly[fn:3]. ** A near-equivalent of MathToWeb's cases that is LibreOffice-friendly =20=20=20 The below snippet is near-equivalent of "cases" formulation which is also LibreOffice-friendly. See the attached "workable-alternative-to-cases.odf". #+srcname: workable-alternative-to-cases #+begin_src latex \begin{equation*} \delta_{mn} =3D=20 \left\{ \begin{smallmatrix} 1 & \text{if } n=3Dm \\ 0 & \text{if } n\nem \end{smallmatrix} \right\} \end{equation*} #+end_src The best alternative in LaTeX would be to use the \left\{ and \right. (note the "dot") construct as below[fn:4]. Unfortunately MathToWeb fails miserably while MathJax succeeds with flying colors. #+srcname: exact-equivalent-of-cases #+begin_src latex \begin{equation*} \delta_{mn} =3D=20 \left\{ \begin{smallmatrix} 1 & \text{if } n=3Dm \\ 0 & \text{if } n\nem \end{smallmatrix} \right. \end{equation*} #+end_src * Workarounds ** Use plastex with discretion and consider MathJax as a potential option? An example scenario where it creates undesirable side-effects has been seen earlier.=20 Interestingly, the original latex fragment DOES NOT rely on any user-defined newcommand for interpretation and can be passed on to MathToWeb directly. When the original snippet is exported with M-x org-export-as-odf-and-open RET, export to odf happens fine but LibreOffice fails to open the resulting formula[fn:1]. Also see the attached file "mathtoweb-cases.odf" If I open the resulting odf file and overwrite "content.xml" with the MathML produced by MathJax[fn:2][fn:5][fn:6] - see the attached "mathjax-cases.odf" - LibreOffice is happy. ** Provide the MathML or OpenDocument formula directly in the Org file =20=20=20 One can provide the "right" MathML or OpenDocument formula directly in the Org file. The formula could either be created with LibreOffice's StarMath directly or by using the output from LaTeX to MathML converters as a first cut [fn:7] and improving the results subsequently with LibreOffice. * Footnotes [fn:1] #+srcname: output-from-mathtoweb-for-cases #+begin_src nxml δ m n =3D { 1 if  n =3D m 0 if  n m } #+end_src [fn:2] #+srcname: output-from-mathjax-for-cases #+begin_src nxml δ m n =3D 1 if  n =3D m 0 if  n \nem #+end_src [fn:3] Would you like to this forward as a bug report to MathToWeb team? [fn:4] For LaTeX, see the last example here: http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/Matrices.html [fn:5] MathJax doesn't seem to handle \ne well. [fn:6] Is there a command-line interface to MathJax? This will permit MathJax as a potential alternative to MathToWeb. If there is no command-line converter, can someone reverse-engineer the MathJax javascript and see what magic it does over the network or cloud. [fn:7] In case of matrices, MathToWeb produces a MathML which displays fine save for some characters that are displayed as "questions". --=-=-= Content-Type: text/x-org Content-Disposition: attachment; filename=improvements.org #+TITLE: improvements.org #+AUTHOR: Jambunathan K #+EMAIL: kjambunathan@gmail.com #+DATE: 2011-11-09 Wed #+DESCRIPTION: #+KEYWORDS: #+LANGUAGE: en #+OPTIONS: H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport #+LINK_UP: #+LINK_HOME: #+XSLT: * Improvements to LaTeX->MathML handling in ODF exporter Firstly, I felt a need for some support infrastructure for working with LaTeX fragments in the ODT exporter. I am listing few things that I have added since our last interaction: 1. Dvipng images & Math formulae created from LaTeX fragments will now have the LaTeX fragment as metadata. i.e., In LibreOffice you can see the LaTeX source by Image/Equation->Right Click->Description 2. New interactive commands - M-x org-export-as-odf and M-x org-export-as-odf-and-open. With these commands you can mark a latex fragment and export it as a odf - OpenDocument formula - document. The MathML source will be available as part of kill ring after the export. (See the docstrings) 3. Embed OpenDocument formula within the exported document by providing a link to *.mathml or *.odf file as below. #+CAPTION: cases with MathJaX [[./mathjax-cases.odf]] A link with neither caption or nor label will formatted inline type while one either or both of these attributes will be formatted as display. --=-=-= Content-Type: application/vnd.oasis.opendocument.formula Content-Disposition: attachment; filename=workable-alternative-to-cases.odf Content-Transfer-Encoding: base64 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 AAUAfwEAALQEAAAAAA== --=-=-= Content-Type: application/vnd.oasis.opendocument.formula Content-Disposition: attachment; filename=mathjax-cases.odf Content-Transfer-Encoding: base64 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 rQQAAAAA --=-=-= Content-Type: application/vnd.oasis.opendocument.formula Content-Disposition: attachment; filename=mathtoweb-cases.odf Content-Transfer-Encoding: base64 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 AABQSwUGAAAAAAUABQB/AQAAvwQAAAAA --=-=-=--