您最喜欢哪些令人困惑的错误信息?

您最喜欢哪些令人困惑的错误信息?

这个问题:\addvspace 不能替代 \vspace显示了一种错误消息可能令人困惑的情况。如果\addvspace在非 vmode 模式下使用,则获取的错误消息为

! LaTeX Error: Something's wrong--perhaps a missing \item.

例如,编译以下简单示例

\documentclass{article}
\begin{document}
a\addvspace{3em}
\end{document}

在这种情况下,错误消息并不是真正具有描述性,可能会产生误导。\addvspace(第节 16.5 垂直间距)解释了source2e发生了什么:

\def\addvspace#1{%
  \ifvmode
    \if@minipage\else
      \ifdim \lastskip =\z@
        \vskip #1\relax
      \else
      \@tempskipb#1\relax
        \@xaddvskip
      \fi
    \fi
  \else
    \@noitemerr
  \fi}

因此当 \addvspace 不在 vmode 下使用时,\@noitemerr会被调用并产生所提到的错误消息,如在 中所见lterror.dtx

\gdef\@noitemerr{%
<!autoload> \@latex@error{Something's wrong--perhaps a missing %
<!autoload> \protect\item}\@ehc}
<autoload> \@autoerr\@noitemerr}  

您还遇到过哪些其他情况,其中收到的错误消息似乎令人困惑并且(显然)与导致错误的问题无关?

我建议每个答案都附上文本错误消息、产生错误的最小示例代码以及该错误消息原因的简要说明。

答案1

有很多,我更喜欢那些带有一点 TeX 本身幽默风格的,我最喜欢的两个:

对不起,潘多拉。(你这个鬼鬼祟祟的魔鬼。)

要触发此消息类型:

\setbox0=\vbox{\halign{#\hfil\cr a\cr b\cr}}
\unhbox0
\bye

这将触发错误Incompatible list can't be unboxed。按“h”获取帮助,您将看到错误。

假装你是赫尔克里·波洛:检查所有线索

如何触发此消息留给读者练习。线索在文件中TEX.POOL

答案2

部分内容取自 TeX FAQ 条目超出容量 [语义嵌套…]:MWE

\documentclass{article}
\begin{document}
\def\silly{\hbox{here's \silly being executed}}
\silly% Be silly
\end{document}

产生以下错误:

! TeX capacity exceeded, sorry [grouping levels=255].
<to be read again> 
                   {
l.4 \silly
          
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.

答案3

无限循环是否算作令人困惑的错误消息?

在使用 catcodes 的一些早期实验中,我尝试了以下操作:

\documentclass{article}

\newcommand{\makeunderscoreactive}{\catcode`_=\active }
\newcommand{\makeunderscoreother}{\catcode`_=12\relax}
\makeunderscoreother
   \def\underscoreother{_}
\makeunderscoreactive
   \def_{\underscoreother}

\begin{document}
   \texttt{hello_world.txt} % this is fine
   $a_0$ % this causes an infinite loop
\end{document}

说实话我还是不太清楚它为什么会表现成那样。

相关内容