titlesec、hyperref、biblatex 和 tocbibind 的问题

titlesec、hyperref、biblatex 和 tocbibind 的问题

我正在使用该titlesec软件包将部分字体更改为无衬线字体。不幸的是,这会破坏 PDF 阅读器目录中和书签侧栏中“未编号”部分的链接。我正在使用该tocbibind软件包和heading=bibintoc设置biblatex将参考书目和图表列表添加到目录中。

在以下示例中,只有指向“章节”的链接有效。单击“图片列表”会跳转到目录,单击“参考文献”会跳转到“章节”。

foo.tex

\documentclass{article}
\usepackage[sf,bf]{titlesec}
\usepackage[nottoc]{tocbibind}
\usepackage[backend=biber]{biblatex}
\usepackage{hyperref}

\addbibresource{foo.bib}

\begin{document}

\tableofcontents

\clearpage

\listoffigures

\clearpage

\section{Section}

\clearpage

\nocite{foo}

\printbibliography[heading=bibintoc]

\end{document}

foo.bib(只需要,biblatex否则会抱怨书目为空)

@book{foo,
author = {foo},
title = {foo}
}

有任何解决这个问题的方法吗?

答案1

似乎存在问题titlesec;在这种情况下,一个可能的解决方案是使用sectsty包;这将产生正确的链接,而无需手动添加\phantomsection(毕竟,这是 的作用的一部分tocbibind):

\documentclass{article}
\usepackage{sectsty}
\usepackage[nottoc]{tocbibind}
\usepackage[backend=biber]{biblatex}
\usepackage{hyperref}

\allsectionsfont{\sffamily\bfseries}

\addbibresource{biblatex-examples.bib}

\begin{document}

\tableofcontents
\clearpage
\listoffigures
\clearpage
\section{Section}
\clearpage
\nocite{*}
\printbibliography[heading=bibintoc]

\end{document}

答案2

在和\phantomsection前面添加:\listoffiguresprintbibliography

\documentclass{article}
\usepackage[sf,bf]{titlesec}
\usepackage[nottoc]{tocbibind}
\usepackage[backend=biber]{biblatex}
\usepackage{hyperref}

\addbibresource{foo.bib}

\begin{document}
\tableofcontents\clearpage

\phantomsection
\listoffigures\clearpage

\section{Section}
\clearpage

\nocite{foo} \phantomsection
\printbibliography[heading=bibintoc]
\end{document}

hyperref手册指出:

这会在此位置设置一个锚点。其工作原理类似于自动选择的锚点名称。它通常与节类内容(索引、参考书目、序言)\hypertarget{}{}结合使用。指设置锚点的最新上一个位置。\addcontentsline\addcontentsline

相关内容