我如何重新定义 \lstlistoflistings 标题的样式?

我如何重新定义 \lstlistoflistings 标题的样式?

memoir我正在使用基于和 包的cls listings。我想要一个包含所有列表(表格列表、图片列表、清单列表)的附录章节。这些列表的标题样式应该像标题一样section

我可以对表格和图形执行如下操作:

\makeatletter
\renewcommand\@lofmaketitle{%
  \section*{\listfigurename}%
  \tocmark%
  \@afterheading}
\makeatother

\makeatletter
\renewcommand\@lotmaketitle{%
  \section*{\listtablename}%
  \tocmark%
  \@afterheading}
\makeatother

因此我认为它也适用于列表,但以下内容没有效果:

\makeatletter
\renewcommand\@lolmaketitle{%
  \section*{\lstlistlistingname}%
  \tocmark%
  \@afterheading}
\makeatother

我使用\lstlistoflistings*,所以我不希望它出现在目录中。

我怎样才能做到这一点?

答案1

这应该可以

\documentclass[a4paper]{memoir}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[caption=Hest]
a
\end{lstlisting}


\begingroup

\makeatletter
\renewcommand\@tocmaketitle{%
  \section*{\contentsname}%
  \markboth{\contentsname}{\contentsname}
  \@afterheading}
\makeatother

% adding a star to \lstlistoflistings does not work, the inner 
% \tableofcontents never sees it. Locally use \KeepFromToc 
% to emulate the *
\KeepFromToc
\lstlistoflistings
\endgroup

\end{document}

请注意,该变化实际上不能在序言中,因为它也会影响\tableofcontents

相关代码listings来自

\lst@UserCommand\lstlistoflistings{\bgroup
    \let\contentsname\lstlistlistingname
    \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lol}}%
    \tableofcontents \egroup}

在这里我们可以看到它重置了,以及应该使用\contentsname什么文件。通常会执行,所以它们只会执行。\@starttoc\tableofcontents\@starttoc\tableofcontents

相关内容