tex でコンパイルされる 2 つのテキスト ファイルの連結は、常に tex でコンパイルされますか?

tex でコンパイルされる 2 つのテキスト ファイルの連結は、常に tex でコンパイルされますか?

言い換えれば、Tex でコンパイルされるすべてのテキスト ファイルのセットは、連結時にモノイドを形成しますか?

最近、プレーン テックスを少し触ったところ、代数に関するスパイダー センスがすぐに刺激されました。答えは Google で簡単に検索できると思いましたが、今のところ何も見つかりません。

答え1

まず、プレーン tex ファイルは で終わり\bye(latex ファイルは で終わります\end{document})、その後のすべては無視されます。したがって、連結後に 2 番目のファイルは無視されるため、あなたの記述は当然正しいです。

\bye連結で削除された「メタコマンド」と考えると、あなたの記述は誤りです。

ファイルを検討する

\def\aa{0}
\aa
\bye

そして

\def\bb{0}
\bb
\ifx\aa\bb\cc\fi
\bye

それぞれはコンパイルされますが、連結はコンパイルされません。

\def\aa{0}
\aa
\def\bb{0}
\bb
\ifx\aa\bb\cc\fi
\bye

生産する

! Undefined control sequence.
l.5 \ifx\aa\bb\cc
                 \fi
? 
! Emergency stop.

その理由は、 undefined は2 番目のファイルでは undefined ですが、連結されたファイルでは\aa同じだからです。\bb

答え2

プレーン TeX では、適切にフォーマットされたファイルは で終わり、\byeコンパイラに入力の検索を停止するように指示します。したがって、連結では最初のファイルのみがコンパイルされ、残りは無視されます。(つまり、できません。) LaTeX では、コンパイル可能なファイルは\end{document}再び で終わり、コンパイラに完了を通知します。したがって、連結の最初のファイルのみがコンパイルされ、残りは無視されます。さらに、2 番目のファイルには、 i が見つかった場合にコンパイル エラーが発生する場所にプリアンブルが配置されます。(つまり、できません。)

パッケージ、フォント、入力ファイルなどの追加の影響については説明しません。

関連情報