Charger des packages et des classes LaTeX externes en Java
Étendez les capacités de compilation des documents LaTeX en intégrant des packages de macros externes (.sty) et des classes de documents personnalisées (.cls) avec Aspose.TeX for Java. Résolvez dynamiquement les dépendances des packages à partir de répertoires du système de fichiers local, d’archives ZIP compressées ou de flux mémoire personnalisés, sans avoir besoin d’une installation complète de TeX Live ou de MiKTeX.
Lors de la compilation de documents LaTeX contenant des commandes telles que \usepackage{custompackage} ou \documentclass{customclass}, le moteur recherche les fichiers .sty ou .cls correspondants à l’aide des instances IInputWorkingDirectory configurées.
Voici les sources de résolution des packages disponibles :
- Pour charger des fichiers de modèles standard de l’entreprise (
.sty/.cls) stockés dans des dossiers locaux, utilisez Répertoire local comme fournisseur de packages et la classeInputFileSystemDirectory. - Pour une distribution à fichier unique contenant les principaux fichiers TeX ainsi que toutes les dépendances de packages nécessaires, utilisez Archive ZIP comme fournisseur de packages et la classe
InputZipDirectory. - Pour une exécution hautes performances avec des ensembles de packages préchargés et fréquemment utilisés intégrés dans un fichier
.fmt, utilisez Format précompilé comme fournisseur de packages etTeXConfig.customFormat().
Charger des packages externes depuis un dossier local
Spécifiez un répertoire local contenant des fichiers de style personnalisés (.sty) ou des définitions de classes (.cls) comme répertoire de travail d’entrée pour la recherche de packages.
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.");
}
}Charger des packages et des classes depuis une archive ZIP compressée
Regroupez les fichiers source .tex, les packages .sty personnalisés et les images dans une archive .zip, puis demandez à Aspose.TeX de résoudre les dépendances des packages directement depuis l’archive compressée.
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.");
}
}Gestion des packages TeX manquants ou standard
Aspose.TeX for Java inclut des implémentations intégrées de packages LaTeX de base populaires (tels que graphicx, amsmath, amsfonts, color et geometry). Pour les packages non standard ou tiers, assurez-vous que les fichiers .sty correspondants sont placés dans le IInputWorkingDirectory actif.
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 et configuration
Intégrez Aspose.TeX for Java à votre projet à l’aide de 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>
Questions fréquentes
1. Comment Aspose.TeX trouve-t-il les fichiers externes .sty et .cls ?
Lorsque le moteur LaTeX rencontre \usepackage{name} ou \documentclass{name}, il recherche name.sty ou name.cls dans le répertoire fourni à TeXOptions.setInputWorkingDirectory().
2. Puis-je utiliser des packages de macros complexes tels que TikZ ou PSTricks ?
Aspose.TeX prend en charge un large éventail de fonctionnalités d’évaluation des macros. Les packages qui reposent sur les extensions natives ObjectTeX ou sur des primitives de dessin prises en charge sont évalués directement ; pour la sortie de figures autonomes, PngFigureRenderer ou SvgFigureRenderer peuvent également être utilisés.
3. Puis-je précharger des packages lourds pour accélérer le traitement de documents par lots ?
Oui. Vous pouvez créer un fichier de format TeX personnalisé (.fmt) contenant des packages de macros précompilés et le charger via TeXConfig.customFormat() afin de réduire considérablement la surcharge d’exécution pour chaque document.