The introduction in 1.1 describes a powerful framework created in this package allowing for a standardised methodology to generate typesetting strings via the semantic features of objects.

This section describes the implementation of the framework for LaTeX, providing both the invaluable functionality to typeset a subset of **GAP** objects as LaTeX strings whilst also serving as an example of how the framework can be used for other typesetting languages.

It also provides some insight into the kinds of functions that would be expected from an implementation for a different language. A bare-boned example implementation for MathML is provided in 4.

Currently, the following types have explicit methods installed for LaTeX generation:

Rationals (Integers and Fractions)

Infinity and Negative Infinity

Internal Finite-Field Elements

Permutations

Lists

Matrices

Polynomials and Non-Polynomial Rational Functions

Character Tables

Generators for FP, PC, Matrix and Permutation Groups

Associative Words in Letter Representation

It should also be noted that `Typeset`

(1.1-2) does fallback to the core library function `ViewString`

(Reference: ViewString), which can be used for any types which do not require LaTeX-specific formatting to be renderable in math mode (e.g. floats).

`‣ GenLatexTmpl` ( obj ) | ( operation ) |

Returns: An Unpopulated LaTeX Format String

Generates a format string that represents the structural definition of the given **GAP** object `obj` in LaTeX. It contains no parameter values, and will need to be populated with the arguments representing the semantic values of the object, generated via `GenArgs`

(1.2-1), before it can be rendered in a LaTeX environment.

`‣ CtblEntryLatex` ( s ) | ( function ) |

Returns: A String

Formats a string representation of an entry `s` returned by the undocumented function `CharacterTableDisplayStringEntryDefault`

to include the LaTeX-specific bar environment for complex conjugates.

`‣ CtblLegendLatex` ( data ) | ( function ) |

Returns: A String

Generates a string representation of the mathematical substitutions `data`, generated by the undocumented function `CharacterTableDisplayStringEntryDataDefault`

for entries within a character table.

`‣ GenNameAssocLetterLatex` ( s ) | ( function ) |

Returns: A String

Generates a string representation of the provided letter string `s` correctly subscripted with a LaTeX math-mode subscript environment.

`‣ FactoriseAssocWordLatex` ( l, names, tseed ) | ( function ) |

Returns: A Factorised String

Factorises the string representation of an assoc word in letter representation `l`, based on the return value from the undocumented function `FindSubstringPowers`

, using the passed list of letters `names`, and a list of reserved numbers `tseed` (typically empty for initial calls).

This method is essentially a LaTeX-specific implementation of the the undocumented function `NiceStringAssocWord`

.

To aid users using `Typeset`

(1.1-2), being able to view the results quickly in a variety of widely-used formats would help streamline the usage of the package. As such, a number of functions described below have been written to enable users to render the output LaTeX-renderable snippets in different fashions.

`‣ RenderLatex` ( str[, options] ) | ( function ) |

Renders a given LaTeX string `str` in a LaTeX environment, providing a visual example of what the string would look like in a paper. By default, this involved creating a HTML file that includes the MathJax script, but the **GAP** option `output` can be passed to change the rendering method.

Currently implemented rendering methods are:

`"mathjax"`

, calling`MathJax`

(2.2-3)`"pdflatex"`

, calling`PDFLatex`

(2.2-2)`"overleaf"`

, calling`Overleaf`

(2.2-4)

These functions can be called independently of `RenderLatex`

, which serves only to be a more centralised rendering method for users.

`‣ PDFLatex` ( str ) | ( function ) |

Renders a given LaTeX string `str` in a new PDF file, specifically via the pdflatex bash tool.

`‣ MathJax` ( str ) | ( function ) |

Renders a given LaTeX string `str` in a HTML file, making use of the MathJax and TikzJax scripts.

`‣ Overleaf` ( str ) | ( function ) |

Renders a given LaTeX string `str` in a new Overleaf project, specifically via a URL-encoded snippet.

`‣ URIEncodeComponent` ( raw ) | ( function ) |

Returns: A Percent-Encoded String

Replaces reserved characters within a URI component `raw` as per RFC-3986.

`‣ NeedsLatexMathMode` ( raw ) | ( function ) |

Returns: A Boolean

Determines if the LaTeX snippet `raw` requires LaTeX's math mode to be rendered correctly.

`‣ DEFAULT_LATEX_PREAMBLE` | ( global variable ) |

Default LaTeX preamble string used for creating compilable `.tex`

files from LaTeX snippets.

`‣ DEFAULT_MATHJAX_TAGS` | ( global variable ) |

Default HTML document and head tags used to create HTML files using MathJax to render LaTeX snippets.

`‣ ALWAYS_UNESCAPED_CHARS` | ( global variable ) |

String containing all of the characters that do not need to be percent-encoded within URI components, as per RFC-3986.

**digraphs** is a powerful, widely-used packages, implementing helpful functionality to work with directed graphs amongst other objects. Due to it's popularity, and as a way to demonstrate how **typeset** can be integrated with external packages, the following functions have been implemented to allow directed graphs to be converted into LaTeX representations.

It should be noted that the conversion implemented here does use the output from `DotDigraph`

(Digraphs: DotDigraph), which generates the DOT string representing a digraph. This is then used to either convert it to a tikz representation via the command-line tool dot2tex (using the **GAP** option `digraphOut := "dot2tex"`

), or simply wrapping it up in a dot2tex environment provided by the LaTeX package dot2texi which will compile the wrapped DOT input into tikz during compilation of the LaTeX file itself.

While another method could be written to convert the internal representation of a directed graph directly into a tikzpicture, this would likely be incredibly convoluted and difficult, and may present numerous problems with edge positioning. Therefore, relying on dot2tex was chosen as the best approach.

`‣ DEFAULT_DOT2TEX_OPTIONS` | ( global variable ) |

Default command-line options passed to the `dot2tex`

executable to convert dot strings.

`‣ Dot2Tex` ( obj ) | ( function ) |

Returns: A Tikz String

Executes `dot2tex`

on the dot string representing a given digraph object `obj`.

generated by GAPDoc2HTML