LaTeXの数式と方程式をJavaでレンダリングする

TeXファイルに数式や数式を埋め込むことができます。 LaTeXは、一連のコマンドを含むソースドキュメントとしてTeXファイルを使用します。これらのコマンドは、テキスト、記号、数式、グラフィックなど、ドキュメントの形式を指定します。 LaTeXを使用せずに、プログラムであらゆる種類の方程式や数式を記述およびレンダリングできます。この記事では、JavaでLaTeXの数式と方程式をレンダリングする方法を学習します。

この記事では、次のトピックについて説明します。

LaTeXの数式と方程式をレンダリングするJavaAPI

LaTeX数式のレンダリングには、Aspose.TeX for JavaAPIを使用します。数学式をPNGとして保存するためのレンダリングオプションを指定するためのPngMathRendererOptionsクラスを提供します。同様に、数学式をSVGとして保存するためのレンダリングオプションを指定するためのSvgMathRendererOptionsクラスも提供します。さらに、数式をレンダリングするために、MathRendererクラスから派生したPngMathRendererクラスとSvgMathRendererクラスを提供します。このクラスのrender()メソッドは、提供された数式をレンダリングします。さらに、APIでは、TeXファイルをPDFXPS、または画像などのさまざまなファイル形式に植字することもできます。

APIのJARをダウンロードするか、MavenベースのJavaアプリケーションに次のpom.xml構成を追加してください。

<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>22.4</version>
    <type>jar</type>
</dependency>

Javaを使用してLaTeX数式をPNGとしてレンダリングする

以下の手順に従って、簡単なインライン数式または数式をレンダリングできます。

  1. まず、PngMathRendererOptionsクラスのインスタンスを作成します。
  2. 次に、150DPIなどの画像解像度を指定します。
  3. 次に、LaTeXドキュメントのプリアンブルを指定します。
  4. オプションで、Scale、TextColor、BackgroundColorなどのさまざまなプロパティを設定します。
  5. その後、数式画像の出力ストリームを作成します。
  6. 最後に、render()メソッドを呼び出して、数式をレンダリングします。数式文字列、ストリーム、レンダリングオプション、および出力画像サイズを引数として取ります。

次のコードサンプルは、Javaを使用してプログラムで数式をPNGとしてレンダリングする方法を示しています。

// このコード例は、数式と方程式をPNGとしてレンダリングする方法を示しています
// PNGレンダリングオプションを作成する
PngMathRendererOptions options = new PngMathRendererOptions();

// 画像の解像度を150dpiで指定します
options.setResolution(150);

// プリアンブルを指定します。
options.setPreamble("\\usepackage{amsmath}\n"
    + "\\usepackage{amsfonts}\n"
    + "\\usepackage{amssymb}\n"
    + "\\usepackage{color}");

// スケーリング係数300%を指定します。
options.setScale(3000);

// 前景色を指定します。
options.setTextColor(Color.BLACK);

// 背景色を指定します。
options.setBackgroundColor(Color.WHITE);

// ログファイルの出力ストリームを指定します。
options.setLogStream(new ByteArrayOutputStream());

// コンソールに端末出力を表示するかどうかを指定します。
options.showTerminal(true);

// 結果の画像の寸法が書き込まれる変数。
com.aspose.tex.Size2D size = new com.aspose.tex.Size2D.Float();

// 数式画像の出力ストリームを作成します。
final OutputStream stream = new FileOutputStream("D:\\Files\\Tex\\simple-formula.png");

// PNGとしてレンダリング
PngMathRenderer mathRenderer = new PngMathRenderer();
mathRenderer.render("This is a sample formula $f(x) = x^2$ example.", stream, options, size);

// 他の結果を表示します。
System.out.println(options.getErrorReport());
System.out.println();
System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
Javaを使用してLaTeX数式をPNGとしてレンダリングします。

Javaを使用してLaTeX数式をPNGとしてレンダリングする

