\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-*.

관련 정보