Andere TeX-Konvertierungsausgabeformate | Java
Es ist höchst unwahrscheinlich, dass Sie derzeit eine TeX-Datei konvertieren möchten, die in einem anderen Format als LaTeX geschrieben ist. Dies ist jedoch aus irgendeinem Grund möglich, wenn Sie die TeX-Sprache und/oder Interna studieren. Wie auch immer, Aspose.TeX für Java ermöglicht Ihnen die Konvertierung von Dateien, die im einfachen TeX-Format geschrieben wurden. Sie können damit auch benutzerdefinierte Formate erstellen und in diesen Formaten gestaltete Dokumente setzen.
Wir beginnen mit der Erstellung eines benutzerdefinierten Formats.
Erstellen eines benutzerdefinierten Formats
Denken Sie daran, dass die Formatdatei ein binärer Speicherauszug des internen Zustands der TeX-Engine ist.
1// Create TeX engine options for no format upon ObjectTeX engine extension.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectIniTeX());
3// Specify a file system working directory for the input.
4options.setInputWorkingDirectory(new InputFileSystemDirectory(Utils.getInputDirectory()));
5// Specify a file system working directory for the output.
6options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
7
8// Run format creation.
9TeXJob.createFormat("customtex", options);
10
11// For further output to look fine.
12options.getTerminalOut().getWriter().newLine();
Wie Sie sehen, ähnelt der Code dem Code zum Konvertieren einer TeX-Datei. Aber es gibt ein paar Unterschiede.
Zunächst verwenden wir hier die Jobkonfiguration TeXConfig.objectIniTeX(). Dies ist eine spezielle Konfiguration, die den Zustand der Engine „unberührt“ belässt, d. h. die internen Parameter haben ihre Standardwerte und der Satz von Steuersequenzen stimmt mit dem Satz von Grundelementen überein. In unserem Beispiel wird die Menge der Grundelemente in dem hier erwähnten Sinne erweitert.
Als nächstes richten wir wie gewohnt die Eingabe- und Ausgabearbeitsverzeichnisse ein. Das Eingabearbeitsverzeichnis muss die Hauptformatquelldatei und alle ihre Abhängigkeiten enthalten.
Und der zweite wesentliche Unterschied ist die Art und Weise, wie wir den Job ausführen. Dieses Mal verwenden wir die statische Methode createFormat(), die zusammen mit den Optionen den Namen der Hauptquelldatei übernimmt, der mit dem Formatnamen identisch sein muss.
Textsatz einer TeX-Datei in Ihrem benutzerdefinierten Format
Da wir nun über unser eigenes TeX-Format verfügen, möchten wir eine in diesem Format geschriebene TeX-Datei setzen. Hier ist der Code:
1// Create the format provider using the file system input working directory.
2// We use the project output directory as our custom format file is supposed to be located there.
3final FormatProvider formatProvider = new FormatProvider(
4 new InputFileSystemDirectory(Utils.getOutputDirectory()), "customtex");
5try {
6 // Create conversion options for a custom format upon ObjectTeX engine extension.
7 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX(formatProvider));
8 options.setJobName("typeset-with-custom-format");
9 // Specify the input working directory. This is not required here as we are providing the main input as a stream.
10 // But it is required when the main input has dependencies (e.g. images).
11 options.setInputWorkingDirectory(new InputFileSystemDirectory(Utils.getInputDirectory()));
12 // Specify a file system working directory for the output.
13 options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
14
15 // Run the job.
16 new TeXJob(new ByteArrayInputStream(
17 "Congratulations! You have successfully typeset this text with your own TeX format!\\end".getBytes("ASCII")),
18 new XpsDevice(), options).run();
19
20 // For further output to look fine.
21 options.getTerminalOut().getWriter().newLine();
22} finally {
23 formatProvider.close();
24}
Natürlich müssen wir das Format irgendwie festlegen. Zunächst müssen wir eine Instanz der Klasse FormatProvider erstellen. Dann verwenden wir im Optionskonstruktor die Konfiguration TeXConfig.objectTeX(), die unseren Formatanbieter als Argument verwendet und das Format über den „jungfräulichen“ Zustand der Engine lädt.
Der Rest des Codes sollte Ihnen bekannt sein. Es nutzt die zuvor in diesem Leitfaden besprochenen Funktionen.
Textsatz einer TeX-Datei im Plain-TeX-Format
Wenn wir den Formatanbieter aus dem gerade gezeigten Code weglassen, lädt die Engine das Standardformat, das im vierten Sinne Object TeX ist. Wenn Sie also eine TeX-Datei im einfachen TeX-Format geschrieben haben, können Sie sie auf diese Weise in jedes unterstützte Zielformat konvertieren.