Dodaj równania matematyczne do prezentacji PowerPoint w JavaScript

Przegląd

PowerPoint przechowuje równania jako Office Math Markup Language (OMML). Za pomocą Aspose.Slides for Node.js via Java możesz programowo tworzyć tego samego rodzaju zawartość matematyczną: ułamki, pierwiastki, funkcje, granice, operatory N-ary, macierze, tablice i sformatowane bloki matematyczne.

W PowerPoint użytkownicy zwykle dodają równania z Wstaw > Równanie:

Karta Wstaw w PowerPoint z wybranym poleceniem Równanie

Wynik to edytowalny tekst matematyczny na slajdzie:

Slajd PowerPoint zawierający edytowalne równanie matematyczne

Aspose.Slides buduje ten tekst matematyczny przy użyciu trzech głównych obiektów:

  • Kształt matematyczny, tworzony za pomocą addMathShape, jest kształtem, który zawiera równanie.
  • MathPortion przechowuje zawartość matematyczną w ramce tekstowej kształtu.
  • MathParagraph zawiera jeden lub więcej obiektów MathBlock.

Większość przykładów poniżej używa MathematicalText i płynnych metod z MathElementBase, aby kod był krótki i czytelny.

W scenariuszach eksportu MathML zobacz Export Math Equations from Presentations in Node.js via Java.

Utwórz równanie

Ten przykład tworzy kształt matematyczny i dodaje twierdzenie Pitagorasa:

