Fórmulas de matemática de LaTeX Renderização | Java
Como renderizar uma fórmula de matemática de LaTeX para png
De fato, a maneira mais fácil de demonstrar o recurso de renderização de fórmula de matemática ** é começar com o exemplo. Aqui está:
1// Create rendering options setting the image resolution 150 dpi.
2PngMathRendererOptions options = new PngMathRendererOptions();
3options.setResolution(150);
4// Specify the preamble.
5options.setPreamble("\\usepackage{amsmath}\r\n\\usepackage{amsfonts}\r\n\\usepackage{amssymb}\r\n\\usepackage{color}");
6// Specify the scaling factor 300%.
7options.setScale(3000);
8// Specify the foreground color.
9options.setTextColor(Color.BLACK);
10// Specify the background color.
11options.setBackgroundColor(Color.WHITE);
12// Specify the output stream for the log file.
13options.setLogStream(new ByteArrayOutputStream());
14// Specify whether to show the terminal output on the console or not.
15options.showTerminal(true);
16
17// Create the output stream for the formula image.
18final OutputStream stream = new FileOutputStream(Utils.getOutputDirectory() + "math-formula.png");
19try {
20 // Run rendering.
21 com.aspose.tex.Size2D size = MathRenderer.render("\\begin{equation*}\r\n" +
22 "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2} + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\r\n" +
23 "\\end{equation*}", stream, options);
24
25 // Show other results.
26 System.out.println(options.getErrorReport());
27 System.out.println();
28 System.out.println("Size: " + size.getWidth() + "x" + size.getHeight()); // Dimensions of the resulting image.
29} finally {
30 if (stream != null)
31 stream.close();
32}
Vamos até os detalhes. Primeiro de tudo, criamos uma instância de renderização, semelhante à digitação Tex/LaTex. Fazemos isso aqui especificando simultaneamente a resolução da imagem de saída.
Em seguida, especificamos o preâmbulo. O preâmbulo padrão é:
1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}
que fornece suporte a fórmula matemática um pouco mais avançado do que o LaTeX básico. Você pode, por exemplo, adicionar o pacote color
se quiser usar seu próprio destaque na fórmula, como mostramos no exemplo do código.
Em seguida, instruímos o renderizador a escalar a saída em 300%.
As próximas duas opções definem as cores de primeiro plano e fundo. As partes da fórmula que não são cobertas (“coloridas”) pelo destaque personalizado serão exibidas na cor textColor
.
A próxima linha do exemplo não faz muito sentido. Ele apenas demonstra que você pode direcionar a saída de log para algum fluxo.
E a última opção showterminal
permite alternar a gravação da saída do terminal no console.
O método que realmente executa a renderização é MathRenderer.render(). Ele retorna o tamanho da fórmula em pontos.
O fluxo em que a imagem deve ser escrito é aceito pelo método como o segundo argumento. Criamos o fluxo a seguir.
E, finalmente, chamamos o próprio método de MathRenderer.render()
, passando as opções como o terceiro argumento. O código do LATEX da fórmula é aprovado como o primeiro argumento.
As últimas linhas do exemplo imprimem dois artefatos de renderização de fórmula matemática - o tamanho da fórmula e o breve relatório de erro (caso haja erros).
Aqui está o resultado da renderização.
Este é o caso de uso mais geral para fórmula de matemática de LaTeX renderização.
Você também pode conferir o [aplicativo da web] gratuito (4) construído com base no recurso implementado no Aspose.TeX para .NET API. Aqui é a página da versão Java.
Como renderizar uma fórmula de matemática de LaTeX para SVG
Da mesma maneira, podemos renderizar uma fórmula matemática de LaTeX ao formato SVG.
1// Create rendering options.
2MathRendererOptions options = new SvgMathRendererOptions();
3// Specify the preamble.
4options.setPreamble("\\usepackage{amsmath}\r\n\\usepackage{amsfonts}\r\n\\usepackage{amssymb}\r\n\\usepackage{color}");
5// Specify the scaling factor 300%.
6options.setScale(3000);
7// Specify the foreground color.
8options.setTextColor(Color.BLACK);
9// Specify the background color.
10options.setBackgroundColor(Color.WHITE);
11// Specify the output stream for the log file.
12options.setLogStream(new ByteArrayOutputStream());
13// Specify whether to show the terminal output on the console or not.
14options.showTerminal(true);
15
16// Create the output stream for the formula image.
17final OutputStream stream = new FileOutputStream(Utils.getOutputDirectory() + "math-formula.svg");
18try {
19 // Run rendering.
20 com.aspose.tex.Size2D size = new SvgMathRenderer().render("\\begin{equation*}\r\n" +
21 "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2} + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\r\n" +
22 "\\end{equation*}", stream, options, size);
23
24 // Show other results.
25 System.out.println(options.getErrorReport());
26 System.out.println();
27 System.out.println("Size: " + size.getWidth() + "x" + size.getHeight()); // Dimensions of the resulting image.
28} finally {
29 if (stream != null)
30 stream.close();
31}
As diferenças são:
- Utilizamos svgmathrenderoptions Classe em vez de pngmathrenderoptions.
- Não especificamos resolução.
- Utilizamos a classe svgmathrenderer em vez de pngmathrenderer.
Aqui está o resultado:
Você também pode conferir o [aplicativo web] gratuito (12) construído com base no recurso implementado em Aspose.TeX para .NET API.