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