Как переопределить стиль заголовка \lstlistoflistings?

Как переопределить стиль заголовка \lstlistoflistings?

Я использую cls на основе memoirи пакета 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.

Связанный контент