Ich bin ein Neuling bei LaTeX und möchte Latex in Open Office implementieren, um einfach mathematische Gleichungen zu schreiben, wie:http://www.hostmath.com/damit ich mathematische Gleichungen direkt (ohne Pakete) schreiben und in ein PNG-Bild für Windows konvertieren kann. (Es wäre gut, wenn die Software Linux/Mac unterstützt.)
wie:
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
Da OpenOffice LaTeX nicht unterstützt, würde ich es gerne für die Community erweitern.
Außerdem wird eine leichte Befehlszeilensoftware benötigt (vorzugsweise < 5 MB, da es sonst für andere schwierig wäre, meine Erweiterung herunterzuladen.)
Antwort1
standalone
Es ist möglich, die Klasse zu verwenden, um pdflatex
das convert
Tool des Programms aufzurufen imagemagick
, um es .png
auf einen Schlag zu kompilieren und in eine Gleichung umzuwandeln (siehediese Antwortfür eine Zusammenfassung).
Ein kurzes Skript zum Einfügen der Standardeingabe in ein minimales Dokument mit der richtigen Präambel ist alles, was Sie brauchen, um Ihr Befehlszeilen-Widget zu erstellen. Dies sollte mit den meisten Sprachen möglich sein; ich habe Python (3) verwendet, da ich mit der Syntax vertraut bin. In einer Datei namens 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.')
Dann zum Beispiel
python3 textopng.py "x=\frac{y^2}{32}"
produzierte die.png
Möglicherweise möchten Sie den Präambelcode bearbeiten, um zusätzliche Pakete zu laden und die Standalone-Optionen zu ändern (Details hierzu finden Sie in der Standalone-Dokumentation). Lassen Sie mich wissen, wenn Sie Hilfe benötigen, um das Skript zum Laufen zu bringen oder es robuster zu machen.