更改多个列表样式的标题

更改多个列表样式的标题

我想要有不同的列表环境,每个都有自己的标题。

我的尝试是这样的(vorlage.tex):

\documentclass{scrreprt}
\usepackage{regexpatch}% http://ctan.org/pkg/regexpatch
\usepackage{color}

\definecolor{codecolor}{rgb}{0.8,0.9,0.9}
\definecolor{chatcolor}{rgb}{0.9,0.9,0.8}
\usepackage{listings}% http://ctan.org/pkg/listings


\makeatletter
% --------------------------------------- Chat-Auszug
\newcommand{\lstlistchatname}{Chat-Auszug}
\lst@UserCommand\lstlistofchat{\bgroup
    \let\contentsname\lstlistchatname
    \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{loc}}%
    \tableofcontents \egroup}
\lstnewenvironment{chat}[1][]{%
  \renewcommand{\lstlistingname}{Chat}%
  \xpatchcmd*{\lst@MakeCaption}{lol}{loc}{}{}%
  \lstset{
  backgroundcolor=\color{chatcolor}
}}{}

% --------------------------------------- Code
\newcommand{\lstlistcodename}{Code}
\lst@UserCommand\lstlistofpycode{\bgroup
    \let\contentsname\lstlistcodename
    \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{loc}}%
    \tableofcontents \egroup}
\lstnewenvironment{pycode}[1][]{%
  \renewcommand{\lstlistingname}{Code}%
  \xpatchcmd*{\lst@MakeCaption}{lol}{loc}{}{}%
  \lstset{
  backgroundcolor=\color{codecolor},
}}{}

% linksbündige Fußboten
\deffootnote{1.5em}{1em}{\makebox[1.5em][l]{\thefootnotemark}}

\typearea{14} % typearea berechnet einen sinnvollen Satzspiegel (das heißt die Seitenränder) siehe auch http://www.ctan.org/pkg/typearea. Diese Berechnung befindet sich am Schluss, damit die Einstellungen oben berücksichtigt werden

\usepackage{scrhack} % Vermeidung einer Warnung

然后像这样使用:

\input{vorlage.tex}
\begin{document}

\lstlistofchat
\lstlistofpycode

\begin{pycode}[caption={Import nltk}]
import nltk
\end{pycode}

\begin{chat}[caption={Talking...}]
Sadik: Hello
\end{chat}

\end{document}

这是基于这个答案

由于应用了不同的背景颜色,因此样式 lstset 起作用了。但是标题根本没有显示。

在此处输入图片描述

对于第一个例子,标题应该是这样的聊天室 1.1 导入 NLTK对于第二个例子代码 1.1 说...。两者都不显示。我遗漏了什么?

答案1

代码中保存了指定的参数,但尚未告知要使用的环境。请参阅代码中的注释:

\documentclass{scrreprt}
\usepackage{regexpatch}% http://ctan.org/pkg/regexpatch
\usepackage{color}

\definecolor{codecolor}{rgb}{0.8,0.9,0.9}
\definecolor{chatcolor}{rgb}{0.9,0.9,0.8}
\usepackage{listings}% http://ctan.org/pkg/listings


\makeatletter
% --------------------------------------- Chat-Auszug
\newcommand{\lstlistchatname}{Chat-Auszug}
\lst@UserCommand\lstlistofchat{\bgroup
    \let\contentsname\lstlistchatname
    \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{loc}}%
    \tableofcontents \egroup}
\lstnewenvironment{chat}[1][]{% <<--- is told to expect a parameter
  \renewcommand{\lstlistingname}{Chat}%
  \xpatchcmd*{\lst@MakeCaption}{lol}{loc}{}{}%
  \lstset{
  backgroundcolor=\color{chatcolor}, #1 %<--- forgot to use #1. 
}}{}

% --------------------------------------- Code
\newcommand{\lstlistcodename}{Code}
\lst@UserCommand\lstlistofpycode{\bgroup
    \let\contentsname\lstlistcodename
    \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{loc}}%
    \tableofcontents \egroup}
\lstnewenvironment{pycode}[1][]{%   <<--- is told to expect a parameter
  \renewcommand{\lstlistingname}{Code}%
  \xpatchcmd*{\lst@MakeCaption}{lol}{loc}{}{}%
  \lstset{
  backgroundcolor=\color{codecolor}, #1 %<---forgot to use #1, same as above
}}{}

% linksbündige Fußboten
\deffootnote{1.5em}{1em}{\makebox[1.5em][l]{\thefootnotemark}}

\typearea{14} % typearea berechnet einen sinnvollen Satzspiegel (das heißt die Seitenränder) siehe auch http://www.ctan.org/pkg/typearea. Diese Berechnung befindet sich am Schluss, damit die Einstellungen oben berücksichtigt werden

\usepackage{scrhack} % Vermeidung einer Warnung

\begin{document}

    \lstlistofchat
    \lstlistofpycode

    \begin{pycode}[caption={Import nltk}]
        import nltk
    \end{pycode}

    \begin{chat}[caption={Talking...}]
        Sadik: Hello
    \end{chat}

\end{document}

相关内容