在 algorithm2e 包中使用行号时,行号放置在文本块的左侧,而不是文本的正下方。请参阅algorithm2e 手册。
可以将它们放在文本下方吗?
更新:现在行号:
Input ...
Output ...
1: Code ...
我想要的行号:
Input ...
Output ...
1: Code ...
答案1
最简单的方法是使用格式化命令\Indm
并\Indp
减少和增加缩进。在输入/输出命令周围使用会使这些行与后续行号一样左对齐。下面的示例在手册中第二个示例的精简版中展示了此操作。
\documentclass{article}
\usepackage[linesnumbered]{algorithm2e}
\begin{document}
\IncMargin{1em}
\begin{algorithm}
\SetKwData{Left}{left}
\SetKwData{Up}{up}
\SetKwFunction{FindCompress}{FindCompress}
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}
\Indm
\Input{A bitmap $Im$ of size $w\times l$}
\Output{A partition of the bitmap}
\Indp
\BlankLine
\For{$i\leftarrow 2$ \KwTo $l$}{
\Left$\leftarrow$ \FindCompress{$Im[i,j-1]$}\;
\Up$\leftarrow$ \FindCompress{$Im[i-1,]$}\; }
\lForEach{element $e$ of the line $i$}{\FindCompress{p}}
\end{algorithm}
\DecMargin{1em}
\end{document}
对于更一般的缩进更改,有\Indentp
,它在样式类中定义,但手册中没有提到。 \Indm
相当于\Indentp{-1em}
,\Indp
是\Indentp{1em}
。还有 和\Indmm
,\Indpp
它们将缩进调整为0.5em
。对于行号的每个额外数字,您都需要一个额外的0.5em
。特别是,如果您有两位数的行号,您可以\Indm\Indmm
按如下方式使用:
\documentclass{article}
\usepackage[linesnumbered]{algorithm2e}
\begin{document}
\IncMargin{1.5em}
\begin{algorithm}
\SetKwData{Left}{left}
\SetKwData{Up}{up}
\SetKwFunction{FindCompress}{FindCompress}
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}
\Indm\Indmm
\Input{A bitmap $Im$ of size $w\times l$}
\Output{A partition of the bitmap}
\Indp\Indpp
\BlankLine
\For{$i\leftarrow 2$ \KwTo $l$}{
\Left$\leftarrow$ \FindCompress{$Im[i,j-1]$}\;
\Up$\leftarrow$ \FindCompress{$Im[i-1,]$}\; }
\lForEach{element $e$ of the line $i$}{\FindCompress{p}}
\For{$i\leftarrow 2$ \KwTo $l$}{
\Left$\leftarrow$ \FindCompress{$Im[i,j-1]$}\;
\Up$\leftarrow$ \FindCompress{$Im[i-1,]$}\; }
\lForEach{element $e$ of the line $i$}{\FindCompress{p}}
\For{$i\leftarrow 2$ \KwTo $l$}{
\Left$\leftarrow$ \FindCompress{$Im[i,j-1]$}\;
\Up$\leftarrow$ \FindCompress{$Im[i-1,]$}\; }
\lForEach{element $e$ of the line $i$}{\FindCompress{p}}
\For{$i\leftarrow 2$ \KwTo $l$}{
\Left$\leftarrow$ \FindCompress{$Im[i,j-1]$}\;
\Up$\leftarrow$ \FindCompress{$Im[i-1,]$}\; }
\lForEach{element $e$ of the line $i$}{\FindCompress{p}}
\BlankLine
\Indm\Indmm
\Input{A bitmap $Im$ of size $w\times l$}
\Output{A partition of the bitmap}
\Indp\Indpp
\end{algorithm}
\DecMargin{1.5em}
\end{document}
没有内部变量来存储行号的宽度。该包将\llap
它们放在宽度为零的框中,数字加上算法中的空格突出到该框的右侧。如文档中的示例所示,用户可以调整边距以适应给定的算法。
答案2
提出\IncMargin{1em} \DecMargin{1em}
你的算法。
\IncMargin{1em}
\begin{algorithm}
\end{algorithm}
\DecMargin{1em}