![禁用单个条目的目录超链接](https://linux22.com/image/447287/%E7%A6%81%E7%94%A8%E5%8D%95%E4%B8%AA%E6%9D%A1%E7%9B%AE%E7%9A%84%E7%9B%AE%E5%BD%95%E8%B6%85%E9%93%BE%E6%8E%A5.png)
考虑以下 MWE,它创建了一个包含三个条目的目录,所有条目都链接到文档中各自的部分。
\documentclass{scrartcl}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\clearpage
\section{Section with link}
\clearpage
\section{Section without link}
% \section*{Section without link}
% \addcontentsline{toc}{section}{Section without link}
\clearpage
\section{Section without link 2}
\end{document}
我想仅禁用后面条目的链接。有没有我找不到的解决方案?我很高兴收到任何提示!
背景: 在我的最终文档中,后面的部分将包含外部 PDF(参考信)。这意味着我将丢弃带有实际章节标题的页面,并将文档与其他 PDF 合并。这样目录中的页码将是正确的,但链接将指向第一页(因为实际页面不再存在)——因此我宁愿根本没有链接。
我知道我可以使用类似的方法pdfpages
来直接包含 PDF,但是这会破坏所包含文档中的超链接,因此对我来说不是一个选择。
答案1
hyperref 中有一个包选项可以禁用目录中的链接。您可以在目录中途通过更改文件中linktoc=none
相应宏的值来启用此选项。\Hy@linktoc
.toc
这可以通过使用低级\addtocontents{ext}{...}
宏来实现,该宏将第二个参数写入扩展名为的文件中ext
。在本例中:
\addtocontents{toc}{\let\Hy@linktoc\Hy@linktoc@none}
完整的 MWE,\makeatletter
包括\makeatother
:
\documentclass{scrartcl}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\clearpage
\section{Section with link}
\clearpage
\makeatletter
\addtocontents{toc}{\let\Hy@linktoc\Hy@linktoc@none}
\makeatother
\section{Section without link}
\clearpage
\section{Section without link 2}
\end{document}
这将创建以下.toc
文件:
\contentsline {section}{\numberline {1}Section with link}{2}{section.1}%
\let \Hy@linktoc \Hy@linktoc@none
\contentsline {section}{\numberline {2}Section without link}{3}{section.2}%
\contentsline {section}{\numberline {3}Section without link 2}{4}{section.3}%
链接目标section.2
仍然section.3
会生成,但由于选项设置,它们不会显示为实际链接。
结果: