Зовнішні пакети LaTeX | Aspose.TeX для Python

Зовнішні пакети LaTeX

Бібліотека Aspose.TeX постачається з різними поширеними пакетами LaTeX, тому немає необхідності вручну надавати ці пакети механізму TeX. Однак можуть виникнути ситуації, коли для вашого файлу LaTeX потрібен пакунок, який не входить до «набору» пакунків бібліотеки. У таких випадках ви можете спробувати надати необхідні вхідні дані, такі як вихідні файли необхідного пакунка, за допомогою параметра required_input_directory екземпляра класу TeXOptions. Ми розглянемо, як це працює, на двох прикладах.

Необхідні вхідні дані надаються в розпакованому вигляді (пакет fancybox).

Припустімо, що у нас є такий базовий файл LaTeX під назвою required-input-fs.tex, який є частиною нашого прикладу рішення:

 1\documentclass{article}
 2\usepackage[a6paper,landscape]{geometry}
 3\usepackage{fancybox}
 4\begin{document}
 5Test: \fbox{
 6  \begin{Bitemize}[b]
 7  \item First item
 8  \item A second one\\ on two lines
 9  \item(2pt) A third with extra space
10  \end{Bitemize}
11}
12\par\bigskip
13Test: \fbox{
14  \begin{Beqnarray}[t]
15  y & = & x^2 \\
16  a^2 + 2ab + b^2 & = & (a + b)^2 \\
17  \int_0^\infty e^{-ax} dx & = & \frac{1}{a}
18  \end{Beqnarray}
19}
20\end{document}

Третій рядок файлу вказує на те, що для нього потрібен пакунок fancybox, який не включено до “рідної” підтримки. Припустімо, що у нас є вихідний файл для пакета fancybox. Оскільки це простий пакет, що складається з одного файлу, ми можемо розмістити цей файл у будь-якому місці нашої файлової системи та вказати шлях до каталогу наступним чином:

1options.required_input_directory = InputFileSystemDirectory('path-to-directory-where-fancybox.sty-located')

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

Вихідний документ

Ось повний вихідний код прикладу:

 1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
 2options = TeXOptions.console_app_options(TeXConfig.object_latex)
 3# Specify a file system working directory for the output.
 4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
 5# Specify a file system working directory for the required input.
 6# The directory containing packages may be located anywhere.
 7options.required_input_directory = InputFileSystemDirectory(path.join(Util.input_directory, "packages"))
 8# Initialize the options for saving in PNG format.
 9options.save_options = PngSaveOptions()
10# Run LaTeX to PNG conversion.
11TeXJob(path.join(Util.input_directory, "required-input-fs.tex"), ImageDevice(True), options).run()

Надання необхідних вхідних даних в заархівованій формі (пакет pgfplots)

Тепер припустімо, що у нас є такий файл LaTeX під назвою required-input-zip.tex, який також є простим файлом із нашого прикладу рішення:

 1\documentclass{article}
 2\usepackage[margin=0.25in]{geometry}
 3\usepackage{pgfplots}
 4\pgfplotsset{width=10cm,compat=1.18}
 5\begin{document}
 6
 7First example is 2D and 3D math expressions plotted side-by-side.
 8
 9%Here begins the 2D plot
10\begin{tikzpicture}
11\begin{axis}
12\addplot[color=red]{exp(x)};
13\end{axis}
14\end{tikzpicture}
15%Here ends the 2D plot
16\hskip 5pt
17%Here begins the 3D plot
18\begin{tikzpicture}
19\begin{axis}
20\addplot3[
21    surf,
22]
23{exp(-x^2-y^2)*x};
24\end{axis}
25\end{tikzpicture}
26%Here ends the 3D plot
27
28\end{document}

У третьому рядку можна помітити, що для файлу потрібен пакет pgfplots, який не підтримується “нативно”. Знову ж таки, припускаючи, що у нас є вихідні файли для пакета pgfplots, цих файлів досить багато і вони розташовані у двох різних каталогах у каталозі інсталяції будь-якої програми верстки LaTeX. Папку pgfplots можна знайти в обох каталогах \tex\generic і \tex\latex. Щоб бібліотека Aspose.TeX функціонувала правильно, необхідно надати вміст обох цих папок як вхідні дані. Щоб досягти цього, ми хочемо запакувати ці вихідні файли в ZIP-архів. Нижче наведено бажаний макет архіву:

Оформлення архіву

А ось метод, за допомогою якого ми визначаємо доступність цих вихідних файлів:

1with open("path-to-zip-with-pgfplots-sources") as zipStream:
2    ...
3    options.required_input_directory = InputZipDirectory(zipStream)
4    ...

Після виконання завдання TeX із цією опцією ми отримуємо вихідний документ:

Вихідний документ

Ось повний вихідний код прикладу:

 1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
 2options = TeXOptions.console_app_options(TeXConfig.object_latex)
 3# Specify a file system working directory for the output.
 4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
 5# Initialize the options for saving in PNG format.
 6options.save_options = PngSaveOptions()
 7# Create a file stream for the ZIP archive containing the required package.
 8# The ZIP archive may be located anywhere.
 9with open(path.join(Util.input_directory, "packages\\pgfplots.zip"), "rb") as zip_stream:
10    # Specify a ZIP working directory for the required input.
11    options.required_input_directory = InputZipDirectory(zip_stream, "")
12
13    # Run LaTeX to PNG conversion.
14    TeXJob(path.join(Util.input_directory, "required-input-zip.tex"), ImageDevice(True), options).run()

ПРИМІТКА: Результат було перевірено за допомогою пакета pgfplots версії 1.18.1. У той час як версія пакета pfg, включеного в бібліотеку Aspose.TeX, є 3.1.9a.

Обмеження

Якщо ви натрапите на пакет, розроблений під ядром LaTeX3e і потрібен для вашого файлу LaTeX, навряд чи він працюватиме з бібліотекою Aspose.TeX. Це тому, що бібліотека базується на ядрі LaTeX2e.

Крім того, можуть бути випадки, коли пакет, необхідний для вашого файлу LaTeX, безпосередньо використовує залежні від пристрою примітивні команди, які не підтримуються механізмом Object TeX бібліотеки Aspose.TeX. У таких випадках пакет не працюватиме з бібліотекою.

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.