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