尝试在 algorithm2e 中写入 `loop` 关键字

尝试在 algorithm2e 中写入 `loop` 关键字

我在用着算法2e我需要使用loop这里出现的关键字:

[![在此处输入图片描述][1]][1]

平均能量损失

documentclass{article}
\usepackage{xcolor}
\usepackage[linesnumbered,ruled,vlined]{algorithm2e}



%%% Coloring the comment as blue
\newcommand\mycommfont[1]{\footnotesize\ttfamily\textcolor{blue}{#1}}
\SetCommentSty{mycommfont}

\SetKwInput{KwInput}{Input}                % Set the Input
\SetKwInput{KwOutput}{Output}              % set the Output


\begin{document}
\maketitle

\begin{algorithm}[H]
\DontPrintSemicolon
  
  \KwInput{Your Input}
  \KwOutput{Your output}
  \KwData{Testing set $x$}
  $\sum_{i=1}^{\infty} := 0$ \tcp*{this is a comment}
  \tcc{Now this is an if...else conditional loop}
  \If{Condition 1}
    {
        Do something    \tcp*{this is another comment}
        \If{sub-Condition}
        {Do a lot}
    }
    \ElseIf{Condition 2}
    {
        Do Otherwise \;
        \tcc{Now this is a for loop}
        \For{sequence}    
        { 
            loop instructions
        }
    }
    \Else
    {
        Do the rest
    }
    
    \tcc{Now this is a While loop}
   \While{Condition}
   {
        Do something\;
   }

\caption{Example code}
\end{algorithm}

\end{document}

答案1

我现在发现了这个包,并且在文档中,有允许您定义自己的关键字的宏。

有些定义循环,但它们在循环结束时或开始时添加停止测试。

因此我选择了定义块的宏,因为停止测试是在循环结束之前给出的。\SetKwBlock{Loop}{Loop}{end}

第一个参数定义宏的名称,因此如果您用大写字母书写{Loop},则调用时必须执行相同的操作:\Loop。如果您用小写字母书写{loop},则必须调用\loop。第二个参数是关键字在算法中的显示方式。

我引用第 35 页的手册:

\SetKwBlock{开始}{开始}{结束}定义一个宏\开始{txt}表示一个块。文本被单词开始结尾在关键字排版中并向右移动(缩进)。在\Vline 或者 \线 模式添加一条垂直直线。\Begin(侧面文字){文本}还给出了被包围的块中的文本开始结尾, 但侧边文字如果放在开始关键字。结合\tcc*[f] 宏,它允许你将注释放在与开始. 您也可以使用替代\uBegin{txt}充当\开始{txt}但没有结尾. 例如,用作部分分隔符,不需要结尾关键词。

截屏

\documentclass{article}
\usepackage{xcolor}
\usepackage[linesnumbered,boxruled,ruled,noline]{algorithm2e}



%%% Coloring the comment as blue
\newcommand\mycommfont[1]{\footnotesize\ttfamily\textcolor{blue}{#1}}
\SetCommentSty{mycommfont}

\SetKwInput{KwInput}{Input}                % Set the Input
\SetKwInput{KwOutput}{Output}              % set the Output
\SetKwBlock{Loop}{Loop}{end}
\begin{document}
%\maketitle

\begin{algorithm}[H]
\DontPrintSemicolon

  \KwInput{Your Input}
  \KwOutput{Your output}
  \KwData{Testing set $x$}
  \Loop ( until the terminal condition is met. One epoch:)
  {n=n+1

  $\sum_{i=1}^{\infty} := 0$ \tcp*{this is a comment}
  \tcc{Now this is an if...else conditional loop}
  \If{Condition 1}
    {
        Do something    \tcp*{this is another comment}
        \If{sub-Condition}
        {Do a lot}
    }

   terminal condition: RMSE on \dots
}
\caption{Example code}
\end{algorithm}

\end{document}

相关内容