Matematikai egyenletek exportálása bemutatókból Androidon

Bevezetés

Az Aspose.Slides for Android via Java lehetővé teszi, hogy matematikai egyenleteket exportáljon a bemutatókból. Például előfordulhat, hogy ki szeretné nyerni a diákon (egy adott bemutatóból) lévő matematikai egyenleteket, és egy másik programban vagy platformon használja fel őket.

Matematikai egyenletek exportálása LaTeX‑be

Az Aspose.Slides képes a PowerPoint matematikai egyenletet közvetlenül LaTeX‑be konvertálni; köztes MathML fájlra vagy külső konverterre nincs szükség. A matematikai egyenlet szövegkeretben van tárolva egy IMathPortion formájában. Használja a IMathPortion.getMathParagraph metódust egy IMathParagraph lekéréséhez, majd hívja a IMathParagraph.toLatex metódust. A metódus egy karakterláncot ad vissza, amelyet elmenthet, megjeleníthet, egy másik alkalmazásnak küldhet, vagy további feldolgozásra használhat.

A következő példa minden szövegkeretet vizsgál minden dián, megtalálja az összes matematikai részt, és minden egyenletet egy külön .tex fájlba ír:

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();
                    File latexFile = new File(latexFileName);
                    byte[] latexBytes = latexText.getBytes(StandardCharsets.UTF_8);
                    FileOutputStream outputStream = new FileOutputStream(latexFile);
                    try {
                        outputStream.write(latexBytes);
                    } finally {
                        outputStream.close();
                    }
                    equationNumber++;
                }
            }
        }
    }
} finally {
    presentation.dispose();
}

SlideUtil.getAllTextBoxes visszaadja a dián megtalált összes szövegkeretet. Az IMathPortion típusellenőrzés elkülöníti 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 visszakapott karakterláncot az alkalmazásában használt LaTeX motorral. Ha egy szimbólumnak vagy Office Math elemnek nincs megfelelő ábrázolása az adott környezetben, cserélje le a visszakapott karakterláncban egy projektspecifikus parancsra, 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 megírják a kódot bizonyos egyenletformátumokhoz, például a LaTeX‑hez, nehezebben tudnak MathML kódot írni, mivel az utóbbit alkalmazásoknak automatikusan kell generálniuk. A programok könnyen olvassák és elemezhetik a MathML‑t, mert a kódja XML‑ben van, így a MathML gyakran használt kimeneti és nyomtatási formátum sok területen.

Ez a példa kód megmutatja, hogyan exportálhat egy matematikai egyenletet egy bemutatóból MathML‑be:

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();
}

GYIK

Pontosan mi exportálódik MathML‑be – egy bekezdés vagy egy egyedi képletblokk?

Exportálhat akár egy teljes matematikai bekezdést (MathParagraph), akár egy egyedi blokkokat (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, nem pedig hagyományos szöveg vagy kép?

Egy képlet egy MathPortion‑ben él, és rendelkezik egy MathParagraph‑val. A képek és a szokásos szövegrészek, amelyeknek nincs [MathParagraph]‑juk, 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 prezentációs részhalmazá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 ezek az objektumok olyan szövegrészeket tartalmaznak, amelyek rendelkeznek [MathParagraph]‑sal (azaz valódi PowerPoint képletek), akkor exportálásra kerülnek. 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.