Andere TeX-Verwaltungsoptionen | Python
Die Beispiele erzeugen XPS-Dateien. Wenden Sie zuerst eine
Lizenz an und setzen Sie ASPOSE_TEX_OUTPUT_DIR auf den Ausgabeordner (Standard: output). Verwenden Sie für jedes Beispiel einen eigenen Ausgabeordner, um alle Ergebnisse aufzubewahren.
Festlegen des Interaktionsmodus
Wie im Abschnitt zur TeX-Interaktion erwähnt, bietet Aspose.TeX für Python die Möglichkeit, den anfänglichen Interaktionsmodus festzulegen, in dem die Engine startet. Hier ist ein Beispiel, wie es gemacht werden kann:
1# Process a LaTeX document without interactive error prompts.
2import os
3from pathlib import Path
4from io import BytesIO
5from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
6from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice, XpsSaveOptions
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
14options.terminal_out = OutputMemoryTerminal()
15options.interaction = Interaction.NONSTOP_MODE
16save_options = XpsSaveOptions()
17options.save_options = save_options
18device = XpsDevice()
19source = r"\documentclass{article}\begin{document}Hello, World!\end{document}"
20with BytesIO(source.encode("ascii")) as stream:
21 result = TeXJob(stream, device, options).run()Festlegen des Jobnamens
Wenn die Haupteingabedatei als Dateiname angegeben wird, haben die resultierenden Ausgabedateien denselben Namen, jedoch mit unterschiedlichen Erweiterungen. Die TeX-Engine bezeichnet den Namen der Eingabedatei als Jobnamen und verwendet ihn für die Ausgabedateien. Eine Ausnahme bilden Hilfsdateien mit explizit angegebenen Dateinamen. Wenn die Haupteingabedatei jedoch als stream übergeben wird, verwendet die TeX-Engine den Standard-Jobnamen, der texput ist. In beiden Szenarien ist das Überschreiben des Jobnamens durch Zuweisen der entsprechenden Konvertierungsoption möglich.
1# Override the output job name.
2import os
3from pathlib import Path
4from io import BytesIO
5from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
6from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice, XpsSaveOptions
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
14options.terminal_out = OutputMemoryTerminal()
15options.interaction = Interaction.NONSTOP_MODE
16save_options = XpsSaveOptions()
17options.job_name = "my-job-name"
18options.save_options = save_options
19device = XpsDevice()
20source = r"\documentclass{article}\begin{document}Hello, World!\end{document}"
21with BytesIO(source.encode("ascii")) as stream:
22 result = TeXJob(stream, device, options).run()„Die Zeit anhalten“
Um aus bestimmten Definitionen in der Präambel automatisch einen Titel zu generieren, bietet LaTeX eine Funktion, die typischerweise das aktuelle Datum einbezieht. Es kann jedoch vorkommen, dass wir das Datum auf einen bestimmten Wert festlegen möchten. Hier ist eine Methode, um das zu erreichen:
1# Fix the date used by LaTeX.
2import os
3from pathlib import Path
4from io import BytesIO
5from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
6from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice, XpsSaveOptions
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
14options.terminal_out = OutputMemoryTerminal()
15options.interaction = Interaction.NONSTOP_MODE
16save_options = XpsSaveOptions()
17from datetime import datetime
18options.date_time = datetime(2022, 12, 18)
19options.save_options = save_options
20device = XpsDevice()
21source = r"\documentclass{article}\begin{document}\today\end{document}"
22with BytesIO(source.encode("ascii")) as stream:
23 result = TeXJob(stream, device, options).run()Fehlende Pakete werden ignoriert
Wenn wir über eine LaTeX-Datei verfügen, die Verweise auf Pakete enthält, die von der Bibliothek Aspose.TeX für Python nicht unterstützt werden, wird die TeX-Engine beim Versuch, diese Pakete zu laden, auf einen Fehler stoßen und anhalten. Um dies zu verhindern, können wir folgende Möglichkeit nutzen:
1# Skip an unavailable LaTeX package.
2import os
3from pathlib import Path
4from io import BytesIO
5from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
6from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice, XpsSaveOptions
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
14options.terminal_out = OutputMemoryTerminal()
15options.interaction = Interaction.NONSTOP_MODE
16save_options = XpsSaveOptions()
17options.ignore_missing_packages = True
18options.save_options = save_options
19device = XpsDevice()
20source = r"\documentclass{article}\usepackage{asposeexamplemissingpackage}\begin{document}Hello, World!\end{document}"
21with BytesIO(source.encode("ascii")) as stream:
22 result = TeXJob(stream, device, options).run()So vermeiden Sie die Bildung von Ligaturen
Standardmäßig erstellt die TeX-Engine Ligaturen für bestimmte Zeichenpaare, wenn die Schriftart die erforderlichen Daten enthält. Wir können die Engine jedoch mit dem folgenden Code anweisen, die Ligaturkonstruktion zu umgehen:
1# Disable construction of typographic ligatures.
2import os
3from pathlib import Path
4from io import BytesIO
5from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
6from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice, XpsSaveOptions
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
14options.terminal_out = OutputMemoryTerminal()
15options.interaction = Interaction.NONSTOP_MODE
16save_options = XpsSaveOptions()
17options.no_ligatures = True
18options.save_options = save_options
19device = XpsDevice()
20source = r"\documentclass{article}\begin{document}office efficient affine\end{document}"
21with BytesIO(source.encode("ascii")) as stream:
22 result = TeXJob(stream, device, options).run()Den Auftrag wiederholen
Wie im Absatz „LaTeX-Eingabedatei“, Beschriftungen und Referenzen erwähnt, gibt es Situationen, in denen wir denselben Job möglicherweise zweimal ausführen müssen. Hier ist eine Methode, um das zu erreichen:
1# Resolve a forward reference by repeating the job.
2import os
3from pathlib import Path
4from io import BytesIO
5from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
6from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice, XpsSaveOptions
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
14options.terminal_out = OutputMemoryTerminal()
15options.interaction = Interaction.NONSTOP_MODE
16save_options = XpsSaveOptions()
17options.repeat = True
18options.save_options = save_options
19device = XpsDevice()
20source = r"\documentclass{article}\begin{document}See Section \ref{sec:target}.\section{Target}\label{sec:target}\end{document}"
21with BytesIO(source.encode("ascii")) as stream:
22 result = TeXJob(stream, device, options).run()Mathematische Formeln in Rasterbilder umwandeln
Wenn die Notwendigkeit besteht, mathematische Formeln in Rasterbilder umzuwandeln, anstatt sie mit Schriftarten darzustellen, kann zu diesem Zweck die folgende Option verwendet werden:
1# Render math formulas as raster images.
2import os
3from pathlib import Path
4from io import BytesIO
5from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
6from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice, XpsSaveOptions
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
14options.terminal_out = OutputMemoryTerminal()
15options.interaction = Interaction.NONSTOP_MODE
16save_options = XpsSaveOptions()
17save_options.rasterize_formulas = True
18options.save_options = save_options
19device = XpsDevice()
20source = r"\documentclass{article}\begin{document}Formula: $x^2+y^2=z^2$\end{document}"
21with BytesIO(source.encode("ascii")) as stream:
22 result = TeXJob(stream, device, options).run()Grafiken in Rasterbilder umwandeln
Die ObjectTeX-Engine bietet die Möglichkeit, Grafikdateien in Rasterformaten wie PNG und JPG sowie den Formaten PS (EPS) und XPS (OXPS) einzubinden. Die beiden letztgenannten Formate enthalten typischerweise Vektorelemente und Text. Wenn wir sie rastern und als Vollbilder einbinden möchten, können wir die folgende Option nutzen:
1# Rasterize an included vector EPS graphic.
2import os
3from pathlib import Path
4from io import BytesIO
5from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
6from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice, XpsSaveOptions
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
14options.terminal_out = OutputMemoryTerminal()
15options.interaction = Interaction.NONSTOP_MODE
16save_options = XpsSaveOptions()
17save_options.rasterize_included_graphics = True
18input_root = Path(os.environ.get("ASPOSE_TEX_INPUT_DIR", "input")).resolve()
19options.input_working_directory = InputFileSystemDirectory(str(input_root / "Typesetting"))
20options.save_options = save_options
21device = XpsDevice()
22source = r"\documentclass{article}\usepackage{graphicx}\begin{document}\includegraphics{triangle.eps}\end{document}"
23with BytesIO(source.encode("ascii")) as stream:
24 result = TeXJob(stream, device, options).run()Das Grafikbeispiel liest Typesetting/triangle.eps unter ASPOSE_TEX_INPUT_DIR (Standard: input). Behalten Sie dieses Unterverzeichnis bei der Vorbereitung der Ressourcen bei.
Unterteilung von Schriftarten
Wenn wir die Größe der Ausgabedatei verringern möchten, können wir die Unterteilung von Schriftarten verwenden. Dies bedeutet, dass die Schriftarten im resultierenden Dokument keine Daten für die Glyphen enthalten, die im Dokument nicht vorhanden sind. Hier ist eine Lösung, um dies zu erreichen:
1# Embed only the used font glyphs.
2import os
3from pathlib import Path
4from io import BytesIO
5from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
6from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice, XpsSaveOptions
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
14options.terminal_out = OutputMemoryTerminal()
15options.interaction = Interaction.NONSTOP_MODE
16save_options = XpsSaveOptions()
17save_options.subset_fonts = True
18options.save_options = save_options
19device = XpsDevice()
20source = r"\documentclass{article}\begin{document}Hello, World!\end{document}"
21with BytesIO(source.encode("ascii")) as stream:
22 result = TeXJob(stream, device, options).run()