\includeonlyframes pode ser modificado para receber um curinga?

\includeonlyframes pode ser modificado para receber um curinga?

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.

informação relacionada