为什么使用 ACM 样式制作的程序列表会产生非常窄的标题?

为什么使用 ACM 样式制作的程序列表会产生非常窄的标题?

我想为 ACM 期刊准备一份手稿。程序列表带有超窄标题,见底部。难以置信的是,我在 ACM 样式文件中发现了与“listings”包的不兼容性。但是,MWE 可以很好地与样式书、回忆录等配合使用。有什么更好的主意吗?

\documentclass {acmsmall} % Aptara syntax
\usepackage{listings}

\begin{document}

\lstinputlisting[caption ={Just to demonstrate an extra narrow listing caption}]{sample.asm}

\end{document}

超窄列表

答案1

该类acmsmall只知道figuretable因此它假设,如果浮点数不是figure,那么它就是table

\@makecaption您可以反转选择标题格式样式的逻辑,因此它仅适用于表格的“短”文本宽度。

\documentclass {acmsmall} % Aptara syntax
\usepackage{listings}
\usepackage{etoolbox}
\makeatletter
\def\TabName{table}
\patchcmd{\@makecaption}
  {\ifx\FigName}
  {\unless\ifx\TabName}
  {}{}
\makeatother

\begin{document}

\begin{lstlisting}[caption={Just to demonstrate an extra narrow listing caption},float]
# some line
\end{lstlisting}

\begin{lstlisting}[
  caption={
    Just to demonstrate an extra narrow listing caption
    Just to demonstrate an extra narrow listing caption
    Just to demonstrate an extra narrow listing caption
    Just to demonstrate an extra narrow listing caption}]
# some line
\end{lstlisting}

\begin{figure}
\caption{some long caption to see what happens}
\end{figure}

\end{document}

在此处输入图片描述

相关内容