在 Python 中為 PowerPoint 簡報新增數學方程式
概觀
PowerPoint 存儲方程式為 Office Math Markup Language (OMML)。使用 Aspose.Slides for Python via .NET,您可以以程式方式建立相同類型的數學內容:分數、根號、函數、極限、N 元運算子、矩陣、陣列以及格式化的數學區塊。
在 PowerPoint 中,使用者通常從 插入 > 方程式 加入方程式:

結果是可編輯的數學文字在投影片上:

Aspose.Slides 透過三個主要物件建立該數學文字:
- 數學形狀,使用 add_math_shape 建立,是包含方程式的形狀。
- MathPortion 在形狀的文字框內儲存數學內容。
- MathParagraph 包含一個或多個 MathBlock 物件。
以下大多數範例使用 MathematicalText 以及來自 IMathElement 的流暢方法,以保持程式碼簡潔且易讀。
對於 MathML 匯出情況,請參閱 Export Math Equations from Presentations in Python via .NET。
建立方程式
此範例建立一個數學形狀並加入畢氏定理:

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 120)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
equation = (
math.MathematicalText("c")
.set_superscript("2")
.join("=")
.join(math.MathematicalText("a").set_superscript("2"))
.join("+")
.join(math.MathematicalText("b").set_superscript("2"))
)
math_paragraph.add(equation)
presentation.save("pythagorean-theorem.pptx", slides.export.SaveFormat.PPTX)
add_math_shape 會建立已包含數學段落的形狀。存取第一個 MathPortion,取得其 MathParagraph,並將數學區塊或數學元素加入其中。
加入分數
使用 divide 來建立分數。您可以使用 MathFractionTypes 來選擇分數樣式。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
fraction = math.MathematicalText("1").divide("x", math.MathFractionTypes.SKEWED)
math_paragraph.add(math.MathBlock(fraction))
presentation.save("fraction.pptx", slides.export.SaveFormat.PPTX)
若要堆疊分數,使用 MathFractionTypes.BAR:
stacked_fraction = math.MathematicalText("x + 1").divide("y - 1", math.MathFractionTypes.BAR)
加入根號
使用 radical 來建立平方根、立方根或其他根。當前元素成為底部,而參數則成為次方。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
radical = math.MathematicalText("x").radical("n")
math_paragraph.add(math.MathBlock(radical))
presentation.save("radical.pptx", slides.export.SaveFormat.PPTX)
加入函數與極限
使用 as_argument_of_function 或 function 來處理如 sin(x)、log(x) 或自訂函數名稱的函數。對於極限,將 lim 放入 MathLimit 或使用 set_lower_limit。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
limit = (
math.MathematicalText("lim")
.set_lower_limit("x\u2192\u221E")
.function("x")
)
math_paragraph.add(math.MathBlock(limit))
presentation.save("functions-and-limits.pptx", slides.export.SaveFormat.PPTX)
對於自訂函數名稱,將函數名稱設為當前元素:
custom_function = math.MathematicalText("f").function("x + 1")
加入 N 元運算子與積分
使用 nary 來處理求和、聯集、交集以及其他大型運算子。使用 integral 來處理積分。這兩個方法都允許設定上下限。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 120)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
summation_base = (
math.MathematicalText("x")
.set_superscript("k")
.join(math.MathematicalText("a").set_superscript("n-k"))
)
summation = summation_base.nary(math.MathNaryOperatorTypes.SUMMATION, "k=0", "n")
math_paragraph.add(math.MathBlock(summation))
presentation.save("nary-operators.pptx", slides.export.SaveFormat.PPTX)
N 元運算子用於帶有可選上下限的大型運算子。像 +、-、= 這樣的簡單運算子通常以 MathematicalText 形式加入並組合成表達式。
對於積分,使用 integral:
integral_base = math.MathematicalText("x").join(math.MathematicalText("dx").to_box())
integral = integral_base.integral(math.MathIntegralTypes.SIMPLE, "0", "1")
加入矩陣
使用 MathMatrix 來設定行與列。矩陣預設不包含括號,因此當需要圓括號、方括號或大括號時,請自行將矩陣包起來。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 120)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
matrix = math.MathMatrix(2, 3)
matrix[0, 0] = math.MathematicalText("1")
matrix[0, 1] = math.MathematicalText("x")
matrix[1, 0] = math.MathematicalText("x")
matrix[1, 1] = math.MathematicalText("2")
matrix[1, 2] = math.MathematicalText("y")
math_paragraph.add(math.MathBlock(matrix))
presentation.save("matrix.pptx", slides.export.SaveFormat.PPTX)
加入方程式陣列
當需要對齊的方程式或垂直堆疊的表達式時,使用 to_math_array。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 140)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
equation_array = (
math.MathematicalText("x")
.join("y")
.to_math_array()
)
math_paragraph.add(math.MathBlock(equation_array))
presentation.save("equation-array.pptx", slides.export.SaveFormat.PPTX)
加入三角函數
當參數為當前元素且函數名稱已知時,使用 as_argument_of_function。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
cosine = math.MathematicalText("2x").as_argument_of_function(
math.MathFunctionsOfOneArgument.COS
)
math_paragraph.add(math.MathBlock(cosine))
presentation.save("trigonometric-function.pptx", slides.export.SaveFormat.PPTX)
加入下標與上標
使用下標與上標助手來處理索引與次方。當索引必須顯示在基底的左側時,使用 set_sub_superscript_on_the_left。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
scripts = math.MathematicalText("Y").set_sub_superscript_on_the_left("1", "n")
math_paragraph.add(math.MathBlock(scripts))
presentation.save("subscript-superscript.pptx", slides.export.SaveFormat.PPTX)
加入分隔符號
使用 enclose 可將表達式放入分隔符號中。您也可以為包含多個元素的分隔符號表達式設定分隔字元。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
delimiter = (
math.MathematicalText("x")
.join("y")
.join("z")
.enclose("<", ">")
)
delimiter.separator_character = "|"
math_paragraph.add(math.MathBlock(delimiter))
presentation.save("delimiters.pptx", slides.export.SaveFormat.PPTX)
加入邊框盒
當方程式本身需要被框住時,使用 to_border_box。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
boxed_equation = (
math.MathematicalText("a")
.set_superscript("2")
.join("=")
.join(math.MathematicalText("b").set_superscript("2"))
.join("+")
.join(math.MathematicalText("c").set_superscript("2"))
.to_border_box()
)
math_paragraph.add(math.MathBlock(boxed_equation))
presentation.save("border-box.pptx", slides.export.SaveFormat.PPTX)
分組項目
使用 group 在表達式上方或下方放置分組字符。加入上下限以標記分組的項目。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 120)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
grouped = (
math.MathematicalText("x + y")
.group(chr(0x23DF), math.MathTopBotPositions.BOTTOM, math.MathTopBotPositions.TOP)
.set_lower_limit("any text")
)
math_paragraph.add(math.MathBlock(grouped))
presentation.save("grouped-terms.pptx", slides.export.SaveFormat.PPTX)
格式化數學元素
僅在需要闡明公式時使用格式化助手。例如,overbar 會在數學元素上方加上一條橫線。

