Cargar paquetes y clases LaTeX externos en Java
Amplíe las capacidades de compilación de documentos LaTeX incorporando paquetes de macros externos (.sty) y clases de documentos personalizadas (.cls) mediante Aspose.TeX for Java. Resuelva las dependencias de paquetes de forma dinámica desde directorios del sistema de archivos local, archivos ZIP comprimidos o flujos de memoria personalizados sin necesidad de instalar TeX Live o MiKTeX por completo.
Al compilar documentos LaTeX que contienen comandos como \usepackage{custompackage} o \documentclass{customclass}, el motor busca los archivos .sty o .cls correspondientes mediante las instancias de IInputWorkingDirectory configuradas.
Estas son las siguientes fuentes de resolución de paquetes:
- Para cargar archivos de plantilla estándar de la empresa (
.sty/.cls) almacenados en carpetas locales, utilice Directorio local como proveedor de paquetes y la claseInputFileSystemDirectory. - Para una distribución de un solo archivo que contenga los archivos TeX principales junto con todas las dependencias de paquetes necesarias, utilice Archivo ZIP como proveedor de paquetes y la clase
InputZipDirectory. - Para una ejecución de alto rendimiento con conjuntos de paquetes precargados y utilizados con frecuencia integrados en un archivo
.fmt, utilice Formato precompilado como proveedor de paquetes yTeXConfig.customFormat().
Cargar paquetes externos desde una carpeta local
Especifique un directorio local que contenga archivos de estilo personalizados (.sty) o definiciones de clases (.cls) como directorio de trabajo de entrada para la búsqueda de paquetes.
import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
public class LoadExternalPackagesFromFileSystem {
public static void main(String[] args) throws Exception {
// Step 1: LaTeX source referencing a custom package 'companylayout.sty'
String latexCode = "\\documentclass{article}\n" +
"\\usepackage{companylayout}\n" + // Custom external package
"\\begin{document}\n" +
"\\customHeader{Monthly Financial Report}\n" +
"Document compiled using external style package.\n" +
"\\end{document}";
ByteArrayInputStream inputStream = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));
// Step 2: Initialize LaTeX conversion options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Step 3: Set input working directory pointing to folder where 'companylayout.sty' resides
options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/CustomPackages/"));
// Step 4: Set output working directory for compiled PDF
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Step 5: Run compilation job
TeXJob job = new TeXJob(inputStream, new PdfDevice(), options);
job.run();
System.out.println("LaTeX document compiled successfully using external .sty package.");
}
}Cargar paquetes y clases desde un archivo ZIP comprimido
Incluya archivos de origen .tex, paquetes .sty personalizados e imágenes en un archivo .zip, e indique a Aspose.TeX que resuelva las dependencias de paquetes directamente desde el archivo comprimido.
import com.aspose.tex.*;
import java.io.FileInputStream;
public class LoadExternalPackagesFromZip {
public static void main(String[] args) throws Exception {
// Step 1: Initialize options for LaTeX format
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Step 2: Open ZIP archive containing 'main.tex' and dependent '.sty'/'.cls' files
FileInputStream zipStream = new FileInputStream("C:/TeXProject/TemplateBundle.zip");
options.setInputWorkingDirectory(new InputZipDirectory(zipStream, "packages_subfolder"));
// Step 3: Configure output working directory
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Step 4: Execute compilation job
TeXJob job = new TeXJob("main", new PdfDevice(), options);
job.run();
zipStream.close();
System.out.println("LaTeX document and external packages loaded from ZIP archive successfully.");
}
}Gestión de paquetes TeX faltantes o estándar
Aspose.TeX for Java incluye implementaciones integradas de paquetes LaTeX básicos populares (como graphicx, amsmath, amsfonts, color y geometry). Para paquetes no estándar o de terceros, asegúrese de que los archivos .sty correspondientes estén ubicados dentro de IInputWorkingDirectory activo.
import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
public class StandardLaTeXPackagesDemo {
public static void main(String[] args) throws Exception {
// Standard packages like amsmath and graphicx are processed natively
String latexCode = "\\documentclass{article}\n" +
"\\usepackage{amsmath}\n" +
"\\usepackage{graphicx}\n" +
"\\begin{document}\n" +
"\\equation: e^{i\\pi} + 1 = 0\n" +
"\\end{document}";
ByteArrayInputStream inputStream = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
TeXJob job = new TeXJob(inputStream, new PdfDevice(), options);
job.run();
System.out.println("Document with standard LaTeX packages rendered successfully.");
}
}Instalación y configuración
Integre Aspose.TeX for Java en su proyecto mediante Maven:
Package Manager Console Command
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-tex</artifactId>
<version>Latest</version>
</dependency>
Preguntas frecuentes
1. ¿Cómo encuentra Aspose.TeX los archivos externos .sty y .cls?
Cuando el motor LaTeX encuentra \usepackage{name} o \documentclass{name}, busca name.sty o name.cls en el directorio proporcionado a TeXOptions.setInputWorkingDirectory().
2. ¿Puedo utilizar paquetes de macros complejos como TikZ o PSTricks?
Aspose.TeX admite una amplia gama de funciones de evaluación de macros. Los paquetes que dependen de extensiones nativas de ObjectTeX o de primitivas de dibujo compatibles se evalúan directamente; para la salida de figuras independientes, también se pueden utilizar PngFigureRenderer o SvgFigureRenderer.
3. ¿Puedo precargar paquetes pesados para acelerar el procesamiento por lotes de documentos?
Sí. Puede crear un archivo de formato TeX personalizado (.fmt) que contenga paquetes de macros precompilados y cargarlo mediante TeXConfig.customFormat() para reducir significativamente la sobrecarga de ejecución por documento.