Создание фигур документов с помощью LaTeX

Рендеринг текста, таблиц и графики LaTeX в формате PNG или SVG с использованием C++.

 

LaTeX, известная как система набора текста, выделяется как высоко ценимый инструмент для создания рисунков, предназначенных для публикаций. Его особенности и преимущества делают его оптимальным выбором для подобных задач, и вот почему:

  • Высококачественная типографика: LaTeX обеспечивает точный контроль над шрифтами, межсимвольным интервалом, разрывами строк и общим макетом, гарантируя, что полученные фигуры будут иметь высококачественный вид.
  • Математический набор. Эта система, изначально разработанная для математического набора текста, превосходно справляется с эффективной работой со сложными математическими уравнениями и символами.
  • LaTeX в первую очередь работает с векторной графикой, обеспечивая масштабируемость ваших рисунков без ущерба для качества. Такая графика не зависит от разрешения, что особенно полезно для научных или технических иллюстраций.
  • Согласованность с документом. Поскольку LaTeX — это система подготовки документов, вы можете без труда поддерживать единый стиль и форматирование всех рисунков, обеспечивая целостный вид всего документа.

Таким образом, LaTeX предлагает надежную основу для создания рисунков, обеспечивая исключительную типографику, математический набор текста, масштабируемость, согласованность в масштабах всего документа, воспроизводимость, контроль версий, интеграцию с пакетами и возможности автоматизации.

В решении Aspose.TeX API, помимо других функций, имеется возможность обрезать и отображать любой фрагмент LaTeX, представляющий фигуру в формате PNG или SVG. Ниже вы найдете фрагмент кода, демонстрирующий эти операции, а результат сохраняется в формате PNG. Дополнительные примеры кода можно найти здесь.

Для запуска примеров нам понадобится:

  • API Aspose.TeX for C++ — многофункциональный, мощный и простой в использовании API обработки и преобразования документов для платформы C++.
  • Откройте диспетчер пакетов NuGet, найдите Aspose.TeX и установите его. Вы также можете использовать следующую команду из консоли диспетчера пакетов:

Package Manager Console Command

PM> Install-Package Aspose.TeX

Действия по рендерингу фигур LaTeX в SVG C++

Фрагмент кода демонстрирует, как использовать API рендеринга фигур Aspose.TeX для создания изображения математической диаграммы. Вот порядок:

  1. Создайте экземпляр класса SvgFigureRendererOptions .
  2. Укажите свойство Preamble объекта параметров.
  3. Установите коэффициент масштабирования и цвет фона.
  4. Настройте объект MemoryStream для захвата выходных данных журнала, созданных в процессе рендеринга. Назначьте этот поток свойству LogStream. Если для свойства ShowTerminal установлено значение true, вывод терминала будет отображаться на консоли.
  5. Используйте объект класса System.Drawing.SizeF для хранения размеров результирующего изображения. Затем создайте файловый поток для сохранения выходного изображения.
  6. Создайте экземпляр класса SvgFigureRenderer и запустите процесс рендеринга, вызвав метод Render()».
  7. Получите отчет об ошибке и размер выходного изображения.
Пример кода C++: рендеринг иллюстрации в SVG
LaTeX Fragment
LaTeX Preamble
Output Format
Select the target format
                
// Create rendering options.
System::SharedPtr<Features::SvgMathRendererOptions> options = System::MakeObject<Features::SvgMathRendererOptions>();
// Specify the preamble.
options->set_Preamble("\usepackage{pict2e}");
// Specify the background color.
options->set_BackgroundColor(System::Drawing::Color:get_White());
// Specify the output stream for the log file.
options.set_LogStream(new System::IO::MemoryStream());
// Specify whether to show the terminal output on the console or not.
options.set_ShowTerminal(true);

// Create the output stream for the formula image.
System::SharedPtr<System::IO::Stream> stream = System::IO::File::Open(
    System::IO::Path::Combine(RunExamples::OutputDirectory, u"math-formula.png"), System::IO::FileMode::Create);
// Clearing resources under 'using' statement
System::Details::DisposeGuard<1> __dispose_guard_0({ stream });
try
{
    // Run rendering.
    System::MakeObject<Features::SvgFigureRenderer>()->Render(
    "\setlength{\unitlength}{0.8cm}\r\n" +
"\begin{picture}(6,5)\r\n" +
"\thicklines\r\n" +
"\put(1,0.5){\line(2,1){3}} \put(4,2){\line(-2,1){2}} \put(2,3){\line(-2,-5){1}}\r\n" +
"\put(0.7,0.3){$A$} \put(4.05,1.9){$B$} \put(1.7,2.95){$C$}\r\n" +
"\put(3.1,2.5){$a$} \put(1.3,1.7){$b$} \put(2.5,1.05){$c$}\r\n" +
"\put(0.3,4){$F=\sqrt{s(s-a)(s-b)(s-c)}$} \put(3.5,0.4){$\displaystyle s:=\frac{a+b+c}{2}$}\r\n" +
"\end{picture}",
    stream, options);
}
catch(...)
{
    __dispose_guard_0.SetCurrentException(std::current_exception());
}

// Show other results.
System::Console::get_Out()->WriteLine(options->get_ErrorReport());
System::Console::get_Out()->WriteLine();
System::Console::get_Out()->WriteLine(System::String(u"Size: ") + size);

            

LaTeX Формат файла LaTeX

LaTeX — это формат TeX, если говорить кратко. Файлы LaTeX представляют собой простые текстовые файлы в кодировке ASCII, написанные на собственном языке разметки. Они могут потребовать включения других данных, таких как изображения и/или другие файлы LaTeX. LaTeX может предоставить вам множество расширенных функций для создания таблиц, включения графики, написания математических уравнений, различных формул и т. д. Все эти функции доступны в так называемых пакетах.