其他TEX转换输出格式| 通过 .NET 为 Python 提供 Aspose.TeX
您目前不太可能需要转换以乳胶以外的其他格式编写的TEX文件。但是,如果您出于任何原因正在研究Tex语言或Tex的内部内容,那仍然是可能的。无论如何,Aspose.TeX for Python使您可以转换以普通Tex格式编写的文件,还允许您创建以这些格式设计的自定义格式和排版文档。
首先,我们将创建一种自定义格式。
创建自定义格式
格式文件是 TeX 引擎内部状态的二进制表示。请先应用
许可证。将 customtex.tex 放入 ASPOSE_TEX_INPUT_DIR(默认为 input)下的 CustomTeXFormat 子目录。ASPOSE_TEX_OUTPUT_DIR 指定输出文件夹(默认为 output),第一个示例会在其中创建 customtex.fmt。
1# Create a reusable custom TeX format.
2import os
3from pathlib import Path
4from os import path
5from io import BytesIO
6from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
7from aspose.tex.io import InputFileSystemDirectory, InputZipDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
8from aspose.tex.resourceproviders import FormatProvider
9from aspose.tex.presentation.xps import XpsDevice
10
11output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
12output_dir.mkdir(parents=True, exist_ok=True)
13input_dir = Path(os.environ.get("ASPOSE_TEX_INPUT_DIR", "input")).resolve() / "CustomTeXFormat"
14# Create TeX engine options for no format upon ObjectTeX engine extension.
15options = TeXOptions.console_app_options(TeXConfig.object_ini_tex)
16options.interaction = Interaction.NONSTOP_MODE
17options.terminal_out = OutputMemoryTerminal()
18# Specify a file system working directory for the input.
19options.input_working_directory = InputFileSystemDirectory(str(input_dir))
20# Specify a file system working directory for the output.
21options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
22
23# Run format creation.
24TeXJob.create_format("customtex", options)
25
26# For further output to look fine.
27options.terminal_out.writer.write_line()如您所见,代码与转换Tex文件的代码相似。但是,有一些区别。
首先,在这种情况下,我们使用 texconfig.object_ini_tex作业配置。这种配置可确保发动机的状态为“处女”,这意味着内部参数具有其默认值,并且控制序列的集合与原始序列一组对齐。在我们的示例中,(在Aspose.TeX和Object Tex文章)中扩展了一组原语(2)。
在此之后,我们继续设置输入和输出工作目录。输入工作目录应包括主要格式源文件及其所有依赖项。
第二个主要区别是我们执行工作的方法。在这种情况下,我们使用静态 create_format()方法,该方法与选项结合使用,要求主源文件的名称与格式名称相同。
以您的自定义格式排版TEX文件
以下示例首先创建 customtex.fmt,因此可以独立运行。随后它加载该格式,将二进制流中的文本排版并输出到 typeset-with-custom-format.xps。
1# Typeset text using a custom TeX format.
2import os
3from pathlib import Path
4from os import path
5from io import BytesIO
6from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
7from aspose.tex.io import InputFileSystemDirectory, InputZipDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
8from aspose.tex.resourceproviders import FormatProvider
9from aspose.tex.presentation.xps import XpsDevice
10
11output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
12output_dir.mkdir(parents=True, exist_ok=True)
13input_dir = Path(os.environ.get("ASPOSE_TEX_INPUT_DIR", "input")).resolve() / "CustomTeXFormat"
14
15format_options = TeXOptions.console_app_options(TeXConfig.object_ini_tex)
16format_options.input_working_directory = InputFileSystemDirectory(str(input_dir))
17format_options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
18format_options.interaction = Interaction.NONSTOP_MODE
19format_options.terminal_out = OutputMemoryTerminal()
20TeXJob.create_format("customtex", format_options)
21# Create the format provider using the file system input working directory.
22# We use the project output directory as our custom format file is supposed to be located there.
23with FormatProvider(InputFileSystemDirectory(str(output_dir)), "customtex") as format_provider:
24 # Create conversion options for a custom format upon ObjectTeX engine extension.
25 options = TeXOptions.console_app_options(TeXConfig.object_tex(format_provider))
26 options.interaction = Interaction.NONSTOP_MODE
27 options.terminal_out = OutputMemoryTerminal()
28 options.job_name = "typeset-with-custom-format"
29 # Specify the input working directory. This is not required here as we are providing the main input as a stream.
30 # But it is required when the main input has dependencies (e.g. images).
31 options.input_working_directory = InputFileSystemDirectory(str(input_dir))
32 # Specify a file system working directory for the output.
33 options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
34
35 # Run the job.
36 TeXJob(BytesIO("Congratulations! You have successfully typeset this text with your own TeX format!\\end".encode('ascii')),
37 XpsDevice(), options).run()
38
39 # For further output to look fine.
40 options.terminal_out.writer.write_line()要指定格式,我们需要创建 formatprovider类的实例。在选项构造函数中,我们使用 texconfig.object_tex()配置,该配置要求我们的格式提供商作为参数,并将格式加载到引擎的“ Virgin”状态之上。
其余的代码应该对您熟悉,因为它利用了 指南早期讨论的功能。
以普通Tex格式排版Tex文件
如果我们从上面显示的代码中删除格式提供程序,则引擎将加载默认格式,即 object tex在其第四种意义上。因此,如果您使用以普通Tex格式编写的TEX文件,则可以使用此方法将其转换为任何受支持的目标格式。