使用 Biber 时 Beamer 中出现“额外 } 或忘记 \endgroup”错误

使用 Biber 时 Beamer 中出现“额外 } 或忘记 \endgroup”错误

使用 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}

相关内容