如何添加改变参数的自定义投影仪操作?

如何添加改变参数的自定义投影仪操作?

投影机手册上说:

您可以轻松添加自己的动作:动作规范如下⟨行动⟩@⟨幻灯片编号⟩ 只是插入一个名为 ⟨ 的环境行动env围绕\item或 的\action参数<幻灯片编号>作为覆盖规范。因此,通过定义一个名为 ⟨ 的新覆盖规范感知环境我的动作名称env,你可以添加自己的动作:

\newenvironment{checkenv}{\only{\setbeamertemplate{itemize item}{X}}}{} 

然后你可以写

\item<beamer:check@2> Text.

这会将模式中的幻灯片 2 上的Text.条目化符号更改为。 的定义利用了还接受其参数后给出的覆盖规范这一事实。Xbeamercheckenv\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 的了解足以让您成为无可救药的极客。)

相关内容