Інші вихідні формати перетворення TeX | Java
Дуже малоймовірно, що зараз ви захочете конвертувати файл TeX, написаний у будь-якому іншому форматі, крім LaTeX. Але це можливо, якщо ви з якоїсь причини вивчаєте мову TeX та/або внутрішні засоби. У будь-якому разі Aspose.TeX для Java дозволяє конвертувати файли, написані у форматі Plain TeX. Це також дозволяє створювати власні формати та набирати документи, оформлені в цих форматах.
Ми почнемо зі створення спеціального формату.
Створення власного формату
Давайте пам’ятаємо, що файл формату є двійковим дампом внутрішнього стану механізму TeX.
1// Create TeX engine options for no format upon ObjectTeX engine extension.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectIniTeX());
3// Specify a file system working directory for the input.
4options.setInputWorkingDirectory(new InputFileSystemDirectory(Utils.getInputDirectory()));
5// Specify a file system working directory for the output.
6options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
7
8// Run format creation.
9TeXJob.createFormat("customtex", options);
10
11// For further output to look fine.
12options.getTerminalOut().getWriter().newLine();
Як бачите, код схожий на код для перетворення файлу TeX. Але є кілька відмінностей.
По-перше, тут ми використовуємо конфігурацію завдання TeXConfig.objectIniTeX(). Це спеціальна конфігурація, яка залишає стан двигуна «незайманим», тобто внутрішні параметри мають значення за замовчуванням, а набір керуючих послідовностей збігається з набором примітивів. У нашому прикладі набір примітивів розширено в сенсі, згаданому тут.
Далі ми налаштовуємо вхідні та вихідні робочі каталоги, як зазвичай. Вхідний робочий каталог має містити вихідний файл основного формату та всі його залежності.
І друга ключова відмінність полягає в тому, як ми виконуємо роботу. Цього разу ми використовуємо статичний метод createFormat(), який разом із параметрами отримує ім’я основного вихідного файлу, яке має збігатися з назвою формату.
Набір файлу 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.
3final FormatProvider formatProvider = new FormatProvider(
4 new InputFileSystemDirectory(Utils.getOutputDirectory()), "customtex");
5try {
6 // Create conversion options for a custom format upon ObjectTeX engine extension.
7 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX(formatProvider));
8 options.setJobName("typeset-with-custom-format");
9 // Specify the input working directory. This is not required here as we are providing the main input as a stream.
10 // But it is required when the main input has dependencies (e.g. images).
11 options.setInputWorkingDirectory(new InputFileSystemDirectory(Utils.getInputDirectory()));
12 // Specify a file system working directory for the output.
13 options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
14
15 // Run the job.
16 new TeXJob(new ByteArrayInputStream(
17 "Congratulations! You have successfully typeset this text with your own TeX format!\\end".getBytes("ASCII")),
18 new XpsDevice(), options).run();
19
20 // For further output to look fine.
21 options.getTerminalOut().getWriter().newLine();
22} finally {
23 formatProvider.close();
24}
Вочевидь ми повинні якось визначити формат. Перш за все, нам потрібно створити екземпляр класу FormatProvider. Потім у конструкторі параметрів ми використовуємо конфігурацію TeXConfig.objectTeX(), яка приймає наш провайдер формату як аргумент і завантажує формат поверх «незайманого» стану двигуна.
Решта коду повинна бути вам знайома. Він використовує функції, розглянуті раніше в цьому посібнику.
Набір файлу TeX у форматі Plain TeX
Якщо ми викинемо постачальника формату з щойно продемонстрованого коду, механізм завантажить формат за замовчуванням, яким є Object TeX у його четвертому значенні. Таким чином, якщо у вас є файл TeX, написаний у форматі Plain TeX, таким чином ви можете перетворити його в будь-який підтримуваний цільовий формат.