Bibtex 中的引用问题

Bibtex 中的引用问题

我使用参考 BibTeX 文件作为 ref.bib,我使用 \cite 命令在以下 latex 环境中引用

\documentclass[10pt,compress]{beamer}
\usepackage[T1]{fontenc}
\usetheme{Madrid}
\usepackage{amsmath,amssymb,amsfonts}
\useoutertheme{shadow}
\useinnertheme{rounded}
\setbeamertemplate{navigation symbols}{}
\setbeamerfont{structure}{family=\rmfamily,series=\bfseries}
\usefonttheme[onlymath]{serif}
\usepackage{caption}
\usepackage{rotating}
\usepackage{multicol}
\usepackage{hyperref}
\usepackage{enumerate}
\usepackage{tikz-cd}
\bibliographystyle{plain}
\usepackage[natbib=true,style=authoryear,backend=bibtex,useprefix=true]{biblatex}
\addbibresource{bibliography.bib}
\usepackage[style=authoryear]{biblatex}
\usepackage{hyperref}
\usetikzlibrary{matrix}
\usepackage{bm}

\begin{frame}[t,allowframebreaks]
\frametitle{References}
\printbibliography
\bibliography{ref.bib}
\end{frame}

但我在 pdf 中找不到任何参考资料。谢谢您的帮助。

答案1

您正在混合两种不兼容的方法来在 LaTeX 中生成引文和参考书目。

文档主体中有\bibliographystyle{plain}\bibliography{ref.bib},它们用于生成基于 BibTeX 的参考书目。(这在当前系统上无关紧要,但从技术上讲\bibliography{ref.bib}是错误的。文件名参数\bibliography不能包含文件扩展名,因此\bibliography{ref}是正确的)。

但随后您还要加载biblatex(两次!\usepackage[natbib=true,style=authoryear,backend=bibtex,useprefix=true]{biblatex} \usepackage[style=authoryear]{biblatex},只加载一次包以避免混淆和选项冲突)并使用其命令\addbibresource{bibliography.bib}(指向与不同的文件\bibliography)和\printbibliography

biblatex和基于 BibTeX 的书目方法不兼容,您需要在两者中选择其一。


biblatex

如果选择biblatex,则需要删除所有调用,并且文档正文中\bibliographystyle可能没有调用。(您可以在序言中给出文件调用,但建议使用- ,其中必须包含文件扩展名)。\bibliography.bib\bibliography\addbibresource

你的biblatex文档看起来大致如下

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}

\usetheme{Madrid}
\useoutertheme{shadow}
\useinnertheme{rounded}
\setbeamertemplate{navigation symbols}{}
\setbeamerfont{structure}{family=\rmfamily,series=\bfseries}
\usefonttheme[onlymath]{serif}

\usepackage[natbib=true,style=authoryear,backend=bibtex,useprefix=true]{biblatex}

\addbibresource{biblatex-examples.bib}


\begin{document}
\begin{frame}
Lorem \autocite{sigfridsson}
\end{frame}
\begin{frame}[t,allowframebreaks]
\frametitle{References}
\printbibliography
\end{frame}
\end{document}

但请注意,强烈建议使用 Biber 而不是 BibTeX biblatex。这应该和更改backend=bibtex,backend=biber,并运行 Biber 而不是 BibTeX 一样简单(或者告诉你的编辑器这样做:Biblatex 与 Biber:配置我的编辑器以避免未定义的引用)。


BibTeX

如果您想使用 BibTeX,请删除所有提及biblatex及其\addbibresource\printbibliography命令的内容。改用\bibliographstyle\bibliography

基于 BibTeX 的文档如下所示

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}

\usetheme{Madrid}
\useoutertheme{shadow}
\useinnertheme{rounded}
\setbeamertemplate{navigation symbols}{}
\setbeamerfont{structure}{family=\rmfamily,series=\bfseries}
\usefonttheme[onlymath]{serif}

\bibliographystyle{plain}


\begin{document}
\begin{frame}
Lorem \cite{incollection-full}
\end{frame}
\begin{frame}[t,allowframebreaks]
\frametitle{References}
\bibliography{xampl}
\end{frame}
\end{document}

请注意,您永远不应加载两次包(在问题中,hyperrefbiblatex被加载两次)。在这种情况下,根本不需要加载hyperref,因为biblatex已经处理好了。

相关内容