zaz-latex2svg/source/pythonpath/main.py

103 lines
1.9 KiB
Python

#!/usr/bin/env python3
import easymacro as app
ID_EXTENSION = ''
_ = None
TEMPLATE = """\documentclass{{article}}
\\usepackage[a5paper, landscape]{{geometry}}
\\usepackage{{xcolor}}
\\usepackage{{amssymb}}
\\usepackage{{amsmath}}
\pagestyle{{empty}}
\\begin{{document}}
\\begingroup
\Huge
\[ {} \]
\endgroup
\end{{document}}
"""
def validate_app():
msg1 = _('Not found')
msg2 = _('Found')
result = msg1
if app.paths.exists_app('pdflatex'):
result = msg2
msg = f'pdflatex = {result}\n'
result = msg1
if app.paths.exists_app('pdfcrop'):
result = msg2
msg += f'pdfcrop = {result}\n'
result = msg1
if app.paths.exists_app('pdf2svg'):
result = msg2
msg += f'pdf2svg = {result}\n\n'
msg += _('Not used, if not found some application.')
app.msgbox(msg)
return
def _latex_to_svg(code):
NAME = 'temp'
data = TEMPLATE.format(code)
dt = app.paths.dir_tmp()
path_tex = app._P.join(dt.name, f'{NAME}.tex')
path_pdf = app._P.join(dt.name, f'{NAME}.pdf')
path_svg = app._P.join(app._P.temp_dir, f'{NAME}.svg')
app.paths.save(path_tex, data)
cmd = f'pdflatex --interaction=batchmode -output-directory="{dt.name}" "{path_tex}"'
app.run(cmd)
cmd = f'pdfcrop "{path_pdf}" "{path_pdf}"'
app.run(cmd)
cmd = f'pdf2svg "{path_pdf}" "{path_svg}"'
app.run(cmd)
if not app.paths.exists(path_svg):
path_svg = ''
dt.cleanup()
return path_svg
def from_selection():
doc = app.active
sel = doc.selection
data = sel.value
path_svg = _latex_to_svg(data)
sel = sel.offset()
args = {}
if doc.type == 'writer':
args = {'Width': 5000, 'Height': 2000}
image = sel.insert_image(path_svg, args)
image.description = data
return
def from_dialog():
app.debug('From dialog')
return
def run(args, path_locales):
global _
_ = app.install_locales(path_locales)
globals()[args]()
return