From 928eeb3a9a1ffddd2c1a7c6e3d26f60a97eb4101 Mon Sep 17 00:00:00 2001 From: LoaD Accumulator Date: Mon, 12 Jun 2023 08:43:03 +0200 Subject: [PATCH] [ADD/WIP] Add test LaTeX support. LaTeX support isn't complete, it's merely a test. --- latex.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 latex.py diff --git a/latex.py b/latex.py new file mode 100644 index 0000000..168ba3c --- /dev/null +++ b/latex.py @@ -0,0 +1,35 @@ +# Converts a TeX file into a PNG/SVG file. +template = r""" +\documentclass{{standalone}} + \usepackage{{amsmath}} + % TODO: Add user packages here. +\begin{{document}} + % The user content goes here. + {content} + +\end{{document}} +""" + + +def render(user: str, source: str, png: bool = True) -> str: + import tempfile + import subprocess + + fmt = template.format(content=source) + + tmp = tempfile.NamedTemporaryFile(delete=False) + print(tmp.name) + tmp.write(bytes(fmt, encoding="utf8")) + tmp.close() + # Parse our templated file thru' LaTeX and dvipng. + # TODO: Allow arbitrary DPI and foreground color. + subprocess.run(["latex", tmp.name], cwd="/tmp") + if png: + print("PNG") + subprocess.run(["dvipng", "-D", "1000", tmp.name + ".dvi", "-bg", "Transparent", + "-fg", "rgb .75 .75 .75", "-o", tmp.name + ".png"], cwd="/tmp") + + return tmp.name + ".png" + + # TODO: + raise NotImplementedError("SVG support is not currently implemented")