为什么我会收到“$已插入”错误消息?

为什么我会收到“$已插入”错误消息?

我正在使用一些几乎简单的 LaTeX 代码,运行它xelatex

\documentclass[border=2pt]{standalone}
\begin{document}
\[
  B'(1)_n = B'(0)_{n+1}
\]
\end{document}

然而,这会产生奇怪的错误:

! Missing $ inserted.
<inserted text>
                $
l.4 B'(1)_
          n = B'(0)_{n+1}
?

我的源代码中没有$需要关闭的开口,并且日志似乎在应该是完全正常的下标符号的地方破坏了代码。

如果我尝试使用或用显式\ensuremath替换\[和来强制数学模式,但仍然会出现此错误,所以我很确定我遗漏了一些非常明显的东西,但是大量的谷歌搜索并没有产生任何我可以用来使这个错误消失的信息。\]\begin{equasion}\end{equasion}

答案1

该类standalone,不带varwidth或选项,只是在单个水平框中preview排版环境的内容。document

如果你试试

\mbox{\[a_1\]}

你会遇到完全相同的错误,因为在受限水平模式下,只会排版一个空的数学公式,因此\[会发现$$_外部数学模式。

如果你想使用standalone显示样式打印单个数学公式,请这样做

\documentclass[border=2pt]{standalone}

\begin{document}

$\displaystyle
  B'(1)_n = B'(0)_{n+1}
$

\end{document}

请注意,该preview选项将考虑占据整行的公式。将结果与建议的方法进行比较

enter image description here

以及输出

\documentclass[border=2pt,preview]{standalone}

\begin{document}

\[
  B'(1)_n = B'(0)_{n+1}
\]

\end{document}

enter image description here

答案2

使用预览选项。对于显示的数学,应该使用预览包。裁剪显示的数学表达式是没有意义的。这就是为什么独立不支持使用默认裁剪选项的显示数学环境的原因

\documentclass[border=2pt,preview]{standalone}

答案3

虽然这通常不是一个解决方案,而且公认的答案在很大程度上是“正确”的做事方式,但在这种特殊情况下,另一个可行的选择是将任务分为两个步骤:

\documentclass{minimal}
\begin{document}
\[
B'(1)_n = B'(0)_{n+1}
\]
\end{document}

第一步是通过 运行此程序xelatex,第二步是通过 运行生成的 PDF 文件pdfcrop,这将产生与该standalone包通常推荐的和在本例中使用的相同的内容裁剪效果。

还请注意,这只是一个可行的选择,因为数学周围没有“真实文本”,这使得minimal文档类比通常的更合适article。作为在纯单个数学表达式块上运行以嵌入更大内容(具体而言,LaTeX 数学块在网页上以 SVG 图像呈现)的批处理过程的一部分,缺少任何类型的排版文本引导实际上是可取的。但是,对于涉及数学块之前或之后的真实文本的任何此主题变体,为什么要避免使用最小类?应予以考虑并且minimal不应使用。

相关内容