介绍
- 我想在 中使用
biblatex
(biber
)beamer
。 - 我也想用一下这个风格
authoryear
。 - 为了
<Author YYYY>
在参考书目中使用引用标签(例如)而不是符号,我使用\setbeamertemplate{bibliography item}{\insertbiblabel}
,请参阅这里例如。 - 遗憾的是,这会导致错误
! Undefined control sequence.\beamer@@tmpl@bibliography item ->\insertbiblabel
。
问题
- 您能重现这个问题吗?
- 你有解决方案吗?
\documentclass{beamer}
\usepackage[
style = authoryear % (un)comment for testing
]{biblatex}%
\addbibresource{biblatex-examples.bib}
\setbeamertemplate{bibliography item}{\insertbiblabel} % (un)comment for testing
\begin{document}
\section{Section}
\begin{frame}
\cite{doody}
\end{frame}
\begin{frame}[allowframebreaks]
\frametitle{References}
\printbibliography
\end{frame}
\end{document}
我的系统是最新的 TeXLive 2020:This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020/W32TeX) (preloaded format=pdflatex 2021.3.2) 2 MAR 2021 23:22
答案1
注意
\setbeamertemplate{bibliography item}{\insertbiblabel}
和
\setbeamertemplate{bibliography item}[text]
是等效的(假设标准定义),所以这个答案同样适用于这两个定义。
使用 时biblatex
,\insertbiblabel
仅适用于具有带标签的参考书目列表的样式(numeric
和alphabetic
样式;要了解“带标签的”参考书目列表的含义,请比较 和 的输出style=alphabetic,
)style=authoryear,
。\documentclass{article}
样式authoryear
没有带标签的参考书目列表,并且不会重复参考书目中的引用标签。
因此authoryear
根本没有标签可以\insertbiblabel
插入。
我只会用
\documentclass{beamer}
\usepackage[style=authoryear]{biblatex}
\addbibresource{biblatex-examples.bib}
\setbeamertemplate{bibliography item}{}
\begin{document}
\begin{frame}
\cite{doody,sigfridsson}
\end{frame}
\begin{frame}[allowframebreaks]
\frametitle{References}
\printbibliography
\end{frame}
\end{document}
它提供的输出与 基本相同\documentclass{article}
。
如果要在参考书目中重复引用标签,以便于查找条目,可以使用biblatex-ext
如下方法
\documentclass{beamer}
\usepackage[backend=biber,
bibstyle=ext-authoryear,
citestyle=ext-authoryear,
sorting=nyt,
introcite=label,
]{biblatex}
\addbibresource{biblatex-examples.bib}
\setbeamertemplate{bibliography item}{\insertbiblabel}
% avoid error about \insertbiblabel being undefined
\preto{\bibsetup}{\providecommand*{\insertbiblabel}{}}
\begin{document}
\begin{frame}
\cite{doody,sigfridsson}
\end{frame}
\begin{frame}[allowframebreaks]
\frametitle{References}
\printbibliography
\end{frame}
\end{document}