Beim Arbeiten mit einem großen Beamer-Dokument ist es praktisch, \includeonlyframes{foo, bar, baz}
sich auf einige bestimmte Folien gleichzeitig zu konzentrieren. Allerdings muss man es auch jedes Mal ändern, um die Beschriftungen der gewünschten Folien einzufügen.
Ist es stattdessen möglich, ein Platzhalterzeichen zu verwenden, um die Folien auszuwählen? Ich stelle beispielsweise den Beschriftungen aller meiner Folien das Präfix voran "SectionName"
, das den Abschnitt angibt, in dem sich die Folie befindet. Ein typischer Rahmen würde also folgendermaßen aussehen:
\section{Introduction}
\begin{frame}[label=IntroSlide1]
...
\end{frame}
Ich möchte alle Frames im Einführungsabschnitt auswählen können, indem ich etwas wie Folgendes mache \includeonlyframes{Intro*}
(die Syntax kann geändert werden, um die Programmierung zu vereinfachen, solange die Funktionalität möglich ist). Ist dies möglich und wenn ja, wie muss ich bei der Implementierung vorgehen?
Antwort1
Ich habe die Syntax ein wenig geändert, um sie einfacher zu machen. -*
Sie kennzeichnet das Platzhalterzeichen und die einzelnen Beschriftungen, die mit dem Platzhalter übereinstimmen, müssen es -
in ihrem Namen haben.
\documentclass{beamer}
\includeonlyframes{Intro-*,Sss-Slide2}
\makeatletter
\def\beamer@checkifinlist#1,#2\relax{%
\def\beamer@temp{#1}%
\let\b@name\beamer@againname
\b@star@test#1\relax-*!\relax\count@
\ifx\beamer@temp\b@name
\else
\def \beamer@temp {#2}%
\ifx\beamer@temp\@empty
\gdef\beamer@whichframes{all:0}%
\else
\beamer@checkifinlist#2\relax
\fi
\fi }
\def\b@star@test#1-*#2\relax#3\count@{%
\ifx\\#2\\%
\def\beamer@temp{#1}%
\expandafter\b@dash@test\beamer@againname-\valign\relax
\fi}
\def\b@dash@test#1-#2#3\relax{%
\ifx\valign#2%
\else
\def\b@name{#1}%
\fi}
\makeatother
\begin{document}
\begin{frame}[label=Intro-Slide1]
AAA
\end{frame}
\begin{frame}[label=Intro-Slide2]
BBB
\end{frame}
\begin{frame}[label=Sss-Slide1]
CCC
\end{frame}
\begin{frame}[label=Sss-Slide2]
DDD
\end{frame}
\end{document}
Erzeugt die Folien AAA BBB und DDD, die ersten beiden aus dem Intro-*
Platzhalter.