PowerPoint 数学方程式
概要
PowerPoint では、数学方程式や数式を書くことができ、プレゼンテーション内で表示することができます。そのために、さまざまな数学記号が PowerPoint で表現され、テキストや方程式に追加できます。そのための数学方程式のコンストラクターが PowerPoint で使用され、以下のような複雑な数式を作成するのに役立ちます:
- 数学的分数
- 数学的根号
- 数学的関数
- 限界および対数関数
- N-元演算
- 行列
- 大きな演算子
- サイン、コサイン関数
PowerPoint に数学方程式を追加するには、挿入 -> 方程式 メニューを使用します:
これにより、PowerPoint で以下のように表示できる XML 形式の数学テキストが作成されます:
PowerPoint は多くの数学記号をサポートしており、数学方程式を作成できます。しかし、PowerPoint で複雑な数学方程式を作成すると、しばしば見栄えが良く、プロフェッショナルに見える結果をもたらしません。数学的なプレゼンテーションを頻繁に作成する必要があるユーザーは、見栄えの良い数学式を作成するためにサードパーティのソリューションを利用することが多いです。
Aspose.Slide APIを使用すれば、C# でプログラム的に PowerPoint プレゼンテーション内の数学方程式に対処できます。新しい数学的表現を作成したり、以前に作成されたものを編集したりできます。数学構造を画像にエクスポートすることも部分的にサポートされています。
数学方程式を作成する方法
数学要素は、任意のネスト階層で数学的構造を構築するために使用されます。数学要素の線形コレクションは、MathBlockクラスによって表される数学的ブロックを形成します。 MathBlockクラスは、実質的に分離された数学的表現、数式、または方程式です。MathPortionは数学的部分であり、数学的テキストを保持するために使用されます(Portionとは混同しないでください)。MathParagraphは、数学的ブロックのセットを操作できるようにします。上述のクラスは、Aspose.Slides API を介して PowerPoint 数学方程式を操作するための鍵となります。
Aspose.Slides API を使用して、次の数学方程式を作成する方法を見てみましょう:
スライドに数学的表現を追加するには、まず数学テキストを含む形状を追加します:
using (Presentation pres = new Presentation())
{
var mathShape = pres.Slides[0].Shapes.AddMathShape(0, 0, 720, 150);
}
作成後、形状にはデフォルトで数学部分を含む1つの段落が含まれます。MathPortionクラスは、内部に数学的テキストを含む部分です。MathPortion内の数学的コンテンツにアクセスするには、MathParagraph変数を参照します:
var mathParagraph = (mathShape.TextFrame.Paragraphs[0].Portions[0] as MathPortion).MathParagraph;
MathParagraphクラスは、数学ブロック([MathBlock](https://reference.aspose.com/slides/net/aspose.slides.mathtext/mathblock))を読み取り、追加、編集、削除することを許可します。これらの数学ブロックは、数学要素の組み合わせで構成されています。例えば、分数を作成し、プレゼンテーションに配置する場合:
var fraction = new MathematicalText("x").Divide("y");
mathParagraph.Add(new MathBlock(fraction));
各数学要素は、IMathElementインターフェースを実装したクラスによって表されます。このインターフェースは、数学的表現を簡単に作成するための多くのメソッドを提供します。単一行のコードでかなり複雑な数学的表現を作成することができます。例えば、ピタゴラスの定理は次のようになります:
var mathBlock = new MathematicalText("c")
.SetSuperscript("2")
.Join("=")
.Join(new MathematicalText("a").SetSuperscript("2"))
.Join("+")
.Join(new MathematicalText("b").SetSuperscript("2"));
IMathElementインターフェースの操作は、MathBlockを含む任意の型の要素に実装されています。
完全なソースコードサンプル:
using (Presentation pres = new Presentation())
{
IAutoShape mathShape = pres.Slides[0].Shapes.AddMathShape(0, 0, 720, 150);
var mathParagraph = (mathShape.TextFrame.Paragraphs[0].Portions[0] as MathPortion).MathParagraph;
var fraction = new MathematicalText("x").Divide("y");
mathParagraph.Add(new MathBlock(fraction));
var mathBlock = new MathematicalText("c")
.SetSuperscript("2")
.Join("=")
.Join(new MathematicalText("a").SetSuperscript("2"))
.Join("+")
.Join(new MathematicalText("b").SetSuperscript("2"));
mathParagraph.Add(mathBlock);
pres.Save("math.pptx", SaveFormat.Pptx);
}
数学要素の種類
数学表現は、数学要素の列から形成されます。数学要素の列は数学ブロックとして表され、数学要素の引数は木のようなネストを形成します。
さまざまな数学要素のタイプがあり、それらを使って数学ブロックを構築できます。これらの要素のそれぞれは、他の要素に含まれたり(集約されたり)することができます。つまり、要素は実際には他の要素を含むコンテナであり、木のような構造を形成します。最も単純な要素のタイプは、他の数学テキストの要素を含まない要素です。
各数学要素のタイプは、IMathElementインターフェースを実装しており、さまざまなタイプの数学要素に共通の数学操作セットを使用できるようにしています。
MathematicalText クラス
MathematicalTextクラスは、数学的テキストを表します - すべての数学構造の基礎となる要素です。数学的テキストは、オペランドと演算子、変数、その他の線形テキストを表します。
例: 𝑎=𝑏+𝑐
MathFraction クラス
MathFractionクラスは、分子と分母を分数バーで区切った分数オブジェクトを指定します。分数バーは、分数の特性に応じて水平または対角線状であることがあります。分数オブジェクトは、1つの要素を別の要素の上に配置するスタック機能を表すためにも使用されますが、分数バーはありません。
例:
MathRadical クラス
MathRadicalクラスは、基数およびオプションの指数からなるルート関数(数学的根)を指定します。
例:
MathFunction クラス
MathFunctionクラスは、引数の関数を指定します。プロパティには、Name - 関数名と Base - 関数引数が含まれます。
例:
MathNaryOperator クラス
MathNaryOperatorクラスは、総和や積分のような N-元数学オブジェクトを指定します。オペレーター、ベース(またはオペランド)、およびオプションの上限と下限から構成されます。N-元演算子の例には、総和、和集合、交差、積分があります。
このクラスには加算、減算などの単純な演算子は含まれていません。それらは単一のテキスト要素で表されます - MathematicalText。
例:
MathLimit クラス
MathLimitクラスは、上限または下限を作成します。それは、ベースラインの上のテキストとすぐ上または下にある縮小されたサイズのテキストからなる制限オブジェクトを指定します。この要素には「lim」という単語は含まれず、表現の上部または下部にテキストを配置することができます。したがって、以下の表現が作成されます。
これは、MathFunctionと MathLimit要素の組み合わせを使用して、このように作成されます:
var funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));
var mathFunc = new MathFunction(funcName, new MathematicalText("𝑥"));
MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement クラス
- MathSubscriptElement
- MathSuperscriptElement
- MathRightSubSuperscriptElement
- MathLeftSubSuperscriptElement
これらのクラスは、下付きインデックスや上付きインデックスを指定します。引数の左側または右側に同時に下付き文字と上付き文字を設定できますが、単一の下付きまたは上付き文字は右側のみにサポートされています。MathSubscriptElementは、数の数学的指数を設定するためにも使用できます。
例:
MathMatrix クラス
MathMatrixクラスは、子要素が1つまたはそれ以上の行と列に配置された行列オブジェクトを指定します。行列には構built-in デリミタはありません。行列を括弧に配置するには、デリミタオブジェクト - IMathDelimiterを使用する必要があります。Null 引数を使用して行列にギャップを作成できます。
例:
MathArray クラス
MathArrayクラスは、数式や任意の数学的オブジェクトの垂直配列を指定します。
例:
数学要素の書式設定
-
MathBorderBoxクラス: IMathElementの周りに矩形または他のボーダーを描画します。
例:
-
MathBoxクラス: 数学要素の論理ボックス(パッケージング)を指定します。たとえば、ボックス化されたオブジェクトは、整列ポイントの有無にかかわらずオペレーターエミュレーターとして機能したり、行のブレークポイントとして機能したり、行内で行のブレークを許可しないようにグループ化されたりすることができます。たとえば、「==」演算子は行のブレークを防ぐためにボックス化されるべきです。
-
MathDelimiterクラス: 開括弧と閉括弧(括弧、波括弧、角括弧、垂直バーなど)からなるデリミタオブジェクトを指定し、その内部に1つ以上の数学的要素を指定された文字で区切って含めます。例: (𝑥2); [𝑥2|𝑦2].
例:
-
MathAccentクラス: 基数と結合されたダイアクリティカルマークからなるアクセント関数を指定します。
例: 𝑎́.
-
MathBarクラス: 基数引数と上バーまたは下バーからなるバー関数を指定します。
例:
-
MathGroupingCharacterクラス: 要素の間の関係を強調表示するために、式の上または下にグルーピングシンボルを指定します。
例:
数学的操作
各数学要素および数学表現(MathBlockを介して)は、IMathElementインターフェースを実装しています。これにより、既存の構造に対して操作を行い、より複雑な数学的表現を形成できます。すべての操作には、2つのパラメータセットがあります:引数として IMathElementまたは文字列を使用できます。文字列引数が使用される場合、MathematicalTextクラスのインスタンスは明示的に指定されている文字列から作成されます。Aspose.Slidesで利用できる数学操作は以下のとおりです。
Join メソッド
数学要素を結合して数学ブロックを形成します。例えば:
IMathElement element1 = new MathematicalText("x");
IMathElement element2 = new MathematicalText("y");
IMathBlock block = element1.Join(element2);
Divide メソッド
- Divide(String)
- Divide(IMathElement)
- Divide(String, MathFractionTypes)
- Divide(IMathElement, MathFractionTypes)
指定された型の分数を、この分子および指定された分母で作成します。例えば:
IMathElement numerator = new MathematicalText("x");
IMathFraction fraction = numerator.Divide("y", MathFractionTypes.Linear);
Enclose メソッド
要素を指定された文字(括弧など)で囲みます。
/// <summary>
/// 数学要素を括弧で囲みます。
/// </summary>
IMathDelimiter Enclose();
/// <summary>
/// この要素を括弧などの他の指定された文字で囲みます。
/// </summary>
IMathDelimiter Enclose(char beginningCharacter, char endingCharacter);
例えば:
IMathDelimiter delimiter = new MathematicalText("x"). Enclose('[', ']');
IMathDelimiter delimiter2 = new MathematicalText("elem1").Join("elem2").Enclose();
Function メソッド
現在のオブジェクトを関数名として使用して引数の関数を取得します。
/// <summary>
/// このインスタンスを関数名として使用して引数の関数を取得します。
/// </summary>
/// <param name="functionArgument">関数の引数</param>
IMathFunction Function(IMathElement functionArgument);
IMathFunction Function(string functionArgument);
例えば:
IMathFunction func = new MathematicalText("sin").Function("x");
AsArgumentOfFunction メソッド
- AsArgumentOfFunction(String)
- AsArgumentOfFunction(IMathElement)
- AsArgumentOfFunction(MathFunctionsOfOneArgument)
- AsArgumentOfFunction(MathFunctionsOfTwoArguments, IMathElement)
- AsArgumentOfFunction(MathFunctionsOfTwoArguments, String)
現在のインスタンスを引数として使用して指定された関数を取得します。次のことができます:
- 文字列を関数名として指定します。たとえば、「cos」。
- 列挙体 MathFunctionsOfOneArgumentまたは MathFunctionsOfTwoArgumentsの定義済み値のいずれかを選択します。たとえば、MathFunctionsOfOneArgument.ArcSin.
- IMathElementのインスタンスを選択します。
例えば:
var funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑛→∞"));
var func1 = new MathematicalText("2x").AsArgumentOfFunction(funcName);
var func2 = new MathematicalText("x").AsArgumentOfFunction("sin");
var func3 = new MathematicalText("x").AsArgumentOfFunction(MathFunctionsOfOneArgument.Sin);
var func4 = new MathematicalText("x").AsArgumentOfFunction(MathFunctionsOfTwoArguments.Log, "3")
SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft メソッド
- SetSubscript(String)
- SetSubscript(IMathElement)
- SetSuperscript(String)
- SetSuperscript(IMathElement)
- SetSubSuperscriptOnTheRight(String, String)
- SetSubSuperscriptOnTheRight(IMathElement, IMathElement)
- SetSubSuperscriptOnTheLeft(String, String)
- SetSubSuperscriptOnTheLeft(IMathElement, IMathElement)
下付き文字と上付き文字を設定します。引数の左側または右側に同時に下付き文字と上付き文字を設定できますが、単一の下付きまたは上付き文字は右側のみにサポートされています。上付き文字は、数の数学的指数を設定するためにも使用できます。
例:
var script = new MathematicalText("y").SetSubSuperscriptOnTheLeft("2x", "3z");
Radical メソッド
指定された引数から指定された指数の数学的根を指定します。
例:
var radical = new MathematicalText("x").Radical("3");
SetUpperLimit と SetLowerLimit メソッド
上限または下限を取得します。ここで、上限と下限は引数がベースに対してどの位置にあるかを示します。
次の式を考えます:
このような表現を MathFunctionとMathLimitクラスの組み合わせを通じて、そして IMathElementの操作で作成できます:
var mathExpression = MathText.Create("lim").SetLowerLimit("x→∞").Function("x");
N-元および積分メソッド
- Nary(MathNaryOperatorTypes, IMathElement, IMathElement)
- Nary(MathNaryOperatorTypes, String, String)
- Integral(MathIntegralTypes)
- Integral(MathIntegralTypes, IMathElement, IMathElement)
- Integral(MathIntegralTypes, String, String)
- Integral(MathIntegralTypes, IMathElement, IMathElement, MathLimitLocations)
- Integral(MathIntegralTypes, String, String, MathLimitLocations)
N-元メソッドとIntegralメソッドは、INaryOperatorタイプで表される N-元演算子を作成して返します。N-元メソッドでは、MathNaryOperatorTypes列挙体が演算子のタイプを指定します:総和、和集合など、積分は含まれません。積分メソッドでは、積分型の列挙体 MathIntegralTypesを使用した特化した演算積分があります。
例:
IMathBlock baseArg = new MathematicalText("x").Join(new MathematicalText("dx").ToBox());
IMathNaryOperator integral = baseArg.Integral(MathIntegralTypes.Simple, "0", "1");
ToMathArray メソッド
ToMathArrayは、要素を垂直配列に配置します。この操作が MathBlock インスタンスに対して呼び出されると、すべての子要素が返された配列に配置されます。
例:
var arrayFunction = new MathematicalText("x").Join("y").ToMathArray();
書式設定操作: Accent, Overbar, Underbar, Group, ToBorderBox, ToBox
- Accentメソッド:アクセントマーク(要素の上部にある文字)を設定します。
- Overbarおよび Underbarメソッド:上部または下部にバーを設定します。
- Groupメソッド:ボトムカールブラケットや他のグルーピング文字などを使用してグループに配置します。
- ToBorderBoxメソッド:ボーダーボックスに配置します。
- ToBoxメソッド:非視覚ボックス(論理グループ化)に配置します。
例:
var accent = new MathematicalText("x").Accent('\u0303');
var bar = new MathematicalText("x").Overbar();
var groupChr = new MathematicalText("x").Join("y").Join("z").Group('\u23E1', MathTopBotPositions.Bottom, MathTopBotPositions.Top);
var borderBox = new MathematicalText("x+y+z").ToBorderBox();
var boxedOperator = new MathematicalText(":=").ToBox();