问:当 LaTeX 在编译过程中暂停在某一代码行上并等待我提供更多信息后再继续时,我可以向其提供哪些命令?
例如,在帖子中如何使用 \show?(此问题为后续问题)我发现,\show\section
在我的代码中,LaTeX 编译会暂停,我会将有关有用信息\section
打印到终端。我可以返回X
终端并让程序退出(将前面提到的有用信息打印到 .log 文件中)。
问:那么,其他此时我能提供什么命令?
我在网上找不到关于此的信息。帖子不同的 LaTeX 交互模式提到这q
将使 LaTeX 以不同的“安静”模式运行。运行此命令后,我看到日志文件中发生了一些不同的事情。但是(与 一样X
)没有.pdf
创建。
问:我可以提供一个命令来忽略我的文件\show\section
中的命令并生成一个?.tex
.pdf
答案1
那么,此时我还可以提供哪些其他命令?
在提示符下,您可以输入问号来查看可能的命令:
/tmp $ tex
This is TeX, Version 3.1415926 (TeX Live 2010)
**\show\x
> \x=undefined.
<*> \show\x
? ?
Type <return> to proceed, S to scroll future error messages,
R to run without stopping, Q to run quietly,
I to insert something,
1 or ... or 9 to ignore the next 1 to 9 tokens of input,
H for help, X to quit.
?
我可以提供一个命令来忽略
\show\section
我的 .tex 文件中的命令并生成 .pdf 吗?
按回车键,编译将继续。但是,\show
始终被视为错误:
/tmp $ tex
This is TeX, Version 3.1415926 (TeX Live 2010)
**\show\x
> \x=undefined.
<*> \show\x
?
*\null
*\bye
[1]
Output written on texput.dvi (1 page, 196 bytes).
Transcript written on texput.log.
/tmp $ echo $?
1
因此,您应\show
仅将其用于调试目的,而不要将其用于正常的编译运行。如果您想打印控制序列的含义而不给出错误,请使用\immediate\write16{\meaning\foo}
(在 LaTeX 中,\typeout
相当于\immediate\write16
)。
答案2
更新和部分答案:通过以交互模式运行 latex(latex
直接在命令窗口中输入)并继续操作,我得到了一条消息,基本上是这样的:
<return>
继续
S
滚动未来的错误信息
R
不停地运行
Q
静静地运行
H
寻求帮助
X
退出
我发现实际输入R
并不会导致.pdf
如我所愿的结果。我开始认为,\show\section
无论我提供哪个命令,将其包含在我的代码中都会阻止这种情况发生。
另一更新:请参阅@Phillipp 的答案。\show\section
将始终被视为错误处理,并且不允许生成.pdf
。应作为调试器运行。
答案3
回到我们开始的地方,
\def\myshow#1{\typeout{\string#1: \meaning#1}%
\read 0 to \carryon
}
完成\show
你想要的部分,然后提示你继续(忽略你写的内容,只注意你写了什么某物)。
[它来自最近某处的一篇文章;我的测试线束早就有了位\typeout
,但没有\read
位。]
(我从来没有注意到对那些“按...继续”的响应会影响 TeX 命令的返回码和/或实际输出的产生。你看,你是一个不细心的人......)