Beamer 非法参数编号 \insertfootnotetext 带有 expl3 seq

Beamer 非法参数编号 \insertfootnotetext 带有 expl3 seq

我正在尝试构建自己的beamer主题,并为其个性化引用。使用包的 seq 模块expl3,我编写了一个函数,将框架的所有引用收集到一个序列中,我在每个框架的末尾使用该序列来打印所有引用。

问题是我想在tcolorbox脚注中打印所有引用,但是同时使用函数expl3 \seq_map_inline:Nn和脚注不起作用beamer,我收到错误

\insertfootnotetext”定义中的参数编号非法。

使用文章类时一切都运行正常。

以下是 MWE:

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tcolorbox}
\usepackage{xparse}
\usepackage{expl3}
\usepackage{biblatex}

% My citation
\newcommand{\mycite}[1]{ \cite{#1} ~ \citeauthor{#1} ~ \citetitle{#1} ~ (\citeyear{#1})}

% List of citations
\ExplSyntaxOn
\seq_new:N \l_frame_cite_list
\NewDocumentCommand{\myAddCitation}{m}{\seq_put_right:Nn \l_frame_cite_list {#1}}
\NewDocumentCommand{\generateCitationBox}{}{
    \seq_if_empty:NTF \l_frame_cite_list {} {
        \seq_remove_duplicates:N \l_frame_cite_list
        \footnote{
            \vspace{-1em}
            \begin{tcolorbox}
                \seq_map_inline:Nn \l_frame_cite_list {
                    \mycite{##1}\\
                }
                \vspace{-1em}
            \end{tcolorbox}
            \vspace{-1em}
        }
        \seq_clear:N \l_frame_cite_list
    }
}
\ExplSyntaxOff

\newenvironment{myframe}{\begin{frame}}{\generateCitationBox \end{frame}}

\begin{document}

    \begin{myframe}
        \myAddCitation{A}
        \myAddCitation{B}

        Hello World

    \end{myframe}
\end{document}

提前感谢您的回答,

西蒙。

答案1

这与如何beamer收集框架的文本作为宏的参数有关。您可以使用[fragile],但使用更简单\seq_map_function:NN,因此参数不会在代码中明确传递。

\begin{filecontents*}{\jobname.bib}
@article{A,
  author={A. Uthor},
  title={A title},
  journal={A Journal},
  year=2018,
}
@article{B,
  author={W. Riter},
  title={B title},
  journal={B Journal},
  year=2019,
}
\end{filecontents*}

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tcolorbox}
\usepackage{xparse}
\usepackage{expl3}
\usepackage{biblatex}

\addbibresource{\jobname.bib}

% My citation
\newcommand{\mycite}[1]{\cite{#1} \citeauthor{#1} \citetitle{#1} (\citeyear{#1})}

\ExplSyntaxOn
% List of citations
\seq_new:N \l_frame_cite_list_seq
\NewDocumentCommand{\myAddCitation}{m}
 {
  \seq_put_right:Nn \l_frame_cite_list_seq {#1}
 }
\NewDocumentCommand{\generateCitationBox}{}
 {
  \seq_if_empty:NF \l_frame_cite_list_seq
   {
    \seq_remove_duplicates:N \l_frame_cite_list_seq
    \footnote
     {
%      \vspace{-1em}
      \begin{tcolorbox}
      \seq_map_function:NN \l_frame_cite_list_seq \__frame_mycite:n
      \vspace{-1em}
      \end{tcolorbox}
%      \vspace{-1em}
     }
    \seq_clear:N \l_frame_cite_list
   }
 }
\cs_new_protected:Nn \__frame_mycite:n { \mycite{#1}\\ }

\ExplSyntaxOff

\newenvironment{myframe}{\begin{frame}}{\generateCitationBox \end{frame}}

\begin{document}

    \begin{myframe}
        \myAddCitation{A}
        \myAddCitation{B}

        Hello World

    \end{myframe}
\end{document}

在此处输入图片描述

相关内容