Documentation / MathType

  • Demos
  • Visit our website
  • Downloads
  • Contact us
  • MathType

    • Wiris Quizzes

      • Learning Lemur

        • CalcMe

          • MathPlayer

            • Store FAQ

              • VPAT for the electronic documentation

                • MathFlow

                  • BF FAQ

                    • Home
                    • MathType
                    • MathType Office Tools
                    • MathType 7 for Windows and Mac
                    • MathType SDK
                    • MathType SDK

                    How MathML is stored in files and the clipboard

                    Reading time: 3min

                    Abstract

                    This document describes how MathML is embedded in all the file formats in which MathType can save equations.

                    Introduction

                    MathType can save its equations in a variety of file formats and object types. MathType stores its own equation data structures (MTEF) in each file (see: How MTEF is Stored in Files and Objects) and it also stores the MathML translation.

                    MathType uses its standard MathML 2.0 (namespace attr) translator (as defined by translator file, "MathML2 (namespace attr).tdl", which is part of the MathType installation), to generate the Presentation MathML that it embeds.

                    Most of the file types that MathType can output are defined by standards that are not under Wiris's control and, therefore, there is no opportunity to make MathML an official part of the file format. Luckily, the designers of these file formats have seen the need to store application-specific data and have provided mechanisms to allow this. The rest of this document describes how MathType makes use of such mechanisms for storing MathML.

                    This feature applies only to MathType version 6.0 and later.

                    Whenever MathML is embedded in a file it is encoded as UTF-8 text, with white space (tabs, CR, LF, blanks, etc.) removed to save space. The MathML also contains a comment to specify the translator used (see examples below).

                    Mac picture (PICT)

                    PICT was the native graphics format for Mac QuickDraw. QuickDraw was a core part of the classic Mac OS, and was superseded by the Quartz graphics system. QuickDraw was officially deprecated in Mac OS X 10.4 (Tiger), and PICT was dropped as the native graphics format in favor of PDF. MathType for Mac doesn't generate pure PICT, but rather PICT with embedded PostScript. The reason for maintaining some PICT capability is for use in Office 2011.

                    MathType embeds MathML into PICT as a comment thus:

                    // picture comment header
                    typedef struct {
                     long appl_sig; // 'MMLP'
                     short local_kind; // 1 for len and checksum present, 0 if not
                     short len; // length of data in bytes
                     short checksum;
                     // followed by the MathML data
                    } PComHeader;

                    Windows metafile (WMF)

                    The Windows Metafile format is Microsoft Window's native graphics metafile (picture) format and is used in WMF files, on the clipboard, and in OLE objects.

                    MathML is embedded in WMF data using the MFCOMMENT escape function in the same way that MTEF is; the format of the MathML and MTEF data embedded in WMF is described in the document:

                    Application-specific Metafile Comment Convention

                    Encapsulated PostScript (EPS)

                    MathML data is stored in an EPS file as a PostScript comment immediately following the MTEF data (see: How MTEF is Stored in EPS), which is immediately following the header required by the EPS format and preceding the PostScript code generated by MathType to draw the equation. The first line identifies the comment and the following lines contain the MathML text. For example:

                    %MathType!MathML!1!1!+-
                    %<?xmlversion="1.0"?><!--MathType@Translator@5@5@Ma
                    %thML2(Clipboard).tdl@MathML2.0(Clipboard)@--><math
                    %display='block'xmlns='http://www.w3.org/1998/Math/
                    %MathML'><mrow><msqrt><mi>a</mi></msqrt></mrow></ma
                    %th><!--MathType@End@5@5@-->!
                    

                    When reading this data the characters after %MathType!MathML, on the first line, can be ignored. Note the absence of white space (tabs, CR, LF, blanks, etc., removed to save space) and comment specifying the translator used.

                    GIF image files

                    MathML text is embedded into a GIF file as an Application Extension Record, which consists of a 14-byte header (Application Extension Descriptor), followed by the MTEF data. The header contains:

                    Byte Introducer = 0x21;
                    Byte ExtensionLabel = 0xFF;
                    Byte BlockSize = 0x0B;
                    Byte ApplicationId[8] = "MathType";
                    Byte AuthenticationCode[3] = "003";

                    The data follows this header and is written as a series of blocks each containing 255 bytes or less. Each block starts with a single byte count followed by the data. The end is marked as a block with length 0.

                    The header is unique enough that the easiest way to extract the data might be to scan the file for the 14-byte header, then expect the MathML data blocks to follow. Properly decoding the GIF records isn't that hard either, but obviously requires you read the GIF specification.

                    Clipboard and drag-and-drop

                    MathType registers a clipboard format with the name, "MathML Presentation", and uses this type for MathML data transferred via the Windows clipboard or drag-and-drop mechanisms.

                    MathType 6 always places "MathML Presentation" on the clipboard when copying or cutting an equation. And it is always enumerated second after "MathType MTEF" (MathType's native format).

                    For reference, here's the MathML MathType puts on the clipboard for $$A=\pi^2$$, in C++ string constant form:

                    "<?xml version="1.0"?>"
                    "<!-- MathType@Translator@5@5@MathML2 (Clipboard).tdl@MathML 2.0 (Clipboard)@ -->"
                    "<html><math display='block' xmlns='http://www.w3.org/1998/Math/MathML'>"
                    "<semantics>"
                    "<mrow>"
                    "<mi>A</mi><mo>=</mo><msup>"
                    "<mi>&#x03C0;</mi>"
                    "<mn>2</mn>"
                    "</msup>"
                    "</mrow>"
                    "<annotation encoding='MathType-MTEF'>MathType@MTEF@5@5@+=
                    feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn
                    hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr
                    4rNCHbGeaGqiFu0JLipgYlb91rFfpec8Eeeu0xXdbba9frFj0=OqFf
                    ea0dXdd9vqai=hGuQ8kuc9pgc9q8qqaq=dir=f0=yqaiVgFr0xfr=x
                    fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamyqaiabg2
                    da9iabec8aWnaaCaaaleqabaGaaGOmaaaaaaa@3C26@
                    </annotation>"
                    "</semantics>"
                    "</math></html>"
                    “<!-- MathType@End@5@5@ -->”

                    Note the MathML is UTF-8 encoded and NULL terminated.

                    Was this article helpful?

                    Yes
                    No
                    Give feedback about this article

                    Related Articles

                    • Using MathType with other applications and websites
                    • Using MathType with MathJax-enabled applications and websites
                    • Converting equations

                    How MathML is stored in files and the clipboard

                    Abstract Introduction Mac picture (PICT) Windows metafile (WMF) Encapsulated PostScript (EPS) GIF image files Clipboard and drag-and-drop

                    Making people’s STEM work more meaningful

                    MathType

                    • MathType for Office Tools
                    • MathType for Mac
                    • MathType for Microsoft 365
                    • MathType for Google Workspace
                    • MathType for LMS
                    • MathType for XML Editors
                    • Arabic notation
                    • Our products accessibility
                    • MathType is online

                    WirisQuizzes

                    Learning Lemur

                    Solutions for Education

                    • Blackboard Learn
                    • Brightspace by D2L
                    • Canvas
                    • Google Classroom
                    • Moodle
                    • Schoology

                    Solutions for Publishing Houses

                    Solutions for Technical Writers

                    Solutions for Chemistry

                    Integrations

                    • HTML Editors
                    • MathType in WordPress

                    Pricing

                    Company

                    Careers

                    Blog

                    Contact Us

                    Buy Now

                    Plugin Downloads

                    © Wiris 2025

                    • Cookie Preferences
                    • Cookie Policy
                    • Terms of Use
                    • Privacy Policy / GDPR
                    • Student Data Privacy
                    • Compliance
                    • Powered by Helpjuice
                    Expand