这是有问题的代码
\end{align*}
These correspond to translations $z \mapsto z + \lambda$
\begin{align*}
M \text{ is elliptic } &\iff M \text{ has exactly 2 complex conjugate fixed points } \\
&\iff M & \!\begin{aligned[t] \text{ is conjugate in } \SL_2{\mathbb{R}} \text{ to }
\begin{pmatrix}
\cos(\theta) & \sin(\theta) \\ -\sin(\theta) & \cos(\theta)
\end{pmatrix} \\
\pi \le \theta \le \pi, \, \theta \neq 0
\end{aligned}
\end{align*}
我已经尝试调试它一个小时了。我看过以前的帖子,知道我应该在 \align 环境中寻找换行符,或者在最后一行寻找双斜杠,但我就是找不到。
答案1
您\begin{aligned[t]
没有关闭}
。然后您问了一个显而易见的后续问题:您如何才能发现这个问题,并且不会让它再次发生。
发现这个问题的最简单方法是使用编辑器中的语法高亮功能。让我们来看看应该是一个可编译语句(环境{align*}
):
- 在 Overleaf 中,会立即在有问题的位置(以及不平衡
\begin{align*}
和\end{aligned}
)突出显示该片段。 - 在 TeXWorks 中,所有内容都
\begin{aligned[t] \text{ is conjugate in }
以“环境”颜色突出显示,表明它认为这是环境名称(如果您不仔细查看,这确实有点微妙)。此外,如果您跳过有问题的部分并输入}
,它将显示匹配的{
内容\begin{aligned
。 - 在 TeXShop 中,如果你转到该段的末尾并使用
Source -> Close Current Environment
(在 Mac 上为 ctrl-cmd-c),它会说当前环境已关闭\end{aligned[t] \text{ is conjugate in }
。与 TeXWorks 一样,如果你越过有问题的部分并输入}
,它会突出显示从不匹配的部分开始的所有{
内容\begin{aligned
。 - 我不确定其他编辑是否如此。
下一步是注释掉应该没问题的内容,然后看看是否仍然有错误。将代码变成可编译的示例,然后注释掉几行,我得到:
\documentclass{amsart}
\begin{document}
%\end{align*}
%These correspond to translations $z \mapsto z + \lambda$
\begin{align*}
%M \text{ is elliptic } &\iff M \text{ has exactly 2 complex conjugate fixed points } \\
&\iff M & \!\begin{aligned[t] \text{ is conjugate in } \SL_2{\mathbb{R}} \text{ to }
%\begin{pmatrix}
%\cos(\theta) & \sin(\theta) \\ -\sin(\theta) & \cos(\theta)
%\end{pmatrix} \\
%\pi \le \theta \le \pi, \, \theta \neq 0
\end{aligned}
\end{align*}
\end{document}
仍然有相同的错误和消息。下一步是找出剩余行中哪一部分导致了问题。在剩下的行中,只有一行有多个部分,所以我们可以将该行拆分成多行并注释掉所有可以注释掉的内容。这样我们就得到了:
\documentclass{amsart}
\begin{document}
%\end{align*}
%These correspond to translations $z \mapsto z + \lambda$
\begin{align*}
%M \text{ is elliptic } &\iff M \text{ has exactly 2 complex conjugate fixed points } \\
%&
%\iff M
%& \!
\begin{aligned[t]
%\text{ is conjugate in }
%\SL_2{\mathbb{R}}
%\text{ to }
%\begin{pmatrix}
%\cos(\theta) & \sin(\theta) \\ -\sin(\theta) & \cos(\theta)
%\end{pmatrix} \\
%\pi \le \theta \le \pi, \, \theta \neq 0
\end{aligned}
\end{align*}
\end{document}
如果我们仍然无法发现错误,下一步就是将aligned
和 环境分开。它仍然需要位于数学环境中,因此我们将它移至\[...\]
。这样做表明我们的问题出在aligned
而不是align*
,因此我们可以注释掉:
\documentclass{amsart}
\begin{document}
%\end{align*}
%These correspond to translations $z \mapsto z + \lambda$
%\begin{align*}
%M \text{ is elliptic } &\iff M \text{ has exactly 2 complex conjugate fixed points } \\
%&
%\iff M
%& \!
%\end{align*} % moved from below
\[
\begin{aligned[t]
%\text{ is conjugate in }
%\SL_2{\mathbb{R}}
%\text{ to }
%\begin{pmatrix}
%\cos(\theta) & \sin(\theta) \\ -\sin(\theta) & \cos(\theta)
%\end{pmatrix} \\
%\pi \le \theta \le \pi, \, \theta \neq 0
\end{aligned}
\]
\end{document}
这仍然有同样的错误,如果我们删除注释行,我们会得到 7 行示例:
\documentclass{amsart}
\begin{document}
\[
\begin{aligned[t]
\end{aligned}
\]
\end{document}
希望您在隔离该\begin{aligned[t]
行之后就能发现错误,而不需要转到第 7 行示例,但这确实可以减少问题以避免再次发生。