beamer:bibtex + natbib + hyperref,超链接不起作用

beamer:bibtex + natbib + hyperref,超链接不起作用

我想在 beamer 演示文稿中使用 bibtex,并使用 natbib 格式化引文。此代码有效:

\documentclass{beamer}
\usepackage{listings}
\usepackage{hyperref}
%\usepackage[super,sort,comma]{natbib}
\usepackage{filecontents}

\begin{filecontents}{mybib.bib}
@book{author_book,
title = {Book's title},
author = {Author, Some},
location = {The City},
publisher = {Publisher},
year = {2005},
}
\end{filecontents}

\begin{document}
\begin{frame}
\frametitle{Title}
Test \cite{author_book}
\end{frame}

\begin{frame}
  \frametitle{References}
  \bibliographystyle{plain}
  \bibliography{mybib}{}
\end{frame}
\end{document}

但是当我取消注释时:

\usepackage[super,sort,comma]{natbib}

我得到了我想要的引用格式,但是超链接丢失了。我该如何解决?

答案1

评论太长:

hyperref由类加载beamer。在此阶段natbib未加载,因此hyperref不会激活其natbib兼容性代码。没有简单的方法可以打开该代码,第二次加载hyperref将被忽略,并且beamer会干扰一些相同的宏natbib。(顺便说一下,使用时natbib您应该使用匹配,\bibliographystyle例如plainnat。)

如果您想要带有超链接的上标引用,那么您可以使用biblatex\supercite命令或带有上标选项的其\autocite命令:

\documentclass{beamer}

\usepackage[autocite=superscript]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{mybib.bib}
@book{author_book,
title = {Book's title},
author = {Author, Some},
location = {The City},
publisher = {Publisher},
year = {2005},
}
\end{filecontents}

\addbibresource{mybib.bib}

\begin{document}


\begin{frame}
\frametitle{Title}
Test \autocite{author_book}
\end{frame}

\begin{frame}
  \frametitle{References}
\printbibliography
\end{frame}
\end{document}

上述代码以 运行biber;如果您愿意,bibtex可以按如下方式调用该biblatex包:

\usepackage[autocite=superscript,backend=bibtex]{biblatex}

相关内容