Andere TeX-Konvertierungsausgabeformate | Python
Es ist unwahrscheinlich, dass Sie derzeit eine TeX-Datei konvertieren müssen, die in einem anderen Format als LaTeX geschrieben ist. Wenn Sie jedoch aus irgendeinem Grund die TeX-Sprache oder die Interna von TeX studieren, ist dies immer noch möglich. In jedem Fall können Sie mit Aspose.TeX für Python Dateien konvertieren, die im Plain TeX-Format geschrieben wurden, und außerdem benutzerdefinierte Formate erstellen und Dokumente setzen, die in diesen Formaten entworfen wurden.
Zunächst erstellen wir ein benutzerdefiniertes Format.
Erstellen eines benutzerdefinierten Formats
Eine Formatdatei ist eine binäre Darstellung des internen Zustands der TeX-Engine. Wenden Sie zuerst eine
Lizenz an. Legen Sie customtex.tex im Unterverzeichnis CustomTeXFormat von ASPOSE_TEX_INPUT_DIR ab (Standard: input). ASPOSE_TEX_OUTPUT_DIR bestimmt den Ausgabeordner (Standard: output), in dem das erste Beispiel customtex.fmt erstellt.
1# Create a reusable custom TeX format.
2import os
3from pathlib import Path
4from os import path
5from io import BytesIO
6from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
7from aspose.tex.io import InputFileSystemDirectory, InputZipDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
8from aspose.tex.resourceproviders import FormatProvider
9from aspose.tex.presentation.xps import XpsDevice
10
11output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
12output_dir.mkdir(parents=True, exist_ok=True)
13input_dir = Path(os.environ.get("ASPOSE_TEX_INPUT_DIR", "input")).resolve() / "CustomTeXFormat"
14# Create TeX engine options for no format upon ObjectTeX engine extension.
15options = TeXOptions.console_app_options(TeXConfig.object_ini_tex)
16options.interaction = Interaction.NONSTOP_MODE
17options.terminal_out = OutputMemoryTerminal()
18# Specify a file system working directory for the input.
19options.input_working_directory = InputFileSystemDirectory(str(input_dir))
20# Specify a file system working directory for the output.
21options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
22
23# Run format creation.
24TeXJob.create_format("customtex", options)
25
26# For further output to look fine.
27options.terminal_out.writer.write_line()Wie Sie sehen, ähnelt der Code dem Code zum Konvertieren einer TeX-Datei. Es gibt jedoch einige Unterschiede.
In diesem Fall verwenden wir zunächst die Jobkonfiguration TeXConfig.object_ini_tex. Diese Konfiguration stellt sicher, dass der Zustand der Engine „jungfräulich“ ist, was bedeutet, dass die internen Parameter ihre Standardwerte haben und der Satz von Steuersequenzen mit dem Satz von Grundelementen übereinstimmt. In unserem Beispiel wird der Satz von Grundelementen erweitert im Aspose.TeX- und Object TeX-Artikel.
Anschließend richten wir wie gewohnt die Eingabe- und Ausgabearbeitsverzeichnisse ein. Das Eingabearbeitsverzeichnis sollte die Quelldatei des Hauptformats und alle ihre Abhängigkeiten enthalten.
Und der zweite große Unterschied ist die Methode, mit der wir den Job ausführen. In diesem Fall verwenden wir die statische Methode create_format(), die in Verbindung mit den Optionen erfordert, dass der Name der Hauptquelldatei mit dem Formatnamen identisch ist.
Textsatz einer TeX-Datei in Ihrem benutzerdefinierten Format
Das folgende Beispiel erstellt zunächst customtex.fmt, damit es unabhängig ausgeführt werden kann. Anschließend lädt es das Format und setzt Text aus einem binären Stream in typeset-with-custom-format.xps.
1# Typeset text using a custom TeX format.
2import os
3from pathlib import Path
4from os import path
5from io import BytesIO
6from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
7from aspose.tex.io import InputFileSystemDirectory, InputZipDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
8from aspose.tex.resourceproviders import FormatProvider
9from aspose.tex.presentation.xps import XpsDevice
10
11output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
12output_dir.mkdir(parents=True, exist_ok=True)
13input_dir = Path(os.environ.get("ASPOSE_TEX_INPUT_DIR", "input")).resolve() / "CustomTeXFormat"
14
15format_options = TeXOptions.console_app_options(TeXConfig.object_ini_tex)
16format_options.input_working_directory = InputFileSystemDirectory(str(input_dir))
17format_options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
18format_options.interaction = Interaction.NONSTOP_MODE
19format_options.terminal_out = OutputMemoryTerminal()
20TeXJob.create_format("customtex", format_options)
21# Create the format provider using the file system input working directory.
22# We use the project output directory as our custom format file is supposed to be located there.
23with FormatProvider(InputFileSystemDirectory(str(output_dir)), "customtex") as format_provider:
24 # Create conversion options for a custom format upon ObjectTeX engine extension.
25 options = TeXOptions.console_app_options(TeXConfig.object_tex(format_provider))
26 options.interaction = Interaction.NONSTOP_MODE
27 options.terminal_out = OutputMemoryTerminal()
28 options.job_name = "typeset-with-custom-format"
29 # Specify the input working directory. This is not required here as we are providing the main input as a stream.
30 # But it is required when the main input has dependencies (e.g. images).
31 options.input_working_directory = InputFileSystemDirectory(str(input_dir))
32 # Specify a file system working directory for the output.
33 options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
34
35 # Run the job.
36 TeXJob(BytesIO("Congratulations! You have successfully typeset this text with your own TeX format!\\end".encode('ascii')),
37 XpsDevice(), options).run()
38
39 # For further output to look fine.
40 options.terminal_out.writer.write_line()Um das Format anzugeben, müssen wir eine Instanz der Klasse FormatProvider erstellen. Im Optionskonstruktor verwenden wir die Konfiguration TeXConfig.object_tex(), die unseren Formatanbieter als Argument benötigt und das Format über den „jungfräulichen“ Zustand der Engine lädt.
Der verbleibende Code sollte Ihnen bekannt sein, da er die Funktionen nutzt, die zuvor in diesem Leitfaden besprochen wurden.
Textsatz einer TeX-Datei im Plain-TeX-Format
Wenn wir den Formatanbieter aus dem oben gezeigten Code entfernen, lädt die Engine das Standardformat, das im vierten Sinne Object TeX ist. Wenn Sie also eine TeX-Datei im Plain-TeX-Format geschrieben haben, können Sie sie mit diesem Ansatz in jedes unterstützte Zielformat konvertieren.