2

I'd like to highlight some text inside an alltt or verbatim or Verbatim (or whatever environment/package that would produce what I want) on some slides. So, I create a newcommand<> that does the job:

\newcommand<>{\highlight}[1]{{\alt#2{\colorbox#2{yellow}{#1}}{#1}}}

Indeed, if I use this \highlight<2>{bla bla} in a mere frame environment, it does work as I expect (though it adds a space before "bla bla" when highlighted... I don't understand why).

But if I use it inside an alltt or a Verbatim environment, it does not work.

I try to propose a minimal example:

\documentclass{beamer}
\usepackage{alltt,fancyvrb}
\newcommand<>{\highlight}[1]{{\alt#2{\colorbox#2{yellow}{#1}}{#1}}}
\begin{document}
\begin{frame}
some text

\highlight<2>{some text to highlight on slide 2 only}

some more text
\end{frame}

\begin{frame}[fragile]
\begin{alltt}
some \textit{text}
{\highlight<2>{some text to highlight on slide 2 only}}
some \textbf{more} text
\end{alltt}

\begin{Verbatim}[commandchars=\\\{\}]
some \textit{text}
\highlight<2>{some text to highlight on slide 2 only}
some \textbf{more} text
\end{Verbatim}
\end{frame}

\end{document}

The first frame does what I want. The second does not, by far!

I'm not sure I use the Verbatim environment correctly. I mention it to show what I tried. If highlighting with alltt was working, I would be happy.

I've seen some questions about \alert<x> in fancyvrb, but I'm not sure the answer applies to my situation (or I don't understand the answer).

| improve this question | | | | |
2

While alltt doesn't bother changing the category code of < and >, because it assumes that ligatures with these characters are intended for output, verbatim modes do and there is no interface in fancyvrb for changing them back. So you have to do it manually:

\documentclass{beamer}

\usepackage{alltt,fancyvrb}
\makeatletter % fix the ligature list and hope for the best
\def\verbatim@nolig@list{\do\`\do\,\do\'\do\-}
\makeatother

\newcommand<>{\highlight}[1]{{\alt#2{\colorbox#2{yellow}{#1}}{#1}}}

\begin{document}

\begin{frame}[fragile]
\begin{alltt}
some \textit{text}
{\highlight<2>{some text to highlight on slide 2 only}}
some \textbf{more} text
\end{alltt}

\begin{Verbatim}[commandchars=\\\{\}]
some \textit{text}
\highlight<2>{some text to highlight on slide 2 only}
some \textbf{more} text
\end{Verbatim}
\end{frame}

\end{document}

Be advised that << and >> in Verbatim will appear as « and » if you use the T1 output encoding.

enter image description here

| improve this answer | | | | |
1

Beamer's built-in semiverbatim environment serves the same purpose as alltt but preserves overlay specifications.

| improve this answer | | | | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.