Formule matematiche in LaTeX rendering | Java
Come rendere una formula matematica in LaTeX a png
In effetti, il modo più semplice per dimostrare la funzione di rendering della formula di matematica ** Latex è iniziare con l’esempio. Ecco qui:
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}
Arriviamo ai dettagli. Prima di tutto, creiamo un’istanza di rendering options, simile alla composizione Tex/Latex. Lo facciamo qui contemporaneamente specificando la risoluzione dell’immagine di output.
Successivamente, specifichiamo il preambolo. Il preambolo predefinito è:
1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}
che fornisce supporto per la formula matematica leggermente più avanzata rispetto al LaTeX di base. Ad esempio, puoi aggiungere il pacchetto Color
se si desidera utilizzare il tuo evidenziazione nella formula, come abbiamo mostrato nell’esempio del codice.
Quindi istruiamo il rendering di ridimensionare l’output del 300%.
Le prossime due opzioni definiscono il primo piano e i colori di sfondo. Quelle parti della formula che non sono coperte (“colorate”) dall’evidenziazione personalizzata verranno visualizzate nel colore TextColor
.
La riga successiva dell’esempio non ha molto senso. Dimostra solo che è possibile indirizzare l’output del registro su un flusso.
E l’ultima opzione showterminal
consente di attivare la scrittura dell’output del terminale sulla console.
Il metodo che esegue effettivamente il rendering è MathRender.Render(). Restituisce le dimensioni della formula in punti.
Il flusso in cui l’immagine deve essere scritta è accettato dal metodo come secondo argomento. Creiamo il flusso dopo.
E infine, chiamiamo il metodo mathrenderer.render()
, passando le opzioni come terzo argomento. Il codice LaTeX della formula viene approvato come primo argomento.
Le ultime righe dell’esempio stampano due artefatti del rendering della formula matematica: le dimensioni della formula e il breve rapporto di errore (nel caso in cui vi fossero errori).
Ecco il risultato del rendering.
Questo è il caso d’uso più generale per il rendering Latex Math Formula.
È inoltre possibile controllare la app Web gratuita in base alla funzionalità implementata all’interno dell’API Aspose.TeX per .NET. Qui è la pagina della versione Java.
Come rendere una formula matematica in LaTeX a SVG
Allo stesso modo, possiamo rendere una formula matematica in LaTeX al 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}
Le differenze sono:
- Usiamo la classe svgmathrendereroptions anziché pngmathrendereroptions.
- Non specifichiamo la risoluzione.
- Usiamo la classe svgmathrender invece di pngmathrender.
Ecco il risultato:
Puoi anche controllare la app Web gratuita in base alla funzionalità implementata all’interno di Aspose.TeX per API .NET.