这是代码,我已经尝试过了:
\documentclass[smallextended]{svjour3} % onecolumn (second format)
\usepackage[linesnumbered,lined,boxed,algoruled,linesnumbered]{algorithm2e}
\begin{document}
\begin{algorithm}[H]
\For {i in range(10)} {
\If{i==2}
{
print value of i=2;
\If{i==4} /* giving error*/
{
print value of i=4;
}
}
\uIf {flag==1} { print 1;
}
\uIf {flag==2} { print 2;
}
\uIf {flag==3} { print 3; /* giving error*/
}
\Else { do something else;
}
}
\end{algorithm}
\end{document}
如何解决嵌套的 if 和 else if 错误?
答案1
行algorithm2e
必须以 结尾\;
(前面带有\
),或者,如果您需要注释,行必须以行结束注释宏之一\tcc*[r]
,\tcc*[l]
(C 样式/* */
左右对齐)或\tcp*[r]
和\tcp*[l]
(C++ 样式//
右对齐或左对齐)。从手动的在第 4 页:
非常重要:每行必须以 \; 结尾,只有那些以块开头的宏不应该以 \; 结尾。
另请参阅第 32 页的第 10.3 节以了解注释语法。
请注意,在块的末尾,实际上没有必要用 来结束一行,\;
因为块也会结束该行(参见下面第二个嵌套 if 语句中的示例)。但是,如果您总是用这个来结束行,那么在其他必不可少的情况下,您就不会忘记它。
梅威瑟:
\documentclass[smallextended]{svjour3} % onecolumn (second format)
\usepackage[linesnumbered,lined,boxed,algoruled,linesnumbered]{algorithm2e}
\begin{document}
\begin{algorithm}[H]
\SetNoFillComment
\For {i in range(10)} {
\If{i==2}
{
print value of i=2\;
\If{i==4}{
print value of i=4\tcc*[l]{giving error}
\If{i=$\sqrt{-1}$}{
print I'm aginary!
}
}
}
\uIf {flag==1} { print 1\;
}
\uIf {flag==2} { print 2\;
}
\uIf {flag==3} { print 3\tcc*[l]{giving error}
}
\Else { do something else\;
}
}
\end{algorithm}
\end{document}
\SetNoFillComment
注意算法开头的命令,这可以防止闭合*/
拉伸到右边距。您也可以使用nofillcomment
包选项进行全局设置。
结果: