我想要有不同的列表环境,每个都有自己的标题。
我的尝试是这样的(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}