Работа с пользовательскими форматами 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().