algorithm2e 中的嵌套 if 给出错误

algorithm2e 中的嵌套 if 给出错误

这是代码,我已经尝试过了:

 \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包选项进行全局设置。

结果:

在此处输入图片描述

相关内容