我想增加我的算法中每个行号后面的水平空间量(用 排版algpseudocode
)。
因为algorithmicx
一般来说,algpseudocode
特别是,似乎没有为用户提供任何此类定制的手段,所以我卷起袖子,准备亲自动手:我查阅了源代码algpseudocode
并发现以下定义(埋在另一个宏定义中,因此是 double #
):
\algnewcommand\alglinenumber[1]{\footnotesize ##1:}
为了获得更多的空间,我重新定义\alglinenumber
如下:
\algrenewcommand\alglinenumber[1]{\footnotesize #1:\hspace{1em}}
这似乎起了作用,但我注意到
- 行号不再向右刷新,
当行号的位数增加时,行内容会被推到右方;因此,用两位数标记的行与用一位数标记的行不会水平对齐。
这种不良行为在下面的屏幕截图中清晰可见;与前面的行相比,请看第 10 行以后的额外不良缩进。
因为这在原始定义中不会发生\alglinenumber
(见第一个屏幕截图),所以我只能得出结论,我的重新定义是不合适的。
我应该怎么做才能在行号后添加更多的水平空间但保持水平对齐?
\documentclass{article}
\usepackage{algpseudocode}
\algrenewcommand\alglinenumber[1]{\footnotesize #1:\hspace{1em}} % comment/uncomment
\begin{document}
\begin{algorithmic}[1]
\State aaa
\State bbb
\State ccc
\State ddd
\State eee
\State fff
\State ggg
\State hhh
\State iii
\State jjj
\State kkk
\State lll
\end{algorithmic}
\end{document}
答案1
您需要更改\labelsep
列表的值。默认值为0.5em
。这将更改为1.5em
:
\documentclass{article}
\usepackage{regexpatch}
\usepackage{algpseudocode}
\makeatletter
\xpatchcmd{\algorithmic}{\labelsep 0.5em}{\labelsep 1.5em}{\typeout{Success!}}{\typeout{Oh dear!}}
\makeatother
\begin{document}
\begin{algorithmic}[1]
\State aaa
\State bbb
\State ccc
\State ddd
\State eee
\State fff
\State ggg
\State hhh
\State iii
\State jjj
\State kkk
\State lll
\State aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaa
\end{algorithmic}
\end{document}