LaTeX 数式レンダリング | Aspose.TeX for Java

LaTeX 数式を PNG にレンダリングする方法

実際、LaTeX 数式 レンダリング機能を示す最も簡単な方法はサンプルから始めることです。こちらがその例です:

outputFile に、既存フォルダー内の java.nio.file.Path を設定してください。例:PNG は Paths.get(outputDirectory, "math-formula.png")、SVG は Paths.get(outputDirectory, "math-formula.svg")。使用する Aspose.TeX のレンダラー、オプション、Size2D のクラスと java.awt.Color, java.io.ByteArrayOutputStream, java.io.OutputStream, java.nio.file.Files, java.nio.file.Path, java.nio.file.Paths をインポートします。呼び出し元のメソッドでは例外を処理するか、スローする例外として宣言してください。評価版の制限を避けるには、 ライセンスガイドに従ってライセンスを適用します。

 1// Render a highlighted LaTeX math formula to PNG.
 2// outputFile is a java.nio.file.Path in an existing output folder.
 3PngMathRendererOptions options = new PngMathRendererOptions();
 4options.setResolution(150);
 5options.setPreamble("\\usepackage{amsmath}\n\\usepackage{amsfonts}\n"
 6        + "\\usepackage{amssymb}\n\\usepackage{color}");
 7options.setScale(3000); // 300%.
 8options.setTextColor(Color.BLACK);
 9options.setBackgroundColor(Color.WHITE);
10options.showTerminal(false);
11
12Size2D size;
13try (ByteArrayOutputStream log = new ByteArrayOutputStream();
14        OutputStream stream = Files.newOutputStream(outputFile)) {
15    options.setLogStream(log);
16    size = new PngMathRenderer().render("\\begin{equation*}\n"
17            + "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2}"
18            + " + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\n"
19            + "\\end{equation*}", stream, options);
20    System.out.println(options.getErrorReport());
21    System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
22}

詳細に入ります。まず、TeX/LaTeX の組版と同様に rendering options インスタンスを作成します。ここでは同時に出力画像の解像度も指定しています。

次に、プリアンブルを指定します。デフォルトのプリアンブルは次のとおりです:

1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}

これは基本的な LaTeX より多少高度な数式サポートを提供します。例えば、独自のハイライトを数式内で使用したい場合は color パッケージを追加できます(コード例に示しています)。

続いて、レンダラに出力を 300% に拡大するよう指示します。

2 つのオプションで前景色と背景色を設定します。独自のハイライトを適用していない数式の部分には、setTextColor() で設定した色が使われます。

この例では setLogStream() を使い、レンダリングのログを ByteArrayOutputStream に書き込みます。ログと画像の出力ストリームはレンダリング後に自動的に閉じられます。

showTerminal() はコンソールへのターミナル出力を制御します。例では false に設定しています。表示するには true に設定してください。

MathRenderer.render() は PngMathRenderer または SvgMathRenderer のインスタンスで呼び出し、数式の寸法をポイント単位の Size2D として返します。

メソッドの第 2 引数には画像の出力ストリームを渡します。この例では try-with-resources ブロックで開き、レンダリング後に閉じます。

最後にレンダラーのインスタンスで render() を呼び出します。第 1 引数は LaTeX 数式、第 2 引数は画像の出力ストリーム、第 3 引数はレンダリングオプションです。

例の最後の行は、数式レンダリングの成果物である式のサイズと簡易エラーレポート(エラーがあった場合)を出力します。

以下がレンダリング結果です。

LaTeX Figure rendering to PNG

これは LaTeX 数式 レンダリングの最も一般的な使用例です。

無料の web app もご確認ください。この機能は Aspose.TeX for .NET API で実装されています。Java バージョンのページは こちら。

LaTeX 数式を SVG にレンダリングする方法

ほぼ同様の手順で、LaTeX 数式を SVG 形式でレンダリングできます。

 1// Render a highlighted LaTeX math formula to SVG.
 2// outputFile is a java.nio.file.Path in an existing output folder.
 3SvgMathRendererOptions options = new SvgMathRendererOptions();
 4options.setPreamble("\\usepackage{amsmath}\n\\usepackage{amsfonts}\n"
 5        + "\\usepackage{amssymb}\n\\usepackage{color}");
 6options.setScale(3000); // 300%.
 7options.setTextColor(Color.BLACK);
 8options.setBackgroundColor(Color.WHITE);
 9options.showTerminal(false);
10
11Size2D size;
12try (ByteArrayOutputStream log = new ByteArrayOutputStream();
13        OutputStream stream = Files.newOutputStream(outputFile)) {
14    options.setLogStream(log);
15    size = new SvgMathRenderer().render("\\begin{equation*}\n"
16            + "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2}"
17            + " + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\n"
18            + "\\end{equation*}", stream, options);
19    System.out.println(options.getErrorReport());
20    System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
21}

主な違いは以下の通りです:

以下が結果です:

LaTeX Math Formula rendering to SVG

無料の web app もご確認ください。この機能は Aspose.TeX for .NET API で実装されています。