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パッケージ(graphicx、amsmath、amsfonts、color、geometry など)の組み込み実装が含まれています。標準以外のパッケージやサードパーティ製パッケージについては、対応する .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() を介してロードすることで、ドキュメントごとの実行オーバーヘッドを大幅に削減できます。