その他のTEX変換出力形式| Java

現在、ラテックス以外の形式で記述されたTEXファイルを変換したいと思う可能性は非常に低いです。しかし、これは、何らかの理由でTex言語や内部を勉強している場合に可能です。とにかく、JavaのAspose.TeXでは、プレーンTex形式で記述されたファイルを変換できます。また、これらの形式で設計されたカスタム形式とタイプセットドキュメントを作成することもできます。

カスタム形式の作成から始めます。

カスタム形式の作成

フォーマットファイルは、TEXエンジンの内部状態のバイナリダンプであることを覚えておいてください。

inputDirectory に customtex.tex とその依存ファイルを含むフォルダーを、outputDirectory に既存の出力フォルダーを指定します。形式のソースは \dump で終わる必要があり、この例では出力フォルダーに customtex.fmt を作成します。例で使用する Aspose.TeX クラスと、組版に必要な com.aspose.tex.rendering.XpsDevice、java.io.ByteArrayInputStream、java.nio.charset.StandardCharsets をインポートします。呼び出し元のメソッドは例外を処理するか宣言する必要があります。評価版の制限を避けるため、 ライセンスガイドに従ってライセンスを適用してください。

 1// Create a custom TeX format from customtex.tex, which ends with \dump.
 2// inputDirectory contains customtex.tex; outputDirectory is an existing output folder.
 3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectIniTeX());
 4InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
 5OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
 6options.setInputWorkingDirectory(input);
 7options.setOutputWorkingDirectory(output);
 8options.setInteraction(Interaction.NonstopMode);
 9options.setTerminalOut(new OutputMemoryTerminal());
10try {
11    TeXJob.createFormat("customtex", options);
12} finally {
13    output.close();
14    input.close();
15}

ご覧のとおり、コードはTEXファイルを変換するためのコードに似ています。しかし、いくつかの違いがあります。

まず、 texconfig.objectinitex() ジョブ構成を使用します。これは、エンジンの状態「Virgin」を離れる特別な構成です。つまり、内部パラメーターにはデフォルト値があり、コントロールシーケンスのセットはプリミティブのセットと一致します。私たちの例では、プリミティブのセットは、 ここに言及された意味で拡張されます。

次に、通常どおり、入力および出力作業ディレクトリを設定します。入力作業ディレクトリには、メイン形式のソースファイルとそのすべての依存関係を含める必要があります。

そして、2番目の重要な違いは、私たちが仕事をする方法です。今回は、static createformat() メソッドを使用します。これは、オプションとともにメインソースファイルの名前を取得し、形式名と同じでなければなりません。

カスタム形式でTEXファイルを植林します

独自のTex形式ができたので、この形式で記述されたTexファイルを整形したいと考えています。これがコードです:

formatDirectory に作成済みの customtex.fmt を含むフォルダーを、outputDirectory に既存の出力フォルダーを指定します。この例は自己完結したテキストストリームを typeset-with-custom-format.xps に組版するため、入力作業ディレクトリは不要です。主入力が画像などの依存ファイルを参照する場合は、入力作業ディレクトリを設定します。

 1// Typeset text using the previously created customtex.fmt format.
 2// formatDirectory contains customtex.fmt; outputDirectory is an existing output folder.
 3InputFileSystemDirectory formatInput = new InputFileSystemDirectory(formatDirectory);
 4FormatProvider formatProvider = new FormatProvider(formatInput, "customtex");
 5OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
 6XpsDevice device = new XpsDevice();
 7TeXJobResult result;
 8try {
 9    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX(formatProvider));
10    options.setJobName("typeset-with-custom-format");
11    options.setOutputWorkingDirectory(output);
12    options.setInteraction(Interaction.NonstopMode);
13    options.setTerminalOut(new OutputMemoryTerminal());
14    // No input working directory is needed for this self-contained stream.
15    try (ByteArrayInputStream text = new ByteArrayInputStream(
16            "Congratulations! You have successfully typeset this text with your own TeX format!\\end"
17                    .getBytes(StandardCharsets.US_ASCII))) {
18        result = new TeXJob(text, device, options).run();
19    }
20} finally {
21    device.dispose();
22    output.close();
23    formatProvider.close();
24    formatInput.close();
25}

明らかに、形式を何らかの形で指定する必要があります。まず、 formatprovider クラスのインスタンスを作成する必要があります。次に、オプションコンストラクターで TeXConfig.objectTeX(FormatProvider)構成を使用します。これは、フォーマットプロバイダーを引数として受け取り、エンジンの「処女」状態の上に形式をロードします。

両方の例は対話なしで実行され、端末出力をメモリに保存します。組版の例では、ジョブ終了後に入力ストリームを閉じ、XPS デバイスを解放し、作業ディレクトリと形式プロバイダーを閉じます。これらの機能は、この ガイドで前述しています。

Plain Tex形式でTexファイルを植林します

形式プロバイダーを指定せずに TeXConfig.objectTeX() を使用すると、エンジンはデフォルト形式をロードします。これは オブジェクトTexである4番目の意味でです。したがって、Plain Tex形式でTexファイルが書かれている場合、この方法では、サポートされているターゲット形式に変換できます。