Beamer 和 Natbib

Beamer 和 Natbib

我正在制作一个 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}
}

再次,运行良好。

相关内容