Я новичок в LaTeX и хочу реализовать LaTeX в Open Office для написания математических уравнений, например:http://www.hostmath.com/чтобы я мог напрямую писать математические уравнения (без пакетов) и конвертировать их в изображение png для Windows. (было бы хорошо, если бы это программное обеспечение поддерживало Linux/Mac)
нравиться:
xyz.exe -convert "\oint \frac-b \pm \sqrt{b^2 - 4ac}}{2a}, \space \forall a,b,c \in \mathbb{N}, \text{xyz text} dr" C:/temp/latex/001.png
Поскольку OpenOffice не поддерживает LaTeX, я был бы рад расширить его поддержку для сообщества.
Также необходимо легкое программное обеспечение командной строки (желательно <5 МБ, иначе другим будет сложно загрузить мое расширение).
решение1
Можно использовать standalone
класс для вызова pdflatex
инструмента convert
программы imagemagick
, чтобы скомпилировать и преобразовать в .png
уравнение одним махом (см.этот ответдля краткого изложения).
Короткий скрипт для вставки стандартного ввода в минимальный документ с правильной преамбулой — это все, что требуется для создания виджета командной строки. Это должно быть возможно для большинства языков; я использовал python (3), поскольку я знаком с синтаксисом. В файле с именем textopng.py
:
#!/usr/bin/env python
import sys, os, subprocess
# Tested with Python 3.7.2 (4.20.10-arch1-1-ARCH)
# Requires imagemagick
# Name of .tex created (.png will have same name up to the extension)
tex_file = 'outf.tex'
# Preamble code - add additional \usepackage{} calls to this string
# Note: The size option of convert may be useful e.g. size=640
preamble = r'\documentclass[convert={density=900,outext=.png},preview,border=1pt]{standalone}\usepackage{amsmath}'
# Place input in inline math environment
equation = r'\(' + sys.argv[1] + r'\)'
# Construct our mini latex document
latex_string = preamble + '\n' + r'\begin{document}' + equation + r'\end{document}'
# Write to tex_file
with open(tex_file, 'w') as f:
f.write(latex_string)
try:
# Compile .tex with pdflatex. -shell-escape parameter required for convert option of standalone class to work
proc = subprocess.run(["pdflatex", "-shell-escape", tex_file], capture_output=True, text=True,stdin=subprocess.DEVNULL, timeout=3)
if proc.stderr != '':
# Print any error
print('Process error:\n{}'.format(proc.stderr))
if proc.stdout != '':
# Print standard output from pdflatex
print('Process output:\n{}'.format(proc.stdout))
# Timeout for process currently set to 3 seconds
except subprocess.TimeoutExpired:
print('pdflatex process timed out.')
Тогда, например,
python3 textopng.py "x=\frac{y^2}{32}"
произвел.png
Возможно, вам захочется отредактировать код преамбулы, чтобы загрузить дополнительные пакеты и изменить автономные параметры (подробности см. в автономной документации). Дайте мне знать, если вам нужна помощь в том, чтобы заставить скрипт работать или сделать его более надежным.