Renderize fórmulas e equações matemáticas do LaTeX em Java

Podemos incorporar fórmulas e equações matemáticas no arquivo TeX. O LaTeX usa o arquivo TeX como um documento fonte que contém um conjunto de comandos. Esses comandos especificam o formato do documento, incluindo texto, símbolos, expressões matemáticas e gráficos. Podemos escrever e renderizar qualquer tipo de equações e fórmulas matemáticas programaticamente sem usar LaTeX. Neste artigo, aprenderemos como renderizar fórmulas e equações matemáticas LaTeX em Java.

Os seguintes tópicos serão abordados neste artigo:

API Java para renderizar fórmulas e equações matemáticas LaTeX

Para renderizar fórmulas matemáticas em LaTeX, usaremos a API Aspose.TeX for Java. Ele fornece a classe PngMathRendererOptions para especificar as opções de renderização para salvar a fórmula matemática como PNG. Da mesma forma, ele também fornece a classe SvgMathRendererOptions para especificar as opções de renderização para salvar a fórmula matemática como um SVG. Além disso, para renderização de fórmulas matemáticas, ele fornece classes PngMathRenderer e SvgMathRenderer derivadas da classe MathRenderer. O método render() desta classe renderiza a fórmula matemática fornecida. Além disso, a API também permite a composição de arquivos TeX para diferentes formatos de arquivo como PDF, XPS ou imagens.

Faça o download do JAR da API ou adicione a seguinte configuração pom.xml em um aplicativo Java baseado em Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-tex</artifactId>
    <version>22.4</version>
    <type>jar</type>
</dependency>

Renderize fórmulas matemáticas LaTeX como PNG usando Java

Podemos renderizar fórmulas ou equações matemáticas em linha simples seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe PngMathRendererOptions.
  2. Em seguida, especifique a imagem resoluções, como 150 DPI.
  3. Em seguida, especifique o preâmbulo do documento LaTeX.
  4. Opcionalmente, defina várias propriedades, como Escala, TextColor, BackgroundColor, etc.
  5. Depois disso, crie o fluxo de saída para a imagem da fórmula.
  6. Por fim, chame o método render() para renderizar a fórmula. Ele usa a sequência de fórmulas, fluxo, opções de renderização e o tamanho da imagem de saída como argumentos.

O exemplo de código a seguir mostra como renderizar uma fórmula matemática como PNG programaticamente usando Java.

// Este exemplo de código demonstra como renderizar fórmulas e equações matemáticas como PNG
// Criar opções de renderização PNG
PngMathRendererOptions options = new PngMathRendererOptions();

// Especifique a resolução da imagem 150 dpi
options.setResolution(150);

// Especifique o preâmbulo.
options.setPreamble("\\usepackage{amsmath}\n"
    + "\\usepackage{amsfonts}\n"
    + "\\usepackage{amssymb}\n"
    + "\\usepackage{color}");

// Especifique o fator de escala 300%.
options.setScale(3000);

// Especifique a cor do primeiro plano.
options.setTextColor(Color.BLACK);

// Especifique a cor de fundo.
options.setBackgroundColor(Color.WHITE);

// Especifique o fluxo de saída para o arquivo de log.
options.setLogStream(new ByteArrayOutputStream());

// Especifique se deseja mostrar a saída do terminal no console ou não.
options.showTerminal(true);

// A variável na qual as dimensões da imagem resultante serão gravadas.
com.aspose.tex.Size2D size = new com.aspose.tex.Size2D.Float();

// Crie o fluxo de saída para a imagem da fórmula.
final OutputStream stream = new FileOutputStream("D:\\Files\\Tex\\simple-formula.png");

// Renderizar como PNG
PngMathRenderer mathRenderer = new PngMathRenderer();
mathRenderer.render("This is a sample formula $f(x) = x^2$ example.", stream, options, size);

// Mostrar outros resultados.
System.out.println(options.getErrorReport());
System.out.println();
System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
Renderize fórmulas matemáticas LaTeX como PNG usando Java.

