20
0
Commit Graph

190 Commits

Author SHA1 Message Date
c499e92311 Rename example.tex to text.tex
new_tex_document renames text.$EXT to the destination directory name; the
other templates all use that name.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 15:43:35 +09:00
55f33cd8f5 Take the slide fonts from TeX Live rather than the tree
Open Sans and Roboto Mono ship in texlive-fonts-extra, which the other
templates already require. LuaLaTeX resolves them by family name through
luaotfload, which indexes the TeX tree, so the vendored copies and their
relative Path= keys are unnecessary.

Same faces, pixel-identical output.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 15:43:29 +09:00
da213107e2 Merge the beamer-mako presentation template as slides_template
beamer-mako held a presentation template that was ported to the ltx-talk
class because beamer cannot produce tagged PDFs. That left the repository
misnamed and duplicating machinery cdsc_tex already has.

The ltx-talk branch was master plus fifteen commits, so this carries the
whole repository. Paths are rewritten under slides_template/; COPYING is
dropped in favour of the one here, which is the same licence.
2026-08-19 15:38:28 +09:00
e2c99a0ef9 Rewrite the port's README around using the template
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>
2026-08-15 11:28:31 +09:00
aaa67b6d54 convert README to markdown
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 10:24:24 +09:00
f7e16a221c removed extra extraneous comments
Cuts the multi-line rationale blocks down to what a reader of the file
needs. The reasoning behind the tagging setup belongs in the commit
messages that introduced it, not repeated above every \DocumentMetadata
block.

Also trims the README: drops the consequence clause explaining what
happens when the standard is declared without the tagging, drops the
quoted TeX Live 2024 error message, and notes that sid has a new enough
TeX Live for anyone not on Overleaf. Adds the caveat that a veraPDF
PASS is necessary but not sufficient, since a document whose body text
is all artifact passes too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 10:24:15 +09:00
b2504541e5 Re-vendor the theme from the trantor fork
Syncs with the stack now open upstream as pull requests: the progress bar
extracted into a shared command, \subsectionpage, \appendix, the dark
title band, and the metropolis-style dividers.

Two local changes are reapplied on top, as before: the licence notice in
the header, and font selection left to the document so this template can
use OpenSans and RobotoMono.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 10:16:13 -07:00
f902435f3c Restore the full author block in the example
The port flattened \author and \institute to one line each. Restore
master's content: email under the name, both affiliations with roles.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 10:09:15 -07:00
e051d4dca3 Show the subtitle on the title page
Ports the fix now proposed upstream: trantor's title page never printed
\subtitle, so a deck that set one silently lost it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 10:09:15 -07:00
288d571df2 Rewrite the port's README as Markdown
Converts it and fills in what was missing: install instructions, links to
ltx-talk, trantor, veraPDF and the presenter viewers, the upstream issues
behind the speaker-notes workaround and the overlay tagging bug, and how to
use the notes machinery in another document.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 07:26:23 -07:00
9495928ff5 Show the new theme and notes features in the example
Adds a subsection with its divider, and after \appendix a table and a
figure, so the appendix numbering, table tagging and alt text all have
something exercising them. The table declares its header row, without which
the header cells are tagged TD like any other.

Frame titles are given as \frametitle rather than as the argument to
\begin{frame}, since only the command form is tagged as a heading.

The palette override moves above \usepackage{trantor} so the theme picks it
up, and the notes show both forms: plain \note and \note[item].

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 07:26:23 -07:00
b7a276996a Fix the build targets after the port
veraPDF was wired in as a make dependency, which it should not be: it is a
check to run by hand, not something a build needs installed. The validate
target goes away.

The vc target came back. It generates the git revision file and was lost in
the port, so \input{vc} had nothing to read. spell came back with it.

notes.config is deliberately not restored. It existed to flip
\setbeameroption between slides, notes-on-second-screen and notes-only, and
ltx-talk has no such option: the slides build never contains notes and the
notes PDF is assembled afterwards by mknotes.

fonts.tex has to be kept out of the wildcard. It is a fragment with no
\documentclass, and make otherwise tries to typeset it and hangs waiting
for input.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 07:26:23 -07:00
c779140c01 Follow beamer's model for notes, and lay the page out like it
Notes were rendered as a bullet list, which beamer does not do. Reading
beamerbasenotes.sty: a plain \note appends its text to a running block with
no separator at all, and \note[item] accumulates separately into an
enumerate printed after that block.

Match both. talk-notes.sty takes \note<spec>[item]{text}, as beamer does,
and records which kind it is. The one deviation is a paragraph break
between plain notes instead of running them together, which is easier to
read on a page.

The notes half is laid out like beamer's too: a grey band across the head
carrying the section and the position in the talk, the current slide flush
into the outer corner, and the notes below. The heading is set in the
sans face against the roman body so it reads as apparatus rather than as
part of the notes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 07:26:23 -07:00
27304c853a Share the font setup between the slides and the notes
The notes pages were typeset in the default Latin Modern while the slides
used OpenSans and RobotoMono, so the two halves of a presenter page did not
match.

Move the font declarations to fonts.tex, which the slides \input and
mknotes passes to the notes document. mknotes uses it by default when it
exists, so a deck that copies the two notes files in gets matching fonts
without having to remember a flag; --preamble names a different fragment,
and a file named there but missing is an error rather than ignored.

The notes document now compiles from the document directory with
-output-directory rather than running inside the temporary one, so the
relative font paths in the fragment resolve.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 07:26:23 -07:00
01534406dc Update the vendored theme from the trantor fork
Brings across the work now sitting in pull requests upstream: a palette of
named colours in place of hardcoded black and white, the frame title in a
dark band, section and subsection dividers set metropolis-style on the
light background over a progress bar, \appendix so backup slides stay out
of the frame count, and a fix for the divide by zero the progress bar hit
before the aux file existed.

The separate MIT licence file goes away. The notice it carried now sits in
the header of trantor.sty itself, which is what the licence asks for and
leaves one licence file in the repository.

Fork: https://github.com/makoshark/trantor
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 07:26:23 -07:00
79bd697440 Give frame titles as \frametitle so they are tagged as headings
Only \frametitle{...} produces a tagged heading in ltx-talk. Giving the
title as the argument to \begin{frame}{...} silently yields a frame with
no heading element at all, which is why the deck had sections but nothing
per slide. Use the command form throughout.

The resulting headings sit at ltx-talk's default H4, nested under the H1
that a section produces. That level can be remapped with \tagpdfsetup if
assistive software turns out to want frame titles higher up.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 19:16:25 -07:00
109d9dc5c2 Document the ltx-talk port and what is still missing
Covers the build targets, why only the slides build is expected to
validate, and how the notes are captured. Also records the known gaps so
they are not rediscovered later: frame titles are not emitted as
headings despite the role map declaring frametitle -> H4, overlay
tagging has an open upstream bug for the \only forms, and talk-notes.sty
depends on two ltx-talk internals that a future release may rename.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 19:12:23 -07:00
95a368afc6 Port the template from beamer to ltx-talk
Beamer cannot produce a genuinely tagged PDF. The master template
validates as PDF/UA-2 only because tagpdf marks everything it was not
told about as decorative, so a screen reader gets the frame titles and
nothing else. Beamer 3.77 then made matters worse by refusing
\DocumentMetadata outright, which breaks tagging on TeX Live 2025 and
leaves the deck failing validation altogether.

ltx-talk was written by the LaTeX Project with tagging as a design goal.
The slides built here carry real paragraphs, lists as L/LI/Lbl/LBody,
sections as headings, formulas as MathML, and alt text that reaches the
PDF. veraPDF passes on the strength of that structure rather than in
spite of its absence.

The metropolis theme files go with beamer; trantor replaces them. Fonts,
figures and the purple palette are unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 19:12:16 -07:00
2b0c14209a Add speaker notes for ltx-talk, captured and assembled outside LaTeX
ltx-talk has no \note command. Its README and website list speaker notes
among what the class is for, but the feature is unwritten: the request is
open upstream as issue #156, where the maintainer has said notes are
wanted but that the interface needs thought first. Nothing has landed as
of v0.5.3.

