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を使用して作成する方法を見てみましょう:
スライドに数学式を追加するには、最初に数学テキストを含む形状を追加します:
Presentation pres = new Presentation();
try {
IAutoShape mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
} finally {
if (pres != null) pres.dispose();
}
作成後、形状には既にデフォルトで1つの段落が数学的部分として含まれています。MathPortion クラスは、内部に数学テキストを含む部分です。MathPortion 内の数学的コンテンツにアクセスするには、MathParagraph 変数を参照します:
IMathParagraph mathParagraph = ((MathPortion)mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)).getMathParagraph();
MathParagraph クラスは、数学的要素の組み合わせから構成される数学ブロック(MathBlock)を読み取り、追加し、編集し、削除することを可能にします。例えば、分数を作成し、それをプレゼンテーションに配置します:
IMathFraction fraction = new MathematicalText("x").divide("y");
mathParagraph.add(new MathBlock(fraction));
各数学的要素は、IMathElement インタフェースを実装するいくつかのクラスで表されます。このインタフェースは、数学的表現を簡単に作成するための多くのメソッドを提供します。1行のコードで比較的複雑な数学式を作成することができます。例えば、ピタゴラスの定理は次のように表現されます:
IMathBlock mathBlock = new MathematicalText("c")
.setSuperscript("2")
.join("=")
.join(new MathematicalText("a").setSuperscript("2"))
.join("+")
.join(new MathematicalText("b").setSuperscript("2"));
IMathElement インタフェースの操作は、MathBlock を含む任意の要素のタイプに実装されています。
完全なソースコードサンプル:
Presentation pres = new Presentation();
try {
IAutoShape mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
IMathParagraph mathParagraph = ((MathPortion)mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)).getMathParagraph();
IMathFraction fraction = new MathematicalText("x").divide("y");
mathParagraph.add(new MathBlock(fraction));
IMathBlock 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);
} finally {
if (pres != null) pres.dispose();
}
数学的要素タイプ
数学的表現は、数学的要素の配列から形成されます。数学的要素の配列は数学的ブロックで表され、数学的要素の引数は木のようなネストを形成します。
数学ブロックを構築するために使用できる数学要素のタイプはたくさんあります。これらの要素の各々は、他の要素に含めることができ(集約され)、実際には他の要素のコンテナとして機能し、木のような構造を形成します。最も単純なタイプの要素は、他の数学テキストの要素を含まないものです。
各数学要素タイプは、IMathElement インタフェースを実装しており、さまざまなタイプの数学要素に共通の数学操作を使用できるようにします。
MathematicalText クラス
MathematicalText クラスは、数学的テキスト - すべての数学的構造の基本要素を表します。数学的テキストは、オペランド、演算子、変数、およびその他の任意の線形テキストを表すことができます。
例:𝑎=𝑏+𝑐
MathFraction クラス
MathFraction クラスは、分子と分母が分数バーで区切られた分数オブジェクトを指定します。分数バーは、分数の特性に応じて水平または斜めにすることができます。分数オブジェクトは、分数バーなしで一つの要素を他の要素の上に置くスタック関数を表すためにも使用されます。
例:
MathRadical クラス
MathRadical クラスは、基数とオプションの指数を持つ根関数を指定します。
例:
MathFunction クラス
MathFunction クラスは、引数の関数を指定します。プロパティを含みます:getName - 関数名およびgetBase - 関数引数。
例:
MathNaryOperator クラス
MathNaryOperator クラスは、総和や積分のようなN元の数学的オブジェクトを指定します。それは、演算子、基数(またはオペランド)、およびオプションの上限と下限から構成されます。N元の演算子の例として、総和、和、交差点、積分などがあります。
このクラスには、加算、減算などの単純な演算子は含まれません。それらは単一のテキスト要素 - MathematicalText で表されます。
例:
MathLimit クラス
MathLimit クラスは、上限または下限を作成します。基準線上のテキストとそのすぐ上または下に小さくされたテキストから構成される制限オブジェクトを指定します。この要素には「lim」という単語は含まれませんが、式の上または下にテキストを配置できます。したがって、式
は、このようにしてMathFunction とMathLimit 要素の組み合わせによって作成されます:
MathLimit funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));
MathFunction mathFunc = new MathFunction(funcName, new MathematicalText("𝑥"));
MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement クラス
- MathSubscriptElement
- MathSuperscriptElement
- MathRightSubSuperscriptElement
- MathLeftSubSuperscriptElement
次のクラスは下付き文字または上付き文字を指定します。引数の左側または右側に下付き文字と上付き文字を同時に設定できますが、単一の下付き文字または上付き文字は右側のみに対応しています。MathSubscriptElement は数値の数学的指数を設定するためにも使用できます。
例:
MathMatrix クラス
MathMatrix クラスは、行と列にレイアウトされた子要素から構成される行列オブジェクトを指定します。行列には組み込みの区切り文字がないことに注意することが重要です。行列を括弧に入れるには、区切り文字オブジェクト - 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 メソッド
要素を括弧や他のキャラクターといった指定された文字で囲みます。
/**
* <p>
* 数学要素を括弧で囲みます
* </p>
*/
public IMathDelimiter enclose();
/**
* <p>
* この要素を括弧または他のフレーミング用の指定文字で囲みます
* </p>
*/
public IMathDelimiter enclose(char beginningCharacter, char endingCharacter);
例えば:
IMathDelimiter delimiter = new MathematicalText("x").enclose('[', ']');
IMathDelimiter delimiter2 = new MathematicalText("elem1").join("elem2").enclose();
Function メソッド
このインスタンスを関数名として使用して引数の関数を取ります。
/**
* <p>
* このインスタンスを関数名として使用して引数の関数を取ります
* </p>
*/
public IMathFunction function(IMathElement functionArgument);
/**
* <p>
* このインスタンスを関数名として使用して引数の関数を取ります
* </p>
*/
public 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のインスタンスを選択できます。
例えば:
MathLimit funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑛→∞"));
IMathFunction func1 = new MathematicalText("2x").asArgumentOfFunction(funcName);
IMathFunction func2 = new MathematicalText("x").asArgumentOfFunction("sin");
IMathFunction func3 = new MathematicalText("x").asArgumentOfFunction(MathFunctionsOfOneArgument.Sin);
IMathFunction 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)
下付き文字と上付き文字を設定します。引数の左側または右側に下付き文字と上付き文字を同時に設定できますが、単一の下付き文字または上付き文字は右側にのみ対応しています。Superscript は数字の数学的指数を設定するためにも使用できます。
例:
IMathLeftSubSuperscriptElement script = new MathematicalText("y").setSubSuperscriptOnTheLeft("2x", "3z");
Radical メソッド
指定された引数の指定された次数の数学的根を指定します。
例:
IMathRadical radical = new MathematicalText("x").radical("3");
SetUpperLimit と SetLowerLimit メソッド
上限または下限を取得します。ここで、上限と下限は引数の基準に対する位置を示します。
式を考えてみましょう:
このような式は、MathFunction および MathLimit クラスの組み合わせと、IMathElement の操作を通じて次のように作成できます:
IMathFunction mathExpression = new MathematicalText("lim").setLowerLimit("x→∞").function("x");
Nary と Integral メソッド
- 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)
nary と integral メソッドの両方は、IMathNaryOperatorタイプで表されるN-元演算子を作成して返します。naryメソッドでは、MathNaryOperatorTypes 列挙型が演算子のタイプを指定します:和、和など、積分を含まない。Integralメソッドでは、MathIntegralTypes列挙型による特化された操作である積分があります。
例:
IMathBlock baseArg = new MathematicalText("x").join(new MathematicalText("dx").toBox());
IMathNaryOperator integral = baseArg.integral(MathIntegralTypes.Simple, "0", "1");
ToMathArray メソッド
toMathArray は、要素を垂直配列に配置します。この操作がMathBlockインスタンスに対して呼び出されると、すべての子要素が返された配列に配置されます。
例:
IMathArray arrayFunction = new MathematicalText("x").join("y").toMathArray();
フォーマット操作:Accent, Overbar, Underbar, Group, ToBorderBox, ToBox
- accent メソッドは、アクセントマーク(要素の上部に置くキャラクター)を設定します。
- overbar および underbar メソッドは、上部または下部にバーを設定します。
- group メソッドは、ボトムカールブラケットなどのグルーピングキャラクターを使用してグループ化します。
- toBorderBox メソッドはボーダーボックスに配置します。
- toBox メソッドは、非視覚ボックス(論理的グルーピング)に配置します。
例:
IMathAccent accent = new MathematicalText("x").accent('\u0303');
IMathBar bar = new MathematicalText("x").overbar();
IMathGroupingCharacter groupChr = new MathematicalText("x").join("y").join("z").group('\u23E1', MathTopBotPositions.Bottom, MathTopBotPositions.Top);
IMathBorderBox borderBox = new MathematicalText("x+y+z").toBorderBox();
IMathBox boxedOperator = new MathematicalText(":=").toBox();