The template declared pdfstandard=ua-2 and loaded tagpdf with
\tagpdfsetup{activate-all}, which sets /Marked true and writes the
conformance claim but does not turn on the kernel code that tags
document structure. The result passed veraPDF's ua2 profile while its
structure tree held nothing but /Document: every paragraph of the
letter was marked as an artifact, so the checker had no untagged real
content to complain about, and both alt= descriptions were dropped on
the floor.
That is a worse failure than an outright invalid file. A letter that
announces itself as accessible and contains nothing readable is the
one a person relying on a screen reader will trust.
Adding tagging=on fixes it: the built letter now carries twenty tagged
paragraphs and a Figure element holding the signature's alt text, and
still passes ua2. The manual tagpdf lines are dropped since the kernel
loads it.
This requires TeX Live 2025 or later; on TeX Live 2024 the key is
unknown and the build stops. The README gains that requirement, an
Accessibility section, and a warning that a veraPDF pass is necessary
but not sufficient.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
163 lines
5.5 KiB
Plaintext
163 lines
5.5 KiB
Plaintext
================================
|
|
=== UW LaTeX Letterhead ========
|
|
================================
|
|
|
|
Copyright (c) 2018-2026 Benjamin Mako Hill <mako@atdot.cc> / <makohill@uw.edu>
|
|
Copyright (c) 2017 Sayamindu Dasgupta <sdg1@uw.edu>
|
|
|
|
This is a LaTeX version of the University of Washington "matrix"
|
|
stationery or letterhead.
|
|
|
|
It uses the fonts provided by the UW website (Matrix II and OpenSans)
|
|
and attempts to be pica-for-pica identical to the stationery template
|
|
distributed as a Microsoft Word "DOCX" file by UW Brand and Creative
|
|
Services.
|
|
|
|
|
|
Requirements
|
|
=============
|
|
|
|
Because this document uses OpenType and TrueType fonts and produces
|
|
tagged, accessible PDF/UA-2 output, it requires LuaLaTeX rather than
|
|
standard LaTeX. It is supported by Overleaf (https://overleaf.com/)
|
|
although it is not the default. More details on LuaTeX are available
|
|
here: https://www.luatex.org/
|
|
|
|
On Debian or Ubuntu, install the following packages:
|
|
|
|
* latexmk
|
|
* texlive-luatex
|
|
* texlive-latex-recommended
|
|
* texlive-latex-extra
|
|
|
|
apt install latexmk texlive-luatex texlive-latex-recommended \
|
|
texlive-latex-extra
|
|
|
|
On other systems, installing a full TeX Live distribution should
|
|
provide everything needed.
|
|
|
|
TeX Live 2025 or later is required. The tagging code is not in TeX
|
|
Live 2024, where the build stops with "the key
|
|
'document/metadata/tagging' is unknown". Debian trixie ships TeX Live
|
|
2024. On Overleaf, set the version under Menu > Settings > TeX Live
|
|
version; it is not always high enough by default on an older project.
|
|
|
|
The two required fonts Matrix-II and OpenSans are both included in
|
|
this repository, so no additional font packages are needed.
|
|
|
|
|
|
Accessibility
|
|
=============
|
|
|
|
The letter is a tagged PDF declaring PDF/UA-2 (ISO 14289-2). Two keys
|
|
in the \DocumentMetadata block at the top of the .tex file do this,
|
|
and both are needed: tagging=on loads the kernel code that puts the
|
|
text into the PDF's structure tree, and pdfstandard=ua-2 writes the
|
|
conformance claim. The claim without the tagging produces a letter
|
|
that passes a conformance checker while containing nothing a screen
|
|
reader can read, so keep them together.
|
|
|
|
Check a built letter with veraPDF (https://verapdf.org/, not packaged
|
|
in Debian):
|
|
|
|
verapdf -f ua2 washington_letterhead_letter-matrix-deptartment.pdf
|
|
|
|
Note that a PASS is necessary but not sufficient. A letter whose body
|
|
text is all marked as artifact passes too, because the standard only
|
|
requires that content which is not real be an artifact. Confirm there
|
|
is something in the structure tree as well:
|
|
|
|
python3 -c "import pikepdf,sys; d=pikepdf.open(sys.argv[1]); \
|
|
print(d.Root.get('/StructTreeRoot') and 'tagged' or 'UNTAGGED')" file.pdf
|
|
|
|
The signature image carries an alt= description, which is what a
|
|
screen reader announces in place of it. Keep that in place if you
|
|
swap in your own signature. The letterhead graphic in the page header
|
|
is treated as an artifact, like other running header content, so it
|
|
is skipped rather than described.
|
|
|
|
|
|
Encrypted signature files
|
|
===========================
|
|
|
|
If you'd like, you can encrypt the signature file. There are several
|
|
lines in the Makefile you can uncomment to do this. We've included an
|
|
optional encrypted copy of the fake signature file. To use it, the
|
|
passphrase is "weakpassword" (without quotes). You will want to
|
|
customize this. To use this, you will also need GNU Privacy Guard
|
|
(GPG) installed on your system.
|
|
|
|
|
|
Scripts
|
|
========
|
|
|
|
new_tex_uwletter
|
|
-----------------
|
|
Creates a new letter directory from the template. Takes a destination
|
|
directory as its argument:
|
|
|
|
new_tex_uwletter <directory>
|
|
|
|
Example:
|
|
|
|
new_tex_uwletter my-letter
|
|
|
|
This creates my-letter/ populated with the template files, with the
|
|
main source file renamed to my-letter.tex. Fonts are symlinked from
|
|
the source repository rather than copied, so the repository must
|
|
remain in place.
|
|
|
|
Symlink the script into your PATH with:
|
|
|
|
ln -s ~/tex/uw_tex_letterhead/new_tex_uwletter ~/bin/
|
|
|
|
|
|
Contributing changes
|
|
=======================
|
|
|
|
If you notice issues with this template, please fix them and
|
|
contribute back a patch so others can benefit!
|
|
|
|
The latest version can be found at:
|
|
https://gitea.communitydata.science/mako/uw_tex_letterhead
|
|
|
|
You can clone the repository with:
|
|
|
|
git clone https://gitea.communitydata.science/mako/uw_tex_letterhead.git
|
|
|
|
Patches can be submitted by email to Benjamin Mako Hill:
|
|
|
|
Benjamin Mako Hill <makohill@uw.edu> [work]
|
|
Benjamin Mako Hill <mako@atdot.cc> [personal]
|
|
|
|
|
|
git format-patch origin/master
|
|
git send-email *.patch
|
|
|
|
|
|
Copyright and Usage
|
|
=====================
|
|
|
|
This template was modeled after the Microsoft Word "Matrix" stationery
|
|
template published by UW Brand and Creative Services here:
|
|
|
|
https://www.washington.edu/brand/templates/stationery/
|
|
|
|
It is hopefully obvious that there are many ethical and legal
|
|
restrictions on when one can and cannot (and should or shouldn't) use
|
|
official university letterhead (e.g., it should only be used for
|
|
official communication). If you have any questions, contact UW Brand
|
|
and Creative Services at the link above.
|
|
|
|
This TeX template itself was created by Benjamin Mako Hill and
|
|
Sayamindu Dasgupta. We dedicated the work to the public domain by waiving all of our
|
|
rights to the work worldwide under copyright law, including all
|
|
related and neighboring rights, to the extent allowed by law. You can
|
|
copy, modify, distribute and perform the work, even for commercial
|
|
purposes, all without asking permission.
|
|
|
|
See details here: https://creativecommons.org/publicdomain/zero/1.0/
|
|
|
|
As a result, if you completely remove the UW branding, there are no
|
|
restrictions on how you can use the work in this repository.
|