我创建了两个 lstnewenvironment,一个用于 Java,一个用于伪代码,如下所示:(这里不包括伪代码)
\documentclass{thesisPST}
\usepackage{listings}
\lstnewenvironment{java}[1][]
{\lstset{
language=Java,
backgroundcolor=\color{light-backcolour},
xleftmargin=0.7cm,
frame=tlbr,
framesep=0.2cm,
framerule=0pt,
commentstyle=\color{codegray},
keywordstyle=\color{codeblue},
numberstyle=\tiny\color{codegray},
stringstyle=\color{pgreen},
basicstyle=\footnotesize\ttfamily,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2,
mathescape=true,
framexleftmargin=5mm,
stepnumber=1,
morekeywords={},
deletekeywords={},
identifierstyle=,
moredelim=[il][\textcolor{codepurple}]{\$\$},
moredelim=[is][\textcolor{codepurple}]{\%\%}{\%\%},
moredelim=[il][\textcolor{codegold}]{@}
}
}{}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
%after i created some code such as:
\begin{java}[caption=Die Methode doesAutomatExists ,label = c:doesAutomatExists]
private boolean doesAutomatExists(String automatonName, List<ComponentAutomaton> automata){
boolean res = true;
for (ComponentAutomaton automaton:automata) {
if (automaton.getAutomatonName().equals(automatonName)){
res = false;
}
}
return res;
}
\end{java}
\backmatter
%Next i created a lstlistoflistings as following:
%but the list is empty
\phantomsection
\renewcommand\lstlistlistingname{Quellcodeverzeichnis}
\addcontentsline{toc}{chapter}{Quellcodeverzeichnis}
\lstlistoflistings
\end{document}
我哪里做错了?
答案1
仔细查看了 lstset 和 PDF 后,我发现代码没有标题。
由于没有标题,列表将出现在列表的目录中。
为了解决这个问题,我在lstnewenvironment下的lstset中添加了两行。
1. `caption= #1`
2. captionpos=b
所以我定义了标题的位置:例如
\begin{java}[language=java,caption=Die Methode doesAutomatExists ,label = c:doesAutomatExists]
并且标题显示在代码下方,并添加到表中。