So notes are captured rather than typeset. talk-notes.sty defines \note
to contribute nothing to the slides and instead record its text, and
mknotes reads that afterwards to assemble the presenter PDF: slide on the
left, and on the right a grey header band, a thumbnail of the current
slide flush into the corner, and the notes below. Previous and next
slides are left to dspdfviewer and pdfpc, which show them already.

The hard part is that a frame is not a page, since overlays expand one
frame into an unpredictable number of slides. Records are therefore
written from the shipout hook, the first point at which the frame and
slide identity of a page is settled, which makes the mapping exact rather
than guessed. Notes honour the usual overlay specifications, so
\note<1>{...} appears beside only the first slide of its frame.

The assembled PDF is not tagged and is not meant to be shared; only the
slides build is.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 19:12:03 -07:00
9c473a8419 Vendor the trantor theme for ltx-talk
trantor is Marco Pompili's Metropolis-like theme for ltx-talk, added
under its MIT license so the deck keeps roughly its present look after
the class change. Two things differ from upstream: font selection moves
out to the document, since this template ships OpenSans and RobotoMono,
and the Euler maths font it loaded by default is dropped because
lum-euler is not packaged in Debian's TeX Live.

Upstream: https://github.com/mrc-pop/trantor

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 19:11:51 -07:00
4ae0bddb40 README: point the verification section at veraPDF
The section previously led with a pikepdf one-liner and described
veraPDF as unavailable because it is not in Debian. It is available,
just not from apt, and it is the only check that actually tests the
PDF/UA-2 claim these templates make rather than merely confirming a
structure tree exists.

Verified against the templates: all four tagged builds pass ua2, and
the pre-fix builds of the paper and memo fail it. So this check would
have caught the untagged-but-declared-UA-2 state at any point; it was
simply never run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:21:38 -07:00
b94d69f6a3 README: document what makes the tagging work, and what defeats it
Records that tagging=on is the key doing the work and pdfstandard=ua-2
only writes the claim, since setting the second without the first is
the failure this series fixes and is easy to reintroduce.

Adds the TeX Live 2025 requirement to Dependencies, including that
Debian trixie ships 2024 and that Overleaf projects choose their TeX
Live version in the settings menu and do not always default high
enough.

Adds sections on writing an accessible document (headings, alt text,
table header rows), on customizing the styles, and on verifying that a
PDF really carries structure. The customizing section names titlesec
and titling specifically: they are the obvious tools for the job the
two style files do, and they break tagging silently.

Notes that the poster is not accessible and makes no claim.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:16:01 -07:00
3fe02af221 poster_template: drop the PDF/UA-2 claim beamer cannot honour
The poster declared \DocumentMetadata with pdfstandard=ua-2 and patched
the frametitle template to emit H1 tags. On TeX Live 2024 that produced
an untagged PDF carrying an accessibility claim it did not meet. On TeX
Live 2025, which is what Overleaf runs, it does not build at all:

  ! Class beamer Error: The beamer class is not compatible with
    \DocumentMetadata

The LaTeX Tagging Project lists beamer and beamerposter as no-support,
meaning incompatible and not expected to change, and beamerposter pulls
in textpos and subfig which are incompatible in their own right. There
is no fix available, so the template now makes no claim and says why.
Removing the block also gets the poster building again.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:16:01 -07:00
331b6525af paper_template: enable tagging, add alt text and header row examples
Switches to \DocumentMetadata{tagging=on} for the reasons described in
the previous commit; the structure tree went from /Document plus eleven
/Link nodes to three headings, twenty paragraphs, a tagged list and the
abstract as a block quote.

