103 lines
1.9 KiB
Python
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
|