使用 LaTeX Beamer、Biber 和 AtBeginSection 时遇到以下问题。
错误信息:
Error line 30 - ! Extra }, or forgotten \endgroup.<recently read> } \end{frame}
Error line 30 - ! Extra }, or forgotten \endgroup.\endframe ->\egroup\begingroup \def \@currenvir {frame} \end{frame}
Warning line 30 - Font shape `OT1/cmss/m/sc' in size <10.95> not available(Font) Font shape `OT1/cmr/m/sc' tried instead
输入
\documentclass{beamer}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage[backend=biber]{biblatex}
\addbibresource{../testing/mybib.bib}
\title{Hello}
\date{2022-01-01}
\author{Euclid of Alexandria}
\AtBeginSection{%
\begin{frame}
\sectionpage
\end{frame}
}
\begin{document}
\section{And here we go}
\begin{frame}
Hallo. Hier der Verweis: \cite{khan2020}
\end{frame}
\begin{frame}
\printbibliography
\end{frame}
\end{document}
我的书目目录
@article{khan2020,
type = {Article},
title = {A {{Blockchain-Based Secure Image Encryption Scheme}} for the {{Industrial Internet}} of {{Things}}},
author = {Khan, Prince Waqas and Byun, Yungcheol},
year = {2020},
month = feb,
journal = {ENTROPY},
volume = {22},
number = {2},
publisher = {{MDPI}},
address = {{ST ALBAN-ANLAGE 66, CH-4052 BASEL, SWITZERLAND}},
doi = {10.3390/e22020175},
abstract = {...}
}
我可以通过以下方式避免错误
--> 在 AtBeginSection 部分中注释掉 \begin{frame} 和 \end{frame} 命令,不幸的是,这会破坏我的布局,因为否则不会绘制任何框架。(我按照 Beamer 用户指南第 10.2 节中的说明使用此命令):
\AtBeginSection{%
%\begin{frame}
\sectionpage
%\end{frame}
}
--> 注释掉 \printbibliography 会导致缺少参考书目:
\begin{frame}
% \printbibliography
\end{frame}
我真的不明白那里发生了什么,所以非常感谢任何帮助。
边注 我在 MacOS 中为 Biber 配置了我的 TexMaker,如下文所述: Biblatex 与 Biber:配置我的编辑器以避免未定义的引用
答案1
问题是 biblatex 试图将参考书目作为新章节插入。由于这种情况发生在框架内,这会将章节页面框架嵌套在另一个框架内,这是不允许的。
您可以使用以下方法来避免此问题\printbibliography[heading=none]
:
\documentclass{beamer}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\title{Hello}
\date{2022-01-01}
\author{Euclid of Alexandria}
\AtBeginSection{%
\begin{frame}
\sectionpage
\end{frame}
}
\begin{document}
\section{And here we go}
\begin{frame}
Hallo. Hier der Verweis: \cite{knuth:ct}
\end{frame}
\begin{frame}
\printbibliography[heading=none]
\end{frame}
\end{document}
或者您可以重新定义 bib 标题。这样您将自动获得一个 frametitle:
\documentclass{beamer}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\defbibheading{bibliography}[\refname]{%
\frametitle{#1}%
}
\title{Hello}
\date{2022-01-01}
\author{Euclid of Alexandria}
\AtBeginSection{%
\begin{frame}
\sectionpage
\end{frame}
}
\begin{document}
\section{And here we go}
\begin{frame}
Hallo. Hier der Verweis: \cite{knuth:ct}
\end{frame}
\begin{frame}
\printbibliography
\end{frame}
\end{document}