Візуалізація фігур LaTeX | Aspose.TeX для Python
У певних ситуаціях вам може знадобитися витягти певний вміст із файлу LaTeX як окрему відтворену частину, яку зазвичай називають фігурою, без будь-якого зв’язку з макетом сторінки. Це може стати в нагоді, наприклад, при створенні ілюстрацій для інтернет-видання. Наш API дозволяє вам це зробити. Цільовими форматами для візуалізації фігур є PNG і SVG, як і у функції рендеринга математичних формул LaTeX. Варто зазначити, що Відтворення фігур LaTeX є більш загальною функцією порівняно з Відтворенням математичних формул LaTeX.
Відтворення фігури LaTeX у форматі PNG
Якщо потрібно, спочатку подивіться довідковий розділ API для цієї теми. Подібно до відтворення формули, ми почнемо з прикладу. Ось воно:
1# Create rendering options setting the image resolution to 150 dpi.
2options = PngFigureRendererOptions()
3options.resolution = 150 # Specify the preamble.
4options.preamble = r"\usepackage{pict2e}"
5# Specify the scaling factor 300%.
6options.scale = 3000
7# Specify the background color.
8options.background_color = Color.white
9# Specify the output stream for the log file.
10options.log_stream = BytesIO()
11# Specify whether to show the terminal output on the console or not.
12options.show_terminal = True
13
14# Create the output stream for the figure image.
15with open(path.join(Util.output_directory, "text-and-formula.png"), "wb") as stream:
16 # Run rendering.
17 size = PngFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
18\begin{picture}(6,5)
19\thicklines
20\put(1,0.5){\line(2,1){3}} \put(4,2){\line(-2,1){2}} \put(2,3){\line(-2,-5){1}} \put(0.7,0.3){$A$} \put(4.05,1.9){$B$} \put(1.7,2.95){$C$}
21\put(3.1,2.5){$a$} \put(1.3,1.7){$b$} \put(2.5,1.05){$c$} \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}$}
22\end{picture}""", stream, options)
23
24# Show other results.
25print(options.error_report)
26print()
27print(f"Size: {size.width}x{size.height}")
Для початку ми створюємо екземпляр класу LaTeX figure renderer options, де ми одночасно вказуємо роздільну здатність вихідного зображення.
Далі нам потрібно вказати преамбулу. На відміну від відтворення математичних формул LaTeX, для відтворення фігур у LaTeX немає преамбули за замовчуванням. Тому, якщо ви плануєте рендерити графіку, створену за допомогою, наприклад, пакета pict2e
LaTeX, вам потрібно буде вказати це у преамбулі:
1\usepackage{pict2e}
Потім ми наказуємо рендереру масштабувати вихід на 300%.
Наступний параметр визначає колір фону. На відміну від відтворення математичних формул, нам не потрібно вказувати колір переднього плану, оскільки ми припускаємо, що кольори повністю контролюються кодом LaTeX. Подібним чином колір фону також контролюється кодом LaTeX, тому цей параметр надається просто для зручності.
Наступний рядок у прикладі може бути незначним. Він просто призначений для демонстрації того, що у вас є можливість спрямувати вихід журналу до певного потоку.
Останній параметр, ShowTerminal
, дозволяє контролювати, чи слід відображати вихідні дані терміналу на консолі.
Метод, відповідальний за рендеринг фігури, це FigureRenderer.render(). Він повертає розмір фігури в пунктах.
Метод приймає потік як другий аргумент, який є потоком, куди буде записано зображення. Ми створюємо потік у наступному рядку.
Нарешті, ми викликаємо сам метод FigureRenderer.render()
, передаючи параметри як третій аргумент. Код LaTeX малюнка надається як перший аргумент.
Кілька останніх рядків прикладу відображають дві частини інформації, пов’язані з рендерингом фігури – розмір фігури та короткий звіт про помилку (якщо є помилки).
Ось результат візуалізації.
Це найбільш загальний варіант використання функції Відтворення фігурок LaTeX.
Відтворення фігури LaTeX у SVG
Так само ми можемо відобразити фігуру LaTeX у форматі SVG.
1# Create rendering options.
2options = SvgFigureRendererOptions()
3# Specify the preamble.
4options.preamble = r"\usepackage{pict2e}"
5# Specify the scaling factor 300%.
6options.scale = 3000
7# Specify the background color.
8options.background_color = Color.white
9# Specify the output stream for the log file.
10options.log_stream = BytesIO()
11# Specify whether to show the terminal output on the console or not.
12options.show_terminal = True
13
14# Create the output stream for the figure image.
15with open(path.join(Util.output_directory, "text-and-formula.svg"), "wb") as stream:
16 # Run rendering.
17 size = SvgFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
18\begin{picture}(6,5)
19\thicklines
20\put(1,0.5){\line(2,1){3}} \put(4,2){\line(-2,1){2}} \put(2,3){\line(-2,-5){1}} \put(0.7,0.3){$A$} \put(4.05,1.9){$B$} \put(1.7,2.95){$C$}
21\put(3.1,2.5){$a$} \put(1.3,1.7){$b$} \put(2.5,1.05){$c$} \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}$}
22\end{picture}""", stream, options)
23
24# Show other results.
25print(options.error_report)
26print()
27print(f"Size: {size.width}x{size.height}")
Відмінності:
- Замість використання класу PngFigureRendererOptions ми використовуємо клас SvgFigureRendererOptions.
- Нам не потрібно вказувати роздільну здатність.
- Замість використання класу PngFigureRenderer ми використовуємо клас SvgFigureRenderer.
Ось результат: