Интерфейс ввода Aspose.TeX | .NET

Пожалуйста, обратитесь к Aspose.TeX for .NET ссылка на API для формальных определений реализации ввода-вывода.

Концепция входного каталога

Поскольку примитивы ввода-вывода языка TeX могут работать только с именами файлов, Aspose.TeX для .NET определяет каталог как сопоставление между именами и объемами данных. Предполагается, что основная часть данных представляет собой файлы, потоки, массивы или что-то еще. API позволяет нам отдельно указывать входные и выходные рабочие каталоги. Он предоставляет общий интерфейс IInputWorkingDirectory, который пользователь может реализовать в своих целях. Он также предоставляет свои собственные реализации, которые будут обсуждаться ниже. В интерфейсе определен метод GetFile(), который возвращает поток данных и определяет полное имя файла, при этом в качестве первого аргумента принимает какое-то, гипотетически другое, имя, которое, по сути, и является ключом сопоставления. .

Получение входных файлов из файловой системы диска

Вот как мы это сделаем:

1// Getting file input from the disk file system
2
3// Create conversion options instance.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectTeX());
5// ...
6// Specify a file system working directory for the input.
7options.InputWorkingDirectory = new InputFileSystemDirectory(DataDir);

Этот вариант использования довольно прост, поэтому больше нет необходимости на нем зацикливаться.

Получение ввода файла из ZIP-архива

Мы также можем поместить входные файлы в ZIP-архив и считать его входным каталогом. В этом случае нам следует поступить следующим образом:

 1// Getting file input from a ZIP archive
 2
 3// Open the stream for the ZIP archive that will serve as the input working directory.
 4using (Stream inZipStream = File.Open(Path.Combine(DataDir, "zip-in.zip"), FileMode.Open))
 5{
 6    // Create conversion options instance.
 7    TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectTeX());
 8    // ...
 9    // Specify a ZIP archive working directory for the input. You can also specify a path inside the archive.
10    options.InputWorkingDirectory = new InputZipDirectory(inZipStream, "in");

Сначала мы создаем поток, содержащий ZIP-файл. Затем, после создания параметров преобразования, мы устанавливаем параметр InputWorkingDirectory как экземпляр класса InputZipDirectory. Второй аргумент конструктора — базовый путь внутри архива. Если мы хотим, чтобы весь архив был входным каталогом, нам следует передать пустую строку.

Концепция входного терминала

Теперь пора вспомнить, что есть еще и терминальный вход. Что касается этого, Aspose.TeX для .NET определяет общий интерфейс IInputTerminal, имеющий только одно свойство, которое возвращает экземпляр реализации TextReader. Предоставленные реализации обсуждаются ниже.

Получение терминального ввода с консоли

Для этого нам нужно установить опцию TerminalIn как экземпляр класса InputConsoleTerminal.

1// Getting terminal input from the console
2
3// Create conversion options instance.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectTeX());
5// ...
6// Specify the console as the input terminal.
7options.TerminalIn = new InputConsoleTerminal(); // Default. Arbitrary assignment.

Но, по правде говоря, это значение параметра по умолчанию, поэтому указывать его нет особой необходимости. В связи с этим и до тех пор, пока нет других реализаций, данный раздел служит только демонстрационным целям.

Теоретически, если у нас есть интерактивный файл (или скрипт) TeX с предсказуемым поведением, мы можем захотеть реализовать версию входного терминала, которая будет содержать дополнительный скрипт для ответа на запросы движка TeX. Попробуйте свои силы, когда у вас есть время!

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.