如何在列表中使用 \belowcaptionskip?

如何在列表中使用 \belowcaptionskip?
\documentclass{mwrep}
\usepackage{minted}
\usepackage{lipsum}

% question regarding this code
\setlength{\belowcaptionskip}{-10pt}
% end

\begin{document}
\lipsum[1]
\begin{listing}[h]
\begin{verbatim}
1
2
3
4
\end{verbatim}
\caption{test}
\label{lst}
\end{listing}
\lipsum[2]
\begin{figure}[h]
\begin{verbatim}
1
2
3
4
\end{verbatim}
\caption{test}
\label{ver}
\end{figure}
\lipsum[3]
\end{document}

为什么\listing忽略 的更改\belowcaptionskip?我可以更改什么来使其listing受到影响,就像 的情况一样figure
我怎样才能使 的标题在各个方面listing与 的标题相同figure(例如字体大小,在我的示例中 中的字体较小figure)。

答案1

文档类重新定义了标准浮点数(即和)的行为mwrep方式;包使用包提供的功能定义其环境;因此, 的重新定义并不适用于环境;解决该问题的一种方法是让浮点数使用 的设置(特别是);下面是一个例子,使用包定义的浮动样式的修改版本来说明这种方法:\captiontablefiguremintedlistingfloatmwreplistings\restylelistingmwrep\captionsettingsplainfloat

\documentclass{mwrep}
\usepackage{minted}
\usepackage{lipsum}

\setlength{\belowcaptionskip}{-10pt}

\makeatletter
\renewcommand\floatc@plain[2]{\setbox\@tempboxa\hbox{\captionsettings{\@fs@cfont #1:} #2}%
  \ifdim\wd\@tempboxa>\hsize \captionsettings{\@fs@cfont #1:} #2\par
    \else\hbox to\hsize{\hfil\box\@tempboxa\hfil}\fi\vskip\belowcaptionskip}
\makeatother

\floatstyle{plain}
\restylefloat{listing}

\begin{document}
\lipsum[1]
\begin{listing}[h]
\begin{verbatim}
1
2
3
4
\end{verbatim}
\caption{test}
\label{lst}
\end{listing}
\lipsum[2]
\begin{figure}[h]
\begin{verbatim}
1
2
3
4
\end{verbatim}
\caption{test}
\label{ver}
\end{figure}
\lipsum[3]
\end{document}

在此处输入图片描述

相关内容