acmsmall 打破算法的行号对齐

acmsmall 打破算法的行号对齐

我正在使用 ACM 期刊格式之一 acmsmall 格式化一篇文章。但是,当我查看算法时,我注意到算法的行丢失了缩进。

在文章类中不会出现该问题。

我准备了一个最小的例子来演示这个问题。

\documentclass{acmsmall}
%\documentclass{article}

\usepackage{algorithm}
\usepackage[noend]{algpseudocode} 

\begin{document}
    \begin{algorithm}
        \caption{MyAlgorithm}
        \begin{algorithmic}[1]
            \State $A \gets X$
            \State $A \gets Y$
            \State $A \gets Z$
            \State $A \gets X$
            \State $A \gets Y$
            \State $A \gets Z$
            \State $A \gets X$
            \State $A \gets Y$
            \State $A \gets Z$
            \State $A \gets X$
            \State $A \gets Y$
            \State $A \gets Z$
        \end{algorithmic}
    \end{algorithm}
\end{document}

我附上了 acmsmall 和 article 的截图。你可以看到,在第 10 行之后,acmsmall 的缩进被破坏了。

我该如何解决这个问题?

acm小

文章

答案1

该类acmsmall导致数字居中而不是右对齐。您可以通过重新定义来更正此问题,\alglinenumber如下所示(更新以获取字体大小):

\newcommand{\myalgnumfont}{\fontsize{8pt}{9pt}\selectfont}
\algrenewcommand{\alglinenumber}[1]{\myalgnumfont #1:}

在序言中。

示例输出

\documentclass{acmsmall}
%\documentclass{article}

\usepackage{algorithm}
\usepackage[noend]{algpseudocode} 

\newcommand{\myalgnumfont}{\fontsize{8pt}{9pt}\selectfont}
\algrenewcommand{\alglinenumber}[1]{\hss\myalgnumfont #1:}

\begin{document}
    \begin{algorithm}
        \caption{MyAlgorithm}
        \begin{algorithmic}[1]
            \State $A \gets X$
            \State $A \gets Y$
            \State $A \gets Z$
            \State $A \gets X$
            \State $A \gets Y$
            \State $A \gets Z$
            \State $A \gets X$
            \State $A \gets Y$
            \State $A \gets Z$
            \State $A \gets X$
            \State $A \gets Y$
            \State $A \gets Z$
        \end{algorithmic}
    \end{algorithm}
\end{document}

标准algorithmic定义用于\footnotesize设置字体大小。问题是acmsmall重新定义\footnotesize

\newcommand{\footnotesize}{%
    \@setfontsize\footnotesize\@viiipt{9\p@}%
    \abovedisplayskip 4\p@ \@plus \p@
    \belowdisplayskip \abovedisplayskip
    \abovedisplayshortskip 4\p@ \@minus \p@
    \belowdisplayshortskip 4\p@ \@minus \p@
    \def\@listi{%
        \leftmargin\leftmargini
        \topsep 4\p@ \@plus \p@
        \parsep \z@ \@plus .5\p@
        \itemsep \p@ \@plus .7\p@}
}%

这里的问题是最后\itemsep加载size10.cloarticle.cls

   \def\@listi{\leftmargin\leftmargini
               \topsep 3\p@ \@plus\p@ \@minus\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%

特别acmsmall是在末端添加一些胶水\itemsep,这会影响标签对齐。

相关内容