Другие пути предоставления входного файла TeX | .NET

Предоставление основного входного файла движку TeX в виде потока.

До этого момента мы знали только, как передать основной входной файл в движок TeX как имя файла, полностью заданное или в краткой форме, с расширением или без него. Но есть еще один конструктор класса TeXJob, который принимает поток в качестве первого аргумента. Это удобно, если по каким-то причинам основной входной файл у нас имеет форму, отличную от файла файловой системы диска. Вот как это можно реализовать:

 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();

Обратите внимание, что все выходные файлы будут иметь имя texput. Это потому, что движок нигде не может получить другого имени. texput — это имя задания по умолчанию. Здесь и здесь — подробная информация об именах должностей.

Ввод основного входного файла TeX из терминала

Есть еще один конструктор класса TeXJob, который вообще не позволяет нам указывать входные данные. Вы можете задаться вопросом, что же будет обрабатывать такое задание TeX? На этот раз нам понадобится входной терминал. Движок TeX попросит нас ввести имя файла из терминала.

Вот код:

 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();

Как только он запускается, движок зависает, ожидая, пока мы введем имя файла (с путем или без него, с расширением или без него):

Окно терминала

А вот как это будет выглядеть на выходном терминале, который является консолью:

 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.

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.