Java でカスタム TeX フォーマットを使用する

Aspose.TeX for Java を使用してカスタム TeX フォーマットファイル (.fmt) を作成、読み込み、実行することで、ドキュメントのコンパイル機能を拡張できます。標準の事前構成済み設定(Plain TeX や ObjectLaTeX など)に加えて、Aspose.TeX では、マクロパッケージをあらかじめ読み込んだカスタムフォーマットダンプを開発者が作成できます。これにより、繰り返し行う組版処理を大幅に高速化し、特殊な TeX 方言をサポートできます。

 

TeX エコシステムでは、フォーマットファイル (.fmt) は、特定のマクロパッケージとコマンド定義(LaTeX や AMS-TeX など)を読み込んだ後の TeX のメモリ状態をバイナリ形式でダンプしたものです。フォーマットファイルを使用すると、TeX エンジンは実行のたびに大規模なマクロライブラリを解析する必要がなくなり、ドキュメントのコンパイルを大幅に高速化できます。

Aspose.TeX for Java は、組み込みフォーマットと、プログラムによって作成されたユーザー定義のカスタムフォーマットの両方をサポートしています。サポートされている出力ディレクトリの種類:

  • エンジン ObjectLaTeX は、ObjectTeX エンジン拡張をベースとした標準的な LaTeX フォーマットで、一般的な LaTeX ドキュメント(論文、レポート、書籍)のコンパイルに使用されます。
  • エンジン ObjectTeX は、ObjectTeX の機能を拡張した TeX フォーマットで、軽量でマクロを使用しない TeX 組版に使用されます。
  • エンジン Custom Format (.fmt) は、開発者が作成するバイナリフォーマットで、事前コンパイルされたマクロ/パッケージを含み、カスタムマクロセットをあらかじめ読み込んだ高性能なバッチコンパイルに使用されます。

カスタム TeX フォーマットファイル (.fmt) の作成

TeXFormatEngine を使用して、.tex 初期化ファイル(\font\catcode\dump などのマクロ定義を含む)からカスタムフォーマットダンプを生成します。

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.");
    }
}

インストールとセットアップ

Maven を使用して Aspose.TeX for Java をプロジェクトに統合します:

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ファイルは、バイナリ形式のスナップショットを作成するようにエンジンに指示するネイティブの\dump TeXコマンドで終了する必要があります。

3. ZIPアーカイブ内に保存されているフォーマットファイルを読み込むことはできますか?

はい。TeXConfig.customFormat()のフォーマットプロバイダディレクトリパラメータとして、InputZipDirectoryのインスタンスを渡してください。