Pacchetti in LaTeX esterni | Python

Pacchetti di LaTeX esterni

La libreria Aspose.TeX viene fornita con una varietà di pacchetti in LaTeX comuni, quindi non è necessario fornire manualmente questi pacchetti al motore TEX. Tuttavia, potrebbero esserci situazioni in cui il tuo file latex richiede un pacchetto che non è incluso nel “pacchetto” della biblioteca dei pacchetti. In tali casi, è possibile provare a fornire l’input necessario, come i file di origine del pacchetto richiesto, tramite l’opzione Remow_input_directory dell’istanza di classe texoptions. Esploreremo come funziona con due esempi.

Input richiesto fornito in una forma non impacchettata (il pacchetto FancyBox).

Supponiamo di avere il seguente file in LaTeX di base denominato richiesto-input-fs.tex, che fa parte della nostra soluzione di esempio:

 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 terza riga del file indica che richiede il pacchetto FancyBox, che non è incluso nel supporto" nativo “. Supponiamo che abbiamo il file di origine per il pacchetto FancyBox. Poiché si tratta di un pacchetto semplice costituito da un singolo file, possiamo posizionare questo file ovunque nel nostro file system e specificare il percorso della directory come segue:

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

Una volta eseguito un lavoro Tex con questa opzione (ricorda di regolare le altre opzioni se necessario), otterremo il documento di output, che in questo caso è un’immagine PNG.

Documento di output

Ecco il codice sorgente completo per l’esempio:

 1from aspose.tex import *
 2from aspose.tex.io import *
 3from aspose.tex.presentation.image import *
 4from util import Util
 5from os import path
 6###############################################
 7###### Class and Method declaration here ######
 8###############################################
 9
10# Create conversion options for Object LaTeX format upon Object TeX engine extension.
11options = TeXOptions.console_app_options(TeXConfig.object_latex)
12# Specify a file system working directory for the output.
13options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
14# Specify a file system working directory for the required input.
15# The directory containing packages may be located anywhere.
16options.required_input_directory = InputFileSystemDirectory(path.join(Util.input_directory, "packages"))
17# Initialize the options for saving in PNG format.
18options.save_options = PngSaveOptions()
19# Run LaTeX to PNG conversion.
20TeXJob(path.join(Util.input_directory, "required-input-fs.tex"), ImageDevice(True), options).run()

Fornendo l’input richiesto in una forma archiviata (il pacchetto pgfplots)

Ora, supponiamo di avere il seguente file Latex denominato richiesto Input-Zip.tex, che è anche un semplice file dalla nostra soluzione di esempio:

 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}

Sulla terza riga, si può osservare che il file richiede il pacchetto “pgfplots”, che non è “nativo” supportato. Ancora una volta, supponendo che possediamo i file di origine per il pacchetto pgfplots, questi file sono piuttosto numerosi e si trovano in due diverse directory all’interno della directory di installazione di qualsiasi applicazione di composizione in LaTeX. La cartella pgfplots può essere trovata nelle directory\tex\generic e \tex\latex. Affinché la libreria Aspose.TeX funzioni correttamente, è necessario fornire il contenuto di entrambe queste cartelle come input. Per raggiungere questo obiettivo, desideriamo impacchettare questi file di origine in un archivio con zip. Di seguito è riportato il layout desiderato dell’archivio:

Layout dell’archivio

Ed ecco il metodo con cui definiamo l’accessibilità a questi file di origine:

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

Dopo aver eseguito un lavoro Tex con questa opzione, otteniamo il documento di output:

Documento di output

Ecco il codice sorgente completo per l’esempio:

 1from aspose.tex import *
 2from aspose.tex.io import *
 3from aspose.tex.presentation.image import *
 4from util import Util
 5from os import path
 6###############################################
 7###### Class and Method declaration here ######
 8###############################################
 9
10# Create conversion options for Object LaTeX format upon Object TeX engine extension.
11options = TeXOptions.console_app_options(TeXConfig.object_latex)
12# Specify a file system working directory for the output.
13options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
14# Initialize the options for saving in PNG format.
15options.save_options = PngSaveOptions()
16# Create a file stream for the ZIP archive containing the required package.
17# The ZIP archive may be located anywhere.
18with open(path.join(Util.input_directory, "packages\\pgfplots.zip"), "rb") as zip_stream:
19    # Specify a ZIP working directory for the required input.
20    options.required_input_directory = InputZipDirectory(zip_stream, "")
21
22    # Run LaTeX to PNG conversion.
23    TeXJob(path.join(Util.input_directory, "required-input-zip.tex"), ImageDevice(True), options).run()

NOTA: Il risultato è stato verificato utilizzando il pacchetto pgfplots versione 1.18.1. Mentre la versione del pacchetto pfg inclusa nella libreria Aspose.TeX è la 3.1.9a.

Restrizioni

Se ti imbatti in un pacchetto che viene sviluppato sotto il kernel e il kernel*è richiesto dal tuo file LaTeX, è improbabile che funzioni con la libreria aspy.tex. Questo perché la biblioteca si basa sul kernel * latex2e *.

Inoltre, potrebbero esserci casi in cui un pacchetto richiesto dal file Latex utilizza direttamente comandi primitivi dipendenti dal dispositivo che non sono supportati dal motore Objectdella libreriadella libreria **. In tali casi, il pacchetto non funzionerà con la biblioteca.

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.