チュートリアル

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

チュートリアル».NET»Spire.Doc for .NET»文書操作»C#:Word ドキュメントに数式を挿入する方法
2024-07-05

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

Word ドキュメント内の数式は、数学的な概念や関係を表現するための重要なツールです。学術論文、科学レポート、またはその他の数学的内容を含む文書を書く際に、数式を組み込むことで複雑な数学的概念を効果的に伝え、文書の視覚的魅力と専門性を向上させることができます。本記事では、C# で Spire.Doc for .NET を使用して、Word ドキュメントに数式を挿入する方法を説明します。

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

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# で数式を Word ドキュメントに挿入する方法

Spire.Doc for .NET を使用すると、OfficeMath.FromLatexMathCode(string latexMathCode) メソッドおよび OfficeMath.FromMathMLCode(string mathMLCode) メソッドを使用して、LaTeX コードおよび MathML コードから数式を生成できます。詳細な手順は以下の通りです:

  • LaTeX コードと MathML コードからそれぞれの文字列配列を作成します。
  • Document インスタンスを作成し、Document.AddSection() メソッドを使用してセクションを追加します。
  • 文字列配列内の各 LaTeX コードを反復処理します。
  • OfficeMath.FromLatexMathCode(string latexMathCode) メソッドを使用して、LaTeX コードから数式を作成します。
  • セクションに段落を追加し、Paragraph.Items.Add() メソッドを使用して段落に数式を追加します。
  • 文字列配列内の各 MathML コードを反復処理します。
  • OfficeMath.FromMathMLCode(string mathMLCode) メソッドを使用して、MathML コードから数式を作成します。
  • セクションに段落を追加し、Paragraph.Items.Add() メソッドを使用して段落に数式を追加します。
  • Document.SaveToFile() メソッドを使用して、結果のドキュメントを保存します。
  • C#
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields.OMath;

namespace AddMathEquations
{
    internal class Program
    {
        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インスタンスを作成する
            Document doc = new Document();

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

            // セクションに段落を追加する
            Paragraph textPara = section.AddParagraph();
            textPara.AppendText("LaTeXコードからの数式の作成");
            textPara.ApplyStyle(BuiltinStyle.Heading1);
            textPara.Format.HorizontalAlignment = HorizontalAlignment.Left;

            // 文字列配列の各LaTeXコードを反復処理する
            for (int i = 0; i < latexMathCode.Length; i++)
            {
                // LaTeXコードから数式を作成する
                OfficeMath officeMath = new OfficeMath(doc);
                officeMath.FromLatexMathCode(latexMathCode[i]);
                // 数式をセクションに追加する
                Paragraph paragraph = section.AddParagraph();
                paragraph.Items.Add(officeMath);
                section.AddParagraph();
            }

            section.AddParagraph();

            // セクションに段落を追加する
            textPara = section.AddParagraph();
            textPara.AppendText("MathMLコードからの数式の作成");
            textPara.ApplyStyle(BuiltinStyle.Heading1);
            textPara.Format.HorizontalAlignment = HorizontalAlignment.Left;

            // 文字列配列の各MathMLコードを反復処理する
            for (int j = 0; j < mathMLCode.Length; j++)
            {
                // MathMLコードから数式を作成する
                OfficeMath officeMath = new OfficeMath(doc);
                officeMath.FromMathMLCode(mathMLCode[j]);
                // 数式をセクションに追加する
                Paragraph paragraph = section.AddParagraph();
                paragraph.Items.Add(officeMath);
                section.AddParagraph();
            }

            // 結果文書を保存する
            doc.SaveToFile("Word文書に数式を挿入.docx", FileFormat.Docx2019);
            doc.Dispose();
        }
    }
}

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

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

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

Read 138 times