使用 capt-of 的 \captionof 列出列表时没有数字

使用 capt-of 的 \captionof 列出列表时没有数字

我正在尝试使用 \captionof{lstlisting}{Pseudo Code}获取带有正常标题的列表“清单 1. 伪代码",在 IEEEtran 文档中。

我想要的标题而不是caption=因为我想在代码旁边添加注释,并且标题跨越代码和注释之上。

以下是 MCVR:

\documentclass[10pt,journal,compsoc]{IEEEtran}

\usepackage{listings}
\usepackage{capt-of}

\makeatletter
% the 3 caption packages caption.sty, ltcaption.sty, newfloat.sty contain:
\providecommand*\ext@lstlisting{lol}%
\makeatother

\begin{document}

\begin{figure}
    \centering%
    \captionof{lstlisting}{pseudo code with comments}
    \begin{minipage}[t]{0.40\textwidth}
        \begin{lstlisting}[label=code]
code here
        \end{lstlisting}
    \end{minipage}%
    \hspace{1em}%
    \begin{minipage}[t]{0.45\textwidth}
        Some comments here
    \end{minipage}
\end{figure}

Reference Listing~\ref{code} in text.

\end{document}

这几乎让我得到了我想要的东西,除了数字没有出现:我得到了“清单。伪代码“,但参考文献仍然有效。

我得到一个未定义的控制序列,ext@lstlisting我必须手动定义该序列才能编译文件。

如果我加载,整个过程就会正常进行caption,但是capt-ofIEEEtrans 指南警告:

Axel Sommerfeldt 的 caption.sty [将] 覆盖 IEEEtran.cls 的标题处理,这将导致非 IEEE 风格的图形/表格标题。

事实上,使用这个包会改变表格和图形标题的样式,所以我不需要使用这个包(这使得这个问题不同于这个类似的使用caption)。

我该如何解决这个问题并获取列表号码\captionof{lstlisting}{}

答案1

\captionof来自的命令capt-of并不像\captionof来自caption包的命令那么复杂。

它在内部使用\caption,这需要\@captype定义,lstlisting但同时\fnum@lstlisting,这还没有正确定义。

重新定义\fnum@lstlistingasListing~\thelstlisting可以解决问题。

\documentclass[10pt,journal,compsoc]{IEEEtran}


\usepackage{capt-of}
\usepackage{listings}

\makeatletter

% the 3 caption packages caption.sty, ltcaption.sty, newfloat.sty contain:
 \AtBeginDocument{%
  \providecommand*\ext@lstlisting{lol}%
  \renewcommand{\fnum@lstlisting}{\lstlistingname\nobreakspace\thelstlisting}
 }
\makeatother

\begin{document}
\begin{figure}
  \centering%
   \captionof{lstlisting}{pseudo code with comments}
   \begin{minipage}[t]{0.40\textwidth}
    \begin{lstlisting}[label=code]
code here
\end{lstlisting}
\end{minipage}%
\hspace{1em}%
\begin{minipage}[t]{0.45\textwidth}
  Some comments here
\end{minipage}
\end{figure}

Reference Listing~\ref{code} in text.

\end{document}

在此处输入图片描述

相关内容