使用命令切换投影机模式

使用命令切换投影机模式

我有一个由各种包装器调用的 Beamer 主文档,我想让所有\mode切换都依赖于此包装器序言中定义的命令。对于像\mode<presentation>这样的正常模式,它可以正常工作,但我发现将其包含在该系统中的唯一方法\mode*是破解内部命令。

有人有更好的办法来实现同样的目标吗?我的重新定义是否会带来危险(除了重新定义内部命令的一般危险之外)?

\documentclass[]{beamer}
\newcommand\secondmode{presentation}
\newcommand\mainmode{*}
\makeatletter
\def\beamer@@@mode<#1>{\if#1*
                          \expandafter\@firstoftwo
                        \else
                          \expandafter\@secondoftwo
                        \fi
                        {\beamer@modeoutsideframe}
                        {\beamer@closer\@ifnextchar\bgroup{\beamer@modeinline<#1>}{\beamer@switchmode<#1>}}}
\makeatother
\begin{document}
\mode
<\mainmode>
some text outside a frame in main mode
\begin{frame}
test in frame in main mode
\end{frame}


\mode
<\secondmode>

some text outside a frame in second mode

\begin{frame}
second mode in a frame
\end{frame}

\mode
<\mainmode>

some text outside a frame


\mode
<all>
\end{document}

答案1

我对 Beamer 了解不够多,无法判断是否应该使用完全不同的技术,但至少我认为你想改变

\if#1*


\if*#1%

否则,如果模式名称的前两个字母相同,它将扩展为 true 并排版剩余的字母,后跟*

在 MWE 中,它正在测试和,p因此rpresentation恰好采取了正确的分支,但与以下情况相比:

\newcommand\secondmode{ppesentation}

相关内容