Adds a worked example of the two things tagging cannot do for an
author. A data table carries \tagpdfsetup{table/header-rows={1}}, which
makes its first row TH rather than TD so a screen reader can announce
which column a value belongs to. A commented-out figure shows the alt=
argument to \includegraphics, which is what gets announced in place of
an image; it is left commented so the template does not have to ship a
binary, and mentions [artifact] for decorative images.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:15:48 -07:00
0a43387d2e memo, letter: enable tagging with \DocumentMetadata{tagging=on}
These templates declared pdfstandard=ua-2 and loaded tagpdf with
\tagpdfsetup{activate-all}. That combination sets /Marked true and
writes the PDF/UA-2 claim into the metadata, but activate-all is
tagpdf's low-level switch and does not turn on the kernel code that
tags document structure. The result was a file announcing itself as
accessible while carrying nothing for assistive software to read: the
memo's structure tree held one /Document and two /Link nodes, and the
letter's held /Document alone.

tagging=on loads that kernel code. The memo now tags three headings, a
subsection, its paragraphs and its bibliography list; the letter tags
all ten body paragraphs. The manual tagpdf lines are no longer needed
since the kernel loads it.

This requires TeX Live 2025 or later; on TeX Live 2024 the key is
unknown and the build stops.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:15:48 -07:00
1a469bac1b cdsc-paper.sty, cdsc-memo.sty: build headings without titlesec
The tagging code hooks \@startsection to emit the H1/H2/H3 tags that a
screen reader navigates by. titlesec replaces \section wholesale rather
than going through that hook, so every heading vanished from the
structure tree --- with no error to say so, which is why this went
unnoticed. titling separately left an unclosed trivlist behind its
\flushleft declarations, producing "the number of automatic begin and
end text-unit para hooks differ" and a mis-nested tree.

Both files now style headings through \@startsection and the title
block through \@maketitle, using the class's own hooks. The style
argument of \@startsection is applied to the whole heading, so the
memo's uppercase headings append \MakeUppercase to it; the tagging code
wraps the section number in \NoCaseChange so the number is left alone.

Vertical spacing was matched against the previous output page by page:
the memo now renders identically bar one heading a pixel off, and the
paper's title block lands within two pixels.

datetime is dropped from cdsc-paper.sty. Only \today was ever used from
it and that is built in.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:15:33 -07:00
80f817dfdb Document what the accessibility support does and does not do
Slides-only builds validate as PDF/UA-2, which is what upload targets
check for, but only frame titles and links are actually tagged. Say so
rather than leaving the veraPDF pass to imply more than it means.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 16:42:01 -07:00
62237fea88 Load unicode-math so formulas carry Unicode mappings
The Computer Modern math fonts have no ToUnicode entries, which failed
ISO 14289-2 clause 8.4.5.8 on six checks and left every formula opaque
to assistive software. Switching to an OpenType math font changes the
rendering of math only slightly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 16:41:55 -07:00
ab9f5cfac4 Declare PDF/UA-2 and announce the document title
veraPDF reported two metadata failures against ISO 14289-2: nothing
identified the file as PDF/UA (clause 5), and ViewerPreferences was
missing DisplayDocTitle (clause 8.11.2), so viewers announced the
filename instead of the title.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 16:41:49 -07:00
3cc4c8ffa9 Fix dependency list to match the LuaLaTeX build
The Makefile has built with lualatex since the tagged PDF work in
2841ae9, but the README still told people to install texlive-xetex.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 16:41:41 -07:00
172cd5c4e5 templates: swap EB Garamond for Libertinus Serif
EB Garamond's bold weight ships with only 127 cmapped glyphs --- no
Latin Extended-A, no Vietnamese, no Greek, no Cyrillic, no fi/fl
ligatures --- so any bold text containing accented characters
(Polish, Czech, Vietnamese, etc., as well as bold author names in
citations) renders as tofu boxes or font-fallback substitutions.

Switch the default body font in paper_template, memo_template, and
letter_template to Libertinus Serif. It ships in texlive-fonts-extra,
has comprehensive Latin / Vietnamese / Greek / Cyrillic coverage in
every weight, and includes all the standard f-ligatures explicitly.

