我如何让 gb4e.sty 的命令覆盖为 beamer 所熟知?

我如何让 gb4e.sty 的命令覆盖为 beamer 所熟知?

我用gb4e包来设置编号示例。我想把它们放在用 beamer 制作的幻灯片上。根据 beamer 用户指南,我可以在序言中使用它来使任何命令覆盖规范感知:

\renewcommand<>{⟨existing command name⟩}[⟨argument number⟩][⟨default optional value⟩]{⟨text⟩}

我尝试使用 \ex 命令执行此操作gb4e。我尝试了以下操作:

\newcommand<>{\ex}[][]{\@ifnextchar [{\@ex}{\item}}

我认为这是正确的,因为 gb4e 对 \ex 的定义如下:

\def\ex{\@ifnextchar [{\@ex}{\item}}

在我的序言中,我的文档无法编译。我是否误解了它的工作原理?

答案1

不幸的是,gb4e的示例命令比这更复杂,并且使用 来定义分隔参数\def。我不确定它们是否可以如此轻松地实现覆盖感知。逐行发现示例项目的最简单方法就是使用命令\pause

\documentclass{beamer}
\usepackage{gb4e}
\resetcounteronoverlays{exx}


\begin{document}
\begin{frame}{A frame}
  \begin{exe}
  \ex\label{Ex1}
  \begin{xlist}
     \ex[]{ This is an example}
     \pause
     \ex[*]{This example ungrammatical is.}
     \pause
     \ex[]{Another one.}
  \end{xlist}
  \end{exe}
\end{frame}
\end{document}

答案2

\@ifnextchar只是定义一个带有可选参数的命令。尝试

\makeatletter
\renewcommand<>{\ex}{\@ifnextchar[{\@ex}{\item}}
\makeatother

您可以添加一个最简单的例子来说明您正在尝试做什么吗?

相关内容