Інші вихідні формати перетворення TeX | Python
Малоймовірно, що зараз вам знадобиться конвертувати файл TeX, написаний у форматі, відмінному від LaTeX. Однак, якщо ви з будь-якої причини вивчаєте мову TeX або внутрішню частину TeX, це все ще можливо. У будь-якому випадку Aspose.TeX для Python дозволяє конвертувати файли, написані у форматі Plain TeX, а також дозволяє створювати власні формати та набирати документи, розроблені в цих форматах.
Для початку ми створимо власний формат.
Створення власного формату
Давайте пам’ятати, що файл формату є двійковим представленням внутрішнього стану механізму TeX.
1# Create TeX engine options for no format upon ObjectTeX engine extension.
2options = TeXOptions.console_app_options(TeXConfig.object_ini_tex)
3# Specify a file system working directory for the input.
4options.input_working_directory = InputFileSystemDirectory(Util.input_directory)
5# Specify a file system working directory for the output.
6options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
7
8# Run format creation.
9TeXJob.create_format("customtex", options)
10
11# For further output to look fine.
12options.terminal_out.writer.write_line()
Як бачите, код схожий на код для перетворення файлу TeX. Однак є кілька відмінностей.
По-перше, у цьому випадку ми використовуємо конфігурацію завдання TeXConfig.object_ini_tex. Ця конфігурація гарантує, що стан двигуна є «незайманим», тобто внутрішні параметри мають значення за замовчуванням, а набір керуючих послідовностей узгоджується з набором примітивів. У нашому прикладі набір примітивів розширено у статті Aspose.TeX і Object TeX.
Після цього ми продовжуємо налаштування вхідних і вихідних робочих каталогів, як зазвичай. Вхідний робочий каталог має містити вихідний файл основного формату та всі його залежності.
І друга головна відмінність полягає в методі, за допомогою якого ми виконуємо роботу. У цьому випадку ми використовуємо статичний метод create_format(), який у поєднанні з параметрами вимагає, щоб ім’я основного вихідного файлу збігалося з ім’ям формату.
Набір файлу TeX у вашому спеціальному форматі
Тепер, коли ми створили власний формат TeX, ми можемо приступити до набору файлу TeX, написаного в цьому форматі. Ось код:
1# Create the format provider using the file system input working directory.
2# We use the project output directory as our custom format file is supposed to be located there.
3with FormatProvider(InputFileSystemDirectory(Util.output_directory), "customtex") as format_provider:
4 # Create conversion options for a custom format upon ObjectTeX engine extension.
5 options = TeXOptions.console_app_options(TeXConfig.object_tex(format_provider))
6 options.job_name = "typeset-with-custom-format"
7 # Specify the input working directory. This is not required here as we are providing the main input as a stream.
8 # But it is required when the main input has dependencies (e.g. images).
9 options.input_working_directory = InputFileSystemDirectory(Util.input_directory)
10 # Specify a file system working directory for the output.
11 options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
12
13 # Run the job.
14 TeXJob(BytesIO("Congratulations! You have successfully typeset this text with your own TeX format!\\end".encode('ascii')),
15 XpsDevice(), options).run()
16
17 # For further output to look fine.
18 options.terminal_out.writer.write_line()
Щоб указати формат, нам потрібно створити екземпляр класу FormatProvider. У конструкторі параметрів ми використовуємо конфігурацію TeXConfig.object_tex(), яка вимагає нашого провайдера формату як аргумент і завантажує формат поверх «незайманого» стану механізму.
Код, що залишився, повинен бути вам знайомий, оскільки він використовує функції, які обговорювалися раніше в цьому посібнику.
Набір файлу TeX у форматі Plain TeX
Якщо ми видалимо постачальника формату з наведеного вище коду, механізм завантажить формат за замовчуванням, яким є Object TeX у його четвертому сенсі. Таким чином, якщо у вас є файл TeX, написаний у форматі Plain TeX, ви можете перетворити його в будь-який підтримуваний цільовий формат за допомогою цього підходу.