Eingabeschnittstelle von Aspose.TeX | Python

Formale Definitionen der I/O-Implementierung in Aspose.TeX für Python finden Sie in der API-Referenz.

Die Idee hinter dem Eingabeverzeichnis

Da die I/O-Primitive der TeX-Sprache nur Dateinamen verarbeiten können, definiert Aspose.TeX für Python ein Verzeichnis als Zuordnung zwischen Namen und Datensammlungen. Diese Datensammlungen können Dateien, Streams, Arrays oder jeder andere Typ sein. Die API ermöglicht die separate Angabe von Eingabe- und Ausgabearbeitsverzeichnissen. Es stellt die allgemeine Klasse InputWorkingDirectory bereit, die Benutzer für ihre spezifischen Anforderungen implementieren können. Darüber hinaus bietet die API integrierte Implementierungen, die später erläutert werden. Die Schnittstelle enthält die Methode get_file(), die den Datenstrom abruft und den vollständigen Dateinamen basierend auf einem vorgegebenen Namen ermittelt, der als Zuordnungsschlüssel dient.

Dateieingaben aus dem Festplattendateisystem abrufen

Hier ist der Ansatz, den wir wählen würden:

1# Create conversion options instance.
2...
3# Specify a file system working directory for the input.
4options.input_working_directory = InputFileSystemDirectory(Utils.input_directory)

Dieser spezielle Anwendungsfall ist ziemlich einfach, sodass wir jetzt damit fortfahren können.

Dateieingaben aus einem ZIP-Archiv abrufen

Eine andere Möglichkeit besteht darin, die Eingabedateien in einem ZIP-Archiv zu speichern und es als Eingabeverzeichnis zu behandeln. In einem solchen Szenario sollten die folgenden Schritte befolgt werden:

1# Open the stream for the ZIP archive that will serve as the input working directory.
2with open(path.join(Utils.input_directory, "zip-in.zip")) as in_zip_stream:
3    # Create conversion options instance.
4    ...
5    # Specify a ZIP archive working directory for the input. You can also specify a path inside the archive.
6    options.input_working_directory = InputZipDirectory(in_zip_stream, "in")

Zunächst erstellen wir den Stream, der die ZIP-Datei enthält. Anschließend weisen wir nach dem Erstellen der Konvertierungsoptionen eine Instanz der Klasse InputZipDirectory der Eigenschaft input_working_directory zu. Der zweite Parameter des Konstruktors stellt den Basispfad innerhalb des Archivs dar. Wenn wir möchten, dass das gesamte Archiv als Eingabeverzeichnis fungiert, sollten wir als Argument eine leere Zeichenfolge angeben.

Die Idee hinter dem Eingabeterminal

Betrachten wir nun das Konzept der Terminaleingabe. Aspose.TeX für Python definiert speziell für diesen Zweck die allgemeine Schnittstelle IInputTerminal, die eine einzelne Eigenschaft enthält, die eine Instanz der Implementierung von TerminalReader zurückgibt. Die verfügbaren Implementierungen werden später besprochen.

Terminaleingabe von der Konsole abrufen

Um dies zu erreichen, müssen wir der Option terminal_in eine Instanz der Klasse InputConsoleTerminal zuweisen.

1# Create conversion options instance.
2...
3# Specify the console as the input terminal.
4options.terminal_in = InputConsoleTerminal()  # Default. Arbitrary assignment.

Ehrlich gesagt ist dies jedoch der Standardwert für die Option, sodass keine wirkliche Notwendigkeit besteht, ihn explizit anzugeben. Da es keine anderen Implementierungen gibt, dient dieser Abschnitt nur zu Demonstrationszwecken.

Wenn wir eine interaktive TeX-Datei (oder ein interaktives Skript) mit vorhersehbarem Verhalten haben, könnte es theoretisch wünschenswert sein, eine Version des Eingabeterminals zu implementieren, die ein entsprechendes Skript enthält, um auf die Anfragen der TeX-Engine zu reagieren. Probieren Sie es einfach aus, wenn Sie die Gelegenheit dazu haben!

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.