Tue Nov 22 15:39:54 2016, original submission:
When I tried to compile the code from a question on TeX.sx [1], I found several issues in ODT export:
1. The braces from \left are small, they don't cover the three lines in the multi-line equation.
2. Instead of "<" characters at start of array columns, upside-down "?" are displayed.
Ad 1: Definitions of \Configure{left} and \Configure{right} are redefined in ooffice-mml.4ht. It is generated from tex4ht-ooffice.tex. There is a comment in the sources:
> OO doesn't seem to hono mfenced
I've tried to delete the configurations for `left` and `right` from ooffice-mml.4ht, so the default mathml configuration was used. This resulted in brackets of correct size, but wrong form. "(" instead of "{" was used, right bracket shouldn't be displayed at all.
I've took a look at the generated mathml code. For each math, one file named "filename-m{count}/content.xml" is created. The automatic size bracket are contained in `<mfenced>` element, with attributes `left` and `right`, where the bracket character is specified. mathml used in odf uses `math:` prefix on each element, this prefix must be used also on attributes. In our case `left` and `right` attributes didn't have this prefix, so they haven't been taken into the account and default brackets are used.
The prefixes are added using `\a:mathml` command in the tex4ht-mathml.tex, it is empty by default, but ooffice uses mathml: prefix. It is used on all element names and on most attributes, but it is missing on some of them, in particular in all configurations which use `<mfenced>` element.
I will add the prefix for the attributes to all configurations which use `<mfenced>` element and remove the configurations of "left" and "right" from ooffice-mml.4ht. But I guess there is much more instances of prefix-less attributes which need to be fixed.
Also, maybe it is worth checking whether all mathml fixes in ooffice-mml.4ht are really useful, or if there were only some minor bugs in mathml.4ht as in this case.
Ad 2: It seems to be a bug in the LibreOffice mathml handling. Minimal example which shows this issue is ${} < c$
This result in following mathml:
<math:math xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink"> <math:mo><</math:mo> <math:mi> c</math:mi></math:math>
this seems like valid code and Firefox for instance has no problem in displaying that. It can be fixed if we add `<math:mtext />` tag before `<math:mo>`.
So my question is: is it really a bug in LO, or is there also some issue with the mathml from tex4ht? If it is bug in tex4ht, can we insert `<mtext />` automatically in the place of {} in the math context? Or is some post-processing of the XML needed?
[1] http://tex.stackexchange.com/q/340322/2891
|