5

For a presentation with Beamer, I would like to have a slide where a long list of formulas (maybe mixed with text) scrolls automatically within a certain part of the slide. This should look like e.g. closing credits in movies.

I have tried the idea from here based on animateinline from the animate package, but whenever I use environments like \begin{equation} ... \end{equation} or commands like \textcolor{red}{...} I get an error:

TeX capacity exceeded, sorry [main memory size=3000000]. \end{frame}

Ideally, the formulas/the text should be given within the document itself, but if a solution with an external PDF works fine, I'll take it!

Any ideas how that might work?

8

Synposis:

%put a longer paragraph of text in a box
\newsavebox\lipsumbox
\begin{lrbox}{\lipsumbox}%
  \begin{minipage}{\textwidth}%
    \strut
    \lipsum
    \strut
  \end{minipage}
\end{lrbox}

%scroll the box content within a viewport of limited height
\smoothscroll[autoplay]{\lipsumbox}{0.93\textheight}{400}{25}

enter image description here

Usage:

\smoothscroll[autoplay]
  {<box number>}       %filled box
  {<viewport height>}
  {<steps>}            %increase to enhance smoothness
  {<steps per sec>}    %adjust scrolling speed (not more than 25)

Complete example:

\documentclass[a5paper]{scrartcl}
\usepackage{lipsum}
\usepackage{animate}

\makeatletter
\newcommand\smoothscroll[5][]{%
  % [#1] autoplay
  % #2 <boxnum>
  % #3 <viewport height>
  % #4 <steps>
  % #5 <steps per sec>
  \edef\mywd{\the\wd#2}%
  \edef\myht{\the\ht#2}%
  \edef\mytht{\the\dimexpr\ht#2+\dp#2\relax}%
  \@anim@reset%
  \@anim@xform{}{}{#2}% distill box into re-usable PDF XObject
  \edef\myxform{\@anim@lastxform}%
  \edef\portht{\the\dimexpr#3\relax}%
  \begin{animateinline}[#1,width=\mywd,height=\portht,loop]{#5}
    \multiframe{#4}{dRaiseLen=-\myht+\dimexpr(\mytht+\portht)/#4\relax}{%
      \begin{minipage}[b][#3][b]{\mywd}%
        \raisebox{\dRaiseLen}[0pt][0pt]{\@anim@refxform\myxform}%
      \end{minipage}%
    }%
  \end{animateinline}%
}
\makeatother

\begin{document}\huge
\newsavebox\lipsumbox
\begin{lrbox}{\lipsumbox}%
  \begin{minipage}{\textwidth}
    \strut Lipsum:\\

    \lipsum[1]
    \begin{equation}
      E=mc^2
    \end{equation}
    \centerline{* * *}\strut
  \end{minipage}
\end{lrbox}

\noindent Read this if you can:\\[1ex]
\smoothscroll[autoplay]{\lipsumbox}{0.93\textheight}{400}{25}
\end{document}
  • 3
    That's exactly what I was looking for. Thanks for figuring this out for me! Great job. – Robert Speck Nov 7 '14 at 19:53

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.