Externe LaTeX-Pakete und -Klassen in Java laden

Erweitern Sie die Möglichkeiten der LaTeX-Dokumentkompilierung, indem Sie externe Makropakete (.sty) und benutzerdefinierte Dokumentklassen (.cls) mit Aspose.TeX for Java integrieren. Lösen Sie Paketabhängigkeiten dynamisch aus lokalen Dateisystemverzeichnissen, komprimierten ZIP-Archiven oder benutzerdefinierten Speicherstreams auf, ohne eine vollständige TeX-Live- oder MiKTeX-Installation zu benötigen.

 

Beim Kompilieren von LaTeX-Dokumenten, die Befehle wie \usepackage{custompackage} oder \documentclass{customclass} enthalten, sucht die Engine mithilfe der konfigurierten IInputWorkingDirectory-Instanzen nach den entsprechenden .sty- oder .cls-Dateien.

Hier sind die nächsten Quellen für die Paketauflösung:

  • Zum Laden unternehmensspezifischer Vorlagendateien (.sty/.cls), die in lokalen Ordnern gespeichert sind, verwenden Sie Lokales Verzeichnis als Paketanbieter und die Klasse InputFileSystemDirectory.
  • Für eine Einzeldatei-Distribution, die neben den wichtigsten TeX-Dateien alle erforderlichen Paketabhängigkeiten enthält, verwenden Sie ZIP-Archiv als Paketanbieter und die Klasse InputZipDirectory.
  • Für eine leistungsstarke Ausführung mit vorab geladenen, häufig verwendeten Paketsätzen, die in eine .fmt-Datei integriert sind, verwenden Sie Vorkompiliertes Format als Paketanbieter und TeXConfig.customFormat().

Externe Pakete aus einem lokalen Ordner laden

Geben Sie ein lokales Verzeichnis mit benutzerdefinierten Stil-Dateien (.sty) oder Klassendefinitionen (.cls) als Eingabearbeitsverzeichnis für die Paketsuche an.

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.");
    }
}

Pakete und Klassen aus einem komprimierten ZIP-Archiv laden

Packen Sie .tex-Quelldateien, benutzerdefinierte .sty-Pakete und Bilder in ein .zip-Archiv und weisen Sie Aspose.TeX an, Paketabhängigkeiten direkt aus dem komprimierten Archiv aufzulösen.

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.");
    }
}

Umgang mit fehlenden oder standardmäßigen TeX-Paketen

Aspose.TeX for Java enthält integrierte Implementierungen beliebter grundlegender LaTeX-Pakete (wie graphicx, amsmath, amsfonts, color und geometry). Stellen Sie bei nicht standardmäßigen Paketen oder Paketen von Drittanbietern sicher, dass die entsprechenden .sty-Dateien innerhalb des aktiven IInputWorkingDirectory abgelegt werden.

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.");
    }
}

Installation und Einrichtung

Integrieren Sie Aspose.TeX for Java mithilfe von Maven in Ihr Projekt:

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>

Häufig gestellte Fragen

1. Wie findet Aspose.TeX externe .sty- und .cls-Dateien?

Wenn die LaTeX-Engine auf \usepackage{name} oder \documentclass{name} stößt, sucht sie nach name.sty oder name.cls in dem Verzeichnis, das an TeXOptions.setInputWorkingDirectory() übergeben wurde.

2. Kann ich komplexe Makropakete wie TikZ oder PSTricks verwenden?

Aspose.TeX unterstützt eine breite Palette von Funktionen zur Makroauswertung. Pakete, die auf nativen ObjectTeX-Erweiterungen oder unterstützten Zeichenprimitiven basieren, werden direkt ausgewertet. Für die Ausgabe eigenständiger Abbildungen können auch PngFigureRenderer oder SvgFigureRenderer verwendet werden.

3. Kann ich umfangreiche Pakete vorab laden, um die Stapelverarbeitung von Dokumenten zu beschleunigen?

Ja. Sie können eine benutzerdefinierte TeX-Formatdatei (.fmt) erstellen, die vorkompilierte Makropakete enthält, und diese über TeXConfig.customFormat() laden, um den Ausführungsaufwand pro Dokument erheblich zu reduzieren.