Advanced Usage

Note: It is recommended to read Philosophy before this section.

Interfacing with SayTeX Syntax

A recognizable SayTeX string can be compiled into a SayTeX Syntax string, as shown below.

from saytex import Saytex

saytex_compiler = Saytex()

print(saytex_compiler.to_saytex("a plus b to the power of two"))

A valid SayTeX Syntax string can then be compiled into LaTeX:

from saytex import SaytexSyntax

saytex_syntax = SaytexSyntax()

print(saytex_syntax.to_latex("a plus b superscript 2"))

Note that cascading these two methods produces exactly the same result as the saytex.Saytex.to_latex method.

A SayTeX Syntax string can be validated using the saytex.saytexsyntax.SaytexSyntax.is_valid_saytex_syntax method.

In-depth reference can be found in _saytexsyntaxreference.

Configuring SayTeX Layers

The SayTeX-to-SayTeX-Syntax conversion is done through layers, with each layer’s output being the input to the next layer. The Saytex class comes with a number of pre-defined layers (as outlined in Philosophy), which are good for usage in a general speech-recognition setting, but might not be perfect in all usecases.

To remove an existing layer, use the Saytex.remove_layer function:

from saytex import Saytex
import saytex.layers.prettification.PrettificationLayer as PrettificationLayer

saytex_compiler = Saytex()


One can also create completely new layers by subclassing saytex.layers.Layer and implementing the execute_layer function:


import saytex.layers.Layer

class ExampleLayer(saytex.layers.Layer):

def execute_layer(input_string):
“”” This example layer adds “implies zero equals zero” to all input strings. “”” return input_string + ” implies zero equals zero”

This layer can then be added to the saytex_compiler. When doing that, a priority needs to be specified, which indicate where in the sequence of layers the new layer should be executed. The default priorities can be found here.

saytex_compiler.add_layer(ExampleLayer, 4)

After this, when running saytex_compiler.to_latex or saytex_compiler.to_saytex, the compiler will not prettify the output, but it will always add “implies zero equals zero” to all