语法规则的覆盖

语法规则的覆盖

我想在grammar定义中使用 Beamer 覆盖:

\documentclass{beamer}

\usepackage{syntax}

\begin{document}
\begin{frame}[fragile]{}
  \begin{grammar}
  <term>
    ::=  <term1>
  \only<2>{
    \alt <term2>
  }
  \end{grammar}
\end{frame}
\end{document}

但这导致

<term> ::= <term1> <2>
    | <term2>

(请注意,似乎是由而不是 来<2>拾取的!)grammar\only

我也尝试过\visible<2>\uncover<2>(都导致错误! Argument of \beamer@fakeinvisible has an extra }.),和\begin{onlyenv}<2>(导致Runaway argument? {onlyenv> \end {grammar} ! File ended while scanning use of \end.)。

答案1

我认为我会放弃环境grammar。除了需要fragile和使用<>语法之外,它还重新定义了\alt。这实际上是 Beamer 中覆盖层的死亡。一切都使用,\alt因此重新定义为输出垂直条和一点空格这一事实是致命的。

Beamer 幻灯片中的环境grammar看起来也相当奇怪,因为它似乎没有在间距方面正确放置。但也许这只是我的看法。

这样的事情会起作用吗?

\documentclass{beamer}
\usepackage{syntax}
\begin{document}
\begin{frame}
  \begin{tabular}{lcl}
    \synt{term} & ::= & \synt{term1}\\
    \onslide<2->
    & \textbar & \synt{term2}\\
  \end{tabular}
\end{frame}
\end{document}

具有覆盖规范的语法

相关内容