![交互模式](https://linux22.com/image/261281/%E4%BA%A4%E4%BA%92%E6%A8%A1%E5%BC%8F.png)
今天我尝试进一步了解 tex/latex/pdflatex 等的几种交互模式。手册页结果并没有多大帮助:
$ man tex
...
-interaction mode
Sets the interaction mode. The mode can be either batchmode,
nonstopmode, scrollmode, and errorstopmode. The meaning of these
modes is the same as that of the corresponding \commands.
...
虽然 Google 很快就帮我找到了我想要了解的内容,但令我惊讶的是,我找不到有关此主题的有用且官方的文档。在翻遍了 TeXLive 发行版的整个文档后,我现在想问,是否有人可以告诉我有关交互模式和其他一些命令行选项的默认值的官方详细文档(如果有的话)。
答案1
手册页指出这些命令行选项相当于使用诸如 之类的命令形式\scrollmode
,其官方文档是 TeXBook,或者
texdoc texbytopic
寻找免费的替代方案(见第 32 章)。
答案2
交互模式
TeX 及派生程序pdftex
,xetex
有luatex
四种交互模式:
- 批处理模式
- 不停机模式
- 滚动模式
- 错误停止模式
这是为了增加用户互动。
在批处理模式下,终端上不打印任何内容,错误会滚动显示,好像
<return>
每次出错都会被触发;TeX 尝试输入或从键盘输入请求的文件丢失(\read
在未打开的输入流上)会导致作业中止。在不停止模式下,诊断消息将出现在终端上,但不可能像批处理模式那样进行用户交互。
在滚动模式下,仅当缺少文件输入或需要键盘输入时,TeX 才会停止。
在错误停止模式下,TeX 将在每个错误处停止,并请求用户干预。
可以使用控制序列在文档中设置四种模式
\batchmode \nonstopmode \scrollmode \errorstopmode
只要有人认为这有用。它们将从 TeX 处理它们的那一刻起改变默认交互模式;请注意,交互模式更改始终是全局的。默认交互模式是“errorstop”,除非在命令行上使用选项声明不同
tex -interaction=[batchmode|nonstopmode|scrollmode|errorstopmode]
其中tex
代表系统已知的任何排版引擎(例如pdflatex
,可以是或者xetex
或其他)。
具有 e-TeX 扩展的引擎(pdftex
、xetex
和luatex
)可以通过查看内部整数寄存器来访问当前交互模式
\interactionmode
保存的值 0、1、2、3 分别对应批处理、不停止、滚动或错误停止。你甚至可以改变当前的交互模式,方法是
\interactionmode=<integer>
从而可以暂时改变模式并恢复到前一个模式:
\chardef\previousinteractionmode=\interactionmode
\batchmode
<some code where we want not to stop for errors>
\interactionmode=\previousinteractionmode
(有关应用程序,请参阅这个答案)
其他有用的命令行选项
-jobname=string
设置独立于引擎运行的文件的作业名称-halt-on-error
在第一次出现错误时停止运行(独立于交互模式)-file-line-error
更改错误消息的格式,不仅显示行号,还显示 TeX 当前正在读取输入的文件-shell-escape
可以在 TeX 内部运行系统命令-no-shell-escape
禁用上述-draftmode
(仅pdftex
和luatex
)不产生 PDF 输出,因此它可用于语法检查
还有其他选项,但有点深奥或主要用于格式构建。