Ao trabalhar com um documento grande do beamer, é conveniente usar \includeonlyframes{foo, bar, baz}
para focar em alguns slides específicos por vez. No entanto, também é necessário alterá-lo sempre para incluir os rótulos dos slides que desejam.
Em vez disso, é possível usar um curinga para selecionar os slides? Por exemplo, eu prefixo os rótulos de todos os meus slides com "SectionName"
, que é a seção em que o slide está. Portanto, um quadro típico seria assim:
\section{Introduction}
\begin{frame}[label=IntroSlide1]
...
\end{frame}
Eu gostaria de poder selecionar todos os quadros na seção de introdução fazendo algo como \includeonlyframes{Intro*}
(a sintaxe pode ser alterada para facilitar a programação, desde que a funcionalidade seja possível). Isso é possível e, em caso afirmativo, como devo implementá-lo?
Responder1
Modifiquei um pouco a sintaxe para facilitar, -*
denota o curinga e os rótulos individuais que correspondem ao curinga devem ter -
em seu nome.
\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}
produz slides AAA BBB e DDD os dois primeiros do Intro-*
curinga.