为什么没有 \begin{document} 时 LaTeX 会抛出错误?

为什么没有 \begin{document} 时 LaTeX 会抛出错误?

考虑以下“Hello, World!”文档。

Hello, world!
\end

如果你尝试使用 编译它latex.exe,则会出现错误**

! LaTeX Error: Missing \begin{document}.

好的,一方面,显然会出现此错误——这有点像尝试编译没有函数的 C 程序main。另一方面,如果我认为 LaTeX 只是加载了一堆宏的 TeX,那么人们会认为,任何使用 编译好的文档都tex.exe应该在没有 的情况下也能正常工作latex.exe,至少只要我没有使用任何特定于 Plain TeX 的宏。***

这表明我对 LaTeX 的理解是\input{latex}错误的,即它实际上等同于 TeX,但在文档开头有一个命令,从而引发了几个相关的问题。

  1. 我的理解是,加载 TeX 格式本质上相当于\input在文档开头加载文件,只不过文件可能已经预编译过了。这种理解不准确吗?

  2. 调用是否实际上等同于加载 LaTeX 格式的latex.exe调用?tex.exe

  3. 如果实际上运行latex.exe相当于仅使用 LaTeX 格式运行 TeX,那么这种格式如何告诉 TeX 在看不到时抛出错误\begin{document}

** 顺便说一句,您还会收到一个错误,与 LaTeX 中的含义不同有关\end。我也觉得这很令人困惑,因为我认为您无法重新定义 TeX 基元,但也许最好将其留作单独的问题。

*** 实际上,我甚至不确定是否存在 LaTeX 未定义的 Plain TeX 特有的宏。

答案1

  1. 我的理解是,加载 TeX 格式本质上相当于\input在文档开头加载文件,只不过文件可能已经预编译过了。这种理解不准确吗?

或多或少都是正确的,尽管你需要小心地解释这一点。

  1. 调用是否实际上等同于加载 LaTeX 格式的latex.exe调用?tex.exe

是的,但关键是没有加载纯文本格式(最初称为 virtex),并且忽略了连字符模式只能在 initex 中加载,而不能在正常运行中加载。

  1. 如果实际上运行latex.exe相当于仅使用 LaTeX 格式运行 TeX,那么这种格式如何告诉 TeX 在看不到时抛出错误\begin{document}

latex.ltx

 \everypar{\@nodocument} %% To 

因此每个段落都会产生一个错误,\begin{document}清除该错误并允许设置段落。

** 顺便说一句,您还会收到一个错误,与在 LaTeX 中意味着不同的含义有关\end。我也觉得这很令人困惑,因为我认为您无法重新定义 TeX 基元,但也许最好将其留作单独的问题。

是的,当然你可以重新定义任何原始

\def\hbox{oops}

将重新定义\hbox(不是一个好主意但是......)

*** 实际上,我甚至不确定是否存在 LaTeX 未定义的 Plain TeX 特有的宏。

是的,在 plain 中定义的宏没有在 latex 中定义(\folio例如),并且许多在两种格式中用相同名称定义的命令具有不同的定义(\loop例如)。

相关内容