Voeg wiskundige vergelijkingen toe aan PowerPoint-presentaties in Python
Overzicht
PowerPoint slaat vergelijkingen op als Office Math Markup Language (OMML). Met Aspose.Slides for Python via Java kun je dezelfde soort wiskundige inhoud programmatig maken: breuken, radicalen, functies, limieten, N-ary‑operatoren, matrices, arrays en geformatteerde wiskundige blokken.
In PowerPoint voegen gebruikers normaal gesproken vergelijkingen toe via Insert > Equation:

Het resultaat is bewerkbare wiskundige tekst op de dia:

Aspose.Slides bouwt die wiskundige tekst op via drie hoofdobjecten:
- Een wiskundige vorm, gemaakt met addMathShape, is de vorm die de vergelijking bevat.
- MathPortion slaat wiskundige inhoud op binnen het tekstvak van de vorm.
- MathParagraph bevat een of meer MathBlock objecten.
De meeste onderstaande voorbeelden gebruiken MathematicalText en de fluente methoden van MathElementBase om de code kort en leesbaar te houden.
Voor MathML‑exportscenario’s, zie Exporteer wiskundige vergelijkingen uit presentaties in Python.
Maak een vergelijking
Dit voorbeeld maakt een wiskundige vorm en voegt de stelling van Pythagoras toe:

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 120)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
a_squared = MathematicalText("a").setSuperscript("2")
b_squared = MathematicalText("b").setSuperscript("2")
equation = MathematicalText("c").setSuperscript("2").join("=").join(a_squared).join("+").join(b_squared)
math_paragraph.add(equation)
presentation.save("pythagorean-theorem.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Note
addMathShape maakt een vorm die al een wiskundige alinea bevat. Toegang tot de eerste MathPortion, haal de bijbehorende MathParagraph, en voeg wiskundige blokken of wiskunde‑elementen toe.Voeg breuken toe
Gebruik divide om een breuk te maken. Je kunt een breukstijl kiezen met MathFractionTypes.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathFractionTypes, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 100)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
fraction = MathematicalText("1").divide("x", MathFractionTypes.Skewed)
math_block = MathBlock(fraction)
math_paragraph.add(math_block)
presentation.save("fraction.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Voor een gestapelde breuk, gebruik MathFractionTypes.Bar:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathFractionTypes, MathematicalText
stacked_fraction = MathematicalText("x + 1").divide("y - 1", MathFractionTypes.Bar)
Voeg radicalen toe
Gebruik radical om een vierkantswortel, cube‑wortel of andere wortel te maken. Het huidige element wordt de basis, en het argument wordt de graad.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 100)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
radical = MathematicalText("x").radical("n")
math_block = MathBlock(radical)
math_paragraph.add(math_block)
presentation.save("radical.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Voeg functies en limieten toe
Gebruik asArgumentOfFunction of function voor functies zoals sin(x), log(x) of aangepaste functienamen. Voor limieten plaats je lim in een MathLimit of gebruik je setLowerLimit.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 100)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
limit = MathematicalText("lim").setLowerLimit("x\u2192\u221E").function("x")
math_block = MathBlock(limit)
math_paragraph.add(math_block)
presentation.save("functions-and-limits.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Voor een aangepaste functienaam, maak je de functienaam het huidige element:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathematicalText
custom_function = MathematicalText("f").function("x + 1")
Voeg N-ary operatoren en integralen toe
Gebruik nary voor sommaties, unies, intersecties en andere grote operatoren. Gebruik integral voor integralen. Beide methoden laten je onder‑ en bovengrenzen instellen.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathNaryOperatorTypes, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 120)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
a_power = MathematicalText("a").setSuperscript("n-k")
summation_base = MathematicalText("x").setSuperscript("k").join(a_power)
summation = summation_base.nary(MathNaryOperatorTypes.Summation, "k=0", "n")
math_block = MathBlock(summation)
math_paragraph.add(math_block)
presentation.save("nary-operators.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
N-ary‑operatoren zijn voor grote operatoren met optionele grenzen. Simpele operatoren zoals +, - en = worden meestal toegevoegd als MathematicalText en samengevoegd in de uitdrukking.
Voor een integraal, gebruik integral:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathIntegralTypes, MathematicalText
differential = MathematicalText("dx").toBox()
integral_base = MathematicalText("x").join(differential)
integral = integral_base.integral(MathIntegralTypes.Simple, "0", "1")
Voeg matrices toe
Gebruik MathMatrix voor rijen en kolommen. Matrices bevatten standaard geen haakjes, dus omhul de matrix wanneer je haakjes, vierkante haken of accolades nodig hebt.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathMatrix, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 120)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
matrix = MathMatrix(2, 3)
cell_0_0 = MathematicalText("1")
matrix.set_Item(0, 0, cell_0_0)
cell_0_1 = MathematicalText("x")
matrix.set_Item(0, 1, cell_0_1)
cell_1_0 = MathematicalText("x")
matrix.set_Item(1, 0, cell_1_0)
cell_1_1 = MathematicalText("2")
matrix.set_Item(1, 1, cell_1_1)
cell_1_2 = MathematicalText("y")
matrix.set_Item(1, 2, cell_1_2)
math_block = MathBlock(matrix)
math_paragraph.add(math_block)
presentation.save("matrix.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Voeg vergelijking‑arrays toe
Gebruik toMathArray, wanneer je uitgelijnde vergelijkingen of een verticale stapel uitdrukkingen nodig hebt.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 140)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
equation_array = MathematicalText("x").join("y").toMathArray()
math_block = MathBlock(equation_array)
math_paragraph.add(math_block)
presentation.save("equation-array.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Voeg trigonometrische functies toe
Gebruik asArgumentOfFunction, wanneer het argument het huidige element is en de functienaam bekend is.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathFunctionsOfOneArgument, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 100)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
cosine = MathematicalText("2x").asArgumentOfFunction(MathFunctionsOfOneArgument.Cos)
math_block = MathBlock(cosine)
math_paragraph.add(math_block)
presentation.save("trigonometric-function.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Voeg subscript en superscript toe
Gebruik de subscript‑ en superscript‑helpers voor indexen en machten. Wanneer de indexen links van de basis moeten verschijnen, gebruik dan setSubSuperscriptOnTheLeft.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 100)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
scripts = MathematicalText("Y").setSubSuperscriptOnTheLeft("1", "n")
math_block = MathBlock(scripts)
math_paragraph.add(math_block)
presentation.save("subscript-superscript.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Voeg delimiters toe
Gebruik enclose, om een uitdrukking binnen delimiters te plaatsen. Je kunt ook een scheidingsteken instellen voor delimiter‑uitdrukkingen die meerdere elementen bevatten.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 100)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
delimiter = MathematicalText("x").join("y").join("z").enclose('<', '>')
delimiter.setSeparatorCharacter('|')
math_block = MathBlock(delimiter)
math_paragraph.add(math_block)
presentation.save("delimiters.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Voeg een kader‑vak toe
Gebruik toBorderBox, wanneer de vergelijking zelf moet worden ingekaderd.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 100)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
b_squared = MathematicalText("b").setSuperscript("2")
c_squared = MathematicalText("c").setSuperscript("2")
boxed_equation = MathematicalText("a").setSuperscript("2").join("=").join(b_squared).join("+").join(c_squared).toBorderBox()
math_block = MathBlock(boxed_equation)
math_paragraph.add(math_block)
presentation.save("border-box.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Groepeer termen
Gebruik group, om een groepeerteken boven of onder een uitdrukking te plaatsen. Voeg een limiet toe om de gegroepeerde termen te labelen.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathTopBotPositions, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 120)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
grouped = MathematicalText("x + y").group('\u23DF', MathTopBotPositions.Bottom, MathTopBotPositions.Top).setLowerLimit("any text")
math_block = MathBlock(grouped)
math_paragraph.add(math_block)
presentation.save("grouped-terms.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Formatteer wiskundige elementen
Gebruik opmaak‑helpers alleen waar ze de formule verduidelijken. Bijvoorbeeld, overbar plaatst een balk boven een wiskundig element.

import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathBlock, MathematicalText, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
math_shape = slide.getShapes().addMathShape(20, 20, 700, 100)
math_paragraph = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph()
overbar = MathematicalText("ABC").overbar()
math_block = MathBlock(overbar)
math_paragraph.add(math_block)
presentation.save("overbar.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Snelle referentie
| Task | Main API |
|---|---|
| Maak wiskundige tekst | MathematicalText |
| Combineer elementen | MathElementBase.join |
| Maak breuken | MathElementBase.divide |
| Voeg superscript of subscript toe | setSuperscript, setSubscript |
| Voeg functies toe | function, asArgumentOfFunction |
| Voeg radicalen toe | MathElementBase.radical |
| Voeg limieten toe | setLowerLimit, setUpperLimit |
| Voeg scripts aan de linkerkant toe | setSubSuperscriptOnTheLeft |
| Voeg sommaties en integralen toe | nary, integral |
| Voeg matrices toe | MathMatrix |
| Voeg vergelijking‑arrays toe | toMathArray |
| Voeg delimiters toe | enclose |
| Voeg balken en randen toe | overbar, toBorderBox |
| Groepeer termen | group |
FAQ
Kan ik een bestaande PowerPoint‑vergelijking bewerken?
Ja. Open de presentatie, zoek de vorm die een MathPortion bevat, haal de bijbehorende MathParagraph op, en werk de wiskundige blokken in die alinea bij.
Worden vergelijkingen opgeslagen als bewerkbare PowerPoint‑wiskunde?
Ja. Wanneer je opslaat als PPTX, schrijft Aspose.Slides de vergelijking als bewerkbare Office‑wiskundige inhoud.
Kan ik vergelijkingen exporteren naar LaTeX?
Ja. Haal de MathParagraph van de vergelijking op via zijn MathPortion, en roep MathParagraph.toLatex aan om deze direct te exporteren. Voor een volledig voorbeeld, zie Exporteer wiskundige vergelijkingen uit presentaties in Python.