Можно ли изменить \includeonlyframes, чтобы использовать подстановочный знак?

Можно ли изменить \includeonlyframes, чтобы использовать подстановочный знак?

При работе с большим документом-проектором удобно использовать его \includeonlyframes{foo, bar, baz}для фокусировки на нескольких определенных слайдах за раз. Однако его также нужно каждый раз менять, чтобы включить нужные метки слайдов.

Вместо этого, можно ли использовать подстановочный знак для выбора слайдов? Например, я ставлю метки для всех моих слайдов с префиксом "SectionName", который является разделом, в котором находится слайд. Таким образом, типичный кадр будет выглядеть так:

\section{Introduction}
\begin{frame}[label=IntroSlide1]
...
\end{frame}

Я хотел бы иметь возможность выбирать все фреймы в разделе введения, делая что-то вроде \includeonlyframes{Intro*}(синтаксис можно изменить для удобства программирования, при условии, что функциональность будет возможна). Возможно ли это, и если да, то как мне это реализовать?

решение1

Я немного изменил синтаксис, чтобы сделать его проще, -*обозначил подстановочный знак и отдельные метки, которые должны иметь -в своем имени соответствующие подстановочному знаку.

\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}

создает слайды AAA BBB и DDD — первые два из Intro-*подстановочных знаков.

Связанный контент