This is a (quite ad-hoc) solution to include animations (even responsive/interactive ones) programmed in C (or Objective-C, OpenGL/GLSL etc.) into a LaTeX generated PDF.

The example below is an animated talk on the Birch and Swinnerton-Dyer conjecture that I gave 2009 in Berlin and 2018 in Freiburg. All animations included (so far) in the beamermath app have been designed specifically for this example. However, as said, it is easy to expand the app and include your own animations.

The example contains (the boldface numbers refer to the slides as displayed in the titlebar of the app):

  1. 3D-animation displaying the projection to different affine images of a (projective) elliptic curve [22-25]. The same also for a conic (as reference) [26-27].
  2. 3D-animation to illustrate why the C-points of an Weierstrass equation form (topologically) a complex torus [28-36].
  3. 2D-animations visualizing the addition of points on an elliptic curve [40-46].
  4. 3D-animation to see that C modulo a lattice is a torus [51-55].
  5. Display the lattice generated by 1 and a second complex number that can be interactively moved using the mouse or touch-pad [58-59].
  6. Deep zoom into a tesselated hyperbolic plane (upper half plane with usual fundamental domains for SL_2(Z)) [62].
  7. Display of L-series of elliptic curves. Interactively draw the image of a unit circle at the mouse-curser position [84-85].
  8. Display of a fundamental domain for Gamma_0(11) [90-91].

All 3D-images and animations can be interactively rotated, shifted and zoomed during runtime.



The following assigment of keys can (optionally) be used to move the 3D-camera position and direction:

1,2zoom in/out

Installation guide

To see the example:

  1. Download "" and unpack it.
  2. Install "beamermath.dmg". If it does not work, select "beamermath.pkg" and choose "Open with...".
  3. Open "bsdbeamer.pdf" contained in the tex-folder with the beamermath app.


LaTeX-files (including 3D-animations for the example and the beamermath package): tex.zip97.6 MB
beamermath app (Mac only): beamermath.dmg59 KB
beamermath source code and Xcode-project: xcodeproject.zip62 KB

To see/reuse the animations of the example you do not need to download and compile the Xcode-project.

beamermath package

Use the "draft" package option to display bounding boxes. This should be turned off for the final version displayed with the app.

\mbvbox{NAME}{ ... } Creates a vertical box with name NAME and content (...).
\mbrbox{NAME}{X}{Y}{W}{H} Creates an empty box with name NAME at X,Y with width W and height H (TeX dimensions). With the "draft" option of the package this has a small black border.
\mbpage Creates a new virtual page for the app to display. Each \begin{frame} \end{frame} of the "beamer"-package should contain at least one \mbpage.
\mbcmd{CMD}{PARAMETERS} Inserts a Command for the app to execute on this page.
\mbcmd{HIDE}{NAME1 NAME2 NAME3} hides the boxes with names NAME1, NAME2 and NAME3.
\mbcmd{GOAL}{0.0 0.25 0.00 -0.94 -20.00 0.00 0.00 0.00 0.57 0.00 1.00} moves the OpenGL-viewport within the time interval 0s-0.25s to the specified location.
\mbcmd{GLVIDEO}{0.0 5.0 QQ animations/projective.vid 0 49} displays frames 0-49 from the specified 3D-video in Box QQ within the time interval 0s-5s.

Compile the LaTeX-code two times to get the PDF meta-data updated!


    Created on 9.8.2018 by
    PD Dr. Fritz Hörmann
    Mathematisches Institut - Raum 433
    Albert-Ludwigs-Universität Freiburg
    Ernst-Zermelo-Strasse 1
    D-79104 Freiburg
    Tel: +49 176 99520388
    Licensed under CC BY-SA 4.0.