More readable LaTeX language extension and transcompiler to LaTeX


Keywords
latex, markdown, pandoc, python, transcompiler, transpiler, unicode
License
MIT
Install
pip install sugartex==0.1.16

Documentation

SugarTeX

SugarTeX is a more readable LaTeX language extension and transcompiler to LaTeX. Designed to be used instead of $formula$ insertions to markdown.

See SugarTeX documentation. Examples of input to output conversion see in this PDF.

I use Markdown with Python code blocks for document programming via Pandoctools (like R-Markdown).

Both Python and Markdown are very readable languages. Unfortunately LaTeX is not like this. So I wrote SugaTeX extension+transpiler that is highly readable. In order to achieve this it heavily uses Unicode so that SugarTeX install instructions even have recommended monospace font fallback chains. And more: SugarTeX Completions Atom package helps write all that Unicode in a moment.

I am trying to incorporate LaTeX into .md using the Markdown Philosophy of “you should write something that's readable as plain text, without compilation, also”.

Install

Install as part of Pandoctools - convenient interface and works out of the box.

Via conda:

conda install -c defaults -c conda-forge sugartex

Via pip:

pip install sugartex

Atom editor with full Unicode support

Highly recommended to install Atom editor as it's the best for markdown.

Atom is perfect for Unicode rich texts. But you need to install some fonts first. See this instruction how to install recommended font fallback chains for Unicode support.

SugarTeX Completions for Atom

Install SugarTeX Completions package for easy typing SugarTeX and lots of other Unicode characters. (it's incompatible with latex-completions package).

In the SugarTeX documentation appropriate shortcuts for SugarTeX Completions for Atom are given.

Usage examples

Example of input to output conversion is at the end of [this PDF].

Windows:

@echo off
chcp 65001 > NUL
set PYTHONIOENCODING=utf-8
set PYTHONUTF8=1

type doc.md | ^
pre-sugartex | ^
pandoc -f markdown --filter sugartex -o doc.md.md

Unix (convert bash script to use like ./convert doc.md):

#!/bin/bash
export PYTHONIOENCODING=utf-8
export PYTHONUTF8=1

cat "$@" | \
pre-sugartex | \
pandoc -f markdown --filter sugartex -o "$@.md"

(or pandoc -f markdown --filter sugartex --to docx+styles -o "$@.docx")

Or splitting Pandoc reader-writer:

export PYTHONIOENCODING=utf-8

cat doc.md | \
pre-sugartex | \
pandoc -f markdown -t json | \
sugartex --kiwi | \
pandoc -f json -o doc.md.md

Panflute scripts are also installed so you can use it in default Panflute automation interface in metadata or in recommend panfl CLI:

  • panfl sugartex --to markdown,
  • panfl sugartex.kiwi -t markdown.