From 1e79d8d0f617359410a3d95acb05a17e8b7359bd Mon Sep 17 00:00:00 2001 From: Benjamin Mako Hill Date: Sun, 26 Apr 2026 12:33:37 -0700 Subject: [PATCH] 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 --- assignment_template/mako-mem.sty | 223 ------------------ assignment_template/text.tex | 82 ------- .../.gitignore | 0 .../Makefile | 2 + memo_template/cdsc-memo.sty | 90 +++++++ memo_template/refs.bib | 14 ++ memo_template/text.tex | 106 +++++++++ 7 files changed, 212 insertions(+), 305 deletions(-) delete mode 100644 assignment_template/mako-mem.sty delete mode 100644 assignment_template/text.tex rename {assignment_template => memo_template}/.gitignore (100%) rename {assignment_template => memo_template}/Makefile (95%) create mode 100644 memo_template/cdsc-memo.sty create mode 100644 memo_template/refs.bib create mode 100644 memo_template/text.tex diff --git a/assignment_template/mako-mem.sty b/assignment_template/mako-mem.sty deleted file mode 100644 index 6f5905f..0000000 --- a/assignment_template/mako-mem.sty +++ /dev/null @@ -1,223 +0,0 @@ -% Some article styles and page layout tweaks for the LaTeX Memoir class. -% -% Copyright 2009 Benjamin Mako Hill -% Copyright 2008-2009 Kieran Healy - -% Distributed as free software under the GNU GPL v3 - -% This file is heavily based on one by Kieran Healy -% available here: http://github.com/kjhealy/latex-custom-kjh/ - -\usepackage{lastpage} - -% blank footnote -% Use \symbolfootnote[0]{Footnote text} for a blank footnote. -% Useful for initial acknowledgment note. -\long\def\symbolfootnote[#1]#2{\begingroup% -\def\thefootnote{\fnsymbol{footnote}}\footnote[#1]{#2}\endgroup} - -% put a period after the section numbers -\setsecnumformat{\csname the#1\endcsname.\enspace} - -% >> article-1 << -\makechapterstyle{article-1}{ - \setsecheadstyle{\large\scshape} - \setsubsecheadstyle{\normalsize\itshape} - \renewcommand{\printchaptername}{} - \renewcommand{\chapternamenum}{} - \renewcommand{\chapnumfont}{\chaptitlefont} - \renewcommand{\printchapternum}{\chapnumfont \thechapter\space} - \renewcommand{\afterchapternum}{} - \renewcommand{\printchaptername}{\secheadstyle} - \renewcommand{\cftchapterfont}{\normalfont} - \renewcommand{\cftchapterpagefont}{\normalfont\scshape} - \renewcommand{\cftchapterpresnum}{\scshape} - \captiontitlefont{\small} - - % turn off chapter numbering - \counterwithout{section}{chapter} - \counterwithout{figure}{chapter} - \counterwithout{table}{chapter} - - % reduce skip after section heading - \setaftersecskip{1.2ex} - - \pretitle{\newline\centering \LARGE\scshape \MakeLowercase } - \posttitle{\par\vskip 1em} - \predate{\footnotesize \centering} - \postdate{\par\vskip 1em} - - % 'abstract' title, bigger skip from title - \renewcommand{\abstractname}{} - \abstractrunin - -% set name of bibliography to 'references' -\renewcommand{\bibname}{References} -} - -% >> article-2 << -\makechapterstyle{article-2}{ - \setsecheadstyle{\large\scshape} - \setsubsecheadstyle{\normalsize\itshape} - \setaftersubsubsecskip{-1em} - \setsubsubsecheadstyle{\bfseries} - \renewcommand{\printchaptername}{} - \renewcommand{\chapternamenum}{} - \renewcommand{\chapnumfont}{\chaptitlefont} - \renewcommand{\printchapternum}{\chapnumfont \thechapter\space} - \renewcommand{\afterchapternum}{} - \renewcommand{\printchaptername}{\secheadstyle} - \renewcommand{\cftchapterfont}{\normalfont} - \renewcommand{\cftchapterpagefont}{\normalfont\scshape} - \renewcommand{\cftchapterpresnum}{\scshape} - \captiontitlefont{\small} - - % turn off chapter numbering - \counterwithout{section}{chapter} - \counterwithout{figure}{chapter} - \counterwithout{table}{chapter} - - % supress chapter numbers - \maxsecnumdepth{chapter} - \setsecnumdepth{chapter} - - % for numbered sections and subsections: - % (a) comment out the above stanza; (b) uncomment the one below - % \maxsecnumdepth{subsection} - % \setsecnumdepth{subsection} - - % reduce skip after section heading - \setaftersecskip{1.7ex} - - % Title flush left - \pretitle{\flushleft\LARGE \itshape} - \posttitle{\par\vskip 0.5em} - \preauthor{\flushleft \large \lineskip 1em} - \postauthor{\par\lineskip 1em} - \predate{\flushleft\footnotesize\vspace{0.65em}} - \postdate{\par\vskip 1em} - - % 'abstract' title, bigger skip from title - \renewcommand{\abstractname}{Abstract:} - \renewcommand{\abstractnamefont}{\normalfont\small\bfseries} - \renewcommand{\abstracttextfont}{\normalfont\small} - \setlength{\absparindent}{0em} - \setlength{\abstitleskip}{-1.5em} - \abstractrunin - - % set name of bibliography to 'references' - \renewcommand{\bibname}{References} -} - - -% >> article-3 << -\makechapterstyle{article-3}{ - \setsecheadstyle{\large\sffamily\bfseries\MakeUppercase} - \setsubsecheadstyle{\normalsize\itshape} - \setaftersubsubsecskip{-1em} - \setsubsubsecheadstyle{\small\bfseries} - \renewcommand{\printchaptername}{} - \renewcommand{\chapternamenum}{} - \renewcommand{\chapnumfont}{\chaptitlefont} - \renewcommand{\printchapternum}{\chapnumfont \thechapter\space} - \renewcommand{\afterchapternum}{} - \renewcommand{\printchaptername}{\secheadstyle} - \renewcommand{\cftchapterfont}{\normalfont} - \renewcommand{\cftchapterpagefont}{\normalfont\scshape} - \renewcommand{\cftchapterpresnum}{\scshape} - \captiontitlefont{\small} - - % turn off chapter numbering - \counterwithout{section}{chapter} - \counterwithout{figure}{chapter} - \counterwithout{table}{chapter} - - % supress chapter numbers - \maxsecnumdepth{chapter} - \setsecnumdepth{chapter} - - % reduce skip after section heading - \setaftersecskip{1pt} - \setbeforesecskip{-1em} - - % 'abstract' title, bigger skip from title - % \renewcommand{\maketitle}{\{\preauthor \theauthor\} \hfill \thetitle} - \renewcommand{\maketitle}{ - {\Large\sffamily\bfseries\MakeUppercase\thetitle} \hfill - {\Large\sffamily\MakeUppercase\theauthor} - \vskip 0.7em} - \renewcommand{\abstractname}{\normalfont\scriptsize\noindent} - \renewcommand{\abstracttextfont}{\normalfont\scriptsize} - \abstractrunin - - % set name of bibliography to 'references' - \renewcommand{\bibname}{References} - - \parindent 0pt - -} - -%%% Custom styles for headers and footers -%%% Basic -\makepagestyle{mako-mem} -%\makeevenfoot{mako-mem}{\thepage}{}{} -%\makeoddfoot{mako-mem}{}{}{\thepage} -%\makeheadrule{mako-mem}{\textwidth}{\normalrulethickness} -\newcommand{\@makomarks}{% - \let\@mkboth\markboth - \def\chaptermark##1{% - \markboth{% - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \thechapter. \ % - \fi - \fi - ##1}{}} - \def\sectionmark##1{% - \markright{##1}} -} -\makepsmarks{mako-mem}{\@makomarks} -\makepsmarks{mako-mem}{} -\makeevenhead{mako-mem}{}{}{\scshape\thepage} -\makeoddhead{mako-mem}{}{}{\scshape\thepage} - -%%% version control info in footers; requires vc package -% Make the style for vc-git revision control headers and footers -\makepagestyle{mako-mem-git} -\newcommand{\@gitmarks}{% - \let\@mkboth\markboth - \def\chaptermark##1{% - \markboth{% - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \thechapter. \ % - \fi - \fi - ##1}{}} - \def\sectionmark##1{% - \markright{##1}} -} -\makepsmarks{mako-mem-git}{\@gitmarks} -\makeevenhead{mako-mem-git}{}{}{\scshape\thepage} -\makeoddhead{mako-mem-git}{}{}{\scshape\thepage} -\makeevenfoot{mako-mem-git}{}{\texttt{\footnotesize{\textcolor{BrickRed}{git revision \VCRevision\ on \VCDateTEX}}}}{} -\makeoddfoot{mako-mem-git}{}{\texttt{\footnotesize \textcolor{BrickRed}{git revision \VCRevision\ on \VCDateTEX}}}{} - -%% Create a command to make a note at the top of the first page describing the -%% publication status of the paper. -\newcommand{\published}[1]{% - \gdef\puB{#1}} - \newcommand{\puB}{} - \renewcommand{\maketitlehooka}{% - \par\noindent\footnotesize \puB} - -\makepagestyle{memo} -\makeevenhead{memo}{}{}{} -\makeoddhead{memo}{}{}{} - -\makeevenfoot{memo}{}{\scshape \thepage/\pageref{LastPage}}{} -\makeoddfoot{memo}{}{\scshape \thepage/\pageref{LastPage}}{} - - -\endinput - diff --git a/assignment_template/text.tex b/assignment_template/text.tex deleted file mode 100644 index 4db2885..0000000 --- a/assignment_template/text.tex +++ /dev/null @@ -1,82 +0,0 @@ -% memoir is currently incompatible with the LaTeX tagged-PDF code, so we -% load just the PDF management layer (for metadata). When memoir support -% lands upstream, swap this block for the commented-out \DocumentMetadata + -% tagpdf lines below. See https://github.com/latex3/tagging-project/issues/910 -\RequirePackage{pdfmanagement-testphase} -\DeclareDocumentMetadata{lang=en-US,pdfversion=2.0} - -% \DocumentMetadata{ -% pdfversion=2.0, -% pdfstandard=ua-2, -% lang=en-US, -% } - -\documentclass[12pt]{memoir} - -% article-1 and article-2 styles were originally based on kieran healy's -% templates -\usepackage{mako-mem} -\chapterstyle{article-2} -% \usepackage{tagpdf} -% \tagpdfsetup{activate-all} - -% with article-3 \chapterstyle, change to: \pagestyle{memo} -\pagestyle{mako-mem} - -\usepackage{fontspec} -\setmainfont{EB Garamond} -\setsansfont{TeX Gyre Heros} - -\usepackage[letterpaper,left=1.65in,right=1.65in,top=1.3in,bottom=1.2in]{geometry} - -% packages i use in essentially every document -\usepackage{graphicx} -\usepackage{enumerate} - -% packages i use in many documents but leave off by default -% \usepackage{amsmath, amsthm, amssymb} -% \usepackage{dcolumn} -% \usepackage{endfloat} - -% import and customize urls -\usepackage[usenames,dvipsnames]{color} -\usepackage[breaklinks]{hyperref} - -\hypersetup{colorlinks=true, linkcolor=Black, citecolor=Black, filecolor=Blue, - urlcolor=Blue, unicode=true, - pdflang={en-US}, - pdfdisplaydoctitle=true} - -% add bibliographic stuff -% memoir function to take out of the space out of the whitespace lists -\firmlists - -% LATEX NOTE: these lines will import vc stuff after running `make vc` which -% will add version control information to the bottom of each page. This can be -% useful for keeping track of which version of a document somebody has: -% \input{vc} -% \pagestyle{mako-mem-git} - -\begin{document} - -\setlength{\parskip}{4.5pt} -% LATEX NOTE: Ideal linespacing is usually said to be between 120-140% the -% typeface size. So, for 12pt (default in this document, we're looking for -% somewhere between a 14.4-17.4pt \baselineskip. Single; 1.5 lines; and Double -% in MSWord are equivalent to ~117%, 175%, and 233%. - -\baselineskip 16pt - -\title{Title} -\author{Nathan TeBlunthuis\\ - \href{mailto:nathante@uw.edu}{nathante@uw.edu}} -\date{\today} - -\maketitle - -\section{Section} - - -\end{document} - -% LocalWords: diff --git a/assignment_template/.gitignore b/memo_template/.gitignore similarity index 100% rename from assignment_template/.gitignore rename to memo_template/.gitignore diff --git a/assignment_template/Makefile b/memo_template/Makefile similarity index 95% rename from assignment_template/Makefile rename to memo_template/Makefile index b9216a6..09e0e7d 100644 --- a/assignment_template/Makefile +++ b/memo_template/Makefile @@ -22,6 +22,8 @@ clean: viewpdf: all evince *.pdf +vc: resources/vc-git + pdf: all .PHONY: clean all diff --git a/memo_template/cdsc-memo.sty b/memo_template/cdsc-memo.sty new file mode 100644 index 0000000..3f7d704 --- /dev/null +++ b/memo_template/cdsc-memo.sty @@ -0,0 +1,90 @@ +% Memo-style page layout for CDSC documents. +% +% Article-class equivalent of the old cdsc-memo chapterstyle that +% lived in cdsc-memoir.sty. Targets the standard `article' class so +% the LaTeX tagging-project can produce tagged, accessible PDFs. +% +% Look-and-feel: sans-serif uppercase title and author on a single +% line, sans-serif uppercase section headings, no paragraph indent, +% and a small-caps "page/total" footer. +% +% Copyright 2009-2026 Benjamin Mako Hill +% Copyright 2008-2009 Kieran Healy + +% Distributed as free software under the GNU GPL v3 + +\usepackage{lastpage} +\usepackage{xcolor} + +%%% Page style: empty header; "page/total" centered in the footer. +\usepackage{fancyhdr} +\setlength{\headheight}{14.5pt} +\addtolength{\topmargin}{-2.5pt} + +\fancypagestyle{cdsc-page-memo}{% + \fancyhf{}% + \fancyfoot[C]{\scshape\thepage/\pageref*{LastPage}}% + \renewcommand{\headrulewidth}{0pt}% +} + +% Variant with git revision info in the footer (requires the vc package). +\fancypagestyle{cdsc-page-memo-git}{% + \fancyhf{}% + \fancyfoot[C]{\texttt{\footnotesize\textcolor{BrickRed}{git revision \VCRevision\ on \VCDateTEX}}}% + \renewcommand{\headrulewidth}{0pt}% +} + +\pagestyle{cdsc-page-memo} + +%%% Section headings: large sans-serif bold uppercase, with the +%%% tight before/after spacing the original memo style used. +\usepackage{titlesec} + +\titleformat{\section} + {\normalsize\sffamily\bfseries\MakeUppercase}{\thesection.}{0.5em}{} +\titlespacing*{\section}{0pt}{*1.5}{1pt} + +\titleformat{\subsection} + {\small\sffamily\bfseries\MakeUppercase}{\thesubsection.}{0.5em}{} +\titlespacing*{\subsection}{0pt}{*1}{1pt} + +\titleformat{\subsubsection}[runin] + {\footnotesize\sffamily\bfseries}{\thesubsubsection.}{0.5em}{}[\hskip 0.5em] + +% By default, suppress section numbering. To enable numbered sections +% and subsections, comment the line below and uncomment the alternative. +\setcounter{secnumdepth}{0} +% \setcounter{secnumdepth}{2} + +%%% Title block: "TITLE [...] AUTHOR" on a single line, no date. +\usepackage{titling} + +\renewcommand{\maketitle}{% + \par\noindent\footnotesize\puB\par + {\large\sffamily\bfseries\MakeUppercase\thetitle}\hfill + {\large\sffamily\MakeUppercase\theauthor}% + \par\vskip 0.7em% +} + +%% \published{...}: a note about publication status, printed in small +%% type at the very top of the title block. +\newcommand{\puB}{} +\newcommand{\published}[1]{\gdef\puB{#1}} + +%%% List spacing +\usepackage{enumitem} +\setlist{topsep=0pt, partopsep=0pt} + +%%% Caption font +\usepackage{caption} +\captionsetup{font=small} + +%%% No paragraph indent (memos use a blank-line paragraph break style). +\setlength{\parindent}{0pt} + +%%% Footnote symbol command (for \thanks{} footnotes that should not +%%% have a numeric mark). Use as \symbolfootnote[0]{Footnote text}. +\long\def\symbolfootnote[#1]#2{\begingroup% + \def\thefootnote{\fnsymbol{footnote}}\footnote[#1]{#2}\endgroup} + +\endinput diff --git a/memo_template/refs.bib b/memo_template/refs.bib new file mode 100644 index 0000000..ca1f7a4 --- /dev/null +++ b/memo_template/refs.bib @@ -0,0 +1,14 @@ +@inproceedings{989866, + author = {Ken Hinckley and Gonzalo Ramos and François + Guimbretiere and Patrick Baudisch and Marc Smith}, + title = {Stitching: pen gestures that span multiple displays}, + booktitle = {AVI '04: Proceedings of the working conference on + Advanced visual interfaces}, + year = {2004}, + isbn = {1-58113-867-9}, + pages = {23--31}, + location = {Gallipoli, Italy}, + doi = {http://doi.acm.org/10.1145/989863.989866}, + publisher = {ACM Press}, + address = {New York, NY, USA}, +} diff --git a/memo_template/text.tex b/memo_template/text.tex new file mode 100644 index 0000000..f5e5f96 --- /dev/null +++ b/memo_template/text.tex @@ -0,0 +1,106 @@ +% Tagged PDF (PDF/UA-2) accessibility setup. The article class works +% with the LaTeX tagging-project, so we use the full \DocumentMetadata +% path here. +\DocumentMetadata{ + pdfversion=2.0, + pdfstandard=ua-2, + lang=en-US, +} + +\documentclass[12pt]{article} + +\usepackage{cdsc-memo} +\usepackage{tagpdf} +\tagpdfsetup{activate-all} + +\usepackage{fontspec} +\setmainfont{EB Garamond} +\setsansfont{TeX Gyre Heros} + +\usepackage[letterpaper,left=1.65in,right=1.65in,top=1.3in,bottom=1.2in]{geometry} + +% packages i use in essentially every document +\usepackage{graphicx} +\usepackage{enumerate} + +% packages i use in many documents but leave off by default +% \usepackage{amsmath, amsthm, amssymb} +% \usepackage{dcolumn} + +% urls and colors +\usepackage[dvipsnames]{xcolor} +\usepackage[breaklinks]{hyperref} + +% pdftitle/pdfauthor populate PDF and XMP metadata; keep these in sync +% with \title{} and \author{} below. UA-2 requires dc:title in XMP. +\hypersetup{colorlinks=true, linkcolor=Black, citecolor=Black, filecolor=Blue, + urlcolor=Blue, unicode=true, + pdftitle={Memo Title}, + pdfauthor={Your Name}, + pdflang={en-US}, + pdfdisplaydoctitle=true} + +% list of footnote symbols for \thanks{} +\makeatletter +\renewcommand*{\@fnsymbol}[1]{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or + \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi}} +\makeatother +\newcommand*\samethanks[1][\value{footnote}]{\footnotemark[#1]} + +% add bibliographic stuff +\usepackage[american]{babel} +\usepackage{csquotes} +\usepackage[natbib=true, style=apa, backend=biber]{biblatex} +\addbibresource{refs.bib} +\DeclareLanguageMapping{american}{american-apa} + +\defbibheading{secbib}[\bibname]{% + \section*{#1}% + \markboth{#1}{#1}% + \baselineskip 14.2pt} + +\def\citepos#1{\citeauthor{#1}'s (\citeyear{#1})} +\def\citespos#1{\citeauthor{#1}' (\citeyear{#1})} + +% LATEX NOTE: these lines will import vc stuff after running `make vc`, +% which adds a git revision footer to each page: +% \input{vc} +% \pagestyle{cdsc-page-memo-git} + +\begin{document} + +\setlength{\parskip}{4.5pt} +\baselineskip 16pt + +\title{Memo Title} +\author{Your Name} + +\maketitle + +\section{Section} + +The quick brown fox jumps over the lazy dog. The quick brown fox jumps +over the lazy dog. The quick brown fox jumps over the lazy dog. The +quick brown fox jumps over the lazy dog. The quick brown fox jumps over +the lazy dog \citep{989866}. + +\section{Another Section} + +The quick brown fox jumps over the lazy dog. The quick brown fox jumps +over the lazy dog. The quick brown fox jumps over the lazy dog. The +quick brown fox jumps over the lazy dog. + +\subsection{A Subsection} + +The quick brown fox jumps over the lazy dog. The quick brown fox jumps +over the lazy dog. + +% bibliography +\setcounter{biburlnumpenalty}{9001} +\printbibliography[title = {References}, heading=secbib] + + +\end{document} + +% LocalWords: