使用 ZIP I/O 排版 TeX

使用 ZIP 存档作为输入和输出将 TeX 转换为 PDF。用于 C++ 的 API

 

TeX 语言是一种排版工具,可以创建专业文档而无需担心格式问题。 Aspose.TeX 为您提供 C++ 的 API 解决方案,这是一个灵活且易于使用的库,用于排版 TeX 和 LaTeX 文件。

TeX 是一个强大的、先进的系统,但它的原生格式在学术和科学界之外并没有被广泛使用。另一方面,PDF 是一种便携式格式,可以在大多数设备上轻松查看,并且被更广泛地接受。在大多数现代浏览器中,每台设备都具备阅读 PDF 的功能。将 TeX 转换为 PDF 允许与更多的受众共享文档,并为那些没有专门软件的人提供更易于访问的格式。此外,PDF 提供了一些优于 TeX 的优势,例如更好的字体呈现、支持交互性以及更容易管理页面大小和布局。

API 支持输入和输出目录的分离,为用户自定义输出提供 IOutputWorkingDirectory 接口。它有自己的实现。此接口扩展 IInputWorkingDirectory,因为引擎可能需要在读取文件之前写入文件。接口的*GetOutputFile()方法返回写入流,而不是GetFile()*提供的读取流。

Package Manager Console Command

PM> Install-Package Aspose.TeX.Cpp

在下面的代码中,我们将把输入文件放在一个 ZIP 存档中,并将其视为一个输入目录,并创建一个文件(或流),让 TeX 引擎将其用作 ZIP 存档来存储输出文件。遵循指南:

  1. 在将用作输入工作目录的 ZIP 存档上打开一个流。
  2. 在 ObjectTeX 引擎扩展上为默认的 ObjectTeX 格式创建排版选项。
  3. 使用 InputZipDirectoryOutputZipDirectory 类。
  4. 指定控制台作为输出终端。
  5. 使用 PdfSaveOptions 类创建并指定保存选项。
  6. 运行转换。
  7. 细化输出。
  8. 完成输出 ZIP 存档。

使用 ZIP 输入和输出将 TeX 转换为 PDF 的 C++ 代码

using Aspose::TeX::IO;
using Aspose::TeX::Presentation::Pdf;
// Open a stream on a ZIP archive that will serve as the input working directory.
System::SharedPtr<System::IO::Stream> inZipStream =
    System::IO::File::Open(System::IO::Path::Combine(RunExamples::InputDirectory, u"zip-in.zip"), System::IO::FileMode::Open);
// Clearing resources under the 'using' statement
System::Details::DisposeGuard<1> __dispose_guard_1({ inZipStream });
try
{
    System::SharedPtr<System::IO::Stream> outZipStream =
        System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, u"zip-pdf-out.zip"), System::IO::FileMode::Create);
    // Clearing resources under the 'using' statement
    System::Details::DisposeGuard<1> __dispose_guard_0({ outZipStream });
    try
    {
        // Create typesetting options for the default Object TeX format on the Object TeX engine extension.
        System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());
        // Specify a ZIP archive working directory for the input.
        options->set_InputWorkingDirectory(System::MakeObject<InputZipDirectory>(inZipStream, u"in"));
        // Specify a ZIP archive working directory for the output.
        options->set_OutputWorkingDirectory(System::MakeObject<OutputZipDirectory>(outZipStream));
        // Specify console as output terminal.
        options->set_TerminalOut(System::MakeObject<OutputConsoleTerminal>());

        // Create and specify saving options.
        options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());
        // Run the typesetting job.
        System::MakeObject<Aspose::TeX::TeXJob>(u"hello-world", System::MakeObject<PdfDevice>(), options)->Run();

        // Finalize the output ZIP archive.
        (System::DynamicCast<Aspose::TeX::IO::OutputZipDirectory>(options->get_OutputWorkingDirectory()))->Finish();
    }
    catch(...)
    {
        __dispose_guard_0.SetCurrentException(std::current_exception());
    }
}
catch(...)
{
    __dispose_guard_1.SetCurrentException(std::current_exception());
}



常问问题

1. 我可以使用 ZIP 文件作为输入来排版 TeX 文档吗?

Aspose.TeX 支持从 ZIP 文件等压缩档案中读取 TeX 源文件。您可以将所有必要的文件(包括 TeX 源文件、图像和其他资源)包含在 ZIP 存档中,然后指定 ZIP 文件作为 LaTeX 编译器的输入。这可以方便地组织和分发 LaTeX 项目,特别是在处理具有多个依赖项的大型或复杂文档时。

2. 使用 ZIP 文件排版 TeX 文档有什么优点吗?

是的,使用 ZIP 文件排版 TeX 文档有几个优点。首先,ZIP 文件提供了一种便捷的方法来将与 LaTeX 项目相关的多个文件(包括 TeX 源文件、参考书目、图像和样式文件)打包和组织到单个压缩存档中。这简化了 LaTeX 文档的分发和共享,尤其是在与他人协作或在线共享项目时。

3. 如何排版 TeX 文件?

要使用 Aspose.TeX API 解决方案排版 TeX 文件,您需要基于 Object TeX 引擎扩展创建 Object TeX 或 Object LaTeX 格式的转换选项。然后指定输出的文件系统工作目录。最后,创建 TeXJob 类的实例并使用 TeXJob.Run() 方法运行排版过程。

TeX 什么是TeX文件格式

TeX 实际上不是一种格式。它同时是一种编程语言,也是理解这种语言的解释器引擎。 TeX 文件是在 LaTeX 中创建的文档。该文档可以包括图形、表格、符号、列表、公式和方程式。