Algorithm2e 不允许嵌套 if

Algorithm2e 不允许嵌套 if

我试图在算法区域放置一个嵌套的 if ,如下所示:

          \If{$isContentMethod(\mathcal{M})$}{
            $URI \leftarrow getURI(SubCG, \mathcal{M})$\;
            \If($URI \in \mathcal{P}_c$){
                $Permission \leftarrow getPermission(URI, \mathcal{P}_c)$\;
                $\mathcal{B}.add(Permission, URI, Entrypoints)$ \;
            }
         }

但是 LaTeX 一直给我错误:

! Argument of \algocf@Ifmain has an extra }.
<inserted text>
\par
l.69 }
I've run across a `}' that doesn't seem to match anything.

答案1

尽管algorithm2e确实提供了\If(..)-style 条件(用于注释),您可能\If{..}{...}在嵌套 if 中需要它。失败的原因是因为\If(..)-style 用法需要的参数比您当前提供的参数多。

仅仅是一个 MWE:

在此处输入图片描述

\documentclass{article}
\usepackage{algorithm2e}% http://ctan.org/pkg/algorithm2e
\begin{document} 
\begin{algorithm}
\If{$isContentMethod(\mathcal{M})$}{
  $URI \leftarrow getURI(SubCG, \mathcal{M})$\;
  \If{$URI \in \mathcal{P}_c$}{% Don't use `\If(..)`
    $Permission \leftarrow getPermission(URI, \mathcal{P}_c)$\;
    $\mathcal{B}.add(Permission, URI, Entrypoints)$ \;
  }
}
\end{algorithm}
\end{document}

还可以考虑使用amsmath包裹它用于\text{...}设置一些与文本相关的数学内容。

相关内容