如何自定义行号后面的水平空间量?

如何自定义行号后面的水平空间量?

我想增加我的算法中每个行号后面的水平空间量(用 排版algpseudocode)。

在此处输入图片描述

因为algorithmicx一般来说,algpseudocode特别是,似乎没有为用户提供任何此类定制的手段,所以我卷起袖子,准备亲自动手:我查阅了源代码algpseudocode并发现以下定义(埋在另一个宏定义中,因此是 double #):

\algnewcommand\alglinenumber[1]{\footnotesize ##1:}

为了获得更多的空间,我重新定义\alglinenumber如下:

\algrenewcommand\alglinenumber[1]{\footnotesize #1:\hspace{1em}}

这似乎起了作用,但我注意到

  1. 行号不再向右刷新,
  2. 当行号的位数增加时,行内容会被推到右方;因此,用两位数标记的行与用一位数标记的行不会水平对齐。

    这种不良行为在下面的屏幕截图中清晰可见;与前面的行相比,请看第 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}

更大的标签 sep

相关内容