![两个在 tex 下编译的文本文件的串联是否总是在 tex 下编译?](https://linux22.com/image/316059/%E4%B8%A4%E4%B8%AA%E5%9C%A8%20tex%20%E4%B8%8B%E7%BC%96%E8%AF%91%E7%9A%84%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E7%9A%84%E4%B8%B2%E8%81%94%E6%98%AF%E5%90%A6%E6%80%BB%E6%98%AF%E5%9C%A8%20tex%20%E4%B8%8B%E7%BC%96%E8%AF%91%EF%BC%9F.png)
换句话说,在 tex 下编译的所有文本文件的集合是否在连接下形成一个幺半群?
我最近对纯文本进行了一些尝试,我的代数蜘蛛感应立刻开始活跃起来。我以为我可以轻松地在 Google 上找到答案,但到目前为止我什么也没找到。
答案1
首先,纯 tex 文件以 结尾\bye
(而 latex 文件以 结尾\end{document}
),之后的所有内容都会被忽略。因此您的陈述显然是正确的,因为第二个文件在连接后会被忽略。
如果我们认为\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在第二个文件中未定义,但与连接文件中\aa
的相同。\bb
答案2
在纯 TeX 中,格式正确的文件将以 结尾,\bye
以告知编译器停止查找输入。因此,连接将仅编译第一个文件,然后忽略其余文件。(所以不行。)在 LaTeX 中,可编译文件将\end{document}
再次以 结尾,以告知编译器已完成。因此,只有连接中的第一个文件会编译,其余文件将被忽略。此外,第二个文件现在将在一个位置有一个前导码,如果看到 i,则会出现编译错误。(所以不行。)
没有讨论包、字体、输入文件等的额外影响。