Java에서 외부 LaTeX 패키지 및 클래스 로드

Aspose.TeX for Java를 사용하여 외부 매크로 패키지(.sty)와 사용자 지정 문서 클래스(.cls)를 통합하여 LaTeX 문서 컴파일 기능을 확장할 수 있습니다. 전체 TeX Live 또는 MiKTeX 설치 없이 로컬 파일 시스템 디렉터리, 압축된 ZIP 아카이브 또는 사용자 지정 메모리 스트림에서 패키지 종속성을 동적으로 해결할 수 있습니다.

 

\usepackage{custompackage} 또는 \documentclass{customclass}와 같은 명령이 포함된 LaTeX 문서를 컴파일할 때 엔진은 구성된 IInputWorkingDirectory 인스턴스를 사용하여 해당 .sty 또는 .cls 파일을 검색합니다.

다음은 패키지 확인 및 해결을 위한 소스입니다:

  • 로컬 폴더에 저장된 회사 표준 템플릿 파일(.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.");
    }
}

설치 및 설정

Maven을 사용하여 Aspose.TeX for Java를 프로젝트에 통합합니다:

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}을 만나면 TeXOptions.setInputWorkingDirectory()에 제공된 디렉터리에서 name.sty 또는 name.cls를 검색합니다.

2. TikZ 또는 PSTricks와 같은 복잡한 매크로 패키지를 사용할 수 있나요?

Aspose.TeX는 광범위한 매크로 평가 기능을 지원합니다. 네이티브 ObjectTeX 확장 또는 지원되는 그리기 프리미티브에 의존하는 패키지는 직접 평가되며, 독립적인 그림 출력을 위해 PngFigureRenderer 또는 SvgFigureRenderer도 사용할 수 있습니다.

3. 일괄 문서 처리를 빠르게 하기 위해 용량이 큰 패키지를 미리 로드할 수 있나요?

예. 사전 컴파일된 매크로 패키지가 포함된 사용자 지정 TeX 포맷 파일(.fmt)을 생성하고 TeXConfig.customFormat()을 통해 로드하면 문서별 실행 오버헤드를 크게 줄일 수 있습니다.