Tải các gói và lớp LaTeX bên ngoài trong Java

Mở rộng khả năng biên dịch tài liệu LaTeX bằng cách tích hợp các gói macro bên ngoài (.sty) và các lớp tài liệu tùy chỉnh (.cls) sử dụng Aspose.TeX for Java. Tự động giải quyết các phụ thuộc của gói từ các thư mục hệ thống tệp cục bộ, kho lưu trữ ZIP nén hoặc các luồng bộ nhớ tùy chỉnh mà không cần cài đặt đầy đủ TeX Live hoặc MiKTeX.

 

Khi biên dịch các tài liệu LaTeX chứa các lệnh như \usepackage{custompackage} hoặc \documentclass{customclass}, công cụ sẽ tìm kiếm các tệp .sty hoặc .cls tương ứng bằng cách sử dụng các phiên bản IInputWorkingDirectory đã được cấu hình.

Sau đây là các nguồn phân giải gói:

  • Để tải các tệp mẫu theo tiêu chuẩn công ty (.sty/.cls) được lưu trữ trong các thư mục cục bộ, hãy sử dụng Thư mục cục bộ làm nhà cung cấp gói và lớp InputFileSystemDirectory.
  • Đối với bản phân phối một tệp chứa các tệp TeX chính cùng với tất cả các phụ thuộc gói cần thiết, hãy sử dụng Kho lưu trữ ZIP làm nhà cung cấp gói và lớp InputZipDirectory.
  • Để thực thi hiệu suất cao với các tập hợp gói được tải sẵn và sử dụng thường xuyên được tích hợp trong tệp .fmt, hãy sử dụng Định dạng được biên dịch trước làm nhà cung cấp gói và TeXConfig.customFormat().

Tải các gói bên ngoài từ một thư mục cục bộ

Chỉ định một thư mục cục bộ chứa các tệp kiểu tùy chỉnh (.sty) hoặc định nghĩa lớp (.cls) làm thư mục làm việc đầu vào để tra cứu gói.

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.");
    }
}

Tải các gói và lớp từ kho lưu trữ ZIP nén

Đóng gói các tệp nguồn .tex, các gói .sty tùy chỉnh và hình ảnh vào một kho lưu trữ .zip, sau đó hướng dẫn Aspose.TeX giải quyết các phụ thuộc của gói trực tiếp từ kho lưu trữ nén.

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.");
    }
}

Xử lý các gói TeX bị thiếu hoặc tiêu chuẩn

Aspose.TeX for Java bao gồm các triển khai tích hợp của các gói LaTeX cốt lõi phổ biến (chẳng hạn như graphicx, amsmath, amsfonts, colorgeometry). Đối với các gói không tiêu chuẩn hoặc của bên thứ ba, hãy đảm bảo các tệp .sty tương ứng được đặt trong IInputWorkingDirectory đang hoạt động.

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.");
    }
}

Cài đặt và thiết lập

Tích hợp Aspose.TeX for Java vào dự án của bạn bằng 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 tìm các tệp .sty.cls bên ngoài như thế nào?

Khi công cụ LaTeX gặp \usepackage{name} hoặc \documentclass{name}, nó sẽ tìm name.sty hoặc name.cls trong thư mục được cung cấp cho TeXOptions.setInputWorkingDirectory().

2. Tôi có thể sử dụng các gói macro phức tạp như TikZ hoặc PSTricks không?

Aspose.TeX hỗ trợ nhiều tính năng đánh giá macro. Các gói dựa trên các phần mở rộng ObjectTeX gốc hoặc các primitive vẽ được hỗ trợ sẽ được đánh giá trực tiếp; để xuất hình độc lập, cũng có thể sử dụng PngFigureRenderer hoặc SvgFigureRenderer.

3. Tôi có thể tải trước các gói nặng để tăng tốc quá trình xử lý tài liệu hàng loạt không?

Có. Bạn có thể tạo một tệp định dạng TeX tùy chỉnh (.fmt) chứa các gói macro được biên dịch trước và tải tệp đó thông qua TeXConfig.customFormat() để giảm đáng kể chi phí thực thi cho từng tài liệu.