发信人: caoyangorg (http://www.caoyang.org), 信区: TeX
标 题: 请问清华现在的模版有没有办法在目录中加入lstlisting
发信站: 水木社区 (Wed Mar 14 22:42:33 2007), 站内
查过它的文档,可以列出索引,
但是没法加入目录之中,
而且生成的书签,在点击"目录"时,会跳到lstlisting索引页那里。
谢谢!
这是因为thuthesis和listings的一点小冲突,刚才看了一下:
listings定义\lstlistoflistings如下:
\lst@UserCommand\lstlistoflistings{\bgroup
\let\contentsname\lstlistlistingname
\let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lol}}%
\tableofcontents \egroup}
可见它是借用了\tableofcontents的,本来它已经将\contentsname重定义成\lstlistlistingname了,但是thuthesis的\tableofcontents是这样搞的:
\renewcommand\tableofcontents{%
\cleardoublepage\thu@chapter*[]{\contentsname}
\normalsize\@starttoc{toc}}
其中用了\thu@chapter*,这个macro是thuthesis自定义的稍微有点绕,感兴趣你可以看cls中的代码,此处\thu@chapter*[]{\contentsname}的作用是把contentsname加入书签(并不会加入“目录”!),问题就在这里:thu@chapter*[]{}用了\string\contentsname,所以写到main.out里的都是:contentsname.0,这导致真正的\tableofcontents和
\lstlistoflistings都是用contentsname.0作为引用,也就是那位同学发现的现象,而\lstlistoflistings出现在\tableofcontents之后,所以书签中的“目录”就被导向至“源代码索引”
解决方法很简单,类似thuthesis中的\listoffigures:
\def\lstlistoflistings{%
\thu@listof{\lstlistlistingname}{lol}}
把这句话加到导言区即可。
\thu@listof也是thuthesis自定义的macro,在内部简单地调用\thu@chapter*可以让"源代码索引"同时出现在“书签”和“目录”中,且保证了引用位置正确。
不知道说清楚没有
没有评论:
发表评论