Pacotes de LaTeX externos | Python via .NET
Pacotes de LaTeX externos
A biblioteca Aspose.TeX vem com uma variedade de pacotes comuns de LaTeX, portanto não há necessidade de fornecer manualmente esses pacotes ao mecanismo TEX. No entanto, pode haver situações em que seu arquivo de LaTeX requer um pacote que não esteja incluído no “pacote” de pacotes da biblioteca. Nesses casos, você pode tentar fornecer a entrada necessária, como os arquivos de origem do pacote necessário, através da opção requerir_input_directory da instância da classe texoptions. Vamos explorar como isso funciona com dois exemplos.
Aplique primeiro uma
licença. Defina ASPOSE_TEX_INPUT_DIR como a pasta que contém ExternalLaTeXPackages, com os dois arquivos .tex e o subdiretório packages (padrão: input). Defina ASPOSE_TEX_OUTPUT_DIR como a pasta de saída (padrão: output).
Entrada necessária fornecida em um formulário não embalado (o pacote FancyBox).
Suponha que tenhamos o seguinte arquivo BASIC LATEX chamado requerir-input-f-fs.tex, que faz parte da nossa
Solução de Exemplo:
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}A terceira linha do arquivo indica que requer o pacote FancyBox, que não está incluído no suporte" nativo “. Vamos supor que temos o arquivo de origem do pacote FancyBox. Como é um pacote simples composto por um único arquivo, podemos colocar esse arquivo em qualquer lugar do nosso sistema de arquivos e especificar o caminho do diretório da seguinte forma:
1from aspose.tex.io import InputFileSystemDirectory
2
3# Configure an existing TeXOptions instance.
4options.required_input_directory = InputFileSystemDirectory('path-to-directory-where-fancybox.sty-located')Depois de executar um trabalho de Tex com esta opção (lembre -se de ajustar as outras opções conforme necessário), obteremos o documento de saída, que neste caso é uma imagem PNG.

Aqui está o código -fonte completo para o exemplo:
1# Load an external LaTeX package from a directory.
2import os
3from pathlib import Path
4from os import path
5from io import BytesIO
6from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
7from aspose.tex.io import InputFileSystemDirectory, InputZipDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
8from aspose.tex.presentation.image import ImageDevice, PngSaveOptions
9
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11output_dir.mkdir(parents=True, exist_ok=True)
12input_dir = Path(os.environ.get("ASPOSE_TEX_INPUT_DIR", "input")).resolve() / "ExternalLaTeXPackages"
13# Create conversion options for Object LaTeX format upon Object TeX engine extension.
14options = TeXOptions.console_app_options(TeXConfig.object_latex)
15options.interaction = Interaction.NONSTOP_MODE
16options.terminal_out = OutputMemoryTerminal()
17# Specify a file system working directory for the output.
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19# Specify a file system working directory for the required input.
20# The directory containing packages may be located anywhere.
21options.required_input_directory = InputFileSystemDirectory(path.join(str(input_dir), "packages"))
22# Initialize the options for saving in PNG format.
23options.save_options = PngSaveOptions()
24# Run LaTeX to PNG conversion.
25TeXJob(path.join(str(input_dir), "required-input-fs.tex"), ImageDevice(True), options).run()Fornecendo entrada necessária em um formulário arquivado (o pacote pgfplots)
Agora, suponha que tenhamos o seguinte arquivo LATEX chamado requerir-in-zip.tex, que também é um arquivo simples da nossa solução de exemplo:
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}Na terceira linha, pode -se observar que o arquivo requer o pacote pgfplots, que não é suportado” nativamente “. Mais uma vez, assumindo que possuímos os arquivos de origem para o pacote PGFPLOTS, esses arquivos são bastante numerosos e estão localizados em dois diretórios diferentes no diretório de instalação de qualquer aplicativo de tipógrafo de LaTeX. A pasta pgfplots pode ser encontrada nos diretórios\tex \generic e \tex \latex. Para que a biblioteca Aspose.TeX funcione corretamente, é necessário fornecer o conteúdo dessas duas pastas como entrada. Para conseguir isso, desejamos empacotar esses arquivos de origem em um arquivo zip. Abaixo está o layout desejado do arquivo:

E aqui está o método pelo qual definimos a acessibilidade a esses arquivos de origem:
1from aspose.tex.io import InputZipDirectory
2
3# Configure an existing TeXOptions instance and run the job while the stream is open.
4with open("path-to-zip-with-pgfplots-sources", "rb") as zip_stream:
5 options.required_input_directory = InputZipDirectory(zip_stream, "")
6 # Run TeXJob here, as shown in the complete example below.Depois de executar um trabalho de Tex com esta opção, obtemos o documento de saída:

Aqui está o código -fonte completo para o exemplo:
1# Load external LaTeX packages from a ZIP archive.
2import os
3from pathlib import Path
4from os import path
5from io import BytesIO
6from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
7from aspose.tex.io import InputFileSystemDirectory, InputZipDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
8from aspose.tex.presentation.image import ImageDevice, PngSaveOptions
9
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11output_dir.mkdir(parents=True, exist_ok=True)
12input_dir = Path(os.environ.get("ASPOSE_TEX_INPUT_DIR", "input")).resolve() / "ExternalLaTeXPackages"
13# Create conversion options for Object LaTeX format upon Object TeX engine extension.
14options = TeXOptions.console_app_options(TeXConfig.object_latex)
15options.interaction = Interaction.NONSTOP_MODE
16options.terminal_out = OutputMemoryTerminal()
17# Specify a file system working directory for the output.
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19# Initialize the options for saving in PNG format.
20options.save_options = PngSaveOptions()
21# Create a file stream for the ZIP archive containing the required package.
22# The ZIP archive may be located anywhere.
23with open(path.join(str(input_dir), "packages/pgfplots.zip"), "rb") as zip_stream:
24 # Specify a ZIP working directory for the required input.
25 options.required_input_directory = InputZipDirectory(zip_stream, "")
26
27 # Run LaTeX to PNG conversion.
28 TeXJob(path.join(str(input_dir), "required-input-zip.tex"), ImageDevice(True), options).run()NOTA: O resultado foi verificado através do pacote
pgfplotsversão 1.18.1. Quanto à versão do pacotepfgincluída na biblioteca Aspose.TeX é a 3.1.9a.
Restrições
Se você se deparar com um pacote desenvolvido noLatex3ekernel e for necessário pelo seu arquivo LaTex, é improvável que trabalhe com a biblioteca Aspose.TeX. Isso ocorre porque a biblioteca é baseada no kernel LATEX2E.
Além disso, pode haver casos em que um pacote exigido pelo seu arquivo de LaTeX use diretamente comandos primitivos dependentes do dispositivo que não são suportados pelo mecanismo aspose.tex da biblioteca tex. Nesses casos, o pacote não funcionará com a biblioteca.