Latex 在beamer类中组合标签和allowframebreaks

Latex 在beamer类中组合标签和allowframebreaks,latex,tex,beamer,Latex,Tex,Beamer,对于我的latex beamer演示文稿,我使用了带有短、长和两者的标签系统,以便在短演示文稿和长演示文稿之间快速切换 为此,我使用代码 序言中的\includeonlyframes{both,short}(对于简短的演示,同样地\includeonlyframes{both,long}),并在每张幻灯片上贴上标签,如下所示: \begin{frame}[label=both] 这个系统在过去为我提供了相对较好的服务,但也产生了一些问题。我想解决的一个问题是,我的参考资料超过了一张幻灯片。我尝

对于我的latex beamer演示文稿,我使用了带有短、长和两者的标签系统,以便在短演示文稿和长演示文稿之间快速切换

为此,我使用代码 序言中的
\includeonlyframes{both,short}
(对于简短的演示,同样地
\includeonlyframes{both,long}
),并在每张幻灯片上贴上标签,如下所示:

\begin{frame}[label=both]
这个系统在过去为我提供了相对较好的服务,但也产生了一些问题。我想解决的一个问题是,我的参考资料超过了一张幻灯片。我尝试使用allowframebreaks来解决这个问题,下面是我参考幻灯片的代码:

\begin{frame}[allowframebreaks,label=both]    
\frametitle{References}

\tiny    
    \bibliographystyle{apalike}    
    \bibliography{references}

\end{frame}
现在的情况是,第一张参考幻灯片按预期的方式显示,但其余的幻灯片不是pdf的一部分。我想现在的情况是,标签仅应用于第一张幻灯片,因此由于序言中的
\includeonlyframes
命令,剩余的参考幻灯片已生成,但未包含在pdf中。有人知道我怎样才能避开这个问题吗

另外,这是我在这里的第一篇帖子,所以如果有什么不清楚/解释得不好等,请告诉我

编辑:这里有一个简单的工作示例。我通常使用natbib,但这与我在这里使用的示例参考书目不符。这个问题仍然存在,所以我认为纳比布与此无关

\documentclass{beamer} 
%\usepackage{natbib}
\includeonlyframes{both,short}

\begin{document}

\begin{frame}[label=both] 
\frametitle{Frametitle} 
Some content for both presentations 
\end{frame}

\begin{frame}[label=short] 
\frametitle{Frametitle}
Some content for a short presentation 
\end{frame}

\begin{frame}[label=long] 
\frametitle{Frametitle}
Some content for a long presentation 
\end{frame}

\begin{frame}[label=long] 
\frametitle{Frametitle}
Some more content for a long presentation 
\end{frame}

\begin{frame}[allowframebreaks,label=both] 
\frametitle{References}
 %\tiny 
\nocite{*}
\bibliographystyle{apalike}
%\bibliography{references} \bibliography{xampl}
\end{frame}

\end{document}

您可以使用与中类似的方法,并将其更新为使用当前实现的
\beamer@@@frame

