Aspose.TeXの入力インターフェイス| .NET経由でPython用のAspose.TeX
Aspose.TeX for Python の I/O 実装の正式な定義については、 API リファレンス を参照してください。
入力ディレクトリの背後にあるアイデア
Tex言語のI/O Primitivesはファイル名のみを処理できることを考えると、Python Aspose.TeX **ディレクトリを名前とデータのコレクションのマッピングとして定義します。これらのデータコレクションは、ファイル、ストリーム、配列、またはその他のタイプです。 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\endZIPアーカイブからファイル入力を取得します
別のオプションは、入力ファイルを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プロパティに割り当てます。コンストラクターの2番目のパラメーターは、アーカイブ内のベースパスを表します。アーカイブ全体が入力ディレクトリとして機能することを望む場合は、引数として空の文字列を提供する必要があります。
入力端子の背後にあるアイデア
次に、ターミナル入力の概念を考えてみましょう。 pythonのAspose.TeXこの目的のために特に一般的な iinputterminalインターフェイスを定義します。これには、 TerminalReaderの実装のインスタンスを返す単一のプロパティが含まれます。利用可能な実装については、後で説明します。
コンソールから端子入力を取得します
これを達成するには、 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 で1行を読み、texput.xps に出力します。端末で Terminal input works! などを入力するか、標準入力から渡してください。SCROLL_MODE はこの入力要求を許可します。