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