# 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.
