\lstlistoflistings
在目录中使用始终命名为 Contents 的。
我确实调查过 目录中的 lstlistoflistings 条目名称始终为“Contents”和 更改列表名称 但那里的解决方案没有起作用。
示例:(我的完整序言)
\documentclass[11pt, oneside]{Thesis}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplots,filecontents}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{booktabs,colortbl}
\usepackage{graphicx}
\usepackage{rotating}
\usepackage{listings}
\usepackage{color}
\usepackage{comment}
\usepackage[official]{eurosym}
\usepackage{colortbl}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{indentfirst}
\usepackage{latexsym}
\usepackage{titlesec}
\usepackage[square, numbers, comma, sort&compress]{natbib}
\hypersetup{urlcolor=blue, colorlinks=true}
\renewcommand{\lstlistlistingname}{List of Code}
\begin{document}
\tableofcontents
\lstlistoflistings
\lstinputlisting[language=python,firstline=1,lastline=68,caption=some caption here., label=code:getbb]{Code/getBoundingBox.py}
\end{document}
更新命令会更改页面中的页眉,但不会更改目录中的页眉。有什么想法吗?
编辑x2:
通过在Thesis.cls
}
\renewcommand\lstlistoflistings{
\btypeout{List of Listings}
\addtotoc{List of Listings}
\begin{spacing}{1}{
\setlength{\parskip}{1pt}
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\chapter*{\lstlistlistingname
\@mkboth{
\MakeUppercase\lstlistlistingname}{\MakeUppercase\lstlistlistingname}}
\@starttoc{lot}
\if@restonecol\twocolumn\fi
\cleardoublepage
}\end{spacing}
现在名称在目录中正确显示,但列表没有显示在列表页面中,它只是空的。
MWE 可在此处找到:https://www.dropbox.com/sh/xehv0crr7rqyptp/AAB-eNpJVLVpfQikO3IO3yCza?dl=0
答案1
使用模板版本 1.43(17/5/14)。
\documentclass[12pt, oneside]{Thesis} % The default font size and one-sided printing (no margin offsets)
\usepackage{etoolbox}
\begin{document}
\tableofcontents
\patchcmd{\tableofcontents}{\addtotoc{Contents}}{\addtotoc{Wombat}}{}{}
\lstlistoflistings
\end{document}
您可以更换袋熊可以是任何你喜欢的字符串,甚至可以是\lstlistlistingname
。原始模板中没有重新定义列表。
最新版本的模板不会出现此问题。原因很简单:该类已更新,以清除此类垃圾。
答案2
硬编码的List of Listings
ToC 条目\lstlistoflistings
当然是罪魁祸首。
这可以通过补丁来改变,xpatch
并替换为(顺便说一下,这是一个糟糕的宏名 ;-))List of Listings
的内容\lstlistlistingname
\documentclass[11pt, oneside]{Thesis}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplots,filecontents}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{booktabs,colortbl}
\usepackage{graphicx}
\usepackage{rotating}
\usepackage{listings}
\usepackage{color}
\usepackage{comment}
\usepackage[official]{eurosym}
\usepackage{colortbl}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{indentfirst}
\usepackage{latexsym}
\usepackage{titlesec}
\usepackage{xpatch}
\usepackage[square, numbers, comma, sort&compress]{natbib}
\renewcommand{\lstlistlistingname}{List of codes}
\xpatchcmd{\lstlistoflistings}{
\addtotoc{List of Listings}%
}{%
\addtotoc{\lstlistlistingname}%
}{\typeout{patch success}}{\typeout{patching failed}}
\begin{document}
\tableofcontents
\clearpage
\lstlistoflistings
\lstinputlisting[language=python,caption=some caption here., label=code:getbb]{getBoundingBox.py}
\end{document}
答案3
Christian 和 Johannes 在评论中提出的建议似乎不起作用,所以这里有一个粗暴的黑客来修复问题,而实际上并没有理解发生了什么。澄清一下,这是基于你的论文课程没有编辑重命名了目录条目但列表本身却消失了。
\documentclass[11pt, oneside]{Thesis}
% long list of irrelevant packages omitted ...
\usepackage{listings}
\immediate\write18{sed -i '0,/{Contents}/! s/{Contents}/{List of Code}/' \jobname.toc}
\begin{document}
\tableofcontents
\clearpage
\lstlistoflistings
\lstinputlisting[language=python,caption=some caption here., label=code:getbb]{getBoundingBox.py}
\end{document}
解释:我们使用行编辑器sed
修改包含目录条目的辅助文件。我们将第二个出现的{Contents}
-- 以及后面的任何其他 -- 替换为 。但我希望这无关紧要{List of Code}
。
为了使其工作,您需要使用该--shell-escape
选项运行 TeX。
下次,请尽量不要出于好意而使用自定义类模板——尽可能坚持使用标准类,并尽可能使用标准包进行自定义。这有助于避免奇怪的错误;那些确实出现的错误通常以前在野外被观察到过,并且更容易获得帮助。