Javaを使用して複雑な方程式をレンダリングする

前述の手順に従うことで、複雑な方程式や数式をレンダリングできます。ただし、以下に示すように、手順5で数式文字列を設定する必要があります。

mathRenderer.render("\\begin{equation*}"
		+ "(1+x)^n = 1 + nx + \\frac{n(n-1)}{2!}x^{\\color{red}2}"
		+ "+ \\frac{n(n-1)(n-2)}{3!}x^{\\color{red}3}"
                + "+ \\frac{n(n-1)(n-2)(n-3)}{4!}x^{\\color{red}4}" 
                + "+ \\cdots"
                + "\\end{equation*}", stream, options, size);
Javaを使用して複雑な方程式をレンダリングする

Javaを使用して複雑な方程式をレンダリングする

Javaを使用して長い方程式を表示する

前述の手順に従うことで、長い方程式を複数の行に表示できます。ただし、以下に示すように、手順5で数式文字列を設定する必要があります。

mathRenderer.render("\\begin{multline*}"
		+ "p(x) = 3x^6 + 14x^5y + 590x^4y^2 + 19x^3y^3\\\\"
		+ "- 12x^2y^4 - 12xy^5 + 2y^6 - a^3b^3"
		+ "\\end{multline*}", stream, options, size); 
Javaを使用して長い方程式を表示します。

Javaを使用して長い方程式を表示します。

Javaを使用していくつかの方程式を整列させる

前述の手順に従って、一度に複数の方程式や数式を整列してレンダリングすることもできます。ただし、以下に示すように、手順5で数式文字列を設定する必要があります。

mathRenderer.render("\\begin{align}"
		+ "f(u) & =\\sum_{j=1}^{n} x_jf(u_j)\\\\"
		+ "& =\\sum_{j=1}^{n} x_j \\sum_{i=1}^{m} a_{ij}v_i\\\\"
		+ "& =\\sum_{j=1}^{n} \\sum_{i=1}^{m} a_{ij}x_jv_i"
		+ "\\end{align}", stream, options, size);
Javaを使用していくつかの方程式を整列させます。

Javaを使用していくつかの方程式を整列させます。

Javaを使用した方程式のグループ化と中心化

前述の手順に従うことで、レンダリング中に複数の方程式をグループ化して中央に配置できます。ただし、以下に示すように、手順5で数式文字列を設定する必要があります。

mathRenderer.render("\\begin{gather*}"
		+ "2x - 5y =  8 \\\\"
		+ "3x^2 + 9y =  3a + c\\\\"
		+ "(a-b) = a^2 + b^2 -2ab"
		+ "\\end{gather*}", stream, options, size);
Javaを使用した方程式のグループ化と中心化。

Javaを使用した方程式のグループ化と中心化。

Javaを使用して括弧と角かっこをレンダリングする

前述の手順に従って、括弧と角かっこをレンダリングすることもできます。ただし、以下に示すように、手順5で数式文字列を設定する必要があります。

mathRenderer.render("\\begin{document}"
	     + "\["
	     + " \\left[  \\frac{ N } { \\left( \\frac{L}{p} \\right)  - (m+n) }  \\right]"
	     + "\]"
	     + "\\end{document}", stream, options, size);
Javaを使用して括弧と角かっこをレンダリングします。

Javaを使用して括弧と角かっこをレンダリングします。

Javaを使用したLaTeXの行列

同様に、前述の手順に従って行列をレンダリングできます。ただし、以下に示すように、手順5で数式文字列を設定する必要があります。

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\left \\{"
	            + "\\begin{tabular}{ccc}"
	            + "  1 & 4 & 7 \\\\"
	            + "  2 & 5 & 8 \\\\"
	            + "  3 & 6 & 9 "
	            + "\\end{tabular}"
	            + "\\right \\}"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Javaを使用したLaTeXの行列。

Javaを使用したLaTeXの行列。

Javaを使用して分数と二項式をレンダリングする

前述の手順に従うことで、分数と二項式もレンダリングできます。ただし、以下に示すように、手順5で数式文字列を設定する必要があります。

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\binom{n}{k} = \\frac{n!}{k!(n-k)!}"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Javaを使用して分数と二項式をレンダリングします。

Javaを使用して分数と二項式をレンダリングします。

Javaを使用したLaTeXの数学演算子

数学演算子の記号は、log、cos、sinなどのさまざまな数学関数を表します。前述の手順に従って、LaTeXで三角関数と対数をレンダリングできます。ただし、以下に示すように、手順5で数式文字列を設定する必要があります。

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\sin(a + b) = \\sin a \\cos b + \\cos b \\sin a"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Javaを使用したLaTeXの数学演算子。

Javaを使用したLaTeXの数学演算子。

Javaを使用してSVGでLaTeX数式をレンダリングする

以下の手順に従って、レンダリングされた数式または数式をSVG画像形式で保存することもできます。

  1. まず、SvgMathRendererOptionsクラスのインスタンスを作成します。
  2. 次に、LaTeXドキュメントのプリアンブルを指定します。
  3. オプションで、Scale、TextColor、BackgroundColorなどのさまざまなプロパティを設定します。
  4. その後、数式画像の出力ストリームを作成します。
  5. 最後に、render()メソッドを呼び出して、数式をレンダリングします。数式文字列、ストリーム、レンダリングオプション、および出力画像サイズを引数として取ります。

次のコードサンプルは、Javaを使用してSVG画像で数式をレンダリングする方法を示しています。

// このコード例は、数式と方程式をSVGとしてレンダリングする方法を示しています
// SVGレンダリングオプションを作成する
SvgMathRendererOptions options = new SvgMathRendererOptions();

// プリアンブルを指定します。
options.setPreamble("\\usepackage{amsmath}\n"
    + "\\usepackage{amsfonts}\n"
    + "\\usepackage{amssymb}\n"
    + "\\usepackage{color}");

// スケーリング係数300%を指定します。
options.setScale(3000);

// 前景色を指定します。
options.setTextColor(Color.BLACK);

// 背景色を指定します。
options.setBackgroundColor(Color.WHITE);

// ログファイルの出力ストリームを指定します。
options.setLogStream(new ByteArrayOutputStream());

// コンソールに端末出力を表示するかどうかを指定します。
options.showTerminal(true);

// 結果の画像の寸法が書き込まれる変数。
com.aspose.tex.Size2D size = new com.aspose.tex.Size2D.Float();

// 数式画像の出力ストリームを作成します。
final OutputStream stream = new FileOutputStream("D:\\Files\\Tex\\simple-math-rendering.svg");

// SVGとしてレンダリング
SvgMathRenderer mathRenderer = new SvgMathRenderer();
mathRenderer.render("\\begin{equation} \\label{eqn}"
    + "	E = {mc^2}"
    + "	\\end{equation}"
    + " The equation states mass equivalence relationship.", stream, options, size);

// 他の結果を表示します。
System.out.println(options.getErrorReport());
System.out.println();
System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
Javaを使用してSVGでLaTeX数式をレンダリングします。

Javaを使用してSVGでLaTeX数式をレンダリングします。

無料ライセンスを取得する

無料の一時ライセンスを取得して、評価の制限なしにライブラリを試すことができます。

結論

この記事では、次の方法を学びました。

  • Javaで単純および複雑な数式と方程式をレンダリングします。
  • プログラムで方程式を整列およびグループ化します。
  • 行列、括弧、角かっこ、分数、二項式をレンダリングします。
  • レンダリングされた数式画像をJavaを使用してPNGまたはSVGで保存します。

さらに、ドキュメントを使用して、Aspose.TeX forJavaAPIの詳細を学ぶことができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目