不是另一个 beamer 脚注引用小页面问题

不是另一个 beamer 脚注引用小页面问题

问题

我知道类似的问题以前已经被问过很多次了,但是我认为这个案例是独一无二的(很高兴被证明是错误的)。

我想简单地\cite{name}在我的 Beamer 演示文稿中写下,无论我是否在minipage,并在参考文献中出现一些关于参考文献的简短信息框架脚注,并在演示文稿末尾通过 提供完整引文\printbibliography。我不想修改具体案例的\footnotemark/footnotetext等。我还想打印脚注参考信息排队喜欢para来自的选项footmisc(以使用更少的空间)。最后,常规脚注不应受到影响。

问题

经过大量努力,我找到了一个可行的解决方案(如下),但我的问题是:如何改进我的解决方案?例如:

  • 我做过什么“坏事”吗?
  • 其他用例中是否存在任何问题?
  • 我们可以让它与 hyperref 一起工作吗?
  • 我们能否恰当地使用citecolor?
  • 我们是否在意所有的引用都放在最后?(我更喜欢这样)

谢谢

工作解决方案

\documentclass[20pt,aspectratio=169]{beamer}
\usepackage[backend=bibtex,style=authoryear]{biblatex}
\addbibresource{mwe}
% SOLUTION
\makeatletter
\def\empty{} % dummy
\newcounter{cite}% count citations per frame
% prepend reset stuff to begin frame
\let\xbeamer@frameslide\beamer@frameslide
\def \beamer@frameslide{%
  \let\ffn\empty\setcounter{cite}{0}%
  \xbeamer@frameslide}
% prepend footnote stuff to end frame
\let\xendbeamer@frameslide\endbeamer@frameslide
\def \endbeamer@frameslide{%
  % add a footnote (no number) if \ffn is not empty
  \ifx\ffn\empty\else{\def\thefootnote{}\footnotetext{\ffn}}\fi%
  \xendbeamer@frameslide}
% redefine \cite
\renewcommand{\cite}[1]{%
  % step & print the counter
  \stepcounter{cite}\textsuperscript{\alph{cite}}
  % add to \ffn: the cite counter (not footnote) and \textcite (black magic)
  \edef\fntext{\noexpand\g@addto@macro\noexpand\ffn{%
    \noexpand\textsuperscript{\alph{cite}}\textcite{#1}\enspace}}\fntext}
\makeatother
% EXAMPLE
\begin{document}
  \begin{frame}{Hello World}
    before minipage\footnote{First footnote}
    \begin{minipage}{\textwidth}\color{red}
      inside minipage: pen\cite{Hello} apple\cite{World}
    \end{minipage}
    after minipage\footnote{Second footnote}
    pineapple\cite{World}
  \end{frame}
  \begin{frame}{References}\printbibliography\end{frame}
\end{document}

mwe.bib 是:

@article{Hello,author={Hello},title={Hello},journal={Hello},year={1999}}
@article{World,author={World},title={World},journal={World},year={2020}}

结果

在此处输入图片描述

相关内容