# LaTeX Codec

The `latexcodec.codec` module contains all classes and functions for LaTeX code translation. For practical use, you should only ever need to import the `latexcodec` module, which will automatically register the codec so it can be used by `str.encode()`, `str.decode()`, and any of the functions defined in the `codecs` module such as `codecs.open()` and so on. The other functions and classes are exposed in case someone would want to extend them.

latexcodec.codec.register()

  Register the `find_latex()` codec search function.

  See also

  `codecs.register()`

latexcodec.codec.find_latex(encoding)

  Return a `codecs.CodecInfo` instance for the requested LaTeX encoding, which must be equal to `latex`, or to `latex+<encoding>` where `<encoding>` describes another encoding.

class latexcodec.codec.LatexIncrementalEncoder(errors='strict')

  Bases: `latexcodec.lexer.LatexIncrementalEncoder`

  Translating incremental encoder for latex. Maintains a state to determine whether control spaces etc. need to be inserted.

  emptytoken = Token(name='unknown', text='')

    The empty token.

  get_latex_chars(unicode_, final=False)

    Encode every character. Override to process the unicode in some other way (for example, for character translation).

  get_space_bytes(bytes_)

    Inserts space bytes in space eating mode.

  reset()

    Reset state.

  table = <latexcodec.codec.LatexUnicodeTable object>

    Translation table.

class latexcodec.codec.LatexIncrementalDecoder(errors='strict')

  Bases: `latexcodec.lexer.LatexIncrementalDecoder`

  Translating incremental decoder for LaTeX.

  get_unicode_tokens(chars, final=False)

    Decode every token. Override to process the tokens in some other way (for example, for token translation).

  getstate()

    Get state.

  reset()

    Reset state.

  setstate(state)

    Set state. The state must correspond to the return value of a previous `getstate()` call.

  table = <latexcodec.codec.LatexUnicodeTable object>

    Translation table.

class latexcodec.codec.LatexCodec

  Bases: `codecs.Codec`

  decode(bytes_, errors='strict')

    Convert LaTeX bytes to unicode string.

  encode(unicode_, errors='strict')

    Convert unicode string to LaTeX bytes.

class latexcodec.codec.LatexUnicodeTable(lexer)

  Tabulates a translation between LaTeX and unicode.

  register(unicode_text, latex_text, mode='text', package=None, decode=True, encode=True)

    Register a correspondence between unicode_text and latex_text.

    Parameters

      - unicode_text (str) – A unicode character.

      - latex_text (str) – Its corresponding LaTeX translation.

      - mode (str) – LaTeX mode in which the translation applies (`'text'` or `'math'`).

      - package (str) – LaTeX package requirements (currently ignored).

      - decode (bool) – Whether this translation applies to decoding (default: `True`).

      - encode (bool) – Whether this translation applies to encoding (default: `True`).

  register_all()

    Register all symbols and their LaTeX equivalents (called by constructor).