两个在 tex 下编译的文本文件的串联是否总是在 tex 下编译?

两个在 tex 下编译的文本文件的串联是否总是在 tex 下编译?

换句话说,在 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,则会出现编译错误。(所以不行。)

没有讨论包、字体、输入文件等的额外影响。

相关内容