This simple LaTeX class file and shortcut package contain document style settings and shortcut commands (respectively). Designed specifically for typesetting solutions to math and computer science problem sets, this homework template is intended to make typing solutions as quick, painless, and visually consistent as possible.
In particular, the class is designed to be consistent with best-practices from the authoritative Elements of Typographic Style by Robert Bringhurst. By default, the text is set in the Palatino typeface, created by the late Hermann Zapf (who worked with Don Knuth to create some of the first digital typefaces for setting mathematics). Palatino (via the mathpazo
package with the osf
option) was chosen specifically because it uses old-style figures for numbers outside of math mode, as opposed to the typical—improper—lining figures, which should ideally be exclusively reserved for setting math. It also contains tasteful small caps for setting the section headers that title each problem. Moreover, Palatino is a splendid face in general.
At the time of this template's release, university classes are primarily being conducted remotely. As such, homework submission and grading are primarily performed digitally. This template includes a number of typographic optimizations that make homework assignments easy to read and grade using online platforms such as Gradescope:
- Header with student information is included on every page for quick reference
- Palatino typeface is optimized for digital reading at various sizes than Computer Modern, the default LaTeX font
- A moderately-sized solution can fit on a single page, set on letter paper
- PDF metadata is automatically included
- Microtype improves numerous typographic aspects of the text to maximize readability and compactness
The included example.tex
utilizes some of the macros included in the class. The generated example.pdf
provides a sample of what a multi-page typeset assignment might look like. An additional example is included below:
- Clone the repository and navigate to the proper directory.
git clone https://github.com/jstrieb/homework-template.git && cd homework-template
- Use the builtin
Makefile
target to try and install the class in a folder accessible to the local TeX distribution.
make install
- If the previous steps did not work, consult the sage wisdom of Stack Exchange for where to install the
.cls
file. In particular, this answer may be helpful.
Instead of using the template with a local tex
installation, it is also possible to use the template with Overleaf/ShareLaTeX.
-
Download the repository as a
zip
file using the green button near the top-right of this page. -
Create a new project on Overleaf/ShareLaTeX and upload the
zip
file there. -
Either create a new
tex
file, or overwrite the contents of theexample.tex
file to typeset your document.
The template is currently in the process of being added to OVerleaf, after which a link will be available that allows for streamlined cloning and use.
Once the installed, using the template is as simple as invoking homework
as the designated document class and including some additional options. For example:
\documentclass[name=Jacob\ Strieb, andrewid=jstrieb, course=69-420, num=8]{homework}
\begin{document}
Content...
\end{document}
The following key-value parameters are accepted by the document class at declaration.
name
(required) – name of the student typing the assignmentnum
(required) – homework assignment numbercourse
(required) – course identifierandrewid
(required) – Andrew IDtype
(optional) – assignment type; defaults to "Homework"emaildomain
(optional) – email address domain to be used with Andrew ID; defaults tocmu.edu
To use the custom math shortcuts, use the hw-shortcuts
package. This package does not take any parameters. The contents of the shortcuts package will likely change significantly over time as I add macros based on what is required for my homework.
\usepackage{hw-shortcuts}