我正在使用 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
被封闭在一个组中,从而导致混乱。