是否可以将 algorithmicx 中的行号缩进与 Listings 中的相同?

是否可以将 algorithmicx 中的行号缩进与 Listings 中的相同?

默认情况下,行号algorithmicx位于浮动规则内。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{algorithm, algpseudocode}

\begin{document}
\begin{algorithm}
  \begin{algorithmic}[1]
    \Procedure{Input1}{$s_0 \ldots s_7, c$}
    \For{$i \gets 0$ to 7}
    \State $arr[i][0] \gets s_i$
    \EndFor
    \State $color \gets c$
    \EndProcedure
  \end{algorithmic}
\end{algorithm}
\end{document}

在此处输入图片描述

是否可以改变它们的缩进以使它们显示在浮动规则之外,就像在包中一样listings?(图中省略了细节)如果解决方案也能改变伪代码的缩进,以便它们在行号原来的位置缩进,那就太好了。 在此处输入图片描述

答案1

在下面添加以下几行\usepackage{algorithmicx}(或\usepackage{algpseudocode}根据您的情况)。

\usepackage{xpatch}
\xpatchcmd\algorithmic{\leftmargin\labelwidth}{\leftmargin-\labelsep}{}{}

在此处输入图片描述

\documentclass{article}
\usepackage{blindtext}
\usepackage{algorithm,algpseudocode}
\usepackage{xpatch}
\xpatchcmd\algorithmic{\leftmargin\labelwidth}{\leftmargin-\labelsep}{}{}
\begin{document}
\blindtext
\begin{algorithm}
  \begin{algorithmic}[1]
    \Procedure{Input1}{$s_0 \ldots s_7, c$}
    \For{$i \gets 0$ to 7}
    \State $arr[i][0] \gets s_i$
    \EndFor
    \State $color \gets c$
    \EndProcedure
  \end{algorithmic}
\end{algorithm}
\blindtext
\end{document}

相关内容