texmath: Conversion between formats used to represent mathematics.

[ gpl, library, text ] [ Propose Tags ]

The texmath library provides functions to read and write TeX math, presentation MathML, and OMML (Office Math Markup Language, used in Microsoft Office). Support is also included for converting math formats to Gnu eqn and to pandoc's native format (allowing conversion, via pandoc, to a variety of different markup formats). The TeX reader supports basic LaTeX and AMS extensions, and it can parse and apply LaTeX macros. (See here for a live demo of bidirectional conversion between LaTeX and MathML.)

The package also includes several utility modules which may be useful for anyone looking to manipulate either TeX math or MathML. For example, a copy of the MathML operator dictionary is included.

Use the executable flag to install a standalone executable, texmath, that by default reads a LaTeX formula from stdin and writes MathML to stdout. With flags all the functionality exposed by Text.TeXMath can be accessed through this executable. (Use the --help flag for a description of all functionality)

The texmath executable can also be used as a CGI script, when renamed as texmath-cgi. It will expect query parameters for from, to, input, and optionally inline, and return a JSON object with either error and a message or success and the converted result.


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
executable

Compile test executable.

Disabled
network-uri

Get Network.URI from the network-uri package

Enabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.1, 0.2, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.2.0.4, 0.3, 0.3.0.1, 0.3.0.2, 0.3.0.3, 0.3.1.3, 0.3.1.4, 0.3.1.5, 0.4, 0.5, 0.5.0.1, 0.5.0.2, 0.5.0.3, 0.5.0.4, 0.6, 0.6.0.1, 0.6.0.2, 0.6.0.3, 0.6.0.4, 0.6.0.5, 0.6.0.6, 0.6.1, 0.6.1.1, 0.6.1.2, 0.6.1.3, 0.6.1.4, 0.6.1.5, 0.6.3, 0.6.4, 0.6.5, 0.6.5.1, 0.6.5.2, 0.6.6, 0.6.6.1, 0.6.6.2, 0.6.6.3, 0.6.7, 0.7, 0.7.0.1, 0.7.0.2, 0.8, 0.8.0.1, 0.8.0.2, 0.8.1, 0.8.2, 0.8.2.1, 0.8.2.2, 0.8.3, 0.8.4, 0.8.4.1, 0.8.4.2, 0.8.5, 0.8.5.1, 0.8.6, 0.8.6.1, 0.8.6.2, 0.8.6.3, 0.8.6.4, 0.8.6.5, 0.8.6.6, 0.8.6.7, 0.9, 0.9.1, 0.9.1.1, 0.9.2, 0.9.3, 0.9.4, 0.9.4.1, 0.9.4.2, 0.9.4.3, 0.9.4.4, 0.10, 0.10.1, 0.10.1.1, 0.10.1.2, 0.11, 0.11.0.1, 0.11.1, 0.11.1.1, 0.11.1.2, 0.11.2, 0.11.2.1, 0.11.2.2, 0.11.2.3, 0.11.3, 0.12, 0.12.0.1, 0.12.0.2, 0.12.0.3, 0.12.1, 0.12.1.1, 0.12.2, 0.12.3, 0.12.3.1, 0.12.3.2, 0.12.3.3, 0.12.4, 0.12.5, 0.12.5.1, 0.12.5.2, 0.12.5.3, 0.12.5.4, 0.12.5.5, 0.12.6, 0.12.7, 0.12.7.1, 0.12.8, 0.12.8.1, 0.12.8.2, 0.12.8.3, 0.12.8.4, 0.12.8.5, 0.12.8.6, 0.12.8.7 (info)
Change log changelog
Dependencies aeson, base (>=3 && <4 || >=4.5 && <4.12), bytestring, containers, mtl, network (<2.6), network-uri (>=2.6), pandoc-types (>=1.12.3.3 && <1.18), parsec (>=3), split, syb, texmath, text, xml [details]
License LicenseRef-GPL
Author John MacFarlane, Matthew Pickering
Maintainer jgm@berkeley.edu
Revised Revision 1 made by phadej at 2018-09-25T06:35:49Z
Category Text
Home page http://github.com/jgm/texmath
Source repo head: git clone git://github.com/jgm/texmath.git
Uploaded by JohnMacFarlane at 2017-11-04T06:25:07Z
Distributions Arch:0.12.8.4, Debian:0.12.0.2, Fedora:0.12.8.3, FreeBSD:0.8.3, LTSHaskell:0.12.8.6, NixOS:0.12.8.6, Stackage:0.12.8.6, openSUSE:0.12.8.6
Reverse Dependencies 7 direct, 164 indirect [details]
Executables texmath
Downloads 205601 total (955 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-11-04 [all 1 reports]

Readme for texmath-0.10

[back to package description]

texmath

texmath is a Haskell library for converting between formats used to represent mathematics. Currently it provides functions to read and write TeX math, presentation MathML, and OMML (Office Math Markup Language, used in Microsoft Office), and to write Gnu eqn and pandoc's native format (allowing conversion, using pandoc, to a variety of different markup formats). The TeX reader and writer supports basic LaTeX and AMS extensions, and it can parse and apply LaTeX macros. The package also includes several utility modules which may be useful for anyone looking to manipulate either TeX math or MathML. For example, a copy of the MathML operator dictionary is included.

You can try it out online here. (Note that the math it produces will be rendered correctly only if your browser supports MathML. Firefox does; Safari and Chrome do not.)

By default, only the Haskell library is installed. To install a test program, texmath, use the executable Cabal flag:

cabal install -fexecutable

To run the test suite, compile with --enable-tests and do cabal test.

Alternatively, texmath can be installed using stack. Install the stack binary somewhere in your path. Then, in the texmath repository,

stack setup
stack install --flag texmath:executable

The texmath binary will be put in ~/.local/bin.

Macro definitions may be included before a LaTeX formula.

texmath will behave as a CGI script when called under the name texmath-cgi (e.g. through a symbolic link).

The file cgi/texmath.html contains an example of how it can be used.

Generating lookup tables

There are three main lookup tables which are built form externally compiled lists. This section contains information about how to modify and regenerate these tables.

In the lib direction there are two sub-directories which contain the necessary files.

MMLDict.hs

The utility program xsltproc is required. You can find these files in lib/mmldict/

  1. If desired replace unicode.xml with and updated version (you can download a copy from here
  2. xsltproc -o dictionary.xml operatorDictionary.xsl unicode.xml
  3. runghc generateMMLDict.hs
  4. Replace the operator table at the bottom of src/Text/TeXMath/Readers/MathML/MMLDict.hs with the contents of mmldict.hs

ToTeXMath.hs

You can find these files in lib/totexmath/

  1. If desired, replace unimathsymbols.txt with an updated verson from here
  2. runghc unicodetotex.hs
  3. Replace the record table at the bottom of src/Text/TeXMath/Unicode/ToTeXMath.hs with the contents of UnicodeToLaTeX.hs

ToUnicode.hs

You can find these files in lib/tounicode/.

  1. If desired, replace UnicodeData.txt with an updated verson from here.
  2. runghc mkUnicodeTable.hs
  3. Replace the table at the bottom of src/Text/TeXMath/Unicode/ToUnicode.hs with the output.

Editing the tables

It is not necessary to edit the source files to add records to the tables. To add to or modify a table it is easier to add modify either unicodetotex.hs or generateMMLDict.hs. This is easily achieved by adding an item to the corresponding updates lists. After making the changes, follow the above steps to regenerate the table.

Authors

John MacFarlane wrote the original TeX reader, MathML writer, and OMML writer. Matthew Pickering contributed the MathML reader, the TeX writer, and many of the auxiliary modules. Jesse Rosenthal contributed the OMML reader. Thanks also to John Lenz for many contributions.