This demonstrates my attempts to produce accessible pdfs. There is a focus on slide decks, discussing a replacement of the beamer package. This is experimental but tested with NVDA screen reader for basic functionality.
Important steps: (details below)
compile with lualatex instead of pdflatex (this is included in most pdf installations)
use the ltx-talk package instead of beamer for slides
use the Metadata as given below
for images, use descriptive alt tags like in
\includegraphics[scale=.5,alt={A graph of demand and supply}]{equ.png}
or use artifiact if the image is for decoration
\includegraphics[scale=.8,artifact]{decoration.png}
See the sample files for slides with ltx-talk and a sample coursework
It is important that your latex installation is up to date - to achieve this in overleaf, see under Compiling... below
Thanks to Luke Kimber-Bradshaw at the University of Southampton digital learning team for support, and of course developers of the accessibility features in Latex, in particular the Latex project for useful examples.
The minimum is to add a paragraph like the following to your tex code before compiling with lualatex
\DocumentMetadata{
tagging=on,
pdfversion=2.0,
pdfstandard={UA-2,A-4F},
lang=en,
tagging-setup={math/setup=mathml-SE}
}
\tagpdfsetup{table/header-rows = 1}
For presentations/slide decks, beamer needs to be replaced by
\documentclass{ltx-talk}
\tagpdfsetup{role/new-tag=frametitle/H1}
Compiling with lualatex and ltx-talk
Most pdf editors have a way to select lualatex instead of pdflatex etc. If you just want to try, write on the command line in your folder lualatex myfile.tex . The ltx-talk package is included in recent versions of Miktek and Textlive (the latter used in overleaf). Overleaf users need to enable the rolling tex-live release while participating in overleaf labs, and select 1) lab version of tex-live and 2) compile with lualatex as explained here.
Replacing Beamer with ltx-talk and other problem packages
The basic syntax of ltx-talk is similar to beamer, refer to the ltx-talk documentation for details. To give an example of a difference, the frametitle can only by given using the \frametitle{} command, while beamer offers alternative ways. This can be easily changed by AI.
Beamer-style blocks can be fully customized when loading the beamertcolorbox package . Despite the name, this works as well with ltx-talk.
Also other packages are (partly) incompatible , for my use-case amssymb was the most relevant one, but I found alternative solutions and again AI was a great help to implement these changes.
These methods have been tested to produce basic accesibility reliabley.
To verify if your pdf file is accessible, there are a few options:
Convert it to a html file with https://ngpdf.com/ , accessible pdfs produce a nice html output of formulae.
Install the current version of the screen reader NVDA (2026.1). Open your pdf with Acrobat and use ctrl-left and ctrl/right to navigate to your formula/table/etc
Open with Acrobat, Choose the Menu (Windows), or the View menu (macOS) > Show/Hide > Side Panels > (accessibility) Tags and check if formulae have some alternative description in mathml.
Click on the red/orange/green accessibility icon in blackboard and see what it complains about. Note however that Blackboard Ally uses and outdated standard. It will complain about formulae lacking alt-text, even if the formulae are perfectly accessible under modern standards. The option \tagpdfsetup{math/alt/use} allows for a 100% Ally score but makes screen readers produce worse output instead of natural language for formulae, so in my view it is better to not use the option and ignore this complaint.
Pdfs seem to capture formulae as images. This needs to be either amended (via tags) with alternative texts, or alternative formats like mathml.
All the examples are provided as zip file with source code and pdf output.
One could also use markdown for writing the slides, produce accessible html and use reveal.js to present the html directly. This does not integrate well with blackboard though. The latex alternative Typst has some accesibility features and is working on generating automatically tagged pdfs with Mathml in future releases. Powerpoint requires the use of MathJax to generate the formulae or manual provision of alternative text.
Note that screenreader functionality depends on which software is used to display the pdf. Acrobat reader is fine, browser plugins usually not.
In my miktex/vscode setup, even when selecting latxmk(lualatex) when pdfversion=2.0 is used in the metadata, pdftext is used instead of lualatex. This was a relativly weired implication of a mistake made in the VS Code settings file.