Adds a table mapping beamer constructs to their equivalents here, which is what someone arriving with a deck needs. Cuts the parts that recorded what the port turned up rather than how to use the result: the known-gaps section, the description of how the notes page is laid out, and the asides about which upstream issues are open. Those now live in the issues filed against ltx-talk. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
98 lines
3.1 KiB
Markdown
98 lines
3.1 KiB
Markdown
# ltx-talk port
|
|
|
|
This branch is the presentation template ported from beamer to the
|
|
[ltx-talk](https://github.com/josephwright/ltx-talk) class. ltx-talk was
|
|
written with tagging as a design goal.
|
|
|
|
## Requirements
|
|
|
|
* LuaLaTeX
|
|
* TeX Live 2025 or newer (ltx-talk needs LaTeX 2025-11-01 or later);
|
|
`texlive-latex-recommended` ships the class
|
|
* `python3-pypdf`, for assembling the notes PDF
|
|
|
|
You can install all three on Debian with:
|
|
|
|
```
|
|
apt install texlive-latex-recommended python3-pypdf
|
|
```
|
|
|
|
## Building
|
|
|
|
```
|
|
make slides # the deck; this is what gets uploaded
|
|
make notes # double-width slide + notes pages for presenting
|
|
make pdfpc # build the notes PDF and open it in pdfpc
|
|
```
|
|
|
|
Share the slides build, not the notes build: only the slides are tagged and
|
|
expected to validate with tools like [veraPDF](https://verapdf.org/).
|
|
|
|
## Migrating from beamer
|
|
|
|
| beamer | here |
|
|
|---|---|
|
|
| `\begin{frame}{Title}` | `\frametitle{Title}` inside the frame |
|
|
| `\begin{frame}[standout]{}` | `\standout{...}` |
|
|
| `\sectionpage` from the theme | `\section{...}` then `\sectionpage` |
|
|
| `\subsectionpage` | `\subsection{...}` then `\subsectionpage` |
|
|
| `\note{...}`, `\note[item]{...}` | same, after `\usepackage{talk-notes}` |
|
|
| `\appendix` | same |
|
|
| `\alert{...}`, `\item<2->`, `\pause` | same |
|
|
| `\only<1>{...}` | avoid; use `\pause` or `\begin{itemize}[<+->]` |
|
|
|
|
Use `\frametitle`, not the braced argument: by default the class treats
|
|
`\begin{frame}{Title}` as body text, so the title is not tagged as a heading.
|
|
Give every `\includegraphics` an `alt={...}` description, and declare table
|
|
header rows with `\tagpdfsetup{table/header-rows={1}}` before the tabular.
|
|
|
|
## Speaker notes
|
|
|
|
ltx-talk has no `\note` command (see
|
|
[issue #156](https://github.com/josephwright/ltx-talk/issues/156)).
|
|
`talk-notes.sty` defines one that records its text to a side file and
|
|
contributes nothing to the slides; `mknotes` reads that file afterwards and
|
|
builds the presenter PDF. Present it with
|
|
[dspdfviewer](https://github.com/dannyedel/dspdfviewer),
|
|
[pdfpc](https://pdfpc.github.io/), or the web viewers
|
|
[Beamer Viewer](https://beamerviewer.euxane.eu/) and
|
|
[backstage](https://bckstg.xyz/).
|
|
|
|
### Installing speaker notes
|
|
|
|
To use speaker notes in another ltx-talk document, copy two files out of this
|
|
repository:
|
|
|
|
- `mknotes`
|
|
- `talk-notes.sty`
|
|
|
|
Load the package in the preamble:
|
|
|
|
```latex
|
|
\usepackage{talk-notes}
|
|
```
|
|
|
|
Write notes with `\note{...}`, or `\note<2->{...}` to bind one to particular
|
|
slides of a frame. As in beamer, plain notes run together as text, each
|
|
starting a new paragraph, and `\note[item]{...}` adds an entry to a numbered
|
|
list printed after them.
|
|
|
|
Build the deck, then assemble the presenter PDF:
|
|
|
|
```
|
|
./mknotes example
|
|
```
|
|
|
|
That reads `example.pdf` and `example.notes` and writes `example-notes.pdf`,
|
|
the double-width version you present from. The slides in `example.pdf` are
|
|
untouched.
|
|
|
|
If `fonts.tex` is present it is used for the notes pages, so they match the
|
|
deck. `--preamble FILE` names a different fragment.
|
|
|
|
## Theme
|
|
|
|
`trantor.sty` is [Marco Pompili's](https://github.com/mrc-pop)
|
|
[Metropolis-like theme](https://github.com/mrc-pop/trantor) for
|
|
ltx-talk.
|