‘Tis the season for academics to be finalizing new syllabi for the upcoming academic year.

Academics do not change syllabi for their courses much from one semester to the next. This is intuitive in political science. For example, my belief about what constitutes core scholarship in inter-state conflict does not budge much. I assign students Maoz and Russett (1993) and Fearon (1995), to name just two examples, in every version of the class I have taught. The next time I teach an upper-division class on the topic, the new batch of students will read the same basic materials.

Experienced professors instead spend more time with monotonous features of the syllabus. Dates for midterms and exams change. Perhaps the university must have a Thursday night football game that leads to a canceled class. The academic conference schedule may adjust a class date here or there.

Put another way, I spend more time staring at the LaTeX code in my syllabus making sure the dates coincide with the reading list for the week and that those square with the academic calendar for the semester than I do anything else about the syllabus. That is time I would rather spend doing anything else.

After doing some digging, I found a way to get LaTeX to automatically generate a template for a reading list that I could easily port from one syllabus to the next, across semesters. I discuss this below and link to a template and code for the syllabus on my GitHub.

This procedure requires two packages in LaTeX that should already be installed if the reader installed everything. advdate will help us automatically advance in days while datetime will help us generate peculiar date formats.

In the preamble of your LaTeX document (i.e. before \begin{document}), place the following code.

\usepackage[mmddyyyy]{datetime}
\usepackage{advdate}
\newdateformat{syldate}{\twodigit{\THEMONTH}/\twodigit{\THEDAY}}
\newsavebox{\MONDAY}\savebox{\MONDAY}{Mon}% Mon

\newcommand{\week}[1]

 \paragraph*{\kern-2ex\quad #1, \syldate{\today} - \AdvanceDate[4]\syldate{\today}:}% Set heading \quad #1
 \ifdim\wd1=\wd\MONDAY
 \AdvanceDate[7]
 \else
 \AdvanceDate[7]
 \fi%
}

Notice that line that begins with \paragraph{? I like paragraph commands in LaTeX to embolden the dates on the reading list and place the subject material of the week next to it. If you want, you can replace \paragraph with \section, though that has some implications for what happens next.

Next, venture to the part of your document where your reading list will be rendered and enter the following.

\SetDate[10/08/2015]
\week{Week 01} Introduction
\week{Week 02} Some Topic
...
\week{Week 15}

The \SetDate command starts a week before the first Monday of the first week of class. If you used \section in lieu of \paragraph, enter the date of the first Monday of the first week of class. I wish I knew why this was, but I think it’s because \paragraph is something akin to a “child” field in LaTeX while \section is akin to a “parent” field. Thus, the “child” field prematurely advances a week.

Enter as many weeks as you wish, as you can see in my example code.

When you’re done, you’ll get a PDF that looks like this.

Code is available on my GitHub.