Browse Source

Přidáno automatické volání TeXu a generování pdf, resolves #17.

error-handling
Jan Černohorský 1 year ago
parent
commit
63cd7a212a
  1. 16
      src/formatitko/formatitko.py

16
src/formatitko/formatitko.py

@ -2,6 +2,9 @@
import argparse import argparse
import sys import sys
import tempfile
import subprocess
import shutil
# Import local files # Import local files
from .transform import transform from .transform import transform
@ -30,6 +33,7 @@ def main():
parser.add_argument("-t", "--output-tex", help="The TEX file to write into.") parser.add_argument("-t", "--output-tex", help="The TEX file to write into.")
parser.add_argument("-m", "--output-md", help="The Markdown file to write into. (Uses pandoc to generate markdown)") parser.add_argument("-m", "--output-md", help="The Markdown file to write into. (Uses pandoc to generate markdown)")
parser.add_argument("-j", "--output-json", help="The JSON file to dump the pandoc-compatible AST into.") parser.add_argument("-j", "--output-json", help="The JSON file to dump the pandoc-compatible AST into.")
parser.add_argument("-P", "--output-pdf", help="The PDF file to save the PDF generated by TeX.")
parser.add_argument("--katex-server", action='store_true', help="Starts a KaTeX server and prints the socket filename onto stdout. Useful for running formatitko many times without starting the KaTeX server each time.") parser.add_argument("--katex-server", action='store_true', help="Starts a KaTeX server and prints the socket filename onto stdout. Useful for running formatitko many times without starting the KaTeX server each time.")
parser.add_argument("-k", "--katex-socket", help="The KaTeX server socket filename obtained by running with `--katex-server`.") parser.add_argument("-k", "--katex-socket", help="The KaTeX server socket filename obtained by running with `--katex-server`.")
parser.add_argument("input_filename", help="The markdown file to process.", nargs="?" if "--katex-server" in sys.argv else None) parser.add_argument("input_filename", help="The markdown file to process.", nargs="?" if "--katex-server" in sys.argv else None)
@ -75,6 +79,18 @@ def main():
with open(args.output_json, "w") as file: with open(args.output_json, "w") as file:
file.write(convert_text(PandocProcessor().transform(doc), input_format="panflute", output_format="json")) file.write(convert_text(PandocProcessor().transform(doc), input_format="panflute", output_format="json"))
if args.output_pdf is not None:
if args.output_tex is None:
fd = tempfile.NamedTemporaryFile(dir=".", suffix=".tex")
with open(fd.name, "w") as file:
UCWTexGenerator(file, imageProcessor).generate(doc)
filename = fd.name
else:
filename = args.output_tex
outdir = tempfile.TemporaryDirectory(prefix="formatitko")
subprocess.run(["pdfcsplain", "-halt-on-error", "-output-directory="+outdir.name, "-jobname=formatitko", filename], check=True)
shutil.move(outdir.name+"/formatitko.pdf", args.output_pdf)
if args.debug: if args.debug:
print("-----------------------------------") print("-----------------------------------")
OutputGenerator(sys.stdout).generate(doc) OutputGenerator(sys.stdout).generate(doc)

Loading…
Cancel
Save