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