Paquetes LaTeX externos | Python
Paquetes externos de LaTeX
La biblioteca Aspose.TeX viene con una variedad de paquetes LaTeX comunes, por lo que no es necesario proporcionar manualmente estos paquetes al motor TeX. Sin embargo, puede haber situaciones en las que su archivo LaTeX requiera un paquete que no esté incluido en el “paquete” de paquetes de la biblioteca. En tales casos, puede intentar proporcionar la entrada necesaria, como los archivos fuente del paquete requerido, a través de la opción required_input_directory de la instancia de clase TeXOptions. Exploraremos cómo funciona esto con dos ejemplos.
Entrada requerida proporcionada en un formato descomprimido (el paquete fancybox
).
Supongamos que tenemos el siguiente archivo LaTeX básico llamado required-input-fs.tex
, que es parte de nuestra
solución de ejemplo:
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}
La tercera línea del archivo indica que requiere el paquete fancybox
, que no está incluido en el soporte “nativo”. Supongamos que tenemos el archivo fuente del paquete fancybox
. Dado que es un paquete simple que consta de un solo archivo, podemos colocar este archivo en cualquier lugar de nuestro sistema de archivos y especificar la ruta del directorio de la siguiente manera:
1options.required_input_directory = InputFileSystemDirectory('path-to-directory-where-fancybox.sty-located')
Una vez que ejecutemos un trabajo TeX con esta opción (recuerde ajustar las otras opciones según sea necesario), obtendremos el documento de salida, que en este caso es una imagen PNG.
Aquí está el código fuente completo del ejemplo:
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()
Proporcionar la entrada requerida en un formato archivado (el paquete pgfplots
)
Ahora, supongamos que tenemos el siguiente archivo LaTeX llamado required-input-zip.tex
, que también es un archivo simple de nuestra solución de ejemplo:
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}
En la tercera línea, se puede observar que el archivo necesita el paquete pgfplots
, que no es compatible “de forma nativa”. Una vez más, suponiendo que poseemos los archivos fuente del paquete pgfplots
, estos archivos son bastante numerosos y están ubicados en dos directorios diferentes dentro del directorio de instalación de cualquier aplicación de composición tipográfica LaTeX. La carpeta pgfplots
se puede encontrar en los directorios \tex\generic
y \tex\latex
. Para que la biblioteca Aspose.TeX funcione correctamente, es necesario proporcionar el contenido de ambas carpetas como entrada. Para lograr esto, deseamos empaquetar estos archivos fuente en un archivo ZIP. A continuación se muestra el diseño deseado del archivo:
Y aquí está el método mediante el cual definimos la accesibilidad a estos archivos fuente:
1with open("path-to-zip-with-pgfplots-sources") as zipStream:
2 ...
3 options.required_input_directory = InputZipDirectory(zipStream)
4 ...
Después de ejecutar un trabajo TeX con esta opción, obtenemos el documento de salida:
Aquí está el código fuente completo del ejemplo:
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()
NOTA: El resultado se verificó utilizando la versión 1.18.1 del paquete
pgfplots
. Mientras que la versión del paquetepfg
incluida en la biblioteca Aspose.TeX es la 3.1.9a.
Restricciones
Si encuentra un paquete desarrollado bajo el kernel LaTeX3e y su archivo LaTeX lo requiere, es poco probable que funcione con la biblioteca Aspose.TeX. Esto se debe a que la biblioteca está basada en el kernel LaTeX2e.
Además, puede haber casos en los que un paquete requerido por su archivo LaTeX utilice directamente comandos primitivos dependientes del dispositivo que no son compatibles con el motor Object TeX de la biblioteca Aspose.TeX. En tales casos, el paquete no funcionará con la biblioteca.