beampptx
Convert LaTeX Beamer slides to PowerPoint presentations with flawless vector graphics and embedded video support. Mostly vibe-coded using claude-cli and gemini-cli.
Why beampptx?
Converting Beamer slides to PowerPoint often results in blurry images or lost functionality. beampptx solves this by:
- Vector Fidelity: Every slide is embedded as a full-bleed SVG vector graphic, ensuring perfect sharpness at any zoom level.
- Dynamic Overlays: Supports Beamer transitions (
\pause,\alt,<1->, etc.) by expanding them into individual static slides. - Clickable Navigation: Preserves internal Beamer links such as
\hyperlink{target}{\beamergotobutton{Go}}as PowerPoint slide navigation. - Native Video: Automatically extracts videos included via the
movie15package's\includemovieor themultimediapackage's\moviecommand and embeds them as native PowerPoint video shapes with support for autoplay, looping, and volume. - Bibliography Support: Handles complex LaTeX compilation passes (including
biberandbibtex).
Installation
From PyPI (Recommended)
pip install beampptx
From GitHub
To install the latest development state directly from the repository:
pip install git+https://github.com/kocurvik/beampptx.git
Local Development
If you have the repository cloned:
pip install -e .
System Requirements
- Python: 3.10+
- LaTeX: A working distribution (MiKTeX, TeX Live) with
pdflatex(default),xelatex, orlualatex. - Tools:
biberorbibtexif using bibliographies.
Usage
Once installed, use the beampptx command:
Basic Conversion
beampptx presentation.tex
Convert from PDF directly
If you already have a compiled PDF:
beampptx presentation.pdf
Note that for this option, the videos will not be embedded correctly, but the rest of the content should be exported as vector graphics.
Advanced Options
# Specify output filename
beampptx presentation.tex -o final_talk.pptx
# Use a different LaTeX engine
beampptx presentation.tex --latex-engine xelatex
# Keep the temporary build files for debugging
beampptx presentation.tex --keep-build
# Skip internal navigation links
beampptx presentation.tex --no-links
# Build in a specific directory instead of a temp dir (never auto-deleted)
beampptx presentation.tex --build-dir ./build
# Run LaTeX from a different working directory than the .tex file
beampptx presentation.tex --latex-cwd ./src
# Show the installed version
beampptx --version
--build-dir implies --keep-build: the directory is created if missing and is
never removed automatically, which makes it the easiest way to inspect the
intermediate PDF and SVGs after a failed run. --latex-cwd controls how relative
\input, \includegraphics, and \bibliography paths in the source resolve —
it defaults to the directory containing the .tex file.
beampptx can also be run as a module: python -m beampptx presentation.tex.
Examples
The repository includes a test/ folder with several examples demonstrating different features. To try them out, clone the repository and run:
# Basic features (math, lists, etc.)
beampptx test/example.tex
# Overlays and transitions (\pause, \alt, etc.)
beampptx test/example_transitions.tex
# Image inclusion (PNG, JPEG, PDF)
beampptx test/example_images.tex
# Bibliography support (biblatex/biber)
beampptx test/example_bib.tex
# Internal navigation links (\hyperlink + \beamergotobutton) with video
beampptx test/example_links.tex
# Video with the movie15 package (\includemovie)
beampptx test/example_video.tex
# Multiple videos on a single slide
beampptx test/example_multi_video.tex
# Video with the multimedia package (\movie)
beampptx test/example_movie.tex
# Multiple videos on the same slide with the multimedia package (\movie)
beampptx test/example_multimedia.tex
# Custom theme with full-width colored title bars, logos and footnote citations
beampptx test/fmph_presentation.tex
Features in Detail
Beamer Overlays
beampptx detects frames with multiple slides (e.g., from \pause or <1->) and creates a separate PowerPoint slide for each state. This preserves the feeling of "animations" when clicking through the presentation.
Internal Beamer Navigation
Internal PDF destinations generated by Beamer are converted into PowerPoint click actions. For example, a button created with \hyperlink{details}{\beamergotobutton{Details}} will jump to the frame labelled details in slideshow mode. This also preserves internal links introduced by Beamer themes.
Note that themes drawing a navigation bar (Warsaw, Berlin, ...) emit one link
per entry on every slide, which adds up to a lot of shapes on a long deck. Pass
--no-links to skip the conversion entirely, or suppress the bar in the source
with \beamertemplatenavigationsymbolsempty.
Videos
Two LaTeX packages are supported for video inclusion — pick whichever your
source already uses. In both cases beampptx finds the call in your .tex
source, locates the corresponding annotation in the compiled PDF, and
embeds the video file directly into the .pptx as a native PowerPoint
movie shape.
movie15 — \includemovie:
\usepackage{movie15}
...
\includemovie[autoplay, poster=image.png, repeat, volume=0.5]
{width}{height}{video.mp4}
multimedia — \movie (ships with Beamer):
\usepackage{multimedia}
...
\movie[width=8cm, height=4.5cm, autostart, loop]
{\includegraphics[width=8cm]{poster.png}}
{video.mp4}
Recognised options:
| Behaviour | movie15 |
multimedia |
|---|---|---|
| Auto-play | autoplay |
autostart |
| Loop | repeat / palindrome |
loop / palindrome |
| Initial volume | volume=0.0..1.0 |
(not supported by the package) |
| Poster image | poster=file |
first arg (\includegraphics{file}) |
Note that currently, using pdfs for poster images is not supported. Likewise, the autoplay option requires activating the "next" slide for the videos to run. The palindrome option will just loop the video normally instead of reversing it for even playtroughs.
Release Notes
1.1.1
- Fixed a thin white strip at the slide edges: PowerPoint drew the embedded slide graphics about 1 px narrower than the slide, so full-width backgrounds and colored title bars stopped just short of the left and right edges. Slides now fill the full width.
- Added
test/fmph_presentation.tex, an example with a custom theme (full-width colored title bars, logos and footnote citations).
1.1.0
- Available on PyPI:
beampptxcan now be installed withpip install beampptxinstead of only from GitHub. - Proper package layout: the code moved from a top-level
generate_pptx.pymodule into abeampptxpackage. Thebeampptxcommand is unchanged, the converter can now also be run aspython -m beampptx, and installing no longer places a genericgenerate_pptxmodule on your import path. - Preserved internal Beamer navigation: internal PDF destinations become
PowerPoint click actions, contributed by
@mefilippin in
#1. Added
--no-linksto skip the conversion for themes that draw a navigation bar. - Requires Python 3.10+: this was always true of the code; the metadata previously claimed 3.6+.
- Added
--version, and fixed console output crashing on Windows when redirected to a file or pipe.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Metadata
Release files for beampptx 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| beampptx-1.1.1.tar.gz | 23.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| beampptx-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.5 kB
Release files / beampptx-1.1.1.tar.gz
| Download URL | beampptx-1.1.1.tar.gz |
|---|---|
| Size | 23.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c1c1e70a7b4ebb331a79b97af386c77bc1f2116a7d1453ded31238aa61ef5c02
|
|
BLAKE2b-256 checksum How to use checksums |
579cd88d20d2180c61afa9bd078527d27021b0eb686a58e770044421100fd7a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / beampptx-1.1.1-py3-none-any.whl
| Download URL | beampptx-1.1.1-py3-none-any.whl |
|---|---|
| Size | 20.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1ea2ccbffed52435edef651f9de4a34eb242f9371cb777b04d9467aa3b121206
|
|
BLAKE2b-256 checksum How to use checksums |
1c16e8d3cf308699d6c07e9db0423fdd0da417a63fe29c7a3ea8e95f77f39934
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency log