Работа с пользовательскими форматами TeX в Java
Расширьте возможности компиляции документов, создавая, загружая и выполняя пользовательские файлы формата TeX (.fmt) с помощью Aspose.TeX for Java. Помимо стандартных предварительно настроенных конфигураций (таких как Plain TeX или ObjectLaTeX), Aspose.TeX позволяет разработчикам создавать пользовательские дампы формата с предварительно загруженными пакетами макросов, что значительно ускоряет повторяющиеся задачи верстки и обеспечивает поддержку специализированных диалектов TeX.
В экосистеме TeX файл формата (.fmt) представляет собой бинарный дамп состояния памяти TeX после загрузки определенного набора пакетов макросов и определений команд (таких как LaTeX или AMS-TeX). Использование файлов формата позволяет движку TeX пропускать разбор больших библиотек макросов при каждом запуске, значительно ускоряя компиляцию документов.
Aspose.TeX for Java поддерживает как встроенные форматы, так и пользовательские форматы, определяемые пользователем и создаваемые программным способом. Поддерживаемые типы выходных каталогов:
- Движок ObjectLaTeX представляет собой стандартный формат LaTeX, основанный на расширении движка ObjectTeX и используемый для общей компиляции документов LaTeX (статей, отчетов и книг).
- Движок ObjectTeX представляет собой формат TeX, расширенный функциями
ObjectTeX, и используется для легкой верстки TeX без макросов. - Движок Custom Format (.fmt) представляет собой бинарный формат, созданный разработчиком, который содержит предварительно скомпилированные макросы/пакеты и используется для высокопроизводительной пакетной компиляции с предварительно загруженными наборами пользовательских макросов.
Создание пользовательского файла формата TeX (.fmt)
Создайте дамп пользовательского формата из файла инициализации .tex (содержащего определения макросов, такие как \font, \catcode или \dump) с помощью TeXFormatEngine.
import com.aspose.tex.*;
import java.io.IOException;
public class CreateCustomTeXFormat {
public static void main(String[] args) throws IOException {
// Set up options for creating a custom format using ObjectTeX
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectEngineOptions());
// Define input and output working directories
options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/CustomMacros/"));
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Formats/"));
// Run the format generation job on the custom macro source file (e.g., 'myformat.tex')
// The source file must end with the \dump command
TeXJob job = new TeXJob("myformat", new PdfDevice(), options);
job.run();
System.out.println("Custom TeX format created successfully.");
}
}Компиляция документов с пользовательским форматом TeX
Загрузите и выполните существующий или недавно созданный файл .fmt для обработки входных документов TeX.
import com.aspose.tex.*;
import java.io.IOException;
public class RunWithCustomTeXFormat {
public static void main(String[] args) throws IOException {
// Define working directory where the custom format file resides
IInputWorkingDirectory formatDir = new InputFileSystemDirectory("C:/TeXProject/Formats/");
// Initialize options using the custom format name ('myformat') and location
TeXOptions options = TeXOptions.consoleAppOptions(
TeXConfig.customFormat("myformat", formatDir)
);
// Set input/output directories for the target TeX document
options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Compile the document using the pre-loaded custom format
TeXJob job = new TeXJob("document", new PdfDevice(), options);
job.run();
System.out.println("Document compiled using custom TeX format successfully.");
}
}Использование встроенных движков и форматов
Для стандартной обработки документов используйте встроенные конфигурации, предоставляемые TeXConfig.
import com.aspose.tex.*;
public class BuiltInTeXFormats {
public static void main(String[] args) throws Exception {
// Option A: Standard ObjectLaTeX (LaTeX document class support)
TeXOptions latexOptions = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Option B: Plain ObjectTeX (Plain TeX primitives)
TeXOptions plainTexOptions = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
System.out.println("Built-in TeX format options initialized.");
}
}Установка и настройка
Интегрируйте Aspose.TeX for Java в свой проект с помощью Maven:
Package Manager Console Command
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-tex</artifactId>
<version>Latest</version>
</dependency>
FAQ
1. В чём преимущество использования пользовательского файла формата (.fmt)?
Создание пользовательского формата предварительно загружает пакеты макросов в двоичном формате. Это устраняет накладные расходы на разбор при каждом запуске и значительно ускоряет конвейеры рендеринга большого количества документов.
2. Какая команда должна быть включена в исходный файл для создания файла .fmt?
Исходный файл TeX должен завершаться нативной командой TeX \dump, которая сообщает механизму о необходимости создать снимок двоичного формата.
3. Можно ли загружать файлы формата, хранящиеся внутри ZIP-архива?
Да. Передайте экземпляр InputZipDirectory в качестве параметра каталога поставщика формата в TeXConfig.customFormat().