Formule matematiche in LaTeX rendering | C ++
La sezione di riferimento API relativa a questo argomento è qui. In effetti, il modo più semplice per dimostrare la funzione di rendering della formula matematica in LaTeX è iniziare con l’esempio. Ecco qui:
1 // Create rendering options
2 System::SharedPtr<PngMathRendererOptions> options = System::MakeObject<PngMathRendererOptions>();
3 // Sspecify the image resolution 150 dpi
4 options->set_Resolution(150);
5 // Specify the preamble.
6 options->set_Preamble(u"\\usepackage{amsmath}\r\n\\usepackage{amsfonts}\r\n\\usepackage{amssymb}\r\n\\usepackage{color}");
7 // Specify the scaling factor 300%.
8 options->set_Scale(3000);
9 // Specify the foreground color.
10 options->set_TextColor(System::Drawing::Color::get_Black());
11 // Specify the background color.
12 options->set_BackgroundColor(System::Drawing::Color::get_White());
13 // Specify the output stream for the log file.
14 options->set_LogStream(System::MakeObject<System::IO::MemoryStream>());
15 // Specify whether to show the terminal output on the console or not.
16 options->set_ShowTerminal(true);
17
18 // Create the output stream for the formula image.
19 {
20 System::SharedPtr<System::IO::Stream> stream = System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, u"math-formula.png"), System::IO::FileMode::Create);
21 // Clearing resources under 'using' statement
22 System::Details::DisposeGuard<1> __dispose_guard_0({ stream});
23 // ------------------------------------------
24 try
25 {
26 System::Drawing::SizeF size = System::MakeObject<Features::PngMathRenderer>()->Render(u"\\begin{equation*}\r\ne^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\\end{equation*}", stream, options, size);
27
28 // Show other results.
29 System::Console::get_Out()->WriteLine(options->get_ErrorReport());
30 System::Console::get_Out()->WriteLine();
31 System::Console::get_Out()->WriteLine(System::String(u"Size: ") + size);
32 }
33 catch(...)
34 {
35 __dispose_guard_0.SetCurrentException(std::current_exception());
36 }
37 }
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 viene preso con il 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 superato come stringa attraverso il 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).
Questo è il caso d’uso più generale per il rendering della formula matematica in LaTeX.
È inoltre possibile controllare la app Web gratuita in base alla funzionalità implementata all’interno di Aspose.TeX per API C ++.