%% 
%%  An UIT Edition example
%% 
%%  Example 04-18-2 on page 112.
%% 
%%  Copyright (C) 2012 Vo\ss 
%% 
%%  It may be distributed and/or modified under the conditions
%%  of the LaTeX Project Public License, either version 1.3
%%  of this license or (at your option) any later version.
%% 
%%  See http://www.latex-project.org/lppl.txt for details.
%% 

% Show page(s) 1,2,3,4,5,6

%% ==== 
\PassOptionsToClass{}{beamer}
\documentclass{exabeamer}
\usepackage{beramono}

%\StartShownPreambleCommands

%\StopShownPreambleCommands

\begin{document}
\begin{frame}[fragile]{Matrix operations}{Use of \texttt{semiverbatim}}
\setbeamercolor{alerted text}{fg=blue}
\setbeamerfont{alerted text}{series=\bfseries,family=\ttfamily}
\footnotesize\begin{semiverbatim}
\uncover<1->{\alert<0>{\alert<6>{sub \color{red}matrix_row2vector} \{}}
\uncover<2->{\alert<2>{ my $m = shift; my($rows,$cols) = ($m->[1],$m->[2]);}}
\uncover<2->{\alert<2>{ my $r = shift; # optional, which column from matrix}}
\uncover<2->{\alert<2>{ croak "Error: matrix doesn't have 3D rows" unless ($cols==3);}}
\uncover<3->{\alert<3>{ if ( defined $r ) \{}}
\uncover<3->{\alert<3>{  croak "Error:matrix doesn't have that row"unless($r<$rows);}}
\uncover<3->{\alert<3>{ \}}}
\uncover<4->{\alert<4>{ else \{}}
\uncover<4->{\alert<4>{  croak "Error: matrix is not a 3D row matrix"}}
\uncover<4->{\alert<4>{         unless ($rows==1);}}
\uncover<5->{\alert<5>{  $r = 0;}}
\uncover<4->{\alert<4>{ \}}}
\uncover<6->{\alert<6>{ return Math::VectorReal->%
             \alert<6>{\color{red}new(@\{$m->[0][$r]\})};}}
\uncover<1->{\alert<1>{\}}}
\end{semiverbatim}

\visible<6>{Note the use of \alert{\color{red}\texttt{shift}}.}
\end{frame}
\end{document}
