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