Representación de fórmulas matemáticas LaTeX | Java
Cómo renderizar una fórmula matemática LaTeX a PNG
De hecho, la forma más sencilla de demostrar la función de representación de fórmula matemática LaTeX es comenzar con el ejemplo. Aquí lo tienes:
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}
Vayamos a los detalles. En primer lugar, creamos una instancia de opciones de renderizado, similar a la composición tipográfica TeX/LaTeX. Lo hacemos aquí especificando simultáneamente la resolución de la imagen de salida.
A continuación, especificamos el preámbulo. El preámbulo predeterminado es:
1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}
que proporciona un soporte de fórmulas matemáticas ligeramente más avanzado que el LaTeX básico. Puede, por ejemplo, agregar el paquete color
si desea utilizar su propio resaltado en la fórmula, como mostramos en el ejemplo de código.
Luego le indicamos al renderizador que escale la salida en un 300%.
Las siguientes dos opciones definen los colores de primer plano y de fondo. Aquellas partes de la fórmula que no estén cubiertas (“coloreadas”) por el resaltado personalizado se mostrarán en el color “TextColor”.
La siguiente línea del ejemplo no tiene mucho sentido. Simplemente demuestra que puede dirigir la salida del registro a alguna secuencia.
Y la última opción ShowTerminal
le permite alternar la escritura de la salida del terminal en la consola.
El método que realmente realiza la renderización es MathRenderer.render(). Devuelve el tamaño de la fórmula en puntos.
El método acepta la secuencia donde se escribirá la imagen como segundo argumento. Creamos la secuencia a continuación.
Y finalmente, llamamos al método MathRenderer.render()
, pasando opciones como tercer argumento. El código LaTeX de la fórmula se pasa como primer argumento.
Las últimas líneas del ejemplo imprimen dos artefactos de la representación de fórmulas matemáticas: el tamaño de la fórmula y el breve informe de errores (en caso de que haya errores).
Aquí está el resultado del renderizado.
Este es el caso de uso más general para la representación de fórmulas matemáticas LaTeX.
También puede consultar la aplicación web gratuita creada en función de la función implementada dentro de la API Aspose.TeX para .NET. Aquí es la página de la versión de Java.
Cómo renderizar una fórmula matemática LaTeX a SVG
De la misma manera, podemos representar una fórmula matemática de LaTeX en 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}
Las diferencias son:
- Usamos la clase SvgMathRendererOptions en lugar de PngMathRendererOptions.
- No especificamos resolución.
- Usamos la clase SvgMathRenderer en lugar de PngMathRenderer.
Aquí está el resultado:
También puede consultar la aplicación web gratuita creada en función de la función implementada en Aspose.TeX para .NET API.