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 clase InputFileSystemDirectory.
  • 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 y TeXConfig.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.