Завантаження зовнішніх пакетів і класів LaTeX у Java
Розширте можливості компіляції документів LaTeX, додаючи зовнішні макропакети (.sty) і власні класи документів (.cls) за допомогою Aspose.TeX for Java. Динамічно розв’язуйте залежності пакетів із локальних каталогів файлової системи, стиснених ZIP-архівів або власних потоків пам’яті без необхідності повного встановлення TeX Live або MiKTeX.
Під час компіляції документів LaTeX, що містять такі команди, як \usepackage{custompackage} або \documentclass{customclass}, рушій шукає відповідні файли .sty або .cls за допомогою налаштованих екземплярів IInputWorkingDirectory.
Ось наступні джерела для розв’язання пакетів:
- Для завантаження корпоративних файлів шаблонів (
.sty/.cls), що зберігаються в локальних папках, використовуйте Локальний каталог як постачальника пакетів і класInputFileSystemDirectory. - Для дистрибутива в одному файлі, що містить основні TeX-файли разом з усіма необхідними залежностями пакетів, використовуйте ZIP-архів як постачальника пакетів і клас
InputZipDirectory. - Для високопродуктивного виконання з попередньо завантаженими наборами часто використовуваних пакетів, вбудованими у файл
.fmt, використовуйте Попередньо скомпільований формат як постачальника пакетів іTeXConfig.customFormat().
Завантаження зовнішніх пакетів із локальної папки
Вкажіть локальний каталог, що містить власні файли стилів (.sty) або визначення класів (.cls), як вхідний робочий каталог для пошуку пакетів.
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.");
}
}Завантаження пакетів і класів зі стисненого ZIP-архіву
Помістіть вихідні файли .tex, власні пакети .sty і зображення в архів .zip та налаштуйте Aspose.TeX для розв’язання залежностей пакетів безпосередньо зі стисненого архіву.
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.");
}
}Обробка відсутніх або стандартних пакетів TeX
Aspose.TeX for Java містить вбудовані реалізації популярних основних пакетів LaTeX (таких як graphicx, amsmath, amsfonts, color і geometry). Для нестандартних пакетів або пакетів сторонніх розробників переконайтеся, що відповідні файли .sty розміщено в активному IInputWorkingDirectory.
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.");
}
}Встановлення та налаштування
Інтегруйте Aspose.TeX for Java у свій проєкт за допомогою 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. Як Aspose.TeX знаходить зовнішні файли .sty і .cls?
Коли механізм LaTeX зустрічає \usepackage{name} або \documentclass{name}, він шукає name.sty або name.cls у каталозі, наданому для TeXOptions.setInputWorkingDirectory().
2. Чи можна використовувати складні пакети макросів, такі як TikZ або PSTricks?
Aspose.TeX підтримує широкий спектр можливостей обчислення макросів. Пакети, що покладаються на нативні розширення ObjectTeX або підтримувані примітиви малювання, обчислюються безпосередньо; для автономного виведення рисунків також можна використовувати PngFigureRenderer або SvgFigureRenderer.
3. Чи можна попередньо завантажувати великі пакети для прискорення пакетної обробки документів?
Так. Ви можете створити власний файл формату TeX (.fmt), що містить попередньо скомпільовані пакети макросів, і завантажити його через TeXConfig.customFormat(), щоб значно зменшити накладні витрати на виконання для кожного документа.