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 KlasseInputFileSystemDirectory. - 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 undTeXConfig.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.