投影机手册上说:
您可以轻松添加自己的动作:动作规范如下⟨行动⟩@⟨幻灯片编号⟩ 只是插入一个名为 ⟨ 的环境行动⟩
env
围绕\item
或 的\action
参数<
⟨幻灯片编号⟩>
作为覆盖规范。因此,通过定义一个名为 ⟨ 的新覆盖规范感知环境我的动作名称⟩env
,你可以添加自己的动作:\newenvironment{checkenv}{\only{\setbeamertemplate{itemize item}{X}}}{}
然后你可以写
\item<beamer:check@2> Text.
这会将模式中的幻灯片 2 上的
Text.
条目化符号更改为。 的定义利用了还接受其参数后给出的覆盖规范这一事实。X
beamer
checkenv
\only
我想要一个类似\alert
这样的操作,它将输入颜色改为灰色。所以我尝试了:
\documentclass{beamer}
\newenvironment<>{grayenv}{%
\color#1{gray}}{}
\begin{document}
\begin{frame}
Text is \begin{grayenv}<2-> grayed out\end{grayenv}.
\end{frame}
\begin{frame}
Who's \action<alert@+| gray@+(1)>{gray} now? \action<+(1)->{And now?}
\end{frame}
\begin{frame}
Who's \action<alert@+| grayenv@+(1)>{gray} now? \action<+(1)->{And now?}
\end{frame}
\end{document}
第一帧具有预期的输出:“grayed out”在幻灯片 2 上呈灰色显示。第二帧具有“Who's ¡all:¿灰色的现在?”(粗体为红色),接下来的两张幻灯片上没有颜色。第三帧在第二张幻灯片上显示“现在是灰色吗?”(不是所需的“灰色”)。
我见过的自定义操作的唯一工作示例是按以下方式编写checkenv
的:不是作为覆盖感知环境,而是以结束其开始代码的常规环境\only{...}
(另请参阅此更长的例子)。
有没有办法将覆盖规范传递给自定义环境?
答案1
\action
在我看来,Till 感到困惑:如果将其参数包装在 actionenv 中,而不是将其作为参数传递给 actioncommand,那么你的第三个示例根本不起作用。
使用
\newcommand<>\gray[1]{%
\textcolor#2{gray}{#1}%
}
似乎可以工作。(仅供参考:您观察到的 ?all:2! 是 < all:2 > 规范,由于没有命令 \gray 来解析它,因此未被采用。(如果您不使用 T1 字体编码,则反转的 ? 和 ! 恰好位于 > 和 < 的空格中。更离题的是,如果您曾在科学论文中看到 ?From 并忍不住大笑,那么您对 TeX 和 RFC822 的了解足以让您成为无可救药的极客。)