This repository provides a skeleton on which to prepare course materials, in the same spirit as evanberkowitz/latex-base.
The idea is to store reusable course materials; with all of the specifics for a semester relegated to a subdirectory of semester
.
The assumption is that materials will be prepared via LaTeX, and that most macros will be common to the whole course, put in macros.tex
. To prepare any given assignment, exam, note, or set of slides one need only use make
. Valid obvious examples with the repository as-is include make assignment/00.pdf
, make exam/00.pdf
, make note/greek.pdf
, make note/syllabus.pdf
, make slide/00-unit.pdf
.
Notes are written materials that you distribute to the class. The provided examples are a syllabus and a note on the Greek alphabet. In the Makefile
, notes are specified to be compiled with revtex4-1
, with the options
note/%.pdf: DOCUMENT_CLASS=\documentclass[aps,superscriptaddress,tightenlines,nofootinbib,floatfix,longbibliography,notitlepage]{revtex4-1}
which you can change.
Assignments and exams are prepared with the exam class. The makefile also provides solution targets, compiled with the [answers]
option to the exam class. You compile solutions by just adding -solution
to the PDF target; make assignment/00-solution.pdf
and make exam/00-solution.pdf
, for example.
You can prepare a TeX template for the students to turn in homework, by make assignment/00-template.tex
. This uses latexpand
to make a self-contained document and vim
's multiline regex engine to snip out all of your solutions.
I recommend using assignment and exam documents as simple documents, without too much actual course content. Instead, prepare a set of questions in the questions
directory and use \input
to pull them into the document; \input{question/example}
, for example.
The question
directory can be organized in whatever way you best see fit---all the questions together, organized by topic, up to you.
The idea is to make it easy to accumulate a large question bank over many semesters and remix and reuse questions.
Similarly, in the formula
directory you can prepare pieces of formula sheets, if you want to include one on an exam.
Image files are extremely annoying to verson control. For this reason I tend to use tikz
to prepare simple figures. figure/axes-centered.tex
, figure/axes-trig.tex
and figure/cosine.tex
are provided as examples; I just copy and paste (and then edit) their contents, as needed.
If I need a fancier image that is more easily prepared with other software (such as Mathematica) I commit the script needed to produce the figure, rather than the figure itself. My naming convention is to have the script produce a figure with the same name, but that's not enforced; it's up to you.
I don't usually teach with slides. However, I first used this setup in the spring of 2021, teaching remotely because of the SARS-CoV-2 pandemic. My method was to prepare mostly-empty slides to fill in during lecture. These slides sometimes used detailed figures or just some bare-bones axes that I could write over without worrying about erasing.
As specified in the Makefile
, slides are compiled with
slide/%.pdf: DOCUMENT_CLASS=\documentclass{beamer}\input{slide/macros}
so that the additional slide/macros.tex
gets incorporated first, followed by the standard macros
. In slide/macros.tex
you can change the theme, color scheme, which tikz libraries you need, and things of that nature.
The repo
directory contains a script which produces some git-aware macros. If the repository is clean when triggered, the script colors the information green; red if it is dirty. I try to only distribute documents from a clean state, so that if a student has a question and something is unclear I can open the exact state of the repo that produced that document.
In provides the \commit
command, which is just text, and the \repositoryInformationSetup
command which stamps the left margin with that state of the repo.