これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド texexpand です。
プログラム:
NAME
texexpand - TeX ファイル内の \input ステートメントと \include ステートメントを展開します
DESCRIPTION
一般的な翻訳メカニズム:
メインプログラム latex2html は、一部のファイルを展開するために、ドキュメント名を指定して texexpand を呼び出します。
\input ステートメントと \include ステートメント (ここでは「マージ」とも呼ばれます) のリストを書きます。
重要なスタイル、クラス、入力、またはファイル名を含めます。 texexpand が完了すると、すべての
は XNUMX つのファイル TMP_foo に含まれています。 (foo.tex がドキュメントの名前であると仮定します)
翻訳する)。
このバージョンでは、texexpand はインクルード ファイル / にまたがる可能性のある次の環境を考慮します。
セクション境界: a) \begin{comment} b) %begin{comment} c) \begin{any} で導入
\excludecomment d) %begin{any} e) \begin{verbatim} f) \begin{latexonly} g)
%begin{ラテックスのみ}
e) - g) texexpand が入力ファイルを展開できないようにしますが、環境のコンテンツは保存されます。
出力ファイルに完全に書き込まれます。
\input などの各マージとともに、いわゆる %%%texexpand マーカーがあります
境界線に伴うもの。
latex2html が出力ファイルを読み取るとき、これらのマーカーを使用して各部分をファイルに書き込みます。
別のファイルを作成し、さらに処理します。
詳細 技術的 注意事項:
1. %begin{latexonly} と %end{latexonly} は別の行に置く必要があります。 間の何か
これらのタグ (タグを含む) は破棄されます。
2. \begin{latexonly} と \end{latexonly} は別の行に置く必要があります。 間の何か
これらのタグ (タグを含む) は展開されません。
3. [%\]begin{"to exclude"} と [%\]end{"to exclude"} は別の行に置く必要があります。
これらのタグの間にあるもの (タグを含む) はすべて破棄されます。
4. \begin{verbatim/verbatim*} と \end{verbatim/verbatim*} は別の行に置く必要があります。
これらのタグの間にあるもの (タグを含む) は展開されません。
5. このようなタグの範囲は、複数のファイルにまたがる場合があります。 の開始タグ
latexonly は、終了タグとは異なるインクルード レベルで発生する場合があります。 開始タグ
forverbatim/"to exclude" は、終了タグと同じファイル内に存在する必要があります。
6. 文書が解析され、開いたタグが残っている場合、警告が出力されます。
7. 「除外する」/逐語的環境では、texexpand はどのコマンドも認識しません
対応する終了タグを除きます。 入れ子構造は存在できません。 これ
動作は LaTeX と同じです。
8. \begin{latexonly},\end{latexonly} はネストできますが、
%begin{latexonly}、%end{latexonly} はネストできません。
9. 「%」タグで「\」タグを閉じることはできません。また、その逆も同様です。
10.\ごとにドキュメント(class|style)、\usepackage、\input、および \include コマンドは、
別の行。
11. `%' の後ろにある、`\' が前にないものはすべてコメントとみなされます。
は出力されますが、解釈されません。
12. 10. にリストされているコマンドの前に `\verb' または `\latex' が出現する場合、
それは解釈されません。 これは次のような行でクラッシュします: なんとか \verb+foo foo+
\input{bar} % バーは読み込まれません!
13. \usepackage 経由で提供されるパッケージは、
\ドキュメント(class|style)、つまり、 -auto_exclude がオフの場合、パッケージに含まれます。
@dont_include にありません *または* パッケージは @do_include (新規) にあります。 それらは
ファイル自体がマージされていない場合は、スタイル ファイルとそのオプションを含めます。
\documentclass[options]{class} はすべての option.clo を検索します。
\documentstyle[options]{style} は、すべての option.sty を検索します。
\usepackage[options]{packages} は、すべての package.sty を検索します。
14. 各 texinputs ディレクトリで入力ファイル/スタイルが検索されます。 `//' で終わる場合、
サブディレクトリ ツリー全体が検索されます。
15. \input / \include 指定されたファイルをマージします (指定された名前または .tex で見つかった場合)
拡張子) そのベース名が @do_include にある場合、または @dont_include にない場合、または
-auto_exclude が設定されている場合、指定されたファイル名は .sty/.clo/.cls で終わりません。
Notes
\documentclass、\documentstyle、\usepackage、\RequirePackage、を認識します。
\begin{逐語的}...\end{逐語的}、%begin{latexonly}...%end{latexonly},
\begin{latexonly}...\end{latexonly}、\input、\include、\verb、\latex \endinput、
\end{document} \includecomment, \excludecomment \begin{"除外する"}, \end{"除外する"}
%begin{"除外する"}、%end{"除外する"}
当学校区の 血みどろ Details
ファイルをインクルードして解析します。 このルーチンは再帰的です。こちらも参照してください
&process_input_include_file、&process_document_header、および &process_package_cmd。
XNUMX つのグローバル フラグは、texexpand の状態を制御します。
ファイルを展開し、パッケージをチェックし、
等々
o $mute は、出力ファイルに行が入るのを防ぐ必要がある場合に true です。
texexpand には XNUMX つの一般的な状態があります。
1) 行を解釈して出力ファイルに渡します。これは通常のケースです。
対応する: $active true、$mute false
2) 最小限に解釈して抑制する
これはコメント環境内で解析する場合です。
また、本体は LaTeX から保持されます。 => $active false、$mute true
3) 最小限を解釈し、行を出力ファイルに渡します。
これは、verbatim または latexonly 環境内にあります。
もちろん、この行は少なくとも終了タグを決定するために解釈される必要があります。
=> $active false、$mute false
どの環境でも、複数のインクルード ファイルにまたがる場合があります。 逐語的以外のあらゆる環境
latexonly は、異なる入力レベルで開始タグまたは終了タグを持つことができます。 コメント
LaTeX のように、逐語的環境を入れ子にすることはできません。 少なくとも解析する必要があります
latexonly 環境の verbatim/comment 環境で、偽の latexonly タグをキャッチします。
作業スキーム: XNUMX つの関数が texexpand の動作に影響を与えます。 o &process_file を開きます
指定されたファイルを解析し、$active と $mute を設定するためにコメント以外の部分を解析します (上記を参照)。
&interprete を呼び出してコメント以外のコンテンツを解釈し、次のいずれかの処理を続行します。
ファイルの次の行、または &interprete が \end{document} または
\end入力。
o &interprete は、によって制御される XNUMX つの状態に関して一部の LaTeX タグを処理します。
$active と $mute。 \input|include に関しては、\ドキュメント(クラス|スタイル)、および
\(use|Require) 関数 &process_input_include_file、&process_document_header、をパッケージ化します。
&process_package_cmd と &process_package_cmd がそれぞれ呼び出されます。
o これら XNUMX つの関数は、ファイル名またはオプション ファイルが有効か無効かをチェックします。
マージ (TEXE_DO_INCLUDE または TEXE_DONT_INCLUDE 経由)。 インクルードされるファイルは次のようになります。
現在のファイルに「マージ」されます。つまり、関数 &process_file がこの場所で呼び出されます。
時間内に(再帰的に)。 これにより、ファイルの現在の行で解釈が停止され、開始されます。
処理する新しいファイルを指定し、新しいファイルが作成されるとすぐに次の行に進みます。
最後まで解釈します。
呼び出しツリー (ここでは noweb+xy.sty が便利です):
メイン
|
v
+->プロセスファイル
| |
| | v
| 解釈 (現在の行に関して、その XNUMX つのうちの XNUMX つ)
| | | |
| うわー
| process_input_include_file process_document_header process_package_cmd
| | | |
| うわー
+-----+--------------------------+----- --------+
バグ: o latexonly 環境は解析されないため、その内容は次のような問題を引き起こす可能性があります。
認識されない環境。
o latexonly の終了タグは、入力ファイル内に隠されている場合は見つかりません。
o XNUMX 行に XNUMX つの環境タグがまだあります。
o この野獣のテストケースを設計しなければならないとしたら、私はすぐに崩壊するだろう
ロジッククラウドに移行します。
注意:
o わかりました。そのためのテスト ケースを設計しました。 回帰テストのテスト「展開」を参照してください。
l2h リポジトリの開発者モジュール内のスイート。
o -unsegment 機能: この (まれな) ケースでは、ユーザーはセグメント化されたテキストを翻訳したいと考えています。
ドキュメントをセグメントではなく全体として作成します (テスト用など)。 私たちはこれを認識することでこれを可能にします
&interprete の \segment コマンドにより、セグメント ファイルが \input のように扱われます。
ただし、 \startdocument (含む) より前の最初の行が失われます。これは、次の方法で制御されます。
$セグメントファイル。 ドキュメントを分割する方法については、「ドキュメント」セクションを参照するのが最適です。
LaTeX2HTML マニュアルの「セグメンテーション」を参照してください。
警告
このユーティリティは、ローカル セットアップで動作するように自動的に構成および構築されます。 これなら
セットアップの変更 (例: 一部の外部コマンドの移動)、スクリプトは変更されました。
再構成されました。
著者
MIT AI lab の Robert Thau による texexpand に基づいており、による修正も含まれています。
フランツ・ヴォジク[メール保護]>
ニコス・ドラコス[メール保護]>
セバスチャン・ラーツ[メール保護]>
マクシミリアン・オット[メール保護]>
マーティンボイヤー
ハーバート・スワン
イェンス・リップマン
onworks.net サービスを使用してオンラインで texexpand を使用する
