当我处理 LaTeX 文档并使用 pdflatex 进行编译时,经常会出现编译错误。为了在从命令行运行 pdflatex 时退出它,我使用以下命令exit
来结束 pdflatex 进程:
$ pdflatex kevin.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex)
<snip>
! Undefined control sequence.
l.276 ...2' \ldots c_j'\}$, $w \notin \{q_1 \lodts
q_i\}$. $S \cap T$ is alw...
? exit
一旦我使用 exit 命令,pdflatex 就会立即在 vim 中调出我的 tex 文档。有什么方法可以防止这种情况发生吗?我不希望 pdflatex 在退出时打开任何文本编辑器。我希望命令行终端返回到 shell 并等待更多输入。(我使用不同的文本编辑器进行编辑,每次出现错误后打开 vim 时都必须关闭它,这浪费了我的时间,而且很烦人。)
答案1
当 TeX 在交互模式下出现?
错误后显示提示时,你可以选择几种方式,但你应该记住首先您输入的字符决定了后续行为:
- return 表示“忽略错误并继续”
s
表示“运行并显示未来的错误消息,除了请求用户输入外不停止”r
表示“运行并显示未来的错误消息,如果需要用户输入则停止”q
意思是“悄悄地跑”(不展示任何东西)i
表示“在输入流中插入一些内容”x
意思是“停在这里”e
表示“在此处停止并在文件的当前行号处打开编辑器”- 一个数字
如果您输入i
,TeX 会将您在其后输入的标记插入到按回车键(这将算作一个空格)之后;如果您立即按回车键,系统将提示您插入标记。
如果您输入数字,TeX 将<number>
根据其规则从您输入的后续字符中确定。按回车键将忽略<number>
输入流中的标记,TeX 将再次停止显示被忽略的标记,等待进一步的输入。除了和数字的情况外i
,多余的字符将被忽略。
因此,打字exit
与打字完全相同e
,具有您所经历的行为。
退出的正确方法是输入x
。
请注意,小写或大写无关紧要,因此S
R
Q
I
X
E
与 具有相同的效果s
r
q
i
x
e
。
在某些实现中,按下 control-D
会触发“紧急停止”,基本上类似于键入x
。在某些实现中,按下e
和 键入 相同x
,但在 TeX Live 中则不然,它会使用环境变量的当前值TEXEDIT
来打开文件(如果在环境中设置)。该值也可以在顶层texmf.cnf
文件中设置。例如,我的顶层texmf.cnf
文件是
% (Public domain.)
% This texmf.cnf file should contain only your personal changes from the
% original texmf.cnf (for example, as chosen in the installer).
%
% That is, if you need to make changes to texmf.cnf, put your custom
% settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
% the distributed file (which is .../texlive/YYYY/texmf-dist/web2c/texmf.cnf).
% And include *only* your changed values, not a copy of the whole thing!
%
TEXMFHOME = ~/Library/texmf
TEXMFVAR = ~/Library/texlive/2014/texmf-var
TEXMFCONFIG = ~/Library/texlive/2014/texmf-config
TEXEDIT = nano +%d '%s'
因此输入e
将会打开该文件nano
。