有人能帮我弄清楚这段代码的作用吗?

有人能帮我弄清楚这段代码的作用吗?

以下代码来自我们大学的论文模板,该模板没有很好的文档记录,而且由于我是最熟练的 LaTeX 用户,而我最多只是一个中等水平的用户,所以我们不知道其中的很多代码是做什么的。有人能帮我们弄清楚这个宏的作用吗?我可以说它与有关hyperref,但除此之外我们就不知道了。它就在一堆用于修改csthesis以添加程序列表的代码上方,所以它可能与此有关?

这里有足够的信息来说明它在做什么吗?

哦,不,我不能发布 MWE,因为我们不知道它的作用,而且它是从整个博士论文中删除的。

\makeatletter
\def\contentsline#1#2#3#4{%
  \ifx\\#4\\%
    \csname l@#1\endcsname{#2}{#3}%
  \else
    \csname l@#1\endcsname{%
      \hyper@linkstart{link}{#4}{#2}\hyper@linkend
    }{%
      % same link destination for the page:
      \hyper@linkstart{link}{#4}{#3}\hyper@linkend
      % link destination is the page itself:
      % \hyperpage{#3}%
    }%
  \fi
} \makeatother

(我希望那里有足够的代码,它在模板中独立存在,所以我希望它是自包含的。我还希望它不会太本地化。)

答案1

在旧版本的 中,hyperref标题或页码都可以成为链接,但不能同时成为链接。因此,\contentsline问题中的 的定义修改了 的旧定义,hyperref\contentsline添加指向标题和页码的链接。

自 2008/04/13 版本起,6.77nhyperref有了一个新选项linktochyperref来自自述

linktoc已添加选项

新的选项linktoc允许更好地控制将目录中条目的哪一部分制作成链接:

  • linktoc=none (无链接)
  • linktoc=section(默认行为,与 相同linktocpage=false
  • linktoc=page (与...一样linktocpage=true
  • linktoc=all (章节和页面部分均为链接)

使用最新的,hyperref您可以删除定义\contentsline并使用

\usepackage[linktoc=all]{hyperref}[2008/04/13]

该选项也可以通过 来设置\hypersetup

相关内容