如何解决 algorithm2e 中的错误:“缺少 { 插入。 ”

如何解决 algorithm2e 中的错误:“缺少 { 插入。 ”

当我使用 ShareLatex 或 MikTex 编译以下 LaTeX 代码时:

\begin{algorithm}
    \uIf{$|F_d(D'(C_{\hat{i}})) - F_d(D(C_{\hat{i}}))| > \sigma$ OR numSeqNoise > $\mu$}{
      SplitCluster($C_j$)\;
    } 
    \uElseIf{$|F_d(D'(C_{\hat{i}})) - F_d(D(C_{\hat{i}}))| > \tau$}{
      numSeqNoise++\;
    } 
    \uElseIf{$j \neq \hat{i}$}{
        Remove $S_{R}$ from cluster $C_j$\;
        Place $S_{R}$ in cluster $C_\hat{i}$\;
     }\uElse{
        Replace $S_{R}$ in cluster $C_\hat{i}$\;
     }
\end{algorithm}

它可以正常编译,但是当我尝试使用 WriteLatex 时,总是会出现以下错误:

Missing { inserted.
<to be read again>
            \gdef
l.485          }
\uElse{

指出错误的那一行是}\uElse{

有人可以帮助我吗?;)

答案1

您需要使用C_{\hat{i}}而不是C_\hat{i},因为\hat不会打开组。

印刷建议:由于\hat{i}太高而且看起来很奇怪,LaTeX 提供了无点的 i \imath

在此处输入图片描述

最好使用\hat{\imath}而不是\hat{i}。我在下面的例子中替换了每个出现的情况。

\documentclass{article}
\usepackage{algorithm2e}
\begin{document}
\begin{algorithm}
  \uIf{$|F_d(D'(C_{\hat{\imath}})) - F_d(D(C_{\hat{\imath}}))| > \sigma$ OR $\mathrm{numSeqNoise} > \mu$}{
    SplitCluster($C_j$)\;
  } 
  \uElseIf{$|F_d(D'(C_{\hat{\imath}})) - F_d(D(C_{\hat{\imath}}))| > \tau$}{
    numSeqNoise++\;
  } 
  \uElseIf{$j \neq \hat{\imath}$}{
    Remove $S_{R}$ from cluster $C_j$\;
    Place $S_{R}$ in cluster $C_{\hat{\imath}}$\;
  }\uElse{
    Replace $S_{R}$ in cluster $C_{\hat{\imath}}$\;
  }
\end{algorithm}
\end{document}

在此处输入图片描述

相关内容