我想在 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}