我想在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}