![Algorithm2e 不允许嵌套 if](https://linux22.com/image/280431/Algorithm2e%20%E4%B8%8D%E5%85%81%E8%AE%B8%E5%B5%8C%E5%A5%97%20if.png)
我试图在算法区域放置一个嵌套的 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{...}
设置一些与文本相关的数学内容。