from pylatex import Command
from pylatex.utils import NoEscape
from pyfeyn2.render.latex.latex import LatexRender
[docs]class PlainPDFRender(LatexRender):
"""Renders Feynman diagrams as ASCII art to PDF."""
def __init__(
self,
fd=None,
documentclass="standalone",
document_options=None,
environment="lstlisting",
environment_arg=None,
*args,
**kwargs,
):
if document_options is None:
document_options = ["preview", "crop"]
super().__init__(
fd,
documentclass=documentclass,
document_options=document_options,
*args,
**kwargs,
)
self.preamble.append(Command("usepackage", NoEscape("listings")))
self.environment = environment
self.environment_arg = environment_arg
[docs] def render(
self,
file=None,
show=True,
resolution=100,
width=None,
height=None,
clean_up=True,
):
# str = T.render(self, None, False, resolution, width, height)
self.set_src_diag(
f"\\begin{{{self.environment}}}"
+ (
f"{{{self.environment_arg}}}"
if self.environment_arg is not None
else ""
)
+ "\n"
+ self.src_txt
+ f"\\end{{{self.environment}}}\n"
)
LatexRender.render(self, file, show, resolution, width, height, clean_up)