\documentclass{beamer}
\makeatletter
\def\beamer@@@@frame<#1>[#2]{%
  \framewidth\textwidth
  \beamer@savemode%
  \gdef\beamer@mode{\mode<all>}%
  \def\beamer@frametemplate{}%
  \def\beamer@againname{}%
  \def\beamer@undolabels{}%
  \def\beamer@cramped{}%
  \def\beamer@displaybreak{}%
  \setbox\beamer@footins=\box\voidb@x%
  \beamer@autobreakcount=0\relax%
  \beamer@autobreaklastheight=16000pt%
  \beamer@zoomcount=0\relax%
  \beamer@noframenumberingfalse%
  \beamer@containsverbatimfalse%
  \beamer@isfragilefalse%
  \beamer@autobreakfalse%
  \beamer@shrinkfalse%
  \beamer@plainframefalse%
  \global\advance\beamer@zoomframecount by1\relax%
  \csname beamer@dosecondmode\beamer@defaultdosecondmode\endcsname%
  \ifbeamer@centered\setkeys{beamerframe}{c}\else\setkeys{beamerframe}{t}\fi%
  \setkeys{beamerframe}{environment=frame}%
  \setkeys{beamerframe}{#2}%
  \beamer@frametemplate%
  \ifbeamer@noframenumbering%
    \ifbeamer@isfragile%Fragile frames will be processed twice
      \stepcounter{framenumber}%
    \fi%
  \else%
    \stepcounter{framenumber}%do not set \label here - it interferes with AtBegin*
  \fi%
  {\let\@elt\beamer@savecounter\beamer@overlaycounterresets}
  \gdef\beamer@framestartpage{}%
  \gdef\beamer@whichframes{#1}%
  \ifx\beamer@framerestriction\@undefined\else% restriction stuff
    \expandafter\beamer@checkifinlist\beamer@framerestriction\relax%
  \fi%
  \ifbeamer@inlecture%
  \else%
    \gdef\beamer@whichframes{all:0}%
  \fi%
  \ifx\beamer@againname\@empty%
    \beamer@slideinframe=0\relax%
    \beamer@anotherslidefalse%
    \beamer@masterdecode{\beamer@whichframes}%
    \ifbeamer@anotherslide%
        \let\beamer@howtotreatframe\beamer@doseveralframes%
      \ifbeamer@containsverbatim%
        \let\beamer@howtotreatframe\beamer@dosingleframe%
      \fi%
      \ifbeamer@autobreak%
        \let\beamer@howtotreatframe\beamer@autobreakframe%
      \fi%
      \ifbeamer@isfragile%
        \let\beamer@howtotreatframe\beamer@doexternalframe%
      \fi%
    \else% no slides in frame
      \let\beamer@howtotreatframe\beamer@donoframe%
    \fi%
  \else% again mode
    \let\beamer@howtotreatframe\beamer@doseveralframes%
    \ifbeamer@isfragile%
      \let\beamer@howtotreatframe\beamer@doexternalframe%
    \fi%
    \ifbeamer@containsverbatim
      \let\beamer@howtotreatframe\beamer@dosingleframe
    \fi
    \beamer@slideinframe=0\relax%
    \beamer@anotherslidefalse%
    {\beamer@masterdecode{\beamer@whichframes}}%
    \message{^^J^^J \beamer@againname:\beamer@whichframes ^^J^^J}
    \ifbeamer@anotherslide%
      \message{^^J^^J \beamer@againname:I am Here ^^J^^J}
      \ifbeamer@autobreak%
        \let\beamer@howtotreatframe\beamer@autobreakframe%
      \fi%
    \fi    
  \fi%
  \beamer@howtotreatframe}
\makeatother

\includeonlyframes{both,long}


\begin{document}

\begin{frame}[allowframebreaks,label=both]   
\nocite{*} 
\frametitle{References}

%\tiny    
    \bibliographystyle{apalike}    
    \bibliography{\jobname}

\end{frame}

\begin{frame}[label=long]
content...
\end{frame}

\end{document}
\documentclass{beamer}
\马克特莱特
\def\beamer@@@frame[#2]{%
\framewidth\textwidth
\beamer@savemode%

\gdef\beamer@mode{\mode

您可以使用与中类似的方法,并将其更新为使用当前的
\beamer@@@frame实现:

\documentclass{beamer}
\makeatletter
\def\beamer@@@@frame<#1>[#2]{%
  \framewidth\textwidth
  \beamer@savemode%
  \gdef\beamer@mode{\mode<all>}%
  \def\beamer@frametemplate{}%
  \def\beamer@againname{}%
  \def\beamer@undolabels{}%
  \def\beamer@cramped{}%
  \def\beamer@displaybreak{}%
  \setbox\beamer@footins=\box\voidb@x%
  \beamer@autobreakcount=0\relax%
  \beamer@autobreaklastheight=16000pt%
  \beamer@zoomcount=0\relax%
  \beamer@noframenumberingfalse%
  \beamer@containsverbatimfalse%
  \beamer@isfragilefalse%
  \beamer@autobreakfalse%
  \beamer@shrinkfalse%
  \beamer@plainframefalse%
  \global\advance\beamer@zoomframecount by1\relax%
  \csname beamer@dosecondmode\beamer@defaultdosecondmode\endcsname%
  \ifbeamer@centered\setkeys{beamerframe}{c}\else\setkeys{beamerframe}{t}\fi%
  \setkeys{beamerframe}{environment=frame}%
  \setkeys{beamerframe}{#2}%
  \beamer@frametemplate%
  \ifbeamer@noframenumbering%
    \ifbeamer@isfragile%Fragile frames will be processed twice
      \stepcounter{framenumber}%
    \fi%
  \else%
    \stepcounter{framenumber}%do not set \label here - it interferes with AtBegin*
  \fi%
  {\let\@elt\beamer@savecounter\beamer@overlaycounterresets}
  \gdef\beamer@framestartpage{}%
  \gdef\beamer@whichframes{#1}%
  \ifx\beamer@framerestriction\@undefined\else% restriction stuff
    \expandafter\beamer@checkifinlist\beamer@framerestriction\relax%
  \fi%
  \ifbeamer@inlecture%
  \else%
    \gdef\beamer@whichframes{all:0}%
  \fi%
  \ifx\beamer@againname\@empty%
    \beamer@slideinframe=0\relax%
    \beamer@anotherslidefalse%
    \beamer@masterdecode{\beamer@whichframes}%
    \ifbeamer@anotherslide%
        \let\beamer@howtotreatframe\beamer@doseveralframes%
      \ifbeamer@containsverbatim%
        \let\beamer@howtotreatframe\beamer@dosingleframe%
      \fi%
      \ifbeamer@autobreak%
        \let\beamer@howtotreatframe\beamer@autobreakframe%
      \fi%
      \ifbeamer@isfragile%
        \let\beamer@howtotreatframe\beamer@doexternalframe%
      \fi%
    \else% no slides in frame
      \let\beamer@howtotreatframe\beamer@donoframe%
    \fi%
  \else% again mode
    \let\beamer@howtotreatframe\beamer@doseveralframes%
    \ifbeamer@isfragile%
      \let\beamer@howtotreatframe\beamer@doexternalframe%
    \fi%
    \ifbeamer@containsverbatim
      \let\beamer@howtotreatframe\beamer@dosingleframe
    \fi
    \beamer@slideinframe=0\relax%
    \beamer@anotherslidefalse%
    {\beamer@masterdecode{\beamer@whichframes}}%
    \message{^^J^^J \beamer@againname:\beamer@whichframes ^^J^^J}
    \ifbeamer@anotherslide%
      \message{^^J^^J \beamer@againname:I am Here ^^J^^J}
      \ifbeamer@autobreak%
        \let\beamer@howtotreatframe\beamer@autobreakframe%
      \fi%
    \fi    
  \fi%
  \beamer@howtotreatframe}
\makeatother

\includeonlyframes{both,long}


\begin{document}

\begin{frame}[allowframebreaks,label=both]   
\nocite{*} 
\frametitle{References}

%\tiny    
    \bibliographystyle{apalike}    
    \bibliography{\jobname}

\end{frame}

\begin{frame}[label=long]
content...
\end{frame}

\end{document}
\documentclass{beamer}
\马克特莱特
\def\beamer@@@frame[#2]{%
\framewidth\textwidth
\beamer@savemode%

\gdef\beamer@mode{\mode

能否请您制作一个可编译的最小工作示例而不是代码片段?能否请您制作一个可编译的最小工作示例而不是代码片段?这看起来与我当前使用的方法相差甚远,因此如果有一个涉及较少更改的修复方法,那就太好了。@LukasAltermatt您能指定您的意思吗“看起来与我目前使用的东西相差甚远”?是代码太多还是输出不是你所期望的?@LukasAltermatt嗯,你想改变beamer的一些基本机制,添加一些被beamer维护者拒绝的东西()你应该接受这需要一点代码。顺便说一句,allowframebrakes不是命令,而是键OK,我不得不为今天早上没有更仔细地查看你的评论而道歉。我原以为你建议使用的是另一个包,但我现在明白了代码的作用。我不得不说,添加f需要很多代码或者一些主要困扰我的风格(反正没人看过参考资料幻灯片),但它确实起到了作用,所以非常感谢!@LukasAltermatt无需道歉:)关于没有人看参考幻灯片的问题:就个人而言,我不会使用这样的幻灯片,而是使用
biblatex
包。它有非常有用的
\footcite
\footfullcite
命令,可以添加参考正如幻灯片上的脚注所提到的。这看起来与我当前使用的相去甚远,因此,如果有一个涉及较少更改的修复,那将是非常好的。@LukasAltermatt您能详细说明“看起来与我当前使用的相去甚远”的意思吗“?是代码太多还是输出不是您所期望的?@LukasAltermatt嗯,您想更改beamer的一些基本机制,添加一些被beamer维护人员拒绝的内容()你应该接受这需要一点代码。顺便说一句,allowframebrakes不是命令,而是键OK,我不得不为今天早上没有更仔细地查看你的评论而道歉。我原以为你建议使用的是另一个包,但我现在明白了代码的作用。我不得不说,添加f需要很多代码或者一些主要困扰我的风格(反正没人看过参考资料幻灯片),但它确实起到了作用,所以非常感谢!@LukasAltermatt无需道歉:)关于没有人看参考幻灯片的问题:就个人而言,我不会使用这样的幻灯片,而是使用
biblatex
包。它有非常有用的
\footcite
\footfullcite
命令,可以添加参考在幻灯片的脚注中提到了它们。