Externe LaTeX-Pakete | API für Python
Externe LaTeX-Pakete
Die Aspose.TeX-Bibliothek enthält eine Vielzahl gängiger LaTeX-Pakete, sodass diese Pakete nicht manuell für die TeX-Engine bereitgestellt werden müssen. Es kann jedoch Situationen geben, in denen Ihre LaTeX-Datei ein Paket erfordert, das nicht im „Paketpaket“ der Bibliothek enthalten ist. In solchen Fällen können Sie versuchen, die erforderliche Eingabe, beispielsweise die Quelldateien des erforderlichen Pakets, über die Option required_input_directory der Klasseninstanz TeXOptions bereitzustellen. Wir werden anhand von zwei Beispielen untersuchen, wie das funktioniert.
Erforderliche Eingaben in entpackter Form (das „fancybox“-Paket).
Angenommen, wir haben die folgende grundlegende LaTeX-Datei mit dem Namen „required-input-fs.tex“, die Teil unserer Beispiellösung ist:
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}
Die 3. Zeile der Datei weist darauf hin, dass das Paket „fancybox“ erforderlich ist, das nicht in der „nativen“ Unterstützung enthalten ist. Nehmen wir an, wir haben die Quelldatei für das Paket „fancybox“. Da es sich um ein einfaches Paket handelt, das aus einer einzelnen Datei besteht, können wir diese Datei an einer beliebigen Stelle in unserem Dateisystem platzieren und den Verzeichnispfad wie folgt angeben:
1options.required_input_directory = InputFileSystemDirectory('path-to-directory-where-fancybox.sty-located')
Sobald wir einen TeX-Job mit dieser Option ausführen (denken Sie daran, die anderen Optionen nach Bedarf anzupassen), erhalten wir das Ausgabedokument, in diesem Fall ein PNG-Bild.
Hier ist der vollständige Quellcode für das Beispiel:
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()
Bereitstellung erforderlicher Eingaben in archivierter Form (Paket „pgfplots“)
Angenommen, wir haben die folgende LaTeX-Datei mit dem Namen „required-input-zip.tex“, bei der es sich ebenfalls um eine einfache Datei aus unserer Beispiellösung handelt:
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}
In der dritten Zeile ist zu erkennen, dass die Datei das Paket „pgfplots“ erfordert, das nicht „nativ“ unterstützt wird. Auch hier gilt: Vorausgesetzt, dass wir über die Quelldateien für das Paket „pgfplots“ verfügen, sind diese Dateien recht zahlreich und befinden sich in zwei verschiedenen Verzeichnissen im Installationsverzeichnis jeder LaTeX-Satzanwendung. Der Ordner „pgfplots“ befindet sich sowohl im Verzeichnis „\tex\generic“ als auch im Verzeichnis „\tex\latex“. Damit die Aspose.TeX-Bibliothek ordnungsgemäß funktioniert, ist es notwendig, den Inhalt dieser beiden Ordner als Eingabe bereitzustellen. Um dies zu erreichen, möchten wir diese Quelldateien in ein ZIP-Archiv packen. Nachfolgend finden Sie das gewünschte Layout des Archivs:
Und hier ist die Methode, mit der wir den Zugriff auf diese Quelldateien definieren:
1with open("path-to-zip-with-pgfplots-sources") as zipStream:
2 ...
3 options.required_input_directory = InputZipDirectory(zipStream)
4 ...
Nachdem wir einen TeX-Job mit dieser Option ausgeführt haben, erhalten wir das Ausgabedokument:
Hier ist der vollständige Quellcode für das Beispiel:
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()
HINWEIS: Das Ergebnis wurde mit dem Paket
pgfplots
, Version 1.18.1, überprüft. Die Version despfg
-Pakets, das in der Aspose.TeX-Bibliothek enthalten ist, ist 3.1.9a.
Einschränkungen
Wenn Sie auf ein Paket stoßen, das unter dem LaTeX3e-Kernel entwickelt wurde und von Ihrer LaTeX-Datei benötigt wird, ist es unwahrscheinlich, dass es mit der Aspose.TeX-Bibliothek funktioniert. Dies liegt daran, dass die Bibliothek auf dem LaTeX2e-Kernel basiert.
Darüber hinaus kann es Fälle geben, in denen ein von Ihrer LaTeX-Datei benötigtes Paket direkt geräteabhängige primitive Befehle verwendet, die von der Object TeX-Engine der Aspose.TeX-Bibliothek nicht unterstützt werden. In solchen Fällen funktioniert das Paket nicht mit der Bibliothek.