Caricare pacchetti e classi LaTeX esterni in Java
Estendi le funzionalità di compilazione dei documenti LaTeX integrando pacchetti di macro esterni (.sty) e classi di documenti personalizzate (.cls) utilizzando Aspose.TeX for Java. Risolvi dinamicamente le dipendenze dei pacchetti da directory del file system locale, archivi ZIP compressi o stream di memoria personalizzati senza dover installare completamente TeX Live o MiKTeX.
Durante la compilazione di documenti LaTeX contenenti comandi come \usepackage{custompackage} o \documentclass{customclass}, il motore cerca i file .sty o .cls corrispondenti utilizzando le istanze IInputWorkingDirectory configurate.
Di seguito sono riportate le successive origini per la risoluzione dei pacchetti:
- Per caricare file modello standard aziendali (
.sty/.cls) archiviati in cartelle locali, utilizzare Directory locale come provider dei pacchetti e la classeInputFileSystemDirectory. - Per una distribuzione in un singolo file contenente i file TeX principali insieme a tutte le dipendenze dei pacchetti necessarie, utilizzare Archivio ZIP come provider dei pacchetti e la classe
InputZipDirectory. - Per un’esecuzione ad alte prestazioni con set di pacchetti precaricati e utilizzati frequentemente, integrati in un file
.fmt, utilizzare Formato precompilato come provider dei pacchetti eTeXConfig.customFormat().
Caricare pacchetti esterni da una cartella locale
Specificare una directory locale contenente file di stile personalizzati (.sty) o definizioni di classi (.cls) come directory di lavoro di input per la ricerca dei pacchetti.
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.");
}
}Caricare pacchetti e classi da un archivio ZIP compresso
Inserire i file sorgente .tex, i pacchetti .sty personalizzati e le immagini in un archivio .zip, quindi indicare ad Aspose.TeX di risolvere le dipendenze dei pacchetti direttamente dall’archivio compresso.
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.");
}
}Gestire i pacchetti TeX mancanti o standard
Aspose.TeX for Java include implementazioni integrate dei più diffusi pacchetti LaTeX di base (come graphicx, amsmath, amsfonts, color e geometry). Per i pacchetti non standard o di terze parti, assicurarsi che i file .sty corrispondenti siano inseriti nell’IInputWorkingDirectory attivo.
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.");
}
}Installazione e configurazione
Integra Aspose.TeX for Java nel tuo progetto utilizzando 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>
FAQ
1. Come trova Aspose.TeX i file .sty e .cls esterni?
Quando il motore LaTeX incontra \usepackage{name} o \documentclass{name}, cerca name.sty o name.cls nella directory fornita a TeXOptions.setInputWorkingDirectory().
2. Posso utilizzare pacchetti di macro complessi come TikZ o PSTricks?
Aspose.TeX supporta un’ampia gamma di funzionalità di valutazione delle macro. I pacchetti che si basano su estensioni native ObjectTeX o su primitive di disegno supportate vengono valutati direttamente; per l’output di figure autonome, è inoltre possibile utilizzare PngFigureRenderer o SvgFigureRenderer.
3. È possibile precaricare pacchetti pesanti per velocizzare l’elaborazione batch dei documenti?
Sì. È possibile creare un file di formato TeX personalizzato (.fmt) contenente pacchetti di macro precompilati e caricarlo tramite TeXConfig.customFormat() per ridurre significativamente l’overhead di esecuzione per singolo documento.