[ADD/WIP] Add test LaTeX support.

LaTeX support isn't complete, it's merely a test.
This commit is contained in:
LoaD Accumulator 2023-06-12 08:43:03 +02:00
parent 3e31a138ad
commit 928eeb3a9a
No known key found for this signature in database
GPG key ID: 6898757653ABE3E6

35
latex.py Normal file
View file

@ -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")