使用 ieeeaccess 的 Algorithm2e

使用 ieeeaccess 的 Algorithm2e

我正在使用 overleaf。使用该algorithm2e软件包时,它会为我提供带有“-”符号前缀的粗体行号。我希望行号采用小字体,不带“-”符号。输出 PDF 快照附有最少的工作代码。提前谢谢您。

\documentclass{ieeeaccess}
\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{algorithmic}
\usepackage[ruled,linesnumbered]{algorithm2e}
\usepackage{graphicx}
\begin{document}
     \begin{algorithm}
    \DontPrintSemicolon   
    % enter the algorithm environment
    \caption{algorithm}          
    % give the algorithm a caption
    \label{alg1}   
    %\begin{multicols}{2}                       % and a label for \ref{} commands 
    %\begin{algorithmic}[1] 
    \KwIn{
        $a=\sum_{i=0}^{n-1} a_i\cdot2^i$,
        $b=\sum_{i=0}^{n-1} b_i\cdot2^i$,
        $m=\sum_{i=0}^{n-1} m_i\cdot2^i$}
    \KwOut {$c = a \times b$ \text{mod} $m$}
    
    $c \leftarrow 0, \quad reg_1 \leftarrow a$\;
    $reg \leftarrow 2a$ mod $m \qquad \text {//     \scriptsize Pre-computed value //} $\;
    %$N \leftarrow n+2 \quad \quad \quad \text{ //  \scriptsize append two 0's to left of MSB of y //}$\;
    $N= 
    \begin{cases}
    n+3,& \text{ if $n \bmod 2 = 0,$ append two $0$ to the left of MSB of $b$} \\
    n+2,& \text{ if $n \bmod 2 = 1,$ append single $0$ to the left of MSB of $b$}
    \end{cases}
    $\;
    $N \leftarrow N+1 \qquad  \text{ // \scriptsize append 0 to right of LSB of b //}$\;
    
    \For {$(i=0; i \leq N-2; i \leftarrow i+2)$ }{
        \Switch{$(b_{(i+2:i)})$}{
            \textbf{when} $ 000 \mid 111 \Longrightarrow v\leftarrow 0$ \;
            \textbf{when} $ 001 \mid 010 \mid 101 \mid 110 \Longrightarrow v\leftarrow reg_1$  \;
            \textbf{else} $ \Longrightarrow  d\leftarrow reg_2$ \;
        }
        \tcp {following critical operations are executed concurrently //}
        $reg_1 \leftarrow 4\times reg_1 \text{ modulo } m$\; 
        $reg_2 \leftarrow 4\times reg_2 \text{ modulo } m$\; 
        $v \leftarrow v \pm d \text{ modulo } m$\;
    }
    \Return{$v$}\;
    %\end{multicols}
    \end{algorithm}
\end{document}

在此处输入图片描述

答案1

如果您可以选择,请使用不同的类别。

\textbf如果不这样做,请在加载类之前复制原始副本,然后恢复它

\NewCommandCopy{\LaTeXtextbf}{\textbf}
\documentclass{ieeeaccess}
\RenewCommandCopy{\textbf}{\LaTeXtextbf}
% [ the rest of your document ]

或早于 2020 年 10 月版本的格式

\RequirePackage{letltxmacro}
\LetLtxMacro{\LaTeXtextbf}{\textbf}
\documentclass{ieeeaccess}
\LetLtxMacro{\textbf}{\LaTeXtextbf}
% [ the rest of your document ]

在此处输入图片描述


解释

该文件ieeeaccess.cls有很多奇妙的功能,其中我们发现了以下精华部分(为清晰起见添加了新行):

\def\textbf#1{{\bf #1}}%
\long\def\bf#1{%
   \ifmmode
      \mathbf{#1}%
      \message{Please use mathbf in math mode instead of bf.}%
   \else
      \fontencoding{T1}%
      \fontseries{b}%
      \selectfont{#1}%
   \fi
}

第一次重新定义非常值得怀疑,但如果\bf以合理的方式定义,则可能是可以接受的。但是,的实际定义确实很糟糕,并且每次的参数以带参数的宏(或一些原始参数,或者谁知道还有什么)开始\bf时都会崩溃。\textbf

让我们举一个具体的例子:假设我们处于文本模式,并且我们写入

\textbf{ABCDE...}

第一个扩展将其变成

{\bf ABCDE...}

现在\bf已经定义提出论点\textbf,在本例中,它将只是传递给的参数的第一个标记A。 的扩展\bf将我们的例子变成

{\fontencoding{T1}\fontseries{b}\selectfont{A}BCDE...}

我怀疑(虽然我不是 Mary Poppins,因此我可能错了)结果可能不是作者想要的结果。第一个标记(此处A)被放入一个组中,这会破坏后面字母的字距。


当的参数涉及其他宏时,情况会更糟,\textbf例如的情况algorithm2e。行号使用打印\NlSty{\theAlgoLine},其中\theAlgoLine扩展为行计数器,并\NlSty定义为(稍微简化一点)

\newcommand{\NlSty}[1]{\textbf{\relsize{-2}#1}}

这和我上面写的类似,只是这次的参数的第一个标记\textbf不是字母,而是\relsize。在扩展了重新定义的代码后\textbf,结果为\bf\NlSty{\theAlgoLine}

{\fontencoding{T1}\fontseries{b}\selectfont{\relsize}{-2}\theAlgoLine}

\relsize被封闭在一个组中,从而导致混乱。

相关内容