Równanie c² = a² + b²

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 120);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let equation = new aspose.slides.MathematicalText("c")
            .setSuperscript("2")
            .join("=")
            .join(new aspose.slides.MathematicalText("a").setSuperscript("2"))
            .join("+")
            .join(new aspose.slides.MathematicalText("b").setSuperscript("2"));

    mathParagraph.add(equation);

    presentation.save("pythagorean-theorem.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Dodaj ułamki

Użyj divide aby utworzyć ułamek. Możesz wybrać styl ułamka za pomocą MathFractionTypes.

Ułamek matematyczny przedstawiający 1 podzielone przez x

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 100);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let fraction = new aspose.slides.MathematicalText("1")
            .divide("x", aspose.slides.MathFractionTypes.Skewed);

    mathParagraph.add(new aspose.slides.MathBlock(fraction));

    presentation.save("fraction.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Aby uzyskać ułamek warstwowy, użyj MathFractionTypes.Bar:

let stackedFraction = new aspose.slides.MathematicalText("x + 1").divide("y - 1", aspose.slides.MathFractionTypes.Bar);

Dodaj pierwiastki

Użyj radical aby utworzyć pierwiastek kwadratowy, sześcienny lub inny. Bieżący element staje się podstawą, a argument określa stopień.

Pierwiastek n-tego stopnia z x

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 100);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let radical = new aspose.slides.MathematicalText("x")
            .radical("n");

    mathParagraph.add(new aspose.slides.MathBlock(radical));

    presentation.save("radical.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Dodaj funkcje i granice

Użyj asArgumentOfFunction lub function aby dodać funkcje takie jak sin(x), log(x) lub własne nazwy funkcji. Dla granic umieść lim w MathLimit lub użyj setLowerLimit.

Granica x, gdy x dąży do nieskończoności

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 100);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let limit = new aspose.slides.MathematicalText("lim")
            .setLowerLimit("x\u2192\u221E")
            .function("x");

    mathParagraph.add(new aspose.slides.MathBlock(limit));

    presentation.save("functions-and-limits.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Aby użyć własnej nazwy funkcji, ustaw nazwę funkcji jako bieżący element:

let customFunction = new aspose.slides.MathematicalText("f").function("x + 1");

Dodaj operatory N-ary i całki

Użyj nary aby dodać sumy, unie, przecięcia i inne duże operatory. Użyj integral aby dodać całki. Obie metody pozwalają ustawić dolne i górne granice.

Sumowanie z dolną i górną granicą

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 120);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let summationBase = new aspose.slides.MathematicalText("x")
            .setSuperscript("k")
            .join(new aspose.slides.MathematicalText("a").setSuperscript("n-k"));

    let summation = summationBase.nary(aspose.slides.MathNaryOperatorTypes.Summation, "k=0", "n");

    mathParagraph.add(new aspose.slides.MathBlock(summation));

    presentation.save("nary-operators.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Operatory N-ary służą do dużych operatorów z opcjonalnymi granicami. Proste operatory takie jak +, - i = są zazwyczaj dodawane jako MathematicalText i łączone w wyrażeniu.

Aby dodać całkę, użyj integral:

let integralBase = new aspose.slides.MathematicalText("x").join(new aspose.slides.MathematicalText("dx").toBox());
let integral = integralBase.integral(aspose.slides.MathIntegralTypes.Simple, "0", "1");

Dodaj macierze

Użyj MathMatrix aby określić wiersze i kolumny. Macierze domyślnie nie zawierają nawiasów, więc otaczaj macierz, gdy potrzebujesz nawiasów okrągłych, kwadratowych lub klamrowych.

Matematyczna macierz o dwóch wierszach z jedną pustą komórką

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 120);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let matrix = new aspose.slides.MathMatrix(2, 3);
    matrix.set_Item(0, 0, new aspose.slides.MathematicalText("1"));
    matrix.set_Item(0, 1, new aspose.slides.MathematicalText("x"));
    matrix.set_Item(1, 0, new aspose.slides.MathematicalText("x"));
    matrix.set_Item(1, 1, new aspose.slides.MathematicalText("2"));
    matrix.set_Item(1, 2, new aspose.slides.MathematicalText("y"));

    mathParagraph.add(new aspose.slides.MathBlock(matrix));

    presentation.save("matrix.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Dodaj tablice równań

Użyj toMathArray gdy potrzebujesz wyrównanych równań lub pionowego stosu wyrażeń.

Pionowa tablica matematyczna z x nad y

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 140);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let equationArray = new aspose.slides.MathematicalText("x")
            .join("y")
            .toMathArray();

    mathParagraph.add(new aspose.slides.MathBlock(equationArray));

    presentation.save("equation-array.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Dodaj funkcje trygonometryczne

Użyj asArgumentOfFunction gdy argument jest bieżącym elementem, a nazwa funkcji jest znana.

Funkcja trygonometryczna cos zastosowana do 2x

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 100);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let cosine = new aspose.slides.MathematicalText("2x")
            .asArgumentOfFunction(aspose.slides.MathFunctionsOfOneArgument.Cos);

    mathParagraph.add(new aspose.slides.MathBlock(cosine));

    presentation.save("trigonometric-function.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Dodaj indeksy dolne i górne

Użyj pomocników dla indeksów dolnych i górnych, aby dodać indeksy i potęgi. Gdy indeksy muszą znajdować się po lewej stronie podstawy, użyj setSubSuperscriptOnTheLeft.

Wielka litera Y z lewostronnym indeksem dolnym 1 i górnym n

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 100);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let scripts = new aspose.slides.MathematicalText("Y")
            .setSubSuperscriptOnTheLeft("1", "n");

    mathParagraph.add(new aspose.slides.MathBlock(scripts));

    presentation.save("subscript-superscript.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Dodaj delimitery

Użyj enclose aby umieścić wyrażenie wewnątrz delimiterów. Możesz również ustawić znak separatora dla wyrażeń delimiterowych zawierających kilka elementów.

Wyrażenie delimiterowe zawierające x, y i z oddzielone pionowymi kreskami

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 100);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let delimiter = new aspose.slides.MathematicalText("x")
            .join("y")
            .join("z")
            .enclose(java.newChar('<'), java.newChar('>'));
    delimiter.setSeparatorCharacter(java.newChar('|'));

    mathParagraph.add(new aspose.slides.MathBlock(delimiter));

    presentation.save("delimiters.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Dodaj ramkę

Użyj toBorderBox gdy samo równanie powinno być obramowane.

Równanie w ramce pokazujące a² równa się b² + c²

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 100);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let boxedEquation = 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"))
            .toBorderBox();

    mathParagraph.add(new aspose.slides.MathBlock(boxedEquation));

    presentation.save("border-box.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Grupuj wyrazy

Użyj group aby umieścić znak grupujący nad lub pod wyrażeniem. Dodaj limit, aby oznaczyć pogrupowane wyrazy.

Wyrażenie x + y pogrupowane z etykietą dowolny tekst poniżej

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 120);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let grouped = new aspose.slides.MathematicalText("x + y")
            .group(java.newChar('\u23DF'), aspose.slides.MathTopBotPositions.Bottom, aspose.slides.MathTopBotPositions.Top)
            .setLowerLimit("any text");

    mathParagraph.add(new aspose.slides.MathBlock(grouped));

    presentation.save("grouped-terms.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Formatuj elementy matematyczne

Używaj pomocników formatowania tylko tam, gdzie wyjaśniają one formułę. Na przykład overbar umieszcza kreskę nad elementem matematycznym.

Wyrażenie matematyczne ABC z kreską nad nim

let presentation = new aspose.slides.Presentation();
try {
    let slide = presentation.getSlides().get_Item(0);

    let mathShape = slide.getShapes().addMathShape(20, 20, 700, 100);
    let mathParagraph = mathShape.getTextFrame().getParagraphs()
            .get_Item(0).getPortions().get_Item(0).getMathParagraph();

    let overbar = new aspose.slides.MathematicalText("ABC").overbar();

    mathParagraph.add(new aspose.slides.MathBlock(overbar));

    presentation.save("overbar.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Szybkie odniesienie

Zadanie Główne API
Utwórz tekst matematyczny MathematicalText
Połącz elementy join
Utwórz ułamki divide
Dodaj indeks górny lub dolny setSuperscript, setSubscript
Dodaj funkcje function, asArgumentOfFunction
Dodaj pierwiastki radical
Dodaj granice setLowerLimit, setUpperLimit
Dodaj skrypty po lewej stronie setSubSuperscriptOnTheLeft
Dodaj sumy i całki nary, integral
Dodaj macierze MathMatrix
Dodaj tablice równań toMathArray
Dodaj delimitery enclose
Dodaj kreski i obramowania overbar, toBorderBox
Grupuj wyrazy group

FAQ

Czy mogę edytować istniejące równanie PowerPoint?

Tak. Otwórz prezentację, znajdź kształt zawierający MathPortion, pobierz jego MathParagraph i zaktualizuj bloki matematyczne w tym paragrafie.

Czy równania są zapisywane jako edytowalna matematyka PowerPoint?

Tak. Przy zapisie do PPTX, Aspose.Slides zapisuje równanie jako edytowalną treść Office Math.

Czy mogę wyeksportować równania do LaTeX?

Aspose.Slides eksportuje równania matematyczne do MathML. Jeśli potrzebujesz LaTeX, najpierw wyeksportuj do MathML, a następnie przekonwertuj MathML przy pomocy narzędzia obsługującego docelowy dialekt LaTeX.