TransWikia.com

How to exclude annotation encoding='Mathematica' from generated MathML?

Mathematica Asked on August 22, 2021

I do not see how to remove <annotation encoding='Mathematica' from generated MathML. Afaict it is not needed for a one way conversion and it often doubles the size of generated MathML.

How to do this quickly?

Shouldn’t "Annotations"->{} option handle this?

(mathml = ExportString[Column@List@f[x], "MathML", "Annotations" -> {}]) // AbsoluteTiming // Column
0.0025588
<math xmlns='http://www.w3.org/1998/Math/MathML'>
 <semantics>
  ....
  <annotation encoding='Mathematica'>TagBox[...</annotation>  (*THIS is a waste of space for me*)
 </semantics>
</math>

I can mathml->XMLElement->DeleteCase->ExportString but then the procedure takes +500% of time for something that could’ve been just dropped before.

mathml // 
  ImportString[#, "XMLElement"] & // 
  DeleteCases[#, XMLElement["annotation", ___], [Infinity]] & // 
  ExportString[#, "XML"] & // 
  AbsoluteTiming // Column
0.0108532
<math xmlns='http://www.w3.org/1998/Math/MathML'>
 <semantics>
  ...
 </semantics>
</math>

One Answer

Trace reveals that XML`MathML`BoxesToSymbolicMathML is used under the hood and it has an "IncludeMarkupAnnotations" option which seems to do the job:

ExportString[Column@List@f[x], "MathML",  "IncludeMarkupAnnotations" -> False]
<math xmlns='http://www.w3.org/1998/Math/MathML'>
 <mtable>
  <mtr>
   <mtd>
    <mrow>
     <mi>f</mi>
     <mo>&#8289;</mo>
     <mo>(</mo>
     <mi>x</mi>
     <mo>)</mo>
    </mrow>
   </mtd>
  </mtr>
 </mtable>
</math>

Correct answer by Kuba on August 22, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP