参数部分类似于输入和输出

参数部分类似于输入和输出

我想创建一个“范围: ...”部分,类似于“输入: ...“ 和 ”输出: ...”部分。参数是全局的、用户定义的常量,在算法运行之前已知。

我试图用文本“参数”定义一个新关键字,但这样做当然是错误的(其中包括:该行已编号但不应该这样,“参数:”后面的所有内容都是斜体,但我不希望这样)。

如何创建类似于输入和输出的参数部分?


Gonzalo Medina 的回答几乎做了正确的事情,但是我在单独的行上得到了一个多余的冒号。

在此处输入图片描述

代码:

\documentclass[preprint,3p,12pt,times]{elsarticle}
\usepackage{ecrc}
\usepackage[linesnumbered,algoruled,boxed,lined]{algorithm2e}
\volume{00}
\firstpage{1}
\journalname{Some journal}

% Would work correctly with these lines:
% \documentclass{article}
% \usepackage[linesnumbered,algoruled,boxed,lined]{algorithm2e}

\SetKwInOut{Parameter}{Parameters}

\begin{document}

\begin{algorithm}[H]
  \KwIn{Some input}
  \Parameter{Some parameter}
  \KwOut{Some output}    
\caption{Some algorithm}\label{alg.mainLoop}
\end{algorithm}

\end{document}

我猜是软件包之间存在一些宏冲突。任何解决方法都将不胜感激。

答案1

您可以使用

\SetKwInOut{Parameter}{parameter}

进而

\Parameter{<text>}

在你的算法中。完整的例子:

\documentclass{article}
\usepackage{algorithm2e}

\SetKwInOut{Parameter}{parameter}

\begin{document}

\begin{algorithm}
\SetKwData{Left}{left}
\SetKwData{This}{this}
\SetKwData{Up}{up}
\SetKwFunction{Union}{Union}
\SetKwFunction{FindCompress}{FindCompress}
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}
\Input{A bitmap $Im$ of size $w\times l$}
\Output{A partition of the bitmap}
\Parameter{A parameter for the algorithm}
\BlankLine
\emph{special treatment of the first line}\;
\For{$i\leftarrow 2$ \KwTo $l$}{
\emph{special treatment of the first element of line $i$}\;
\For{$j\leftarrow 2$ \KwTo $w$}{\label{forins}
\Left$\leftarrow$ \FindCompress{$Im[i,j-1]$}\;
\Up$\leftarrow$ \FindCompress{$Im[i-1,]$}\;
\This$\leftarrow$ \FindCompress{$Im[i,j]$}\;
\If(\tcp*[h]{O(\Left,\This)==1}){\Left compatible with \This}{\label{lt}
\lIf{\Left $<$ \This}{\Union{\Left,\This}}\;
\lElse{\Union{\This,\Left}\;}
}
\If(\tcp*[f]{O(\Up,\This)==1}){\Up compatible with \This}{\label{ut}
\lIf{\Up $<$ \This}{\Union{\Up,\This}}\;
\tcp{\This is put under \Up to keep tree as flat as possible}\label{cmt}
\lElse{\Union{\This,\Up}}\tcp*[r]{\This linked to \Up}\label{lelse}
}
}
\lForEach{element $e$ of the line $i$}{\FindCompress{p}}
}
\caption{disjoint decomposition}\label{algo_disjdecomp}
\end{algorithm}

\end{document}

在此处输入图片描述

在编辑问题后,elsarticle与新定义之间存在一些不兼容性;在这种情况下,您可以在环境内移动新定义algorithm,这可以逐个进行,也可以沃纳建议his comment,可以使用自动化

\makeatletter 
\g@addto@macro{\@algocf@init}{\SetKwInOut{Parameter}{Parameters}} 
\makeatother

完整示例:

\documentclass[preprint,3p,12pt,times]{elsarticle}
\usepackage[linesnumbered,algoruled,boxed,lined]{algorithm2e}

\makeatletter 
\g@addto@macro{\@algocf@init}{\SetKwInOut{Parameter}{Parameters}} 
\makeatother

\begin{document}

\begin{algorithm}[H]
\KwIn{Some input}
\Parameter{Some parameter}
\KwOut{Some output}    
\caption{Some algorithm}\label{alg.mainLoop}
\end{algorithm}

\end{document}

在此处输入图片描述

相关内容