Each template also picks up a commented-out
\\setmainfont{Garamond Premier Pro} block plus a short note: Adobe
Garamond Premier Pro is Mako's preferred body font but is commercial
and not redistributable, so the public templates default to
Libertinus and CDSC members can swap in once they have the font
installed (e.g., in ~/.fonts/).

README updated to match.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 16:07:36 -07:00
6ee5dbd35d templates: enable TeX input ligatures with fontspec
fontspec does not enable the classic TeX input ligatures by default,
so under lualatex our existing -- / --- / `` / '' input was being
typeset as literal hyphens and straight quotes rather than en-dashes,
em-dashes, and curly quotes.

Add \defaultfontfeatures{Ligatures=TeX} right after \usepackage{fontspec}
in each template that loads fontspec (paper, memo, and letter). The
poster template uses beamer's default fonts (Latin Modern under
lualatex), where TeX ligatures already work via the font tables, so
no change there.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 18:22:42 -07:00
22832af588 removed wiki page 2026-04-26 12:43:05 -07:00
dab1be34c5 README: reflect memo template, drop memoir incompatibility note
- Replace assignment_template references with memo_template.
- Update the type list in the new_tex_document section.
- Update the aliases section (new_tex_assignment -> new_tex_memo).
- Drop the migration entry for the assignment script.
- Rewrite the Accessibility section: now all four templates are
  PDF/UA-2 compliant (paper and memo were ported off memoir to the
  article class with custom .sty files), so the memoir-blocked
  caveat no longer applies.
- Add poster to the master-branch templates list.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 12:34:19 -07:00
0aee418e2a new_tex_document, cdsc_tex_aliases.sh: assignment -> memo
Update the script and the alias file to match the rename of
assignment_template to memo_template. The 'assignment' type is
replaced by 'memo' in new_tex_document; the new_tex_assignment
alias becomes new_tex_memo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 12:34:11 -07:00
1e79d8d0f6 memo_template: add new article-class memo template
Replaces the assignment_template with a memo-format template based
on the article class. The look-and-feel is ported from the old
cdsc-memo chapterstyle in cdsc-memoir.sty: a single-line "TITLE
[hfill] AUTHOR" header and sans-serif uppercase section headings.

Like the migrated paper_template, this builds with lualatex and
produces a tagged, PDF/UA-2 compliant PDF. verapdf --flavour ua2:
0 failures, 1723 passed rules.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 12:33:37 -07:00
c0406f157f paper_template: migrate to article class with full UA-2 tagging
Drops the memoir class in favor of the standard article class so the
LaTeX tagging-project can produce fully tagged PDFs. The metadata-only
\\DeclareDocumentMetadata workaround is replaced by the full
\\DocumentMetadata{pdfstandard=ua-2} path with tagpdf activated.

text.tex is now built against cdsc-paper.sty (added in the previous
commit); cdsc-memoir.sty is removed. Other changes:

- pdftitle/pdfauthor are set explicitly in \\hypersetup. UA-2 strict
  mode requires dc:title in the XMP packet, and pdfusetitle does not
  propagate \\title{}/\\author{} into XMP under this setup.
- The memoir-only \\firmlists call is dropped (cdsc-paper.sty handles
  list spacing via enumitem).
- The memoir-only \\prebibhook reference is removed from defbibheading.

verapdf --flavour ua2: 0 failures, 1723 passed rules.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 11:21:42 -07:00
6643132141 paper_template: add cdsc-paper.sty (article-class style)
This is an article-class equivalent of the cdsc-article chapterstyle
from cdsc-memoir.sty, written so the paper template can drop memoir
(which is incompatible with the LaTeX tagging-project) while keeping
the same look and feel.