import aspose.slides as slides
import aspose.slides.mathtext as math
with slides.Presentation() as presentation:
slide = presentation.slides[0]
math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph
overbar = math.MathematicalText("ABC").overbar()
math_paragraph.add(math.MathBlock(overbar))
presentation.save("overbar.pptx", slides.export.SaveFormat.PPTX)
快速參考
| 任務 | 主要 API |
|---|---|
| 建立數學文字 | MathematicalText |
| 結合元素 | IMathElement.join |
| 建立分數 | IMathElement.divide |
| 加入上標或下標 | set_superscript, set_subscript |
| 加入函數 | function, as_argument_of_function |
| 加入根號 | radical |
| 加入極限 | set_lower_limit, set_upper_limit |
| 加入左側標註 | set_sub_superscript_on_the_left |
| 加入求和與積分 | nary, integral |
| 加入矩陣 | MathMatrix |
| 加入方程式陣列 | to_math_array |
| 加入分隔符號 | enclose |
| 加入橫線與邊框 | overbar, to_border_box |
| 分組項目 | group |
常見問題
我可以編輯現有的 PowerPoint 方程式嗎?
可以。開啟簡報,找到包含 MathPortion 的形狀,取得其 MathParagraph,然後更新該段落中的數學區塊。
方程式是否以可編輯的 PowerPoint 數學形式儲存?
可以。當儲存為 PPTX 時,Aspose.Slides 會將方程式寫入為可編輯的 Office 數學內容。
我可以將方程式匯出為 LaTeX 嗎?
Aspose.Slides 會將數學方程式匯出為 MathML。如果需要 LaTeX,請先匯出為 MathML,然後使用支援目標 LaTeX 方言的工具將 MathML 轉換為 LaTeX。