Memuat paket dan kelas LaTeX eksternal di Java

Perluas kemampuan kompilasi dokumen LaTeX dengan mengintegrasikan paket makro eksternal (.sty) dan kelas dokumen kustom (.cls) menggunakan Aspose.TeX for Java. Atasi dependensi paket secara dinamis dari direktori sistem file lokal, arsip ZIP terkompresi, atau stream memori kustom tanpa memerlukan instalasi TeX Live atau MiKTeX secara lengkap.

 

Saat mengompilasi dokumen LaTeX yang berisi perintah seperti \usepackage{custompackage} atau \documentclass{customclass}, engine mencari file .sty atau .cls yang sesuai menggunakan instance IInputWorkingDirectory yang telah dikonfigurasi.

Berikut adalah sumber resolusi paket selanjutnya:

  • Untuk memuat file template standar perusahaan (.sty/.cls) yang disimpan dalam folder lokal, gunakan Direktori Lokal sebagai penyedia paket dan kelas InputFileSystemDirectory.
  • Untuk distribusi satu file yang berisi file TeX utama beserta semua dependensi paket yang diperlukan, gunakan Arsip ZIP sebagai penyedia paket dan kelas InputZipDirectory.
  • Untuk eksekusi berperforma tinggi dengan kumpulan paket yang telah dimuat sebelumnya dan sering digunakan yang terintegrasi ke dalam file .fmt, gunakan Format Terkompilasi Sebelumnya sebagai penyedia paket dan TeXConfig.customFormat().

Memuat paket eksternal dari folder lokal

Tentukan direktori lokal yang berisi file gaya kustom (.sty) atau definisi kelas (.cls) sebagai direktori kerja input untuk pencarian paket.

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

Memuat paket dan kelas dari arsip ZIP terkompresi

Kemas file sumber .tex, paket .sty kustom, dan gambar ke dalam arsip .zip, lalu instruksikan Aspose.TeX untuk mengatasi dependensi paket secara langsung dari arsip terkompresi.

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

Menangani paket TeX yang hilang atau standar

Aspose.TeX for Java menyertakan implementasi bawaan untuk paket inti LaTeX populer (seperti graphicx, amsmath, amsfonts, color, dan geometry). Untuk paket non-standar atau pihak ketiga, pastikan file .sty yang sesuai ditempatkan di dalam IInputWorkingDirectory yang aktif.

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

Instalasi dan Pengaturan

Integrasikan Aspose.TeX for Java ke dalam proyek Anda menggunakan 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>

Pertanyaan yang Sering Diajukan

1. Bagaimana Aspose.TeX menemukan file .sty dan .cls eksternal?

Ketika mesin LaTeX menemukan \usepackage{name} atau \documentclass{name}, mesin tersebut mencari name.sty atau name.cls di direktori yang diberikan ke TeXOptions.setInputWorkingDirectory().

2. Bisakah saya menggunakan paket makro kompleks seperti TikZ atau PSTricks?

Aspose.TeX mendukung berbagai fitur evaluasi makro. Paket yang bergantung pada ekstensi native ObjectTeX atau primitive gambar yang didukung akan dievaluasi secara langsung; untuk output gambar mandiri, PngFigureRenderer atau SvgFigureRenderer juga dapat digunakan.

3. Bisakah saya memuat terlebih dahulu paket-paket besar untuk mempercepat pemrosesan dokumen secara batch?

Ya. Anda dapat membuat file format TeX khusus (.fmt) yang berisi paket makro yang telah dikompilasi sebelumnya dan memuatnya melalui TeXConfig.customFormat() untuk secara signifikan mengurangi overhead eksekusi per dokumen.