Uses titlesec for section heads, titling for the title block,
fancyhdr for the page styles, enumitem for tighter list spacing,
and caption for the caption font. The runin abstract and \\published
note hooks behave the same as before.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 11:15:53 -07:00
cc993ca40d README: document lualatex requirement and accessibility status
Adds texlive-luatex to the Debian dependency list, documents the
switch to LuaLaTeX + EB Garamond/TeX Gyre Heros, and adds a new
Accessibility section describing which templates produce tagged
PDF/UA-2 output and why the memoir-based templates don't (yet).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:14:46 -07:00
c316de3312 paper + assignment: add PDF metadata via pdfmanagement-testphase
memoir is not yet compatible with the LaTeX tagged-PDF code, so full
\DocumentMetadata (which pulls in all the latex-lab tagging machinery)
crashes at compile time. Use \RequirePackage{pdfmanagement-testphase}
plus \DeclareDocumentMetadata to get the PDF-management layer — document
language, PDF 2.0 — without triggering tagging. Also adds pdflang and
pdfdisplaydoctitle to the existing hypersetup.

The \DocumentMetadata block and tagpdf load are left in the file as
commented-out lines so this is a one-edit swap once memoir gains
tagging support upstream:

    https://github.com/latex3/tagging-project/issues/910

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:14:38 -07:00
c4a709c22c poster_template: add tagged PDF (PDF/UA-2) accessibility
Enables \DocumentMetadata (pdfversion=2.0, pdfstandard=ua-2) and
tagpdf with activate-all. Adds an H1 structure tag around every
frame title via \addtobeamertemplate, wraps the overlay-only tikz
helpers (\marktopleft, \markbottomright, \credit) in artifact tags
so they don't pollute the reading order, and adds alt text to each
\includegraphics. Verified compliant with verapdf's PDF/UA-2 profile.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:13:50 -07:00
2b29f051a6 letter_template: add tagged PDF (PDF/UA-2) accessibility
Enables \DocumentMetadata (pdfversion=2.0, pdfstandard=ua-2) and loads
tagpdf with activate-all, plus hyperref metadata (pdftitle, pdfauthor,
pdflang, pdfdisplaydoctitle) since the letter class does not expose
\title/\author for the PDF management layer to pick up. Verified
compliant with verapdf's PDF/UA-2 profile.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:12:22 -07:00
a0674e7f87 Switch templates to LuaLaTeX with fontspec
Moves paper, assignment, and letter templates from pdflatex to
lualatex, and replaces the Type-1 font setup (mathdesign/garamond,
ucs/utf8x, T1 fontenc) with fontspec using EB Garamond for the main
font and TeX Gyre Heros for sans. This produces PDFs whose text
extracts cleanly and is a prerequisite for tagged/accessible PDF
output.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:11:51 -07:00
27e9bc3254 Drop Type-1 font defaults from cdsc-memoir.sty and mako-mem.sty
These set \rmdefault=ugm (URW Garamond) and \sfdefault=phv (Helvetica),
which only take effect under pdflatex. Under the lualatex workflow
adopted elsewhere, text fonts are selected via fontspec in the
template's main .tex file, and these defaults were dead code.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:11:28 -07:00
bd8fa11def poster_template: embed fonts in example figure PDFs
The bundled example figures referenced base-14 Helvetica without
embedding it, which blocks PDF/UA-2 compliance for any poster that
includes them. Regenerated via ~/bin/embed-fonts (ghostscript with
-dEmbedAllFonts=true).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:11:21 -07:00
f43488ef70 poster_template: comment out biblatex-dependent stanza
\DeclareLanguageMapping and \defbibheading come from biblatex, which the
template does not load. The template has failed to compile without local
edits for some time as a result.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:11:14 -07:00
34b6fe4401 Remove duplicate assignment_template/HW1.tex
HW1.tex was identical to text.tex except for a stale author name
(TeGrotenhuis vs. TeBlunthuis). new_tex_document only uses text.tex
and renames it on checkout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:07:57 -07:00
f2d871cbd7 Suppress page number on standout slides
The black page number is illegible against the dark standout background.
Defines a custom frame numbering template that outputs nothing on standout
frames and the normal fraction on all others.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 17:25:19 -07:00
4d1302d5b5 Make \e{} render as \textit{} on standout slides
\alert{} is invisible on standout frames due to the inverted color
scheme; fall back to \textit{} using the metropolis@standout boolean.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 17:10:07 -07:00
c65b81f82f move down the header setting which was being reset by \metroset 2026-03-31 17:04:11 -07:00