Carregar pacotes e classes LaTeX externos em Java
Amplie os recursos de compilação de documentos LaTeX incorporando pacotes de macros externos (.sty) e classes de documentos personalizadas (.cls) usando o Aspose.TeX for Java. Resolva dependências de pacotes dinamicamente a partir de diretórios do sistema de arquivos local, arquivos ZIP compactados ou fluxos de memória personalizados, sem precisar de uma instalação completa do TeX Live ou MiKTeX.
Ao compilar documentos LaTeX que contêm comandos como \usepackage{custompackage} ou \documentclass{customclass}, o mecanismo procura os arquivos .sty ou .cls correspondentes usando as instâncias de IInputWorkingDirectory configuradas.
Estas são as próximas fontes de resolução de pacotes:
- Para carregar arquivos de modelo padrão da empresa (
.sty/.cls) armazenados em pastas locais, use Diretório local como provedor de pacotes e a classeInputFileSystemDirectory. - Para uma distribuição em um único arquivo que contenha os arquivos TeX principais juntamente com todas as dependências de pacotes necessárias, use Arquivo ZIP como provedor de pacotes e a classe
InputZipDirectory. - Para execução de alto desempenho com conjuntos de pacotes pré-carregados e usados com frequência, incorporados em um arquivo
.fmt, use Formato pré-compilado como provedor de pacotes eTeXConfig.customFormat().
Carregar pacotes externos de uma pasta local
Especifique um diretório local contendo arquivos de estilo personalizados (.sty) ou definições de classes (.cls) como diretório de trabalho de entrada para a pesquisa de pacotes.
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.");
}
}Carregar pacotes e classes de um arquivo ZIP compactado
Empacote os arquivos-fonte .tex, os pacotes .sty personalizados e as imagens em um arquivo .zip e instrua o Aspose.TeX a resolver as dependências dos pacotes diretamente do arquivo compactado.
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.");
}
}Lidar com pacotes TeX ausentes ou padrão
O Aspose.TeX for Java inclui implementações integradas de pacotes LaTeX básicos populares (como graphicx, amsmath, amsfonts, color e geometry). Para pacotes não padrão ou de terceiros, certifique-se de que os arquivos .sty correspondentes estejam dentro do IInputWorkingDirectory ativo.
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.");
}
}Instalação e configuração
Integre o Aspose.TeX for Java ao seu projeto usando o 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. Como o Aspose.TeX encontra arquivos .sty e .cls externos?
Quando o mecanismo LaTeX encontra \usepackage{name} ou \documentclass{name}, ele procura name.sty ou name.cls no diretório fornecido a TeXOptions.setInputWorkingDirectory().
2. Posso usar pacotes de macros complexos como TikZ ou PSTricks?
O Aspose.TeX oferece suporte a uma ampla variedade de recursos de avaliação de macros. Pacotes que dependem de extensões nativas ObjectTeX ou de primitivas de desenho compatíveis são avaliados diretamente; para saída de figuras independentes, PngFigureRenderer ou SvgFigureRenderer também podem ser usados.
3. Posso pré-carregar pacotes pesados para acelerar o processamento em lote de documentos?
Sim. Você pode criar um arquivo de formato TeX personalizado (.fmt) contendo pacotes de macros pré-compilados e carregá-lo por meio de TeXConfig.customFormat() para reduzir significativamente a sobrecarga de execução por documento.