“缺少$插入”,尽管我有$

“缺少$插入”,尽管我有$

我对此有疑问

$ \text{bredden = x \Leftrightarrow längden = 3 \cdot bredden = 3x} $

我得到一个

Missing $ inserted

错误,尽管我有$

答案1

当您使用\text{}转义时math mode。您的行要求 LaTeX 在文本环境中编译几个math符号(例如\Leftrightarrow\cdot),这解释了错误消息。

math在任何环境下,正确的写法应该是

\text{bredden} = x \Leftrightarrow \text{längden} = 3 \cdot \text{bredden} = 3x

$ ... $针对您的inline math情况)。

答案2

“计算机科学的答案”是,当解析器遇到错误时,可能错误恢复在某些情况下,策略是猜测输入流中缺少一个标记,然后简单地将其放入并再次尝试解析。

错误恢复策略只是猜测,因此,它可能是错误的。因此,将诊断表述为“缺少 $ 插入”是误导性的。插入$只是软件根据假设$该点处缺少a 。

因此,你必须对诊断持保留态度。这实际上意味着“语法错误!尝试通过添加美元符号继续解析。”

在计算的旧时代,解析器拥有巧妙的错误恢复方案非常重要。原因是通过作业提交窗口处理程序的周转时间非常长,因此程序员可以从一次通过中诊断出尽可能多的代码错误中受益。在出现一个错误后停止并且不进一步诊断程序是不可接受的,因为这样就需要通过作业提交队列进行 N 次往返才能修复 N 个编译错误。

编译器在出现错误时仍坚持不懈地努力运行,但这可能会让它变得混乱,并产生大量不适当的诊断。创意计算杂志曾经举办过一场比赛,让用户提交能够从他们使用的编译器中生成最长的诊断信息的程序。

相关内容