Bereitstellung der Haupt-TeX-Eingabedatei | .NET
Bereitstellung der Haupteingabedatei als Stream für die TeX-Engine
Bisher wussten wir nur, wie man die Haupteingabedatei als Dateinamen an die TeX-Engine übergibt, egal ob vollständig angegeben oder in Kurzform, ob mit oder ohne Erweiterung. Aber es gibt noch einen anderen Konstruktor der Klasse „TeXJob“, der einen Stream als erstes Argument akzeptiert. Dies ist praktisch, wenn wir aus irgendeinem Grund die Haupteingabedatei in einer anderen Form als einer Datei im Dateisystem der Festplatte haben. So lässt es sich umsetzen:
1// Stream input with LaTeX document and XPS output
2
3// Create conversion options for Object LaTeX format upon Object TeX engine extension.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
5
6// Specify a file system working directory for the output.
7options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
8
9// Specify the console as the output terminal.
10options.TerminalOut = new OutputConsoleTerminal();
11
12// Define the saving options.
13options.SaveOptions = new XpsSaveOptions();
14
15// Create the XPS device.
16XpsDevice device = new XpsDevice();
17
18// Run the job with LaTeX document from memory stream.
19TeXJob job = new TeXJob(new MemoryStream(Encoding.ASCII.GetBytes(
20 @"\documentclass{article} \begin{document} Hello, World! \end{document}")),
21 device, options);
22job.Run();
23
24// For further output to look fine.
25options.TerminalOut.Writer.WriteLine();Beachten Sie, dass alle Ausgabedateien den Namen texput haben. Das liegt daran, dass die Engine nirgendwo einen anderen Namen bekommen kann. texput ist der Standard-Jobname. Hier und hier finden Sie Details zu Jobnamen.
Eingabe der Haupt-TeX-Eingabedatei über das Terminal
Es gibt noch einen weiteren Konstruktor der Klasse „TeXJob“, mit dem wir die Eingabe überhaupt nicht angeben können. Sie fragen sich vielleicht, was ein solcher TeX-Job verarbeiten wird? Dieses Mal benötigen wir ein Eingabeterminal. Die TeX-Engine fordert uns auf, den Dateinamen vom Terminal einzugeben.
Hier ist der Code:
1// Enter main TeX input file from the terminal (interactive)
2
3// Create conversion options for default ObjectTeX format upon ObjectTeX engine extension.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectTeX());
5
6// Specify a file system working directory for the input.
7options.InputWorkingDirectory = new InputFileSystemDirectory(DataDir);
8
9// Specify a file system working directory for the output.
10options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
11
12// Specify the console as the output terminal.
13options.TerminalOut = new OutputConsoleTerminal();
14
15// Define the saving options.
16options.SaveOptions = new XpsSaveOptions();
17
18// Run the job. The TeX engine will ask to enter the file name from the terminal.
19// Note: This is an interactive example. In production, you would typically
20// provide input via TerminalIn property or use one of the other input methods.
21TeXJob job = new TeXJob(new XpsDevice(), options);
22job.Run();
23
24// For further output to look fine.
25options.TerminalOut.Writer.WriteLine();Sobald es ausgeführt wird, bleibt die Engine hängen und wartet darauf, dass wir den Dateinamen eingeben (mit oder ohne Pfad, mit oder ohne Erweiterung):

Und so würde es auf dem Ausgabeterminal, der Konsole, aussehen:
1This is ObjectTeX, Version 3.1415926-1.0 (Aspose.TeX 21.8)
2entering extended mode
3**<path_to_the_file>/hello-world.ltx
4(<path_to_the_file>/hello-world.ltx
5LaTeX2e <2011/06/27>
6(article.cls
7Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
8(size10.clo))
9No file hello-world.aux.
10[1]
11(<output_directory>\hello-world.aux) )
12Output written on hello-world.xps (1 page).
13Transcript written on hello-world.log.