Внешние пакеты LaTeX | Питон

Внешние пакеты 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. В таких случаях пакет не будет работать с библиотекой.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.