1a469bac1bd9cea6775d64adc903294a10f5c8e9
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>
================================
=== CDSC LaTeX Templates =======
================================
Copyright (c) 2009-2026 Benjamin Mako Hill <mako@atdot.cc> / <makohill@uw.edu>
This repository contains LaTeX configuration files and templates used to
format papers, memos, letters, and posters. All files are released under
the GNU GPL version 3 or later.
The latest version can be found in git at:
https://gitea.communitydata.science/collective/cdsc_tex
You can check out the latest version with:
git clone https://gitea.communitydata.science/collective/cdsc_tex.git
Bug reports, comments, questions, and patches can be directed to:
Benjamin Mako Hill <makohill@uw.edu> [work]
Benjamin Mako Hill <mako@atdot.cc> [personal]
To submit a patch, clone the repository, make your changes, and use
git format-patch to generate patch files to send by email:
git format-patch origin/master
git send-email *.patch
================================
=== Dependencies ===============
================================
On Debian or Ubuntu, install the following packages:
* latexmk
* texlive-luatex
* texlive-latex-recommended
* texlive-fonts-extra
* texlive-fonts-recommended
* texlive-bibtex-extra
apt install latexmk texlive-luatex texlive-latex-recommended \
texlive-fonts-extra texlive-fonts-recommended \
texlive-bibtex-extra
On other systems, installing a full TeX Live distribution should provide
everything needed.
All four templates build with LuaLaTeX (via latexmk -lualatex). The text
fonts are Libertinus Serif and TeX Gyre Heros, both provided by
texlive-fonts-extra.
================================
=== Accessibility ==============
================================
All four templates produce PDF/UA-2 compliant tagged PDFs via the
LaTeX tagging project (\DocumentMetadata + tagpdf). You can verify
compliance with verapdf: https://verapdf.org/
The paper and memo templates were originally built on the memoir
class, which is incompatible with the LaTeX tagged-PDF code. They now
use the standard article class with custom styling (cdsc-paper.sty
and cdsc-memo.sty) to keep their previous look while supporting full
tagging.
================================
=== Branches ===================
================================
This repository has two main branches:
master Standard LaTeX templates (paper, memo, letter, poster)
knitr Knitr/R template for reproducible research documents
================================
=== Scripts ====================
================================
new_tex_document
----------------
Creates a new document directory from a template. Takes a document type
and destination directory as arguments:
new_tex_document <type> <directory>
Available types:
paper LaTeX paper template (master branch)
memo LaTeX memo template (master branch)
knitr Knitr/R paper template (knitr branch)
letter LaTeX letter template (master branch)
Example:
new_tex_document paper my-new-paper
This creates my-new-paper/ populated with the template files, with the
main source file renamed to my-new-paper.tex (or .Rtex for knitr).
rename_tex_to_dirname
---------------------
Renames the single .tex file in the current directory to match the
directory name. Useful for cleaning up a template that was set up
manually:
cd my-paper && rename_tex_to_dirname
================================
=== Shell Aliases ==============
================================
The file cdsc_tex_aliases.sh provides aliases for the old individual
script names, for convenience or backwards compatibility. Add the
following to your .bashrc or .zshrc:
[[ -f ~/tex/cdsc_tex/cdsc_tex_aliases.sh ]] && \
source ~/tex/cdsc_tex/cdsc_tex_aliases.sh
This defines the following aliases (only if new_tex_document is in PATH):
new_tex_memo → new_tex_document memo
new_knitr_document → new_tex_document knitr
new_tex_letter → new_tex_document letter
================================
=== Migration ==================
================================
The individual scripts new_knitr_document and new_tex_letter have
been consolidated into new_tex_document. The old scripts remain in
the repository but are superseded.
To migrate, replace calls to the old scripts with new_tex_document:
Old: new_knitr_document mydir
New: new_tex_document knitr mydir
Old: new_tex_letter mydir
New: new_tex_document letter mydir
Alternatively, source cdsc_tex_aliases.sh (see above) to keep using the
old names without changing your workflow.
Description
Languages
TeX
77%
Python
14.4%
Awk
3.4%
Shell
3.1%
Makefile
2.1%