Renderize fórmulas matemáticas LaTeX como PNG usando Java

Renderize equações complexas usando Java

Podemos renderizar quaisquer equações ou fórmulas complexas seguindo as etapas mencionadas anteriormente. No entanto, só precisamos definir a string da fórmula na etapa 5, conforme mostrado abaixo:

mathRenderer.render("\\begin{equation*}"
		+ "(1+x)^n = 1 + nx + \\frac{n(n-1)}{2!}x^{\\color{red}2}"
		+ "+ \\frac{n(n-1)(n-2)}{3!}x^{\\color{red}3}"
                + "+ \\frac{n(n-1)(n-2)(n-3)}{4!}x^{\\color{red}4}" 
                + "+ \\cdots"
                + "\\end{equation*}", stream, options, size);
Renderize equações complexas usando Java

Renderize equações complexas usando Java

Exibir equações longas usando Java

Podemos exibir equações longas em várias linhas seguindo as etapas mencionadas anteriormente. No entanto, só precisamos definir a string da fórmula na etapa 5, conforme mostrado abaixo:

mathRenderer.render("\\begin{multline*}"
		+ "p(x) = 3x^6 + 14x^5y + 590x^4y^2 + 19x^3y^3\\\\"
		+ "- 12x^2y^4 - 12xy^5 + 2y^6 - a^3b^3"
		+ "\\end{multline*}", stream, options, size); 
Exibir equações longas usando Java.

Exibir equações longas usando Java.

Alinhar várias equações usando Java

Também podemos alinhar e renderizar várias equações ou fórmulas de uma só vez seguindo as etapas mencionadas anteriormente. No entanto, só precisamos definir a string da fórmula na etapa 5, conforme mostrado abaixo:

mathRenderer.render("\\begin{align}"
		+ "f(u) & =\\sum_{j=1}^{n} x_jf(u_j)\\\\"
		+ "& =\\sum_{j=1}^{n} x_j \\sum_{i=1}^{m} a_{ij}v_i\\\\"
		+ "& =\\sum_{j=1}^{n} \\sum_{i=1}^{m} a_{ij}x_jv_i"
		+ "\\end{align}", stream, options, size);
Alinhar várias equações usando Java.

Alinhar várias equações usando Java.

Equações de grupo e centro usando Java

Podemos agrupar e centralizar várias equações durante a renderização seguindo as etapas mencionadas anteriormente. No entanto, só precisamos definir a string da fórmula na etapa 5, conforme mostrado abaixo:

mathRenderer.render("\\begin{gather*}"
		+ "2x - 5y =  8 \\\\"
		+ "3x^2 + 9y =  3a + c\\\\"
		+ "(a-b) = a^2 + b^2 -2ab"
		+ "\\end{gather*}", stream, options, size);
Equações de grupo e centro usando Java.

Equações de grupo e centro usando Java.

Renderizar parênteses e colchetes usando Java

Também podemos renderizar parênteses e colchetes seguindo as etapas mencionadas anteriormente. No entanto, só precisamos definir a string da fórmula na etapa 5, conforme mostrado abaixo:

mathRenderer.render("\\begin{document}"
	     + "\["
	     + " \\left[  \\frac{ N } { \\left( \\frac{L}{p} \\right)  - (m+n) }  \\right]"
	     + "\]"
	     + "\\end{document}", stream, options, size);
Renderize parênteses e colchetes usando Java.

Renderize parênteses e colchetes usando Java.

Matrizes em LaTeX usando Java

