from pylatex import Command
from pylatex.utils import NoEscape
from pyfeyn2.render.text.plainpdf import PlainPDFRender
from pyfeyn2.render.text.unicode import UnicodeRender
[docs]class UnicodePDFRender(PlainPDFRender, UnicodeRender):
"""Renders Feynman diagrams as Unicode art to PDF."""
def __init__(
self,
*args,
document_options=None,
environment="minted",
environment_arg="text",
**kwargs,
):
if document_options is None:
document_options = ["preview"]
UnicodeRender.__init__(self, *args, **kwargs)
PlainPDFRender.__init__(
self,
*args,
document_options=document_options,
environment=environment,
environment_arg=environment_arg,
**kwargs,
)
self.preamble.append(Command("usepackage", NoEscape("fontspec")))
self.preamble.append(Command("usepackage", NoEscape("minted")))
# self.preamble.append(Command("setmonofont", NoEscape("Courier New") , "Scale=0.9"))
self.preamble.append(
NoEscape(
r"""
\setmonofont{LiberationMono}[
Extension=.ttf,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
]
\frenchspacing
"""
)
)
# self.usepackage("libertine")
# \setmainfont{Linux Libertine O}
# self.preamble.append(Command("setmainfont", NoEscape("Linux Liberine O")))
[docs] def render(
self,
file=None,
show=True,
resolution=100,
width=None,
height=None,
clean_up=True,
):
UnicodeRender.render(self, file, show, resolution, width, height)
return PlainPDFRender.render(
self, file, show, resolution, width, height, clean_up
)