---
name: "LaTeXML::MathParser"
section: "3pm"
platform: "linux"
package: "latexml"
version: "0.8.8-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/LaTeXML::MathParser"
---

# LaTeXML::MathParser(3pm)

parses mathematics content

## NAME

"LaTeXML::MathParser" - parses mathematics content

## DESCRIPTION

`"LaTeXML::MathParser"` parses the mathematical content of a document. It uses Parse::RecDescent and a grammar `"MathGrammar"`.

### Math Representation

Needs description.

### Possibile Customizations

Needs description.

### Convenience functions

The following functions are exported for convenience in writing the grammar productions.

- "$node = New($name,$content,%attributes);"

  Creates a new `"XMTok"` node with given `$name` (a string or undef), and `$content` (a string or undef) (but at least one of name or content should be provided), and attributes.

- "$node = Arg($node,$n);"

  Returns the `$n`-th argument of an `"XMApp"` node; 0 is the operator node.

- "Annotate($node,%attributes);"

  Add attributes to `$node`.

- "$node = Apply($op,@args);"

  Create a new `"XMApp"` node representing the application of the node `$op` to the nodes `@args`.

- "$node = ApplyDelimited($op,@stuff);"

  Create a new `"XMApp"` node representing the application of the node `$op` to the arguments found in `@stuff`.  `@stuff` are delimited arguments in the sense that the leading and trailing nodes should represent open and close delimiters and the arguments are separated by punctuation nodes.

- "$node = InterpretDelimited($op,@stuff);"

  Similar to `"ApplyDelimited"`, this interprets sequence of delimited, punctuated items as being the application of `$op` to those items.

- "$node = recApply(@ops,$arg);"

  Given a sequence of operators and an argument, forms the nested application `"op(op(...(arg)))"`\>.

- "$node = InvisibleTimes;"

  Creates an invisible times operator.

- "$boole = isMatchingClose($open,$close);"

  Checks whether `$open` and `$close` form a \`normal' pair of delimiters, or if either is ".".

- "$node = Fence(@stuff);"

  Given a delimited sequence of nodes, starting and ending with open/close delimiters, and with intermediate nodes separated by punctuation or such, attempt to guess what type of thing is represented such as a set, absolute value, interval, and so on.

  This would be a good candidate for customization!

- "$node = NewFormulae(@stuff);"

  Given a set of formulas, construct a `"Formulae"` application, if there are more than one, else just return the first.

- "$node = NewList(@stuff);"

  Given a set of expressions, construct a `"list"` application, if there are more than one, else just return the first.

- "$node = LeftRec($arg1,@more);"

  Given an expr followed by repeated (op expr), compose the left recursive tree. For example `"a + b + c - d"` would give `"(- (+ a b c) d)"`\>

- "MaybeFunction($token);"

  Note the possible use of `$token` as a function, which may cause incorrect parsing. This is used to generate warning messages.

## AUTHOR

Bruce Miller \<bruce.miller@nist.gov\>

## COPYRIGHT

Public domain software, produced as part of work done by the United States Government & not subject to copyright in the US.
