Попытка написать ключевое слово `loop` в algorithm2e

Попытка написать ключевое слово `loop` в algorithm2e

я используюалгоритм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*[ф] макрос, он позволяет размещать комментарии на той же строке, что иначинать. Вы также можете использовать альтернативу\uНачать{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}

Связанный контент