Aspose.TeX的输入接口| 通过 .NET 为 Python 提供 Aspose.TeX
有关 Aspose.TeX for Python 中 I/O 实现的正式定义,请查阅 API 参考。
输入目录背后的想法
鉴于Tex语言的I/O元素只能处理文件名,aspose.tex for Python将目录定义为名称和数据集合之间的映射。这些数据集可以是文件,流,数组或任何其他类型。 API允许单独规范输入和输出工作目录。它提供了常规 InputWorkingDirectory类,用户可以为其特定需求实施。此外,API提供了内置的实现,将在后面讨论。该接口包括 get_file()方法,该方法可检索数据流并根据给定名称确定完整的文件名,该名称用作映射密钥。
从磁盘文件系统检索文件输入
这是我们将采用的方法:
将 ASPOSE_TEX_OUTPUT_DIR 设置为输出目录(默认 output)。请先应用许可证。
Licensing.
1# Read a TeX file from a file system working directory.
2import os
3from pathlib import Path
4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
6from aspose.tex.presentation.xps import XpsDevice
7
8input_dir = Path(os.environ.get("ASPOSE_TEX_INPUT_DIR", "input")).resolve()
9if not (input_dir / "hello-world.tex").is_file():
10 raise FileNotFoundError(input_dir / "hello-world.tex")
11output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
12output_dir.mkdir(parents=True, exist_ok=True)
13
14options = TeXOptions.console_app_options(TeXConfig.object_tex())
15options.interaction = Interaction.NONSTOP_MODE
16options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
17options.terminal_out = OutputMemoryTerminal()
18options.input_working_directory = InputFileSystemDirectory(str(input_dir))
19device = XpsDevice()
20job_result = TeXJob("hello-world.tex", device, options).run()将 ASPOSE_TEX_INPUT_DIR 设置为包含 hello-world.tex 的文件夹(默认 input)。示例使用 TeXConfig.object_tex() 处理 plain TeX,生成 hello-world.xps 和 hello-world.log。输入文件:
1Hello, World!
2\end从zip档案中检索文件输入
另一个选项是将输入文件存储在zip存档中,并将其视为输入目录。在这种情况下,应遵循以下步骤:
1# Read a TeX file from a subdirectory inside a ZIP archive.
2import os
3from pathlib import Path
4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
5from aspose.tex.io import InputZipDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
6from aspose.tex.presentation.xps import XpsDevice
7
8output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
9output_dir.mkdir(parents=True, exist_ok=True)
10input_zip = Path(os.environ.get("ASPOSE_TEX_INPUT_ZIP", "zip-in.zip")).resolve()
11
12# Keep the binary ZIP stream open until the job finishes.
13with input_zip.open("rb") as input_stream:
14 options = TeXOptions.console_app_options(TeXConfig.object_tex())
15 options.interaction = Interaction.NONSTOP_MODE
16 options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
17 options.terminal_out = OutputMemoryTerminal()
18 # Resolve hello-world.tex inside the in/ directory of the archive.
19 options.input_working_directory = InputZipDirectory(input_stream, "in")
20 device = XpsDevice()
21 job_result = TeXJob("hello-world.tex", device, options).run()ASPOSE_TEX_INPUT_ZIP 指定包含 in/hello-world.tex 的压缩包(默认 zip-in.zip)。以二进制模式 rb 打开,并在作业结束前保持流打开。
首先,我们创建包含zip文件的流。随后,在创建转换选项后,我们将 InputzipDirectory类的实例分配给 Input_working_directory属性。构造函数的第二个参数表示存档中的基本路径。如果我们希望整个存档作为输入目录,则应提供一个空字符串作为参数。
输入终端背后的想法
现在,让我们考虑终端输入的概念。 python的aspose.tex定义了用于此目的的常规 iinputterminal接口,其中包括一个单个属性,该属性返回 终端Rreader实现的实例。可用的实现将在稍后讨论。
从控制台获取终端输入
为了实现这一目标,我们需要将 InputConsoleterminal类的实例分配给 terminal_in选项。
1# Read a line from the console while processing a TeX stream.
2import os
3from pathlib import Path
4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
5from io import BytesIO
6from aspose.tex.io import InputConsoleTerminal, OutputConsoleTerminal, OutputFileSystemDirectory
7from aspose.tex.presentation.xps import XpsDevice
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_tex())
13options.interaction = Interaction.SCROLL_MODE
14options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
15options.terminal_in = InputConsoleTerminal()
16options.terminal_out = OutputConsoleTerminal()
17# Enter a line of text when TeX requests input.
18with BytesIO(br"\read-1 to \answer \answer\par\end") as input_stream:
19 job_result = TeXJob(input_stream, XpsDevice(), options).run()示例通过 \read 读取一行并写入 texput.xps。在终端输入例如 Terminal input works!,或通过标准输入提供该行。SCROLL_MODE 允许此输入请求。