Sunumlardan Python ile Matematik Denklemlerini Dışa Aktarma
Giriş
Aspose.Slides, sunumlardan matematik denklemlerini dışa aktarmanıza olanak sağlar. Örneğin, belirli bir sunumdaki slaytlardaki matematik denklemlerini çıkartıp başka bir program veya platformda kullanmanız gerekebilir.
Note
Denklemleri doğrudan LaTeX’e veya web ve birçok uygulamada kullanılan popüler bir matematik içeriği standardı olan MathML’e dışa aktarabilirsiniz.LaTeX’e Matematik Denklemelerini Dışa Aktarma
Aspose.Slides, bir PowerPoint matematik denklemini doğrudan LaTeX’e dönüştürebilir; ara bir MathML dosyasına ve harici bir dönüştürücüye gerek yoktur. Bir matematik denklemi, bir metin çerçevesinde bir MathPortion olarak saklanır. MathPortion.getMathParagraph kullanarak bir MathParagraph elde edin ve ardından MathParagraph.toLatex çağırın. Yöntem, kaydedebileceğiniz, görüntüleyebileceğiniz, başka bir uygulamaya gönderebileceğiniz veya daha fazla işleyebileceğiniz bir dize döndürür.
Aşağıdaki örnek, her slayttaki tüm metin çerçevelerini inceler, tüm math portion’ları bulur ve her denklemi ayrı bir .tex dosyasına yazar:
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathPortion, Presentation, SlideUtil
presentation = Presentation("equations.pptx")
try:
slide_count = presentation.getSlides().size()
for slide_index in range(slide_count):
slide = presentation.getSlides().get_Item(slide_index)
slide_number = slide_index + 1
equation_number = 1
text_frames = SlideUtil.getAllTextBoxes(slide)
for text_frame in text_frames:
for paragraph in text_frame.getParagraphs():
for portion in paragraph.getPortions():
if not isinstance(portion, MathPortion):
continue
math_paragraph = portion.getMathParagraph()
latex_file_name = f"slide_{slide_number}_equation_{equation_number}.tex"
latex_text = math_paragraph.toLatex()
latex_path = Path(latex_file_name)
latex_path.write_text(str(latex_text), encoding="utf-8")
equation_number += 1
finally:
presentation.dispose()
SlideUtil.getAllTextBoxes bir slaytta bulunan tüm metin çerçevelerini döndürür. MathPortion tip kontrolü, gerçek düzenlenebilir denklemleri sıradan metin ve görsellerden ayırır.
LaTeX motorları ve belge şablonları aynı komutları, paketleri ya da Unicode karakterlerini desteklemeyebilir. Döndürülen dizeyi uygulamanızın kullandığı LaTeX motoru ile test edin. Bir sembol ya da Office Math öğesi o ortamda uygun bir temsil bulamazsa, döndürülen dizede proje‑spesifik bir komutla değiştirin veya denklemi atlayıp sorunu inceleme için kaydedin.
MathML Olarak Matematik Denklemelerini Kaydet
Bazı denklem formatları (örneğin LaTeX) için kod yazmak kolaydır, ancak MathML el ile yazılması daha zordur çünkü uygulamalar tarafından otomatik olarak üretilmek üzere tasarlanmıştır. Programlar, MathML’in XML tabanlı olması nedeniyle kolayca okuyabilir ve ayrıştırabilir; bu nedenle MathML birçok alanda çıktı ve baskı formatı olarak yaygın şekilde kullanılır.
Bu örnek kod, bir sunumdan bir matematik denklemini MathML olarak dışa aktarmayı gösterir:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathematicalText, Presentation
from java.io import FileOutputStream
presentation = Presentation()
try:
math_shape = presentation.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 500, 50)
math_portion = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)
math_paragraph = math_portion.getMathParagraph()
a_squared = MathematicalText("a").setSuperscript("2")
b_squared = MathematicalText("b").setSuperscript("2")
c_squared = MathematicalText("c").setSuperscript("2")
equation = a_squared.join("+").join(b_squared).join("=").join(c_squared)
math_paragraph.add(equation)
stream = FileOutputStream("mathml.xml")
try:
math_paragraph.writeAsMathMl(stream)
finally:
stream.close()
finally:
presentation.dispose()
SSS
MathML’e tam olarak ne dışa aktarılıyor—bir paragraf mı yoksa bireysel bir formül bloğu mu?
Tam bir matematik paragrafı (MathParagraph) ya da bireysel bir blok (MathBlock) MathML’e dışa aktarılabilir. Her iki tip de MathML’e yazma yöntemi sağlar.
Bir slayttaki bir nesnenin normal metin veya görsel yerine bir matematik formülü olduğunu nasıl anlarsınız?
Formül bir MathPortion içinde bulunur ve bir MathParagraph içerir. MathParagraph içermeyen görseller ve normal metin bölümleri dışa aktarılabilir formül değildir.
Sunumdaki MathML nereden geliyor—PowerPoint’e özgü mü yoksa bir standart mı?
Dışa aktarma, standart MathML (XML) hedef alır. Aspose, standardın sunum alt kümesi olan Presentation MathML’i kullanır; bu alt küme uygulamalar ve web arasında yaygın olarak kullanılır.
Tablolar, SmartArt, gruplar vb. içindeki formüllerin dışa aktarılması destekleniyor mu?
Evet, bu nesneler içinde bir MathParagraph içeren metin bölümleri (yani gerçek PowerPoint formülleri) dışa aktarılır. Formül bir görsel olarak gömülü ise dışa aktarılmaz.
MathML’e dışa aktarım orijinal sunumu değiştirir mi?
Hayır. MathML yazma işlemi, formülün içeriğinin bir serileştirilmesidir; sunum dosyasını değiştirmez.