我想在环境\alert<x>{...}
中使用 Beamer 的命令Verbatim
(来自fancyvrb
包)来突出显示文本。我发现当命令\alert
在 内时Verbatim
,它只会突出显示文本,而不会进行任何叠加。
\alert
我可以在环境内部使用覆盖功能Verbatim
吗?
注意:我不想使用semiverbatim
环境,因为我想在文本周围放置一个框架。下面复制了一个最小的工作示例。它没有达到我想要的效果。
\documentclass{beamer}
\usepackage{fancyvrb}
\begin{document}
\begin{frame}[fragile]{Testing}
\begin{Verbatim}[commandchars=\\\{\},fontsize=\scriptsize,frame=single]
1.423930+0 8.164981+5 1.257190+02834 3 2 545
1.900300-1 \alert<2>{8.184120+5 3.506000-7}2834 3 2 546
2.307450-2 8.192910+5 2.396970-12834 3 2 547
\end{Verbatim}
\end{frame}
\end{document}
答案1
以下可能是一个可行的解决方法:
\documentclass{beamer}% http://ctan.org/pkg/beamer
\let\Tiny\tiny% http://tex.stackexchange.com/q/58087/5764
\usepackage{fancyvrb}% http://ctan.org/pkg/fancyvrb
\let\oldalert\alert
\renewcommand{\alert}[2][]{%
\if\relax\detokenize{#1}\relax% http://tex.stackexchange.com/q/53068/5764
\oldalert{#2}% Default overlay
\else
\oldalert<#1>{#2}% Specific overlay
\fi}
\begin{document}
\begin{frame}[fragile]{Testing}
Slide \alt<1>{1}{2}\ldots
\begin{Verbatim}[commandchars=\\\{\},fontsize=\scriptsize,frame=single]
1.423930+0 8.164981+5 1.257190+02834 3 2 545
1.900300-1 \alert[2]{8.184120+5 3.506000-7}2834 3 2 546
2.307450-2 8.192910+5 2.396970-12834 3 2 547
\end{Verbatim}
\end{frame}
\end{document}
首先将宏\alert
存储在 中,\oldalert
以保留覆盖规范接口(需要使用<
. >
)。然后重新定义它以更传统的方式捕获可选(覆盖)和强制(要提醒的内容)参数。也就是说,接口\alert<.>{..}
会更新以反映\alert[.]{..}
哪个fancyvrb
似乎应对得更好。
更简单的定义可能是仅使用
\let\oldalert\alert
\renewcommand{\alert}[2]{\oldalert<#1>{#2}}
假设你会总是指定一个覆盖并将接口更新为\alert{.}{..}
。