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

Формальные определения реализации ввода-вывода в Aspose.TeX для Python см. в справочнике API.

Идея входного каталога

Учитывая, что примитивы ввода-вывода языка TeX могут обрабатывать только имена файлов, Aspose.TeX for Python определяет каталог как сопоставление между именами и наборами данных. Этими коллекциями данных могут быть файлы, потоки, массивы или любой другой тип. API позволяет отдельно указывать входные и выходные рабочие каталоги. Он предоставляет общий класс InputWorkingDirectory, который пользователи могут реализовать для своих конкретных нужд. Кроме того, API предоставляет встроенные реализации, которые будут обсуждаться позже. Интерфейс включает метод get_file(), который извлекает поток данных и определяет полное имя файла на основе заданного имени, которое служит ключом сопоставления.

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

Вот какой подход мы бы выбрали:

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

Этот конкретный вариант использования довольно прост, поэтому мы можем двигаться дальше.

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

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

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")

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

Идея входного терминала

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

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

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

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

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

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

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.