Da mesma forma, podemos renderizar matrizes seguindo os passos mencionados anteriormente. No entanto, só precisamos definir a string da fórmula na etapa 5, conforme mostrado abaixo:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\left \\{"
	            + "\\begin{tabular}{ccc}"
	            + "  1 & 4 & 7 \\\\"
	            + "  2 & 5 & 8 \\\\"
	            + "  3 & 6 & 9 "
	            + "\\end{tabular}"
	            + "\\right \\}"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Matrizes em LaTeX usando Java.

Matrizes em LaTeX usando Java.

Renderize frações e binômios usando Java

Também podemos renderizar frações e binômios seguindo as etapas mencionadas anteriormente. No entanto, só precisamos definir a string da fórmula na etapa 5, conforme mostrado abaixo:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\binom{n}{k} = \\frac{n!}{k!(n-k)!}"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Renderize frações e binômios usando Java.

Renderize frações e binômios usando Java.

Operadores matemáticos em LaTeX usando Java

Os símbolos dos operadores matemáticos representam várias funções matemáticas como log, cos, sin, etc. Podemos renderizar funções trigonométricas e logaritmos em LaTeX seguindo os passos mencionados anteriormente. No entanto, só precisamos definir a string da fórmula na etapa 5, conforme mostrado abaixo:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\sin(a + b) = \\sin a \\cos b + \\cos b \\sin a"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Operadores matemáticos em LaTeX usando Java.

Operadores matemáticos em LaTeX usando Java.

Renderize fórmulas matemáticas LaTeX em SVG usando Java

Também podemos salvar as fórmulas ou equações matemáticas renderizadas no formato de imagem SVG seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe SvgMathRendererOptions.
  2. Em seguida, especifique o preâmbulo do documento LaTeX.
  3. Opcionalmente, defina várias propriedades, como Escala, TextColor, BackgroundColor, etc.
  4. Depois disso, crie o fluxo de saída para a imagem da fórmula.
  5. Por fim, chame o método render() para renderizar a fórmula. Ele usa a sequência de fórmulas, fluxo, opções de renderização e o tamanho da imagem de saída como argumentos.

O exemplo de código a seguir mostra como renderizar uma fórmula matemática em uma imagem SVG usando Java.

// Este exemplo de código demonstra como renderizar fórmulas e equações matemáticas como SVG
// Criar opções de renderização SVG
SvgMathRendererOptions options = new SvgMathRendererOptions();

// Especifique o preâmbulo.
options.setPreamble("\\usepackage{amsmath}\n"
    + "\\usepackage{amsfonts}\n"
    + "\\usepackage{amssymb}\n"
    + "\\usepackage{color}");

// Especifique o fator de escala 300%.
options.setScale(3000);

// Especifique a cor do primeiro plano.
options.setTextColor(Color.BLACK);

// Especifique a cor de fundo.
options.setBackgroundColor(Color.WHITE);

// Especifique o fluxo de saída para o arquivo de log.
options.setLogStream(new ByteArrayOutputStream());

// Especifique se deseja mostrar a saída do terminal no console ou não.
options.showTerminal(true);

// A variável na qual as dimensões da imagem resultante serão gravadas.
com.aspose.tex.Size2D size = new com.aspose.tex.Size2D.Float();

// Crie o fluxo de saída para a imagem da fórmula.
final OutputStream stream = new FileOutputStream("D:\\Files\\Tex\\simple-math-rendering.svg");

// Renderizar como SVG
SvgMathRenderer mathRenderer = new SvgMathRenderer();
mathRenderer.render("\\begin{equation} \\label{eqn}"
    + "	E = {mc^2}"
    + "	\\end{equation}"
    + " The equation states mass equivalence relationship.", stream, options, size);

// Mostrar outros resultados.
System.out.println(options.getErrorReport());
System.out.println();
System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
Renderize fórmulas matemáticas LaTeX em SVG usando Java.

Renderize fórmulas matemáticas LaTeX em SVG usando Java.

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para experimentar a biblioteca sem limitações de avaliação.

Conclusão

Neste artigo, aprendemos como:

  • renderizar fórmulas e equações matemáticas simples e complexas em Java;
  • alinhar e agrupar equações programaticamente;
  • renderizar matrizes, parênteses, colchetes, frações e binômios;
  • salve as imagens da fórmula renderizada em PNG ou SVG usando Java.

Além disso, você pode aprender mais sobre o Aspose.TeX for Java API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também