Scholdoc fork of texmath

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

GPL licensed by Tim T.Y. Lin
Maintained by


A fork of Texmath for Scholdoc

Current stable version:

Development build status build status
Stable build status build status

This package is a fork of Texmath. It is intended to support the development of Scholdoc, a fork of Pandoc that understands ScholarlyMarkdown. The Texmath library provides functions to read and write TeX math, presentation MathML, and OMML (Office Math Markup Language, used in Microsoft Office). For more information, consult the original README file of texmath, which is moved to

scholdoc-texmath is currently just a trivial fork just so it can compile against Scholdoc-Types instead of Pandoc-Types, without polluting the texmath package namespace on a user's Cabal build system. In the future, enhancements and modifications made as part of the Scholdoc project will be introduced here first.

This package is currently up to date with Texmath version


texmath (

* Added network-uri flag. This addresses the split of network
and network-uri packages.
* OMML reader: change default accent (Jesse Rosenthal).
The default had previously been set as accute (possibly as a
placeholder). It appears to be circumflex/hat instead.

texmath (0.8)

* Added OMML reader (Jesse Rosenthal).
* Support latex \substack (#57).
* Added EBoxed and implemented in readers and writers (#58).
* Handle latex \genfrac. Use \genfrac for \brace, \brack,
etc. when amsmath is available.
* Improvements in handling of space characters.
* Use ESpace rather than EText when a mathml mtext just contains
a space.
* Use \mspace when needed to get latex spaces with odd sizes, rather
than finding the closest simple command.
* Use Rational instead of Double in ESpaced, EScaled.
* Shared: Export getSpaceWidth, getSpaceChars.
* Shared: Export fixTree, isEmpty, empty (formerly in MathML reader).

texmath (

* TeX reader: further improvements in error reporting.
Instead of reporting line and column, a snippet is printed
with a caret indicating the position of the error. Also
fixed bad position information when control sequences are
followed by a letter.

texmath (

* TeX reader:

+ Improved error reporting.
+ Optimized parser.
+ Treat `\ ` as ESpaced rather than ESymbol.
+ Internal improvements, including using the parsec3 interface
instead of the older parsec2 compatibility interface.

* Added tests for phantom.

texmath (0.7)

* Changes in Exp type:

+ Removed EUp, EDown, EDownup, EUnary, EBinary.
+ Added EFraction (and FractionType), ESqrt, Eroot, EPhantom.
+ Added boolean "convertible" parameter to EUnder, EOver, EUnderover.
+ Changed parameter of EScaled from String to Double.
+ Changed parameter of ESpace from String to Double.
+ Removed EStretchy.
+ Added EStyled, corresponding to mstyle in mathml, and \mathrm,
\mathcal, etc. in TeX (which can contain arbitrary math content,
not just text).
+ Changed the type of EDelimited. The contents of an EDelimited are
now either Right Exp or Left String (the latter case represents a
fence in middle position, e.g. \mid| in LaTeX).

* Module reorganisation: the exposed interface has been completely
changed, and modules for reading MathML and writing TeX math
have been added:

+ All writers now reside in Text.TeXMath.Writers.
- Text.TeXMath.MathML -> Text.TeXMath.Writers.MathML.
toMathML and showExp are removed, writeMathML added.
- Text.TeXMath.OMML -> Text.TeXMath.Writers.OMML.
toOMML and showExp removed, writeOMML added.
- Text.TeXMath.Pandoc -> Text.TeXMath.Writers.Pandoc.
toPandoc removed, writePandoc added.
- New module Text.TeXMath.Writers.TeX, exporting writeTeX,
writeTeXWith, addLaTeXEnvironment (the latter giving control
over which packages are assumed to be available).

+ All readers now reside in Text.TeXMath.Readers.
- Text.TeXMath.MathMLParser -> Text.TeXMath.Readers.MathML,
exporting readMathML.
- Text.TeXMath.Readers.TeX nows exports readTeX rather than

+ New modules for unicode conversion: Text.TeXMath.Unicode.ToASCII,
Text.TeXMath.Unicode.ToTeX, Text.TeXMath.Unicode.ToUnicode.

+ Two MathML specific modules: Text.TeXMath.Readers.MathML.EntityMap,

+ In Text.TeXMath, all the XtoY functions have been removed
in favour of rexporting raw reader and writer functions. The
data type Exp is now also exported.

* Bug fixes and improvements.

+ TeX writer: Properly handle accents inside \text{}.
Use real text environments for EText (\textrm, not \mathrm).
Improved handling of scalers (\Big etc.). Use amsmath matrix
environments when appropriate. Fixed \varepsilon.
+ MathML writer: Omit superfluous outer mrows. Add position
information to fences.
+ OMML writer: Handle \phantom.
+ Pandoc writer: Use unicode characters to support Fraktur and
other text styles.
+ TeX reader: Use EUnder/Over for \stackrel, \overset, \underset.
Improved handling of primes. Fixed \notin. Avoid superfluous
grouping of single elements. Improved handling of scalers (\Big etc.).
Handle \choose, \brace, \brack, \bangle (#21).
+ Macros: Don't raise an error if applying a macro fails to
resolve to a fixed point; instead, just return the original string.

* Rewrote test suite as a proper cabal test suite. Added
--regenerate-tests and --round-trip options.

* Updated texmath online demo for bidirectional conversion.

* Removed cgi and test flags. Added executable flag to build texmath.

* Modified texmath so it works like a cgi script when run as
texmath-cgi (through symlink or renaming). Removed dependency on
the cgi package.

texmath (0.6.7)

* New Module: Text.TeXMath.Unidecode, a module for approximating
unicode characters in ASCII.
* New Module: Text.TeXMath.Shared, a module for shared lookup
tables between the various readers and writers
* New Module: Text.TeXMath.MathMLParser, exporting readMathML.
* New Module: Text.TeXMath.EntityMap, exporting getUnicode,
a conversion table from MathML entities to unicode characters.
* New Module: Text.TeXMath.UnicodeToLaTeX, exporting getLaTeX,
converting a string of unicode characters to a string of equivalent LaTeX
* New Module: Text.TeXMath.LaTeX, replacing Text.TeXMath.Parser,
exporting toTeXMath.
* New Module: Text.TeXMath.MMLDict, implements a lookup table from
operators to their default values as defined by the MML dictionary,
exporting getOperator.
* New Module: Text.TeXMath.Compat, maintaining compatibility with
mtl < 2.2.1.
* Modified Text.TeXMath to export the primitive readers, as well as
mathMLTo{Writer} for all writers
* Modified: Text.TeXMath.Types: added additional record types for
Text.TeXMath.MMLDict and Text.TeXMath.UnicodeToLaTeX.
New Exports: Operator(..), Record(..).
* Modified test suite: use cabal test, added significant number of tests.
* Added recognition of the LaTeX command \phantom

texmath (

* Use combining tilde accent for \tilde. Closes pandoc #1324.

texmath (

* Allow \left to be used with ), ], etc. Ditto with \right.
Previously only (, [, etc. were allowed with \left. Closes pandoc #1319.

texmath (

* Support \multline (previously it was mispelled "multiline")
* Changed data-files to extra-source-files.

texmath (0.6.6)

* Insert braces around macro expansions to prevent breakage (#7).
* Support \operatorname and \DeclareMathOperator (rekka) (#17).
* Support \providecommand (#15).
* Fixed spacing bugs in pandoc rendering (#24).
* Ignore \hline at end of array row instead of failing (#19).

Used by 1 package:
comments powered byDisqus