Відтворення математичних формул LaTeX | C++

Довідковий розділ API, пов’язаний із цією темою, знаходиться тут. Насправді, найпростіший спосіб продемонструвати функцію рендеринга математичних формул LaTeX — почати з прикладу. Ось воно:

 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    }

Перейдемо до деталей. Перш за все, ми створюємо екземпляр параметри візуалізації, подібний до набору TeX/LaTeX. Ми робимо це тут, одночасно вказуючи роздільну здатність вихідного зображення.

Далі уточнюємо преамбулу. Типова преамбула:

1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}

який забезпечує трохи розширенішу підтримку математичних формул, ніж базовий LaTeX. Ви можете, наприклад, додати пакет color, якщо хочете використовувати власне виділення у формулі, як ми показали у прикладі коду.

Потім ми наказуємо рендереру масштабувати вихід на 300%.

Наступні два параметри визначають кольори переднього плану та фону. Ті частини формули, які не охоплені («забарвлені») спеціальним виділенням, відображатимуться кольором «Колір тексту».

Наступний рядок прикладу не має особливого сенсу. Це просто демонструє, що ви можете спрямувати вихід журналу в якийсь потік.

І остання опція ShowTerminal дозволяє вам перемикати запис виводу терміналу на консоль.

Метод, який фактично виконує візуалізацію, це MathRenderer.Render(). Він повертає розмір формули в пунктах.

Потік, куди буде записано зображення, береться методом як другий аргумент. Далі створюємо потік.

І, нарешті, ми викликаємо сам метод MathRenderer.Render(), передаючи параметри як третій аргумент. Код LaTeX формули передається як рядок через перший аргумент.

Останні рядки прикладу друкують два артефакти відтворення математичної формули - розмір формули та короткий звіт про помилку (якщо помилки були).

Це найзагальніший варіант використання відтворення математичних формул LaTeX.

Ви також можете переглянути безкоштовну веб-програму, створену на основі функції, реалізованої в Aspose.TeX для C++ API.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.