在每个框架末尾显示一次“脚注”模板

在每个框架末尾显示一次“脚注”模板

我正在制作beamer并设置一个自定义footnote模板。在这个模板中,我调用了一个包含脚注的宏。

问题是,每次使用宏时都会beamer打印 -template 的内容。因此,如果未使用,则不会打印模板。footnote\footnote\footnote

如何才能打印一次模板(并且仅一次)结尾(所以在任何之后\AddToFoot)每一帧?利用两次运行的解决方案footline不是一个选择(从技术上讲它是一个选择,但是那有什么乐趣呢)。

如果有一个选项不移动幻灯片的任何内容,那就太好了(与我的不同\invisfootnote)。

在每个帧的末尾进行评估/使用的另一个模板也可以,所以它不必如此footnote

梅威瑟:

\documentclass[]{beamer}

\setbeamertemplate{footnote}{%
    \hfill\smash{\llap{\parbox[b]{5cm}{\footnotesize\myfootnotes}}}%
}
\newcommand*{\myfootnotes}{}
\newcommand*{\AddToFoot}[1]{\edef\myfootnotes{\myfootnotes#1\\}}
\newcommand*{\invisfootnote}{\smash{\llap{\phantom{\footnote{foo}}}}}% still takes up space
\let\footnoterule\relax

\makeatletter
%\def\@end@frame@hook{\invisfootnote}% doesn't work
%\edef\endframe{\noexpand\invisfootnote\unexpanded\expandafter{\endframe}}% doesn't work
\makeatother

\begin{document}
\begin{frame}
    \frametitle{with \texttt{\string\footnote}}
    \begin{itemize}
        \item Foo
        \item Bar
        \item Baz
    \end{itemize}
    \AddToFoot{foo}
    \AddToFoot{bar}
    \invisfootnote
\end{frame}
\begin{frame}
    \frametitle{without \texttt{\string\footnote}}
    \begin{itemize}
        \item Foo
        \item Bar
        \item Baz
    \end{itemize}
    \AddToFoot{foo}
    \AddToFoot{bar}
\end{frame}
\end{document}

编辑:定义一个调用环境的新环境,frame类似的东西\invisfootnote会起作用,但绝对不是理想的解决方案。

编辑2:我实际上想要实现的是重建以下模板(该图像是使用我已有的代码以及脚注问题的两遍解决方案创建的):

在此处输入图片描述

答案1

根据对问题的澄清https://chat.stackexchange.com/transcript/message/39697331#39697331

脚注机制运行良好,所以我建议不要动它。相反,将脚注的内容放在具有适当对齐方式的迷你页面中,脚注将以恒定高度顶部对齐。

(有了一些xpatchfoo,代码可能会简化很多……)

\documentclass{beamer}

\makeatletter
\def\beamer@autobreakframebox{%
  \global\setbox\beamer@splitbox=\box\voidb@x%
  \ifbeamer@autobreak%
    % Ok, frame was overful -> split it!
    \setbox\@tempboxa=\vsplit\beamer@framebox to\beamer@autobreakfactor\textheight%
    \global\setbox\beamer@splitbox=\box\beamer@framebox%
    \@tempdima=\ht\beamer@splitbox%
    \ifdim\@tempdima<\beamer@autobreaklastheight%
      \global\beamer@autobreaklastheight=\@tempdima\relax%
    \else%
      \setbox\@tempboxa=\vbox{\unvbox\@tempboxa\unvbox\beamer@splitbox}%
      \global\setbox\beamer@splitbox=\box\voidb@x%
    \fi%
    \setbox\beamer@framebox=\vbox to\textheight{\unvbox\@tempboxa%
      \vskip\beamer@framebottomskipautobreak%
      \ifvoid\beamer@splitbox%
        \ifvoid\beamer@footins%
        \else%
          \begingroup
        \rule{\textwidth}{1pt}
            \begin{minipage}[b][0.5cm][t]{.45\textwidth}% 
                \usebeamerfont{title in head/foot}
                \insertshortauthor
                \insertshorttitle\newline
                \insertshortinstitute
            \end{minipage}% <----------------------
            \begin{minipage}[b][0.5cm][t]{.45\textwidth}% <----------------------
              \usebeamercolor*[fg]{footnote}%
%              \footnoterule%
                            \usebeamerfont{footnote}
              \unvbox \beamer@footins%
              \global\setbox\beamer@footins=\box\voidb@x%
            \end{minipage}% <----------------------

             \begin{minipage}[c]{\textwidth}% 
                \centering \insertframenumber
            \end{minipage}
          \endgroup  
        \fi%
      \fi%
      \beamer@exitcode%
    }%
  \else%
    \setbox\beamer@framebox=\vbox to\textheight{\unvbox\beamer@framebox%
      \vskip\beamer@framebottomskip%
      \ifvoid\beamer@footins%
      \else%
        \begingroup
        \rule{\textwidth}{1pt}
            \begin{minipage}[b][0.5cm][t]{.45\textwidth}% 
                \usebeamerfont{title in head/foot}
                \insertshortauthor
                \insertshorttitle\newline
                \insertshortinstitute
            \end{minipage}% <----------------------
            \begin{minipage}[b][0.5cm][t]{.45\textwidth}% <----------------------
              \usebeamercolor*[fg]{footnote}%
%              \footnoterule%
                            \usebeamerfont{footnote}
              \unvbox \beamer@footins%
              \global\setbox\beamer@footins=\box\voidb@x%
            \end{minipage}% <----------------------

             \begin{minipage}[c]{\textwidth}% 
                \centering \insertframenumber
            \end{minipage}
        \endgroup 
      \fi%
      \beamer@exitcode}%
    \global\setbox\beamer@footins=\box\voidb@x%
  \fi%
  }
\makeatother

\setbeamerfont{footnote}{size=\tiny}
\setbeamerfont{title in head/foot}{size=\tiny}

\title{title}
\author{author}
\institute{ins}

\begin{document}

\begin{frame}
    \footnote{Must not complain about beamer customisation}
    \footnote{Must not complain about too many duck images}
\end{frame} 

\begin{frame}
    \footnote{Must try the new \texttt{tikzducks} package}
\end{frame} 

\end{document}

在此处输入图片描述

相关内容