Slides
From beamer to ltx-talk
Beamer is the de-facto standard for LaTeX presentations, but it has a fundamental accessibility problem: it produces PDFs that are not tagged. An untagged PDF cannot be navigated by screen readers, fails automated accessibility checks, and cannot reflow for low-vision users.
ltx-talk is a modern presentation document class built on the LaTeX PDF tagging project. It produces properly tagged, accessible PDFs while keeping a syntax that Beamer users will find familiar. It requires LuaLaTeX.
Installation
ltx-talk is distributed via CTAN and is included in TeX Live and MiKTeX.
TeX Live / MacTeX:
tlmgr install ltx-talkMiKTeX: install via the MiKTeX Console or on-the-fly when the package is first used.
Minimal Document Structure
A minimal ltx-talk presentation looks like this:
\documentclass{ltx-talk}
\usepackage{fontspec} % OpenType fonts — replaces inputenc/fontenc
\title{My Accessible Presentation}
\author{Author Name}
\date{\today}
\begin{document}
\begin{frame}
\maketitle
\end{frame}
\begin{frame}{Introduction}
\begin{itemize}
\item First point
\item Second point
\end{itemize}
\end{frame}
\end{document}Compile with:
lualatex presentation.texActivate tagging
To create a tagged pdf with enhanced accessibility features, add the necessary preamble at the top of the document:
\DocumentMetadata{
tagging=on,
pdfstandard=ua-2,
lang=en,
tagging-setup = {math/setup=mathml-SE}
}
\tagpdfsetup{math/alt/use} % This line is only to force Canvas Ally compliance.
% It does NOT improve accessibility.Adjust headings level (Canvas Ally)
The Canvas Ally checker might complain that
“The headings in this PDF do not begin at level 1.”
In this case, add
\AtBeginDocument{\tagpdfsetup{role/new-tag=frametitle/H1}}before \documentclass.
What Changes for Beamer Users
The Document Class
% Before (Beamer)
\documentclass[aspectratio=169]{beamer}
% After (ltx-talk)
\documentclass{ltx-talk}Options such as aspectratio are passed the same way. Check the ltx-talk documentation for the full list of supported class options.
Preamble: Fonts and Encoding
With Beamer + pdfLaTeX, a typical preamble includes:
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}With ltx-talk + LuaLaTeX these are not needed and should be removed. Use fontspec instead to select fonts:
\usepackage{fontspec}
\setmainfont{Latin Modern Sans} % or any OpenType/TrueType fontTitle Slide: Use \maketitle
% Before (Beamer)
\begin{frame}
\titlepage
\end{frame}
% After (ltx-talk)
\begin{frame}
\maketitle
\end{frame}Slides: frame Works as Before
The frame environment is kept intentionally compatible:
% Works the same in ltx-talk
\begin{frame}{Slide Title}
Content here.
\end{frame}or alternatively
\begin{frame}
\frametitle{Slide Title}
Content here.
\end{frame}Short-title and fragile options are also supported:
\begin{frame}[fragile]{Code Example}
\begin{verbatim}
print("hello")
\end{verbatim}
\end{frame}Overlays and Pauses
Basic overlay commands work:
\begin{frame}{Step by Step}
\begin{itemize}
\item<1-> Always visible
\item<2-> Appears on step 2
\item<3-> Appears on step 3
\end{itemize}
\end{frame}Themes
ltx-talk has its own theming system, separate from Beamer themes. Beamer theme commands (\usetheme, \usecolortheme, etc.) do not work. Use ltx-talk’s own options instead:
\documentclass[theme=...]{ltx-talk}See the package documentation for available themes and customization options.
Blocks
Standard Beamer block environments are available:
\begin{block}{Definition}
A graph is a set of vertices and edges.
\end{block}
\begin{alertblock}{Warning}
This approach has known limitations.
\end{alertblock}
\begin{exampleblock}{Example}
Consider the complete graph $K_5$.
\end{exampleblock}What to Remove from Your Beamer Preamble
When migrating, remove or replace these common Beamer-specific commands:
| Remove | Reason |
|---|---|
\usetheme{...} |
Not applicable; use ltx-talk theme options |
\usecolortheme{...} |
Not applicable |
\usefonttheme{...} |
Not applicable |
\usepackage[T1]{fontenc} |
Replaced by fontspec + LuaLaTeX |
\usepackage[utf8]{inputenc} |
Not needed with LuaLaTeX |
\setbeamertemplate{...} |
Not applicable |
\setbeamercolor{...} |
Not applicable |
Summary
| Task | Beamer | ltx-talk |
|---|---|---|
| Engine | pdfLaTeX or LuaLaTeX | LuaLaTeX only |
| Tagged PDF | ✗ | ✓ |
frame environment |
✓ | ✓ |
| Beamer themes | ✓ | ✗ (own system) |
fontenc / inputenc |
needed (pdfLaTeX) | not needed |
| Basic overlays | ✓ | ✓ (check complex cases) |
| Blocks | ✓ | ✓ |
Migrating from Beamer to ltx-talk is straightforward for most presentations: change the document class, remove the encoding packages and Beamer theme commands, add fontspec, and recompile with LuaLaTeX. The payoff is a PDF that is accessible by design.