我可以使用 Beamer 的 \alert{...} 在 fancyvrb 内部逐字覆盖?

我可以使用 Beamer 的 \alert{...} 在 fancyvrb 内部逐字覆盖?

我想在环境\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{.}{..}

相关内容