Wiskundige vergelijkingen exporteren uit presentaties in Java
Inleiding
Aspose.Slides stelt u in staat om wiskundige vergelijkingen uit presentaties te exporteren. Bijvoorbeeld, u moet mogelijk de wiskundige vergelijkingen op dia’s (van een specifieke presentatie) extraheren en ze gebruiken in een ander programma of platform.
Wiskundige vergelijkingen exporteren naar LaTeX
Aspose.Slides kan een PowerPoint-wiskundige vergelijking rechtstreeks naar LaTeX converteren; een tussenliggende MathML-bestand en een externe converter zijn niet nodig. Een wiskundige vergelijking wordt opgeslagen in een tekstframe als een IMathPortion. Gebruik IMathPortion.getMathParagraph om een IMathParagraph te verkrijgen, en roep vervolgens IMathParagraph.toLatex aan. De methode retourneert een string die u kunt opslaan, weergeven, naar een andere applicatie sturen of verder verwerken.
Het volgende voorbeeld onderzoekt elk tekstframe op elke dia, vindt alle wiskundige delen, en schrijft elke vergelijking naar een afzonderlijk .tex-bestand:
Presentation presentation = new Presentation("equations.pptx");
try {
int slideCount = presentation.getSlides().size();
for (int slideIndex = 0; slideIndex < slideCount; slideIndex++) {
ISlide slide = presentation.getSlides().get_Item(slideIndex);
int slideNumber = slideIndex + 1;
int equationNumber = 1;
ITextFrame[] textFrames = SlideUtil.getAllTextBoxes(slide);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
if (!(portion instanceof IMathPortion))
continue;
IMathPortion mathPortion = (IMathPortion) portion;
IMathParagraph mathParagraph = mathPortion.getMathParagraph();
String latexFileName = "slide_" + slideNumber + "_equation_" + equationNumber + ".tex";
String latexText = mathParagraph.toLatex();
Path latexPath = Paths.get(latexFileName);
byte[] latexBytes = latexText.getBytes(StandardCharsets.UTF_8);
Files.write(latexPath, latexBytes);
equationNumber++;
}
}
}
}
} finally {
presentation.dispose();
}
SlideUtil.getAllTextBoxes retourneert alle tekstframes die op een dia gevonden worden. De type-controle van IMathPortion scheidt echte bewerkbare vergelijkingen van gewone tekst en afbeeldingen.
LaTeX-engines en documenttemplates ondersteunen niet allemaal dezelfde commando’s, pakketten of Unicode-tekens. Test de geretourneerde string met de LaTeX-engine die door uw applicatie wordt gebruikt. Als een symbool of Office-Math-element geen geschikte weergave heeft in die omgeving, vervang het in de geretourneerde string door een projectspecifiek commando of sla de vergelijking over en noteer het probleem voor later onderzoek.
Wiskundige vergelijkingen opslaan als MathML
Hoewel mensen gemakkelijk de code kunnen schrijven voor sommige vergelijkingsformaten zoals LaTeX, hebben ze moeite met het schrijven van de code voor MathML omdat dat laatste bedoeld is om automatisch door applicaties te worden gegenereerd. Programma’s lezen en parseren MathML gemakkelijk omdat de code in XML staat, waardoor MathML doorgaans wordt gebruikt als een uitvoer- en afdrukformaat in vele vakgebieden.
Deze voorbeeldcode laat zien hoe u een wiskundige vergelijking uit een presentatie exporteert naar MathML:
Presentation pres = new Presentation();
try {
IAutoShape autoShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 500, 50);
IMathParagraph mathParagraph = ((MathPortion)autoShape.getTextFrame().getParagraphs().get_Item(0).
getPortions().get_Item(0)).getMathParagraph();
mathParagraph.add(new MathematicalText("a").
setSuperscript("2").
join("+").
join(new MathematicalText("b").setSuperscript("2")).
join("=").
join(new MathematicalText("c").setSuperscript("2")));
FileOutputStream stream = new FileOutputStream("mathml.xml");
mathParagraph.writeAsMathMl(stream);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Veelgestelde vragen
Wat wordt er precies geëxporteerd naar MathML—een alinea of een individueel formuleblok?
U kunt zowel een volledige wiskundige alinea (MathParagraph) als een individueel blok (MathBlock) naar MathML exporteren. Beide typen bieden een methode om naar MathML te schrijven.
Hoe kan ik zien dat een object op een dia een wiskundige formule is en geen gewone tekst of afbeelding?
Een formule bevindt zich in een MathPortion en heeft een MathParagraph. Afbeeldingen en gewone tekstgedeelten zonder een MathParagraph kunnen niet als formules worden geëxporteerd.
Waar komt de MathML in een presentatie vandaan—is het PowerPoint-specifiek of een standaard?
De export richt zich op standaard MathML (XML). Aspose gebruikt Presentation MathML — het presentatiesubset van de standaard — dat breed wordt toegepast in diverse applicaties en op het web.
Wordt het exporteren van formules binnen tabellen, SmartArt, groepen, enz. ondersteund?
Ja, als die objecten tekstgedeelten bevatten met een MathParagraph (d.w.z. echte PowerPoint-formules), worden ze geëxporteerd. Als een formule als afbeelding is ingebed, wordt deze niet geëxporteerd.
Wijzigt exporteren naar MathML de oorspronkelijke presentatie?
Nee. Het schrijven van MathML is een serialisatie van de inhoud van de formule; het wijzigt het presentatiebestand niet.