チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Java»Spire.Doc for Java»文書操作»Java:Word ドキュメントに数式を挿入する方法
2023-11-10

Java:Word ドキュメントに数式を挿入する方法

数式は、物理学、工学、コンピュータ科学、経済学の分野で一般的に使用される数式です。専門的な Word ドキュメントを作成する際、複雑な概念を説明したり、問題を解決したり、特定の議論をサポートしたりするために、数式を含める必要がある場合があります。この記事では、Spire.Doc for Java を使用して、Java プログラムで Word ドキュメントに数式を挿入する方法について説明します。

Spire.Doc for Java をインストールします

まず、Spire.Doc for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>11.6.0</version>
    </dependency>
</dependencies>

Java で Word ドキュメントに数式を挿入する

Spire.Doc for Java では、OfficeMath.fromLatexMathCode(String latexMathCode) メソッドと OfficeMath.fromMathMLCode(String mathMLCode) メソッドを使用して、LaTeX コードと MathML コードから数式を生成できます。以下に詳細な手順を示します。

  • LaTeX コードと MathML コードから2つの文字列配列を作成します。
  • Document インスタンスを作成し、Document.addSection() メソッドを使用してそれにセクションを追加します。
  • 文字列配列内の各 LaTeX コードを繰り返し処理します。
  • OfficeMath.fromLatexMathCode() メソッドを使用して、LaTeX コードから数式を作成します。
  • そのセクションに段落を追加し、Paragraph.getItems().add() メソッドを使用して段落に数式を追加します。
  • 文字列配列の各 MathML コードを繰り返し処理します。
  • OfficeMath.fromMathMLCode() メソッドを使用して、MathML コードから数式を作成します。
  • そのセクションに段落を追加し、Paragraph.getItems().add() メソッドを使用して段落に数式を追加します。
  • Document.saveToFile() メソッドを使用して、結果のドキュメントを保存します。
  • Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.omath.*;

public class AddMathEquations {
    public static void main(String[] args){

        //LaTeXコードから文字列配列を作成する
        String[] latexMathCode = {
                "x^{2}+\\sqrt{x^{2}+1}=2",
                "\\cos (2\\theta) = \\cos^2 \\theta - \\sin^2 \\theta",
                "k_{n+1} = n^2 + k_n^2 - k_{n-1}",
                "\\frac {\\frac {1}{x}+ \\frac {1}{y}}{y-z}",
                "\\int_0^ \\infty \\mathrm {e}^{-x} \\, \\mathrm {d}x",
                "\\forall x \\in X, \\quad \\exists y \\leq \\epsilon",
                "\\alpha, \\beta, \\gamma, \\Gamma, \\pi, \\Pi, \\phi, \\varphi, \\mu, \\Phi",
                "A_{m,n} = \\begin{pmatrix} a_{1,1} & a_{1,2} & \\cdots & a_{1,n} \\\\ a_{2,1} & a_{2,2} & \\cdots & a_{2,n} \\\\ \\vdots  & \\vdots  & \\ddots & \\vdots  \\\\ a_{m,1} & a_{m,2} & \\cdots & a_{m,n} \\end{pmatrix}",
        };

        //MathMLコードから文字列配列を作成する
        String[] mathMLCode = {
                "<math xmlns=\"http://www.w3.org/1998/Math/MathML\"><mi>a</mi><mo>≠</mo><mn>0</mn></math>",
                "<math xmlns=\"http://www.w3.org/1998/Math/MathML\"><mi>a</mi><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><mi>b</mi><mi>x</mi><mo>+</mo><mi>c</mi><mo>=</mo><mn>0</mn></math>",
                "<math xmlns=\"http://www.w3.org/1998/Math/MathML\"><mi>x</mi><mo>=</mo><mrow><mfrac><mrow><mo>−</mo><mi>b</mi><mo>±</mo><msqrt><msup><mi>b</mi><mn>2</mn></msup><mo>−</mo><mn>4</mn><mi>a</mi><mi>c</mi></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></mrow></math>",
        };

        //ドキュメントのインスタンスを作成する
        Document doc = new Document();

        //セクションを追加する
        Section section = doc.addSection();

        //セクションに段落を追加する
        Paragraph textPara = section.addParagraph();
        textPara.appendText("LaTeXコードから方程式を作成する");
        textPara.applyStyle(BuiltinStyle.Heading_1);
        textPara.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);

        //文字列配列内の各LaTeXコードに対して繰り返す
        for (int i = 0; i < latexMathCode.length; i++)
        {
            //LaTeXコードから数式を作成する
            OfficeMath officeMath = new OfficeMath(doc);
            officeMath.fromLatexMathCode(latexMathCode[i]);

            //数式をセクションに追加する
            Paragraph paragraph = section.addParagraph();
            paragraph.getItems().add(officeMath);
            section.addParagraph();
        }

        //セクションに段落を追加する
        textPara = section.addParagraph();
        textPara.appendText("MathMLコードから方程式を作成する");
        textPara.applyStyle(BuiltinStyle.Heading_1);
        textPara.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);

        //文字列配列内の各MathMLコードに対して繰り返す
        for (int j = 0; j < mathMLCode.length; j++)
        {
            //MathMLコードから数式を作成する
            OfficeMath officeMath = new OfficeMath(doc);
            officeMath.fromMathMLCode(mathMLCode[j]);

            //数式をセクションに追加する
            Paragraph paragraph = section.addParagraph();
            paragraph.getItems().add(officeMath);
            section.addParagraph();
        }

        //結果のドキュメントを保存する
        doc.saveToFile("数式の追加.docx", FileFormat.Docx_2016);
        doc.dispose();
    }
}

Java:Word ドキュメントに数式を挿入する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 403 times