Eine leichte Latex-Befehlszeilensoftware

Eine leichte Latex-Befehlszeilensoftware

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

standaloneEs ist möglich, die Klasse zu verwenden, um pdflatexdas convertTool des Programms aufzurufen imagemagick, um es .pngauf 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

Ausgabepng

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.

verwandte Informationen