当前位置:   article > 正文

video-react报错pause没有被定义_[水一篇] LaTeX 内核定义的报错信息汇总

this nfss system isn't set up properly.

可能不少用户觉得 LaTeX 的报错很迷。这一点在我水的上一篇帖子中讨论过一些原因。很迷的报错多数是底层的排版引擎,也就是 TeX 程序给出的,报错时通常接触到了非常底层的命令,而 TeX 又没有“函数调用栈”的说法,因此错误信息让人一头雾水。这类报错的错误信息是直接写进 TeX 源码的,如最常见的 ! Undefined control sequence.

另一方面,TeX 的 errmessage 命令提供了类似其它语言中抛出异常的机制。LaTeX 内核将此命令封装成 GenericError 命令,并进一步封装成供内核使用的 @latex@error 内部命令以及供宏包和文档类作者使用的 PackageErrorClassError 命令。这些命令的特殊性体现在错误信息上,比如内核定义的各种报错信息以 LaTeX error: 开头。

其它语言通常在抛出错误或异常之后直接中断编译/解释而退出,但TeX的nonstopmode/batchmode等模式会选择忽视错误一直编译下去(这也是不少LaTeX IDE默认给编译程序加上的命令行选项),于是一步错步步错,后面一连串错误就完全看不懂了。然则,一般而言第一条错误信息是最重要的

本文汇总了内核中由 @latex@error 定义的错误信息,顺序大致按照内核源码 latex.ltx 中出现的先后顺序。

1) Command foo undefined.

使用 renewcommand 宏重定义一个未定义的控制序列。

2) Environment bar undefined.

使用 renewenvironment 宏重定义一个未定义的环境,或用 begin 命令开启一个未定义的环境。

3) The control sequence 'foo' is undefined! There is nothing here to make robust.

使用 MakeRobust 宏处理一个未定义的控制序列。MakeRobust 是较新版本内核添加的一个宏,用于加强原有命令为“健壮命令”。健壮命令相关的内容可以单开一个帖子写了,此处按下不表。

4) Command foo already defined. Or name end... illegal, see p.192 of the manual.

使用 newcommand 宏定义一个已经定义过的命令,或者使用 newcommand 宏定义头三个字母为 end 的命令(后者主要考虑不与环境的定义冲突,因为在定义环境 foo时总会定义一对命令 fooendfoo)。如果用户没有亲自用 newcommand 宏定义过命令,则一般归因于宏包之间的冲突。

5) There's no line here to end.

在垂直模式下(可通俗地理解为段落之间)使用了 newline 等换行命令。换言之,需要先用一些文字或命令开启一个新的段落,而后才能换行。

6) No counter 'foo' defined.

以未定义的计数器作为某些命令的参数(如 setcounterstepcounter 等宏的参数, newtheorem 的可选参数等)。

7) Counter too large.<

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/237877
推荐阅读
相关标签
  

闽ICP备14008679号