对于许多初学者(以及许多经验丰富的人)来说,使用 LaTeX 的最大障碍是难以找出导致错误的原因。\def
例如,有关某些内容未被编辑的消息对于新手 LaTeX 用户来说毫无意义,他们可能听说过\newcommand
,但肯定没有\def
。此外,行号可能会产生误导,错误消息有时会打印出内部定义给出的宏,而这些宏与实际造成问题的用户代码毫无相似之处。
是否有希望下一代 TeX 工具(例如 LaTeX3、LuaTeX 和 ConTeXt)提供(和/或强制软件包作者使用)更好的错误处理机制?
例如,包含类似于“打印堆栈跟踪”的内容是否可行?
答案1
ConTeXt 的错误处理方式已经考虑了一段时间,但优先级不高。LuaTeX 的历史,第 82 页,Hans Hagen 说
其他与 io 相关的改进包括调试、错误处理和日志记录。我们可以弹出帮助程序和调试屏幕(MkIV 可以生成 xhtml 输出,然后启动浏览器)。用户可以选择更详细的 io 日志记录,并要求将日志数据格式化为 xml。这些部分需要一些额外的工作,因为最终我们还将重新实现和扩展 TEX 的错误处理。
稍后在第 175 页(重点是我的):
在撰写本文的同时,我为东方 TEXer Idris 制作了一个跟踪功能,以便他可以跟踪他正在制作的阿拉伯字体发生了什么。这相对容易,因为在 MkIV 的早期阶段就已经建立了一些调试机制。它的一个很棒的功能是,当出现错误或跟踪某些东西时,结果将显示在 Web 浏览器中。遗憾的是,我没有足够的时间来更详细地探讨这些方面,但至少它表明我们可以以更彻底的方式改变与 TEX 的传统交互的某些方面。
我很确定我已经看过此功能的演示,但我现在找不到源代码。