Packages LaTeX externes | Python
Packages LaTeX externes
La bibliothèque Aspose.TeX est livrée avec une variété de packages LaTeX courants, il n’est donc pas nécessaire de fournir manuellement ces packages au moteur TeX. Cependant, il peut y avoir des situations où votre fichier LaTeX nécessite un package qui n’est pas inclus dans le « bundle » de packages de la bibliothèque. Dans de tels cas, vous pouvez essayer de fournir les entrées nécessaires, telles que les fichiers sources du package requis, via l’option required_input_directory de l’instance de classe TeXOptions. Nous allons explorer comment cela fonctionne avec deux exemples.
Entrée requise fournie sous une forme décompressée (le package fancybox
).
Supposons que nous ayons le fichier LaTeX de base suivant nommé « require-input-fs.tex », qui fait partie de notre exemple de solution :
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 3ème ligne du fichier indique qu’il nécessite le package fancybox
, qui n’est pas inclus dans le support “natif”. Supposons que nous ayons le fichier source du package fancybox
. Puisqu’il s’agit d’un simple package composé d’un seul fichier, nous pouvons placer ce fichier n’importe où dans notre système de fichiers et spécifier le chemin du répertoire comme suit :
1options.required_input_directory = InputFileSystemDirectory('path-to-directory-where-fancybox.sty-located')
Une fois que nous exécutons un travail TeX avec cette option (n’oubliez pas d’ajuster les autres options si nécessaire), nous obtiendrons le document de sortie, qui dans ce cas est une image PNG.
Voici le code source complet de l’exemple :
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()
Fournir les entrées requises sous une forme archivée (le package pgfplots
)
Supposons maintenant que nous ayons le fichier LaTeX suivant nommé « require-input-zip.tex », qui est également un simple fichier de notre exemple de solution :
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}
Sur la troisième ligne, on peut observer que le fichier nécessite le package pgfplots
, qui n’est pas supporté “nativement”. Encore une fois, en supposant que nous possédons les fichiers sources du paquet pgfplots
, ces fichiers sont assez nombreux et se trouvent dans deux répertoires différents au sein du répertoire d’installation de toute application de composition LaTeX. Le dossier pgfplots
se trouve dans les répertoires \tex\generic
et \tex\latex
. Pour que la bibliothèque Aspose.TeX fonctionne correctement, il est nécessaire de fournir le contenu de ces deux dossiers en entrée. Pour y parvenir, nous souhaitons regrouper ces fichiers sources dans une archive ZIP. Vous trouverez ci-dessous la disposition souhaitée pour les archives :
Et voici la méthode par laquelle nous définissons l’accessibilité à ces fichiers sources :
1with open("path-to-zip-with-pgfplots-sources") as zipStream:
2 ...
3 options.required_input_directory = InputZipDirectory(zipStream)
4 ...
Après avoir exécuté un travail TeX avec cette option, nous obtenons le document de sortie :
Voici le code source complet de l’exemple :
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()
REMARQUE : Le résultat a été vérifié à l’aide du package
pgfplots
version 1.18.1. La version du packagepfg
inclus dans la bibliothèque Aspose.TeX est la 3.1.9a.
Restrictions
Si vous rencontrez un package développé sous le noyau LaTeX3e et requis par votre fichier LaTeX, il est peu probable qu’il fonctionne avec la bibliothèque Aspose.TeX. En effet, la bibliothèque est basée sur le noyau LaTeX2e.
De plus, il peut arriver qu’un package requis par votre fichier LaTeX utilise directement des commandes primitives dépendantes du périphérique qui ne sont pas prises en charge par le moteur Object TeX de la bibliothèque Aspose.TeX. Dans de tels cas, le package ne fonctionnera pas avec la bibliothèque.