我正在制作一个 beamer 演示文稿,我想使用natbib
它,因为\citet
它可以识别 URL。但是,当我尝试编译它时,在执行第三次 PDFLaTeX 传递时,出现了此错误(以及其他错误):
[28] (./presentacion.toc) [29] (./presentacion.bbl
(./presentacion.toc
! Missing } inserted.
<inserted text>
}
l.3 ...r@sectionintoc {1}{Introducci\'on}{4}{0}{1}
当我取出natbib
包装时,一切都正常,包括\bibliography
有没有办法解决这个问题,或者我不应该natbib
使用beamer
?
答案1
该类beamer
无法使用natbib
。该类的初始作者 Till Tantau 说道:
目前,beamer 无法与 natbib 协同工作,因为 beamer 干预的内容与 natbib 相同,并且 beamer 的干预方式无法让 natbib 容忍。此外,无法“关闭 beamer 的干预”
但是您可以在文章模式下使用它。
你可以读这里在 tex.latex.beamer.general 邮件列表中。
答案2
这是一个工作示例。我在 MacTex-2009 上使用 pdflatex 编译了此示例。没有错误,没有警告(除了一条有关 pgfbaseimage.sty 已过时的消息,这与此无关)。
\documentclass[hyperref={pdfpagelabels=false}]{beamer}
\usepackage[scaled]{helvet}
\usepackage[round]{natbib}
\newcommand{\newblock}{}
\begin{document}
\begin{frame}
See \citet{foo}.
\begin{thebibliography}{22}
\bibitem[Foo(1988)]{foo} Foo (1998). Bar. \emph{CONF 1988}.
\end{thebibliography}
\end{frame}
\end{document}
结果是如下所示的 PDF 文档:
See Foo (1988).
Foo (1998). Bar. CONF 1988.
另一个使用 Bibtex 的例子;测试.tex:
\documentclass[hyperref={pdfpagelabels=false}]{beamer}
\usepackage[scaled]{helvet}
\usepackage[round]{natbib}
\newcommand{\newblock}{}
\begin{document}
\begin{frame}
See \citet{foo}.
\bibliographystyle{abbrvnat}
\bibliography{test}
\end{frame}
\end{document}
和测试文件:
@INPROCEEDINGS{foo,
author={Bar Foo},
year={1988},
title={Foo},
booktitle={CONF 1988}
}
再次,运行良好。