我正在使用 ShareLatex,但遇到了错误! Missing $ inserted.
。看到有很多关于这个主题的帖子,但我找到的修复方法对我的代码不起作用。我没有尝试的是告诉 latex 忽略该问题并继续,而不是尝试修复它。我最终通过剪切部分代码并进行编译以查找错误来源(这花了很长时间)找到了引发错误的文本。原来是\mu
ShareLatex 包装为$\mu$
。问题是错误消息说错误发生在行中\end{frame}
(根本没有帮助),如果知道问题出在哪一行,那就太好了。
答案1
你提到\end{frame}
,这表明你使用beamer
(或类似物)。
beamer
读全部的 frame
在构建内容之前,它需要协商可能的叠加规范(将幻灯片frame
分成不同的幻灯片)。因此,由于它读取了整个幻灯片frame
,因此任何错误之内该框架将平移至指向\end{frame}
。
这是一个复制您的问题的最小示例:
\documentclass{beamer}
\begin{document}
\begin{frame}
\mu
abc
\end{frame}
\end{document}
这是另一个指向错误位置的错误最小示例:
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{\linewidth}{c}
\mu \\ a \\ b \\ c
\end{tabularx}
\end{document}
原因(再次)是tabularx
处理其中的内容与常规tabular
s 不同,就像beamer
处理frame
s 与常规文档文本不同一样。
解决这个(非常)特殊问题的一种方法是重新定义\mu
工作方式:
\let\oldmu\mu
\renewcommand{\mu}{\ensuremath{\oldmu}}
以上\mu
内容根据需要插入$
s,取决于它是否处于数学模式或文本模式。
答案2
我想知道这里是否有一些混乱。你报告了错误
! Missing $ inserted
并询问如何停止 ShareLaTeX 将您的内容包装\mu
在$
s 中。
但这反映出了一种误解。ShareLaTeX 对错误或插入美元符号不负任何责任。这是 TeX 试图弄清楚发生了什么,并纠正它认为可能导致编译文档时出现问题的错误。
这是 TeX 工作原理的一个基本部分。它会解析内容,尝试理解内容,并在遇到问题时采取各种措施。您可以以“全局”方式在一定程度上控制这一点。例如,您可以告诉它在遇到麻烦时停止,或者尝试继续,或者询问您该怎么做。
这里需要知道的关键一点是,这条消息不是来自 ShareLaTeX。它来自 TeX。您还可能从 LaTeX 或您加载的包中收到消息。我怀疑您会从 ShareLaTeX 收到消息。它只是将消息传递给您。