Külső LaTeX-csomagok és osztályok betöltése Java-ban

Bővítse a LaTeX-dokumentumok fordítási lehetőségeit külső makrócsomagok (.sty) és egyéni dokumentumosztályok (.cls) beépítésével az Aspose.TeX for Java használatával. Oldja fel dinamikusan a csomagfüggőségeket helyi fájlrendszer-könyvtárakból, tömörített ZIP-archívumokból vagy egyéni memóriastream-ekből anélkül, hogy teljes TeX Live- vagy MiKTeX-telepítésre lenne szükség.

 

A \usepackage{custompackage} vagy \documentclass{customclass} parancsokat tartalmazó LaTeX-dokumentumok fordításakor a motor a konfigurált IInputWorkingDirectory példányok segítségével megkeresi a megfelelő .sty vagy .cls fájlokat.

Az alábbiakban a csomagfeloldás következő forrásai találhatók:

  • A helyi mappákban tárolt vállalati szabványú sablonfájlok (.sty/.cls) betöltéséhez használja a Helyi könyvtár lehetőséget csomagszolgáltatóként és az InputFileSystemDirectory osztályt.
  • Az összes szükséges csomagfüggőséget a fő TeX-fájlok mellett tartalmazó egyfájlos terjesztéshez használja a ZIP-archívum lehetőséget csomagszolgáltatóként és az InputZipDirectory osztályt.
  • A nagy teljesítményű végrehajtáshoz, előre betöltött, gyakran használt, .fmt fájlba beépített csomagkészletekkel használja az Előre lefordított formátum lehetőséget csomagszolgáltatóként és a TeXConfig.customFormat() beállítást.

Külső csomagok betöltése helyi mappából

Adjon meg bemeneti munkakönyvtárként egy helyi könyvtárat, amely egyéni stílusfájlokat (.sty) vagy osztálydefiníciókat (.cls) tartalmaz a csomagkereséshez.

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

Csomagok és osztályok betöltése tömörített ZIP-archívumból

Csomagolja a .tex forrásfájlokat, az egyéni .sty csomagokat és a képeket egy .zip archívumba, majd utasítsa az Aspose.TeX-et, hogy közvetlenül a tömörített archívumból oldja fel a csomagfüggőségeket.

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

Hiányzó vagy szabványos TeX-csomagok kezelése

Az Aspose.TeX for Java népszerű alapvető LaTeX-csomagok (például graphicx, amsmath, amsfonts, color és geometry) beépített implementációit tartalmazza. Nem szabványos vagy harmadik féltől származó csomagok esetén gondoskodjon arról, hogy a megfelelő .sty fájlok az aktív IInputWorkingDirectory könyvtárban legyenek.

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

Telepítés és beállítás

Integrálja az Aspose.TeX for Java-t a projektjébe a Maven használatával:

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>

Gyakran ismételt kérdések

1. Hogyan találja meg az Aspose.TeX a külső .sty és .cls fájlokat?

Amikor a LaTeX-motor a \usepackage{name} vagy a \documentclass{name} paranccsal találkozik, a name.sty vagy name.cls fájlt a TeXOptions.setInputWorkingDirectory() számára megadott könyvtárban keresi.

2. Használhatok összetett makrócsomagokat, például a TikZ-et vagy a PSTricks-et?

Az Aspose.TeX a makrókiértékelési funkciók széles körét támogatja. A natív ObjectTeX-kiterjesztésekre vagy támogatott rajzolási primitívekre támaszkodó csomagokat közvetlenül kiértékeli; önálló ábra kimenetéhez a PngFigureRenderer vagy a SvgFigureRenderer is használható.

3. Előre betölthetek nagyméretű csomagokat a kötegelt dokumentumfeldolgozás felgyorsításához?

Igen. Létrehozhat egy egyéni TeX-formátumfájlt (.fmt), amely előre lefordított makrócsomagokat tartalmaz, majd betöltheti azt a TeXConfig.customFormat() segítségével, hogy jelentősen csökkentse a dokumentumonkénti végrehajtási többletterhelést.