可以修改 \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-*

相關內容