我正在使用 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 的缩进被破坏了。
我该如何解决这个问题?
答案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.clo
的article.cls
是
\def\@listi{\leftmargin\leftmargini \topsep 3\p@ \@plus\p@ \@minus\p@ \parsep 2\p@ \@plus\p@ \@minus\p@ \itemsep \parsep}%
特别acmsmall
是在末端添加一些胶水\itemsep
,这会影响标签对齐。