From 96e12c8a274ea3e08648116f3fb052e3de005560 Mon Sep 17 00:00:00 2001 From: Matthew Sotoudeh Date: Mon, 13 Apr 2020 08:40:01 -0700 Subject: Initial code release --- run_latex.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 run_latex.py (limited to 'run_latex.py') diff --git a/run_latex.py b/run_latex.py new file mode 100644 index 0000000..2d7d618 --- /dev/null +++ b/run_latex.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python + +import glob +import os +import shutil +import subprocess +import sys + +texlive, latexrun, job_name, main_file, output_file = sys.argv[1:6] +sources = sys.argv[6:] + +env = dict(os.environ) +# Generated files (eg. outputs of pdfcrop) are placed under bazel-out/*/bin. +# This references the bin directory so pdflatex can find them. There is +# probably a better way of doing this. +bin_dirs = set() +for source in sources: + if source.startswith("bazel-out"): + bin_dirs.add("%s/%s" % (os.getcwd(), "/".join(source.split("/")[:3]))) +env["TEXINPUTS"] = ".:%s:" % ":".join(sorted(bin_dirs)) + +env["PATH"] = "%s:%s" % (os.path.abspath("%s/bin/x86_64" % texlive), env["PATH"]) +env["PATH"] = "%s:%s" % (os.path.abspath(texlive), env["PATH"]) +env["TEXMFHOME"] = os.path.abspath(texlive) +env["TEXMFVAR"] = os.path.abspath(texlive) +env["SOURCE_DATE_EPOCH"] = "0" + +return_code = subprocess.call( + args=[ + "python3", + latexrun, + "--latex-args=-jobname=" + job_name, + "--latex-cmd=pdflatex", + "--bibtex-cmd=bibtex", + "-Wall", + main_file, + ], + env=env, +) + +if return_code != 0: + sys.exit(return_code) +os.rename(job_name + ".pdf", output_file) -- cgit v1.2.3