Javaで外部LaTeXパッケージとクラスを読み込む

Aspose.TeX for Javaを使用して外部マクロパッケージ(.sty)やカスタムドキュメントクラス(.cls)を組み込むことで、LaTeXドキュメントのコンパイル機能を拡張できます。完全なTeX LiveまたはMiKTeXのインストールを必要とせず、ローカルファイルシステムのディレクトリ、圧縮ZIPアーカイブ、またはカスタムメモリーストリームからパッケージの依存関係を動的に解決できます。

 

\usepackage{custompackage}\documentclass{customclass} などのコマンドを含むLaTeXドキュメントをコンパイルすると、エンジンは構成されたIInputWorkingDirectoryインスタンスを使用して、対応する .sty または .cls ファイルを検索します。

以下は、パッケージ解決の次のソースです。

  • ローカルフォルダーに保存された企業標準のテンプレートファイル(.sty/.cls)を読み込むには、ローカルディレクトリ をパッケージプロバイダーとして使用し、InputFileSystemDirectory クラスを使用します。
  • 必要なすべてのパッケージ依存関係とメインのTeXファイルを含む単一ファイル配布の場合は、ZIPアーカイブ をパッケージプロバイダーとして使用し、InputZipDirectory クラスを使用します。
  • .fmt ファイルに組み込まれた、事前に読み込まれた頻繁に使用するパッケージセットによる高性能な実行には、事前コンパイル済みフォーマット をパッケージプロバイダーとして使用し、TeXConfig.customFormat() を使用します。

ローカルフォルダーから外部パッケージを読み込む

カスタムスタイルファイル(.sty)またはクラス定義(.cls)を含むローカルディレクトリを、パッケージ検索用の入力作業ディレクトリとして指定します。

import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;

public class LoadExternalPackagesFromFileSystem {
    public static void main(String[] args) throws Exception {
        // Step 1: LaTeX source referencing a custom package 'companylayout.sty'
        String latexCode = "\\documentclass{article}\n" +
                           "\\usepackage{companylayout}\n" + // Custom external package
                           "\\begin{document}\n" +
                           "\\customHeader{Monthly Financial Report}\n" +
                           "Document compiled using external style package.\n" +
                           "\\end{document}";

        ByteArrayInputStream inputStream = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));

        // Step 2: Initialize LaTeX conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Step 3: Set input working directory pointing to folder where 'companylayout.sty' resides
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/CustomPackages/"));

        // Step 4: Set output working directory for compiled PDF
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Step 5: Run compilation job
        TeXJob job = new TeXJob(inputStream, new PdfDevice(), options);
        job.run();

        System.out.println("LaTeX document compiled successfully using external .sty package.");
    }
}

圧縮ZIPアーカイブからパッケージとクラスを読み込む

.tex ソースファイル、カスタム .sty パッケージ、画像を .zip アーカイブにまとめ、圧縮アーカイブから直接パッケージの依存関係を解決するようAspose.TeXに指示します。

import com.aspose.tex.*;
import java.io.FileInputStream;

public class LoadExternalPackagesFromZip {
    public static void main(String[] args) throws Exception {
        // Step 1: Initialize options for LaTeX format
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Step 2: Open ZIP archive containing 'main.tex' and dependent '.sty'/'.cls' files
        FileInputStream zipStream = new FileInputStream("C:/TeXProject/TemplateBundle.zip");
        options.setInputWorkingDirectory(new InputZipDirectory(zipStream, "packages_subfolder"));

        // Step 3: Configure output working directory
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Step 4: Execute compilation job
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        zipStream.close();
        System.out.println("LaTeX document and external packages loaded from ZIP archive successfully.");
    }
}

不足している、または標準のTeXパッケージを処理する

Aspose.TeX for Javaには、一般的な主要LaTeXパッケージ(graphicxamsmathamsfontscolorgeometry など)の組み込み実装が含まれています。標準以外のパッケージやサードパーティ製パッケージについては、対応する .sty ファイルがアクティブな IInputWorkingDirectory 内に配置されていることを確認してください。

import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;

public class StandardLaTeXPackagesDemo {
    public static void main(String[] args) throws Exception {
        // Standard packages like amsmath and graphicx are processed natively
        String latexCode = "\\documentclass{article}\n" +
                           "\\usepackage{amsmath}\n" +
                           "\\usepackage{graphicx}\n" +
                           "\\begin{document}\n" +
                           "\\equation: e^{i\\pi} + 1 = 0\n" +
                           "\\end{document}";

        ByteArrayInputStream inputStream = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));

        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        TeXJob job = new TeXJob(inputStream, new PdfDevice(), options);
        job.run();

        System.out.println("Document with standard LaTeX packages rendered successfully.");
    }
}

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

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. Aspose.TeX は外部の .sty および .cls ファイルをどのように検索しますか?

LaTeX エンジンが \usepackage{name} または \documentclass{name} に遭遇すると、TeXOptions.setInputWorkingDirectory() に指定されたディレクトリで name.sty または name.cls を検索します。

2. TikZ や PSTricks のような複雑なマクロパッケージを使用できますか?

Aspose.TeX は、幅広いマクロ評価機能をサポートしています。ネイティブの ObjectTeX 拡張またはサポートされている描画プリミティブに依存するパッケージは直接評価されます。スタンドアロンの図形出力には、PngFigureRenderer または SvgFigureRenderer も使用できます。

3. バッチドキュメント処理を高速化するために、サイズの大きいパッケージを事前ロードできますか?

はい。事前コンパイルされたマクロパッケージを含むカスタム TeX フォーマットファイル(.fmt)を作成し、TeXConfig.customFormat() を介してロードすることで、ドキュメントごとの実行オーバーヘッドを大幅に削減できます。