Matematikai egyenletek exportálása prezentációkból JavaScriptben
Bevezetés
Az Aspose.Slides lehetővé teszi, hogy matematikai egyenleteket exportáljon a bemutatókból. Például előfordulhat, hogy ki kell nyernie a diákon (egy adott bemutatóból) található matematikai egyenleteket, és egy másik programban vagy platformon kell felhasználnia őket.
Matematikai egyenletek exportálása LaTeX-be
Az Aspose.Slides közvetlenül képes egy PowerPoint matematikai egyenletet LaTeX-be konvertálni; köztes MathML-fájlra és külső konverterre nincs szükség. A matematikai egyenlet szövegkeretben tárolódik, mint egy MathPortion. Használja a MathPortion.getMathParagraph metódust egy MathParagraph megszerzéséhez, majd hívja meg a MathParagraph.toLatex metódust. A metódus egy karakterláncot ad vissza, amelyet elmenthet, megjeleníthet, elküldhet egy másik alkalmazásnak, vagy tovább feldolgozhat.
A következő példa minden dián minden szövegkeretet vizsgál, megtalálja az összes matematikai részt, és minden egyenletet egy külön .tex fájlba ír:
const presentation = new aspose.slides.Presentation("equations.pptx");
try {
const slideCount = presentation.getSlides().size();
for (let slideIndex = 0; slideIndex < slideCount; slideIndex++) {
const slide = presentation.getSlides().get_Item(slideIndex);
const slideNumber = slideIndex + 1;
let equationNumber = 1;
const textFrames = aspose.slides.SlideUtil.getAllTextBoxes(slide);
for (const textFrame of textFrames) {
const paragraphCount = textFrame.getParagraphs().getCount();
for (let paragraphIndex = 0; paragraphIndex < paragraphCount; paragraphIndex++) {
const paragraph = textFrame.getParagraphs().get_Item(paragraphIndex);
const portionCount = paragraph.getPortions().getCount();
for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
const portion = paragraph.getPortions().get_Item(portionIndex);
if (!java.instanceOf(portion, "com.aspose.slides.MathPortion")) {
continue;
}
const mathParagraph = portion.getMathParagraph();
const latexFileName = `slide_${slideNumber}_equation_${equationNumber}.tex`;
const latexText = mathParagraph.toLatex();
fileSystem.writeFileSync(latexFileName, latexText, "utf8");
equationNumber++;
}
}
}
}
} finally {
presentation.dispose();
}
A SlideUtil.getAllTextBoxes visszaadja a dián található összes szövegkeretet. A MathPortion típusellenőrzés elválasztja a valódi szerkeszthető egyenleteket a szokásos szövegtől és képektől.
A LaTeX motorok és dokumentumsablonok nem mind támogatják ugyanazokat a parancsokat, csomagokat vagy Unicode karaktereket. Tesztelje a visszaadott karakterláncot az alkalmazásában használt LaTeX motorral. Ha egy szimbólum vagy Office Math elem nem rendelkezik megfelelő ábrázolással az adott környezetben, cserélje ki a visszaadott karakterláncban egy projektspecifikus paranccsal, vagy hagyja ki az egyenletet, és rögzítse a problémát felülvizsgálatra.
Matematikai egyenletek mentése MathML-ként
Míg az emberek könnyen képesek kódot írni bizonyos egyenletformátumokhoz, például a LaTeX-hez, a MathML kódírása nehézséget jelent, mivel azt alkalmazásoknak automatikusan kell generálniuk. A programok könnyen olvassák és dolgozzák fel a MathML-t, mivel a kódja XML-ben van, így a MathML gyakran használt kimeneti és nyomtatási formátum sok területen.
Ez a mintakód megmutatja, hogyan exportálhat egy matematikai egyenletet egy bemutatóból MathML-be:
var pres = new aspose.slides.Presentation();
try {
var autoShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 500, 50);
var mathParagraph = autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph();
mathParagraph.add(new aspose.slides.MathematicalText("a").setSuperscript("2").join("+").join(new aspose.slides.MathematicalText("b").setSuperscript("2")).join("=").join(new aspose.slides.MathematicalText("c").setSuperscript("2")));
var stream = null;
mathParagraph.writeAsMathMl(stream);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
GYIK
Mi kerül pontosan exportálásra MathML-be—egy bekezdés vagy egy egyedi képletblokk?
Exportálhat egy egész matematikai bekezdést (MathParagraph) vagy egy egyedi blokkot (MathBlock) MathML-be. Mindkét típus biztosít egy módszert a MathML-be íráshoz.
Hogyan tudom megállapítani, hogy egy dián lévő objektum matematikai képlet-e, és nem egyszerű szöveg vagy kép?
Egy képlet egy MathPortion-ban él, és rendelkezik egy MathParagraph-rel. A képek és a szokásos szövegrészek, amelyeknek nincs [MathParagraph] kapcsolata, nem exportálható képletek.
Honnan származik a MathML egy bemutatóban—PowerPoint-specifikus vagy szabványos?
Az export a szabványos MathML-re (XML) irányul. Az Aspose a Presentation MathML-t használja—a szabvány bemutató alhalmazát—amely széles körben elterjedt az alkalmazások és a web között.
Támogatott-e a képletek exportálása táblázatok, SmartArt, csoportok stb. belsejéből?
Igen, ha ezekben az objektumokban olyan szövegrészek találhatók, amelyek rendelkeznek [MathParagraph]-lel (azaz valódi PowerPoint képletek), akkor exportálódnak. Ha egy képlet képként van beágyazva, akkor nem.
Módosítja a MathML-be exportálás az eredeti bemutatót?
Nem. A MathML írása a képlet tartalmának sorosítása; nem módosítja a bemutató fájlt.