Fórmulas de matemática de LaTeX Renderização | C ++
A seção de referência da API relacionada a este tópico é aqui. De fato, a maneira mais fácil de demonstrar o recurso de renderização de fórmula matemática do LATEX é começar com o exemplo. Aqui está:
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 }
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 é tomada 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 é passado como uma string durante 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).
Este é o caso de uso mais geral para a renderização de fórmula matemática do LATEX.
Você também pode conferir o [aplicativo web] gratuito (4) construído com base no recurso implementado em Aspose.TeX para C ++ API.