texlive[50279] Master/texmf-dist: brandeis-problemset (7mar19)

commits+karl at tug.org commits+karl at tug.org
Thu Mar 7 23:25:46 CET 2019


Revision: 50279
          http://tug.org/svn/texlive?view=revision&revision=50279
Author:   karl
Date:     2019-03-07 23:25:45 +0100 (Thu, 07 Mar 2019)
Log Message:
-----------
brandeis-problemset (7mar19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/brandeis-problemset/README.md
    trunk/Master/texmf-dist/doc/latex/brandeis-problemset/brandeis-problemset.pdf
    trunk/Master/texmf-dist/doc/latex/brandeis-problemset/brandeis-problemset.tex
    trunk/Master/texmf-dist/doc/latex/brandeis-problemset/example.pdf
    trunk/Master/texmf-dist/doc/latex/brandeis-problemset/example.tex
    trunk/Master/texmf-dist/tex/latex/brandeis-problemset/brandeis-problemset.cls

Modified: trunk/Master/texmf-dist/doc/latex/brandeis-problemset/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/brandeis-problemset/README.md	2019-03-07 22:25:34 UTC (rev 50278)
+++ trunk/Master/texmf-dist/doc/latex/brandeis-problemset/README.md	2019-03-07 22:25:45 UTC (rev 50279)
@@ -13,4 +13,4 @@
 example.tex                 | Example problem set
 example.pdf                 | Example problem set
 README.md                   | This file
-LICENSE.txt                 | LPPL v1.3c
+LICENSE.txt                 | LPPL 1.3c

Modified: trunk/Master/texmf-dist/doc/latex/brandeis-problemset/brandeis-problemset.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/brandeis-problemset/brandeis-problemset.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/brandeis-problemset/brandeis-problemset.tex	2019-03-07 22:25:34 UTC (rev 50278)
+++ trunk/Master/texmf-dist/doc/latex/brandeis-problemset/brandeis-problemset.tex	2019-03-07 22:25:45 UTC (rev 50279)
@@ -1,16 +1,58 @@
+\PassOptionsToPackage{inline}{enumitem}
 \documentclass{ltxguidex}
+\usepackage{fontspec}
+\usepackage[pseudocode, solution, assembly, tabu]{brandeis-problemset}
+
+\usepackage{xkeyval}
+\usepackage{xparse}
 \usepackage{textcomp} % needed for listings
 \usepackage{hologo} % xetex, etc. logos
 \usepackage{changelog}
 \newcommand{\bps}{\ltxclass{brandeis-problemset}}
 \newcommand{\fontspecok}{\hologo{XeLaTeX} or \hologo{LuaTeX}}
-\newcommand{\cosi}[1]{\textsc{cosi}~#1}
+\newcommand{\unicode}[1]{\textsc{u+#1}}
+\NewDocumentCommand{\cosi}{o m}{\textsc{cosi}~#2\IfValueT{#1}{ (#1)}}
 \newnotice{todo}{To-do}
 
-\usepackage{fontspec}
+\newcommand{\reqopt}[1]{Requires the \texttt{\color{magenta}#1} option.\par}
+\newcommand{\dep}[1]{{\noticestyle Warning:} deprecated since #1.\par}
+\newcommand{\withopt}[1]{\fbox{With the \option{#1} option:}}
+
+\makeatletter
+\renewcommand{\SX at explpreset}{
+	language=[LaTeX]TeX,
+	numbers=none,
+}
+\define at cmdkeys{joinlist}{sep, wrapper}
+\define at cmdkey{joinlist}{last}{\KV at joinlist@oxfordfalse}
+\define at boolkey{joinlist}{oxford}[true]{}
+\define at boolkey{joinlist}{and}[true]{\ifKV at joinlist@and\def\cmdKV at joinlist@last{and}\fi}
+\define at boolkey{joinlist}{or} [true]{\ifKV at joinlist@or \def\cmdKV at joinlist@last{or}\fi}
+\presetkeys{joinlist}{sep={,}, last=and, oxford, wrapper=\relax}{}
+\NewDocumentCommand{\joinlist}{O{} >{\SplitList{,}} m}
+	{{\setkeys{joinlist}{#1}%
+	\newcommand{\joinlist at wrapper}[1]{\item\cmdKV at joinlist@wrapper{##1}}%
+	\begin{itemize*}[
+		label={},
+		itemjoin={\cmdKV at joinlist@sep},
+		itemjoin*={\ifKV at joinlist@oxford\cmdKV at joinlist@sep\ \fi
+			\cmdKV at joinlist@last}]%
+		\ProcessList{#2}{\joinlist at wrapper}%
+	\end{itemize*}}}
+\makeatother
+
+\makeatletter
+\NewDocumentCommand{\withopts}{m}
+	{\fbox{With any of the \joinlist[or, wrapper=\option]{#1} options:}}
+\makeatother
+\newcommand{\onlyclass}{Only available in the \bps\ document class.}
+\newcommand{\optenables}[2]{If \option{#1} is set, then \option{#2} is
+automatically enabled.}
+
 \setmainfont{Tiempos Text}
 \usepackage{FiraSans}
 \usepackage{FiraMono}
+\lstset{basewidth=0.6em}
 
 \lstnewenvironment{latexfile}[1]
 	{\lstset{
@@ -21,7 +63,7 @@
 
 \author{Rebecca Turner\thanks{Brandeis University; \email{rebeccaturner at brandeis.edu}}}
 \title{The \bps\ Document Class}
-\date{2019/02/14 0.4.4}
+\date{2019/03/06 0.5.0}
 \begin{document}
 \maketitle
 \begin{abstract}
@@ -47,12 +89,19 @@
 	\https{github.com/9999years/brandeis-problemset}
 \end{note}
 
+\begin{note}
+	In roughly May 2021 I will graduate from Brandeis University and
+	this package will become unmaintained. Although I'd like the
+	computer science department to adopt this package, I'm not sure any
+	professors have an interest in that maintenance. If you care about
+	the extended future of this package, send some emails!
+\end{note}
+
 \tableofcontents
 \vfill
 \pagebreak
 
 \section{Default behavior}
-
 \bps\ provides packages and well-formatted constructs (notably the
 |problem| environment) for problem-set writers. \bps\ will always render
 its body copy as a Times variant (\ctan{stix} for plain \LaTeX\ or
@@ -61,18 +110,25 @@
 due date).
 
 \subsection{Default packages loaded}
+In general, \bps\ will only load a feature if it's useful in more than one
+class; features like Gantt charts, Scheme code, assembly code, and so on,
+are loaded on demand.
 
 \begin{enumerate}
 \item \ctan{hyperref}, for a nicely-linked table of contents;
 	|\href||{url}{label}|.
-\item \ctan{listings}, for verbatim code listings (including the
-	|assembly|, |java|, and |pseudocode| environments).
-\item \ctan{xcolor}, for gray line numbers in code listings (and perhaps
-	colored listings in the future); e.g.\ |\color||{gray}|.
+\item \ctan{geometry} for page size and margins.
 \item \ctan{enumitem} for better control over the margins and spacing of
 	the |enumerate|, |itemize|, and |description|
 	environments.
-\item Math packages: \begin{enumerate}
+\item \withopts{listings, scheme, pseudocode, assembly}
+\begin{enumerate}
+	\item \ctan{listings}, for verbatim code listings (including the
+		|assembly|, |java|, and |pseudocode| environments).
+	\item \ctan{xcolor}, for colored identifiers, strings, comments, and
+		line numbers in listings; e.g.\ |\color||{gray}|.
+\end{enumerate}
+\item \withopt{math} \begin{enumerate}
 	\item \ctan{amsmath} for tons of useful math commands, including
 		|\text|, |\intertext|, and |\boxed| as well as the |bmatrix|,
 		|multiline|, |gather|, |align|, and
@@ -81,11 +137,14 @@
 		Guide for the \package{amsmath} Package''} for a more
 		complete listing.
 	\item \ctan{mathtools} for other useful/utilitarian commands.
+	\item With \fontspecok, \ctan{unicode-math} to allow equations to be
+		copy-pasted.
+	\item The \ctan{stix2-otf} math fonts.
 \end{enumerate}
-\item Table packages: \begin{enumerate}
+\item \withopt{tabu} \begin{enumerate}
 	\item \ctan{multirow} for cells spanning multiple rows.
-	\item \ctan{booktabs} for good-by-default tables and the |\cline|
-		macro.
+	\item \ctan{booktabs} for beautiful-by-default tables and the
+		|\cline| macro.
 	\item \ctan{tabu}, the best table package with dynamically resizable
 		columns, easy creation of new column types, and more.
 \end{enumerate}
@@ -97,26 +156,79 @@
 
 Class options are limited to configuration options which require the loading
 of fonts or other packages; ``string'' settings like the assignment's due
-date are configured either with the |\problemsetsetup| command or the
-commands described in section~\ref{sss:configcommands}.
+date are configured with the |\bpsset| command.
 
+All class options can be negated with |no<option>|; e.g.\ \option{scheme}
+can be disabled with \option{noscheme}. Later options override previous
+ones.
+
 \begin{keys}
-	\key{gantt} Load packages for the |ganttschedule| environment.
-	\key{scheme} Define the |scheme| language for the \ctan{listings}
-		package as well as the |scheme| shorthand environment.
-	\key{antonella} Use Dr.\ Antonella DiLillio's preferred styles (Courier
-		for code)
-	\key{solutions} Include |solution| environments in compiled
-		document.
+	\key{antonella} \onlyclass\ Use Dr.\ Antonella DiLillio's preferred
+		styles (Courier for code)
+	\key{tabu} \onlyclass\ Loads useful packages and defines commands for
+		typesetting tables.
+	\key{math} \onlyclass\ Loads utilities for typesetting mathematics.
+		Because mathematics requires specialized fonts\footnote{The
+		\textsc{stix2} math font that this package loads weighs in
+		at 740kb!} as well as several other specialized
+		packages,\footnote{Including \ctan{amsmath},
+		\ctan{mathtools}, and, with \fontspecok,
+		\ctan{unicode-math}.} this is disabled by default. Although
+		I find myself needing mathematics fonts frequently, I know
+		many students do not.
+	\key[default=true]{listings} Enables code listings and enables
+		default styles for colored keywords, pretty line numbers,
+		and so on. While only this option enables the |java|
+		environment, the \option{scheme}, \option{assembly}, and
+		\option{pseudocode} options also load and style the
+		\ctan{listings} package.
+	\key{scheme} Enable Scheme language support, in particular for the
+		\textsc{r5rs} dialect. Additionally, provides the |scheme|
+		environment.
+	\key{pseudocode} Enables the |pseudocode| environment, notably
+		useful for \cosi[data structures]{21b}.
+	\key{assembly} Enables the |assembly| environment, notably useful
+		for \cosi[operating systems]{131a}.
+	\key{solution} Show the content of |solution| environments; by
+		default, they are excluded from compilation using the
+		\ctan{comment} package.
+	\key{gantt} Loads the |ganttschedule| environment.
+	\key[default=true]{maketitle} Redefines |\maketitle| and defines
+		|\maketitlepage| to include information about the course,
+		instructor, assignment, and due date.
+		\optenables{maketitle}{option}.
+	\key[default=true]{header} Adds a header to the top of every page including
+		information about the author, assignment, due date, and
+		instructor. \optenables{header}{option}.
+	\key[default=true]{config} Enables document metadata like the
+		assignment's due date, name/number, instructor, and course
+		through the |\bpsset| command, which supports |\maketitle|,
+		page headers, and so on.
 \end{keys}
 
-\subsection{Setting options after loading \bps}
+\subsubsection{Class options or keyval options?}
+There's trade-offs to be made either way; class options greatly simplify the
+code (we don't have to worry about loading packages and defining commands in
+more than one place, for the most part), but are much less flexible and
+difficult to interface with when the package loading is hidden. At the
+moment, package/class options provide commands and keyval options define
+document-configuration data (like names, due dates, and the like; see
+section~\ref{s:config} for more information).
 
+\subsection{Configuring \bps\ after loading}\label{s:config}
 \begin{desc}
-|\problemsetsetup{<options>}|
+|\bpsset{<options>}|
 \end{desc}
-Sets global \bps\ options.
+Sets global \bps\ options. Mnemonic: \textbf{B}randeis \textbf{p}roblem
+\textbf{s}et \textbf{set}up (this should feel familiar to users of the
+\ctan{listings} package).
 
+\begin{note}
+	|\bpsset| was renamed from |\problemsetsetup| in version 0.5.0. The
+	|\problemsetsetup| command is deprecated and will be removed in a
+	future release.
+\end{note}
+
 \begin{keys}
 \key{course}[\m{course name}]
 	Course name in full.
@@ -131,7 +243,8 @@
 	\href{https://en.wikipedia.org/wiki/ISO_8601}{\textsc{iso} 8601
 	dates} are highly recommended.
 \key{instructor}[\m{course instructor}]
-	Course instructor.
+	Course instructor. With the \option{antonella} class-option, this is
+	automatically set to |Dr.~Antonella DiLillio|.
 \key{author}[\m{your name}]
 	Alternate interface for the |\author| command.
 \key{date}[\m{document date}]
@@ -140,37 +253,13 @@
 	With \fontspecok, pass the given font to |\setmonofont| and enable
 	Unicode shortcuts for the |pseudocode| environment. (If you need to
 	specify options to |\setmonofont|, use |\setcodefont|.)
-\key{gantt}[\bool][false]
-	Load packages for the |ganttschedule| environment.
-\key{antonella}[\bool][false]
-	Use Dr.\ Antonella DiLillio's preferred styles (Courier for code)
-\key{solutions}[\bool][false]
-	Include |solution| environments in compiled document.
 \end{keys}
 
-\subsubsection{Configuration commands}%
-\label{sss:configcommands}
-
-\bps\ additionally provides a number of configuration commands for setting a
-single opption with similar interfaces as the \TeX\ macros |\author|,
-|\title|, and |\date|.
-
-\begin{desc}|\duedate{<date>}|\end{desc} Sets the due date in full.
-\begin{desc}|\instructor{<name>}|\end{desc} Sets the instructor name.
-\begin{desc}|\course{<name>}|\end{desc} Sets the course name in full.
-\begin{desc}|\coursenumber{<number>}|\end{desc} Sets the course name by
-	number; e.g. |\coursenumber{21a}| gives a course of ``\cosi{21a}''.
-\begin{desc}|\assignment{<name>}|\end{desc} Sets the assignment name in
-	full.
-\begin{desc}|\problemsetnumber{<number>}|\end{desc} Sets the assignment name
-	by number; e.g. |\problemsetnumber{3}| gives an assignment of
-	``Problem Set 3''.
-
 \begin{desc}
 |\setcodefont[<fontspec options>]{<fontspec font name>}|
 \end{desc}
-Sets the monospaced font to \meta{font name} and uses it for shortcuts in
-the |pseudocode| environment.
+Sets the monospaced font to \meta{fontspec font name} and uses it for
+shortcuts in the |pseudocode| environment.
 
 \subsection{Practical usage}
 
@@ -180,14 +269,18 @@
 files. For instance, \filename{cosi21a.cls} might read:
 
 \begin{latexfile}{cosi21a.cls}
-\LoadClass[antonella]{brandeis-problemset}
+\LoadClass[antonella, pseudocode]{brandeis-problemset}
 
+% pass all unknown options to brandeis-problemset
+\DeclareOption*{\PassOptionsToClass
+	{\CurrentOption}{brandeis-problemset}}
+\ProcessOptions\relax
+
 % set course/author data
-\problemsetsetup{
-	instructor=Dr.\ Antonella DiLillio,
+\bpsset{
 	coursenumber=21a,
+	author=Rebecca Turner,
 }
-\author{Rebecca Turner}
 
 % get a prettier code font -- these can be pretty big so they're not
 % loaded by default
@@ -203,14 +296,18 @@
 \begin{latexfile}{ps1.tex}
 \documentclass{cosi21a}
 % stuff specific to this assignment
-\problemsetnumber{1}
-\duedate{2018-10-29}
+\bpsset{
+	number=1,
+	duedate=2018-10-29,
+}
 \begin{document}
 % etc.
 \end{document}
 \end{latexfile}
 
-See section~\ref{sec:example} for a more complete example.
+Note that you could use e.g.~|\documentclass[math]{cosi21a}| to add a
+specific per-document option. See section~\ref{sec:example} for a more
+complete example.
 
 \section{User commands and environments}
 
@@ -221,7 +318,16 @@
 \end{desc}
 Defines a problem. A problem is set 1~inch from the left margin (although
 this amount may be customized by modifying the |\problemindent| length) and
-begins a new page. |<options>| may include:
+begins a new page.
+
+\begin{note}
+	The |problem| and |subproblem| environments are typeset using
+	|\section| and |\subsection| respectively, and as such can be
+	customized with styling packages like \ctan{titlesec}; note,
+	however, that they ignore and hide the usual section counters.
+\end{note}
+
+|<options>| may include:
 \begin{keys}
 \key{title}[\m{problem title}]
 	Displayed after ``Problem'' and the problem's number.
@@ -234,6 +340,8 @@
 	Adds a custom label to the problem with |\label| that can be used
 	with |\ref|. I recommend prefixing your problem labels with |p:| as
 	in |p:big-o-proofs|.
+\key{toc}[\bool][true]
+	Include this problem in the table of contents?
 \key{part}[\m{part name}]
 	Indicates that this problem starts a new ``part'' of the assignment;
 	actually calls |\part| under the hood.
@@ -245,6 +353,41 @@
 Vertical material is allowed in a~|problem|.
 
 \begin{desc}
+|\begin{subproblem}[<options>]...\end{subproblem}|
+\end{desc}
+Defines a subproblem. A subproblem is set 1~inch from the left margin
+(although this amount may be customized by modifying the |\subproblemindent|
+length) and begins a new page. Valid |<options>| are identical to the
+|problem| environment's, with the following exceptions:
+\begin{keys}
+\key[default=false]{pagebreak}
+	False by default.
+\key{part}
+\key{partlabel}
+	Not available in the |subproblem| environment.
+\end{keys}
+
+\begin{example}
+	Note that although these examples are too short to display them,
+	vertical material --- including listings --- is allowed in the
+	|problem| and |subproblem| environments.
+\end{example}
+\begin{LTXexample}[preset={
+	\presetkeys{problem}{toc=false}{}
+	\presetkeys{subproblem}{toc=false}{}
+	}]
+\begin{problem}
+  This is a problem in an assignment.
+\end{problem}
+
+Some solution here\dots
+
+\begin{subproblem}
+  This is a subproblem.
+\end{subproblem}
+\end{LTXexample}
+
+\begin{desc}
 |\begin{solution}...\end{solution}|
 \end{desc}
 
@@ -260,11 +403,16 @@
 	|\solutionstyle|; it's defined to |\color{blue}| by default.
 \end{note}
 
-\begin{desc}
-|\subproblem[<problem description>]|
-\end{desc}
-Prints a sub-problem, i.e.\ a |\subsection|. It doesn't do very much at the
-moment.
+\begin{example}
+	The default solution style is shown below; note, however, that this
+	document is compiled with the \option{solution} option passed to
+	\bps; without it, the typeset solution is entirely blank.
+\end{example}
+\begin{LTXexample}
+\begin{solution}
+  Some solution here\dots
+\end{solution}
+\end{LTXexample}
 
 \begin{desc}
 |\Th[<column spec>]{<header text>}|
@@ -271,8 +419,18 @@
 \end{desc}
 
 Typesets a table header in bold-face. |<column spec>| defaults to |l|.
-Useful for when a column is wrapped in a math environment.
+Useful for when a column is wrapped in a math environment; if you have a
+column |>>{\ttfamily}l|, using |\Th| will not print the header in
+|\ttfamily|.
 
+\begin{LTXexample}
+\begin{tabular}{ll}
+\Th{Server} & \Th{\textsc{ip}} \\
+juice & 1.1.1.1 \\
+dogs & 2.2.2.2 \\
+\end{tabular}
+\end{LTXexample}
+
 \begin{desc}
 |\begin{pseudocode}[<keywords>]...\end{pseudocode}|
 \end{desc}
@@ -280,7 +438,7 @@
 Antonella DiLillo}
 
 Several ``shortcuts,'' which replace a source-code sequence like
-\texttt{->} with a symbol like $\rightarrow$, are shown in
+\texttt{->} with a symbol like \texttt{→}, are shown in
 table~\ref{tab:pseudocode}.
 
 These shortcuts display in |\pseudocodesymbolfont| (default:
@@ -290,46 +448,43 @@
 \ctan{lm-math} and display the symbols seen in table~\ref{tab:pseudocode},
 which look significantly better with Courier than \ctan{stix}' symbols.
 
+The following words are treated as keywords in pseudocode, and will be
+bolded as appropriate: |Input|, |Output|, |Complexity|, |while|, |do|,
+|return|, |for|, |to|, |if|, |then|, |else|, |True|, |False|, |None|, |and|,
+|or|, |nil|, and |len|.
+
 \begin{table}[h]
 	\centering
 	\caption{Shortcuts provided by the \texttt{pseudocode}
 	environment}%
 	\label{tab:pseudocode}
-	\begin{tabular}{lll}
-	\Th{Input}    & \Th{Display}  & \Th{Codepoint} \\
-	\ttfamily <-  & $\leftarrow$  & U+2190 \\
-	\ttfamily ->  & $\rightarrow$ & U+2192 \\
-	\ttfamily (/) & $\emptyset$   & U+2205 \\
-	\ttfamily inf & $\infty$      & U+221E \\
-	\ttfamily !=  & $\ne$         & U+2260 \\
-	\ttfamily >=  & $\ge$         & U+2265 \\
-	\ttfamily <=  & $\le$         & U+2264 \\
+	\begin{tabular}{llll}
+	\Th{Input}    & \Th{Command}            & \Th{Display}          & \Th{Codepoint} \\
+	\ttfamily <-  & |\pseudocodeleftarrow|  & \pseudocodeleftarrow  & \unicode{2190} \\
+	\ttfamily ->  & |\pseudocoderightarrow| & \pseudocoderightarrow & \unicode{2192} \\
+	\ttfamily (/) & |\pseudocodeemptyset|   & \pseudocodeemptyset   & \unicode{2205} \\
+	\ttfamily inf & |\pseudocodeinfty|      & \pseudocodeinfty      & \unicode{221e} \\
+	\ttfamily !=  & |\pseudocodene|         & \pseudocodene         & \unicode{2260} \\
+	\ttfamily >=  & |\pseudocodege|         & \pseudocodege         & \unicode{2265} \\
+	\ttfamily <=  & |\pseudocodele|         & \pseudocodele         & \unicode{2264} \\
 	\end{tabular}
 \end{table}
 
-\begin{todo}
-	Improve the font selection mechanism; maybe provide a command for
-	each symbol?
-\end{todo}
-
-\begin{todo}
-	If your \TeX\ engine doesn't support \textsc{utf}-8 input, the
-	shortcuts might appear totally blank or garbled. Good luck! It will
-	surely work with \fontspecok.
-\end{todo}
-
-\begin{latexcode}
-% the optional [Bar] makes [Bar] bold like the other keywords
+\begin{example}
+	Note how the option |[Bar]| argument makes |Bar| appear bold like
+	any other keyword in the typeset listing.
+\end{example}
+\begin{LTXexample}[rframe=]
 \begin{pseudocode}[Bar]
 Bar(a, n)
     Input:  two integers, a and n
     Output: a^n
-    k <- n # k is a counter
-    b <- 1
+    k <- n  # k is a counter
+    b <- inf
     c <- a
-    while k > 0 do
+    while k >= 0 do
         if k mod 2 = 0 then
-            k <- k/2
+            k <- k / 2
             c <- c * c
         else
             k <- k - 1
@@ -336,7 +491,7 @@
             b <- b * c
     return b
 \end{pseudocode}
-\end{latexcode}
+\end{LTXexample}
 
 \begin{desc}
 |\begin{assembly}[<listings options>]...\end{assembly}|
@@ -350,23 +505,27 @@
 
 |<listings options>| is passed directly to the \ctan{listings} package.
 
-\begin{latexcode}
+\begin{LTXexample}[rframe=, wide,
+	explpreset={basicstyle=\small\ttfamily, basewidth=0.575em,},
+	preset=\lstset{numbers=left, basicstyle=\small\ttfamily, basewidth=0.575em,},]
 \begin{assembly}
-        LOAD  R4, $200       ; sum addr
-        LOAD  R1, =0         ; sum
-        LOAD  R2, =0         ; i
-        LOAD  R3, =0         ; j
-        BR    OUTER          ; we know i < 10
-INNER:  ADD   R1, R3         ; sum += j
-        INC   R3             ; j++
-OUTER:  BLT   R3, R2, INNER  ; while j < i goto inner
-        INC   R2             ; i++
-        LOAD  R3, =0         ; j = 0
-        BLT   R2, =10, OUTER ; while i < 10
-        STORE R1, @R4        ; store sum into sum address
-        HALT
+LOAD  R4, $200       ; sum addr
+LOAD  R1, =0         ; sum
+LOAD  R2, =0         ; i
+LOAD  R3, =0         ; j
+BR    OUTER          ; we know i < 10
+INNER:
+ADD   R1, R3         ; sum += j
+INC   R3             ; j++
+OUTER:
+BLT   R3, R2, INNER  ; while j < i goto inner
+INC   R2             ; i++
+LOAD  R3, =0         ; j = 0
+BLT   R2, =10, OUTER ; while i < 10 goto outer
+STORE R1, @R4        ; store sum
+HALT
 \end{assembly}
-\end{latexcode}
+\end{LTXexample}
 
 \begin{desc}
 |\begin{java}[<listings options>]...\end{java}|
@@ -407,13 +566,19 @@
 \end{desc}
 Draw a burst for process |<pid>| of time length |<burst length>|.
 
+\begin{note}
+	The Gantt chart packages (notably \ctan{tikz}) don't play nicely
+	with \ctan{ltxguidex}, the package this documentation is written in;
+	for a typeset example, see section~\ref{sec:example}.
+\end{note}
+
 \begin{latexcode}
 \begin{ganttschedule}{19}
-	\burst{2}{1}
-	\burst{4}{1}
-	\burst{3}{2}
-	\burst{5}{5}
-	\burst{1}{10}
+	\pid{2}{1}
+	\pid{4}{1}
+	\pid{3}{2}
+	\pid{5}{5}
+	\pid{1}{10}
 \end{ganttschedule}
 \end{latexcode}
 
@@ -422,7 +587,7 @@
 	\ctan{calc}, it can add significantly to document compile times. If
 	you intend to use the |ganttschedule| environment, make sure to use
 	the \option{gantt} class option or set \option{gantt} in
-	|\problemsetsetup|. If you fail to include the \option{gantt}
+	|\bpsset|. If you fail to include the \option{gantt}
 	option, you will see an error message:
 
 \begin{latexcode}
@@ -441,6 +606,26 @@
 \subsection{General formatting commands}
 
 \begin{desc}
+|\newacronym[<command>]{<acronym text>}|\\
+|\newacronyms{<acronym list>}|
+\end{desc}
+
+Creates a new acronym. If |<command>| isn't given, the text of the macro
+will be used instead; |\newacronym{cfg}| would define a command |\cfg| which
+typesets as ``\ac{cfg}''. If the
+resulting command already exists, it will be redefined. For |\newacronyms|, the
+|<acronym list>| is a comma-delimited list of acronyms.
+
+\begin{LTXexample}
+\newacronym[\xyz]{cfg}
+A \xyz\ describes a context-free language\dots
+
+\newacronyms{sparc, cpu}
+The \sparc\ had a unique \cpu\dots
+\end{LTXexample}
+
+
+\begin{desc}
 |\ac{<acronym>}|
 \end{desc}
 Typesets an acronym. The |<acronym>| should be lowercase (e.g.\ |\ac{cpu}|
@@ -463,6 +648,13 @@
 \begin{desc}|\Tt{<text>}|\end{desc}
 An abbreviation for |\texttt|.
 
+\section{A class and a package}
+As a user, you'll likely only need the \bps\ document class. However,
+a \emph{package} named \bps\ is also provided. The class styles an entire
+document, while the package only provides commands. This allows --- for
+example --- loading the package for the examples in this document without
+messing up our titles, headers, and so on.
+
 \section{Example}\label{sec:example}
 
 A brief example usage of \bps\ follows. For a longer, more in-depth example,
@@ -473,7 +665,7 @@
 \begin{latexcode}
 \documentclass[gantt]{brandeis-problemset}
 \author{Rebecca Turner}
-\problemsetsetup{
+\bpsset{
 	coursenumber=21a,
 	instructor=Dr.\ Liuba Shrira,
 	duedate=2018-10-20,
@@ -531,16 +723,59 @@
 \end{problem}
 
 \begin{ganttschedule}{19}
-	\burst{2}{1}
-	\burst{4}{1}
-	\burst{3}{2}
-	\burst{5}{5}
-	\burst{1}{10}
+	\pid{2}{1}
+	\pid{4}{1}
+	\pid{3}{2}
+	\pid{5}{5}
+	\pid{1}{10}
 \end{ganttschedule}
 \end{document}
 \end{latexcode}
 
 \begin{changelog}[author=Rebecca Turner]
+\begin{version}[v=Coming soon\dots]
+\added
+	\item Support for \cosi{130b}, including regular expressions and
+	context-free grammars.
+\end{version}
+
+\begin{version}[v=0.5.0, date=2019-03-06]
+\added
+	\item |\newacronym| and |\newacronyms| commands.
+	\item Added \option{toc} option to the |problem| and |subproblem|
+	environments.
+\changed
+	\item Cleaned up internals; improved option system, split \bps\ into
+	a class and a package, renamed commands and lengths to use the
+	|bps@| prefix more consistently.
+	\item \bps\ now has a modular and much more conservative approach;
+	far fewer packages are loaded and features are loaded only upon
+	request to a much greater extent.
+	\item |subproblem| is now an environment, not a command, with an
+	interface matching the |problem| environment.
+	\item The \option{assembly} and \option{pseudocode} options now
+	define languages for the \ctan{listings} package, rather than just
+	providing environments to use the languages.
+\removed
+	\item The following commands have been removed in favor of the
+		|\bpsset| command, which encompasses their functionality
+		entirely:
+		|\duedate{<date>}|,
+		|\instructor{<name>}|,
+		|\course{<name>}|,
+		|\coursenumber{<number>}|,
+		|\assignment{<name>}|, and
+		|\problemsetnumber{<number>}|.
+	\item Removed dependencies: \ctan{environ} and \ctan{titlesec}. No
+		longer unconditionally loaded: \ctan{hyperref},
+		\ctan{xcolor}, \ctan{comment}, \ctan{listings},
+		\ctan{multirow}, \ctan{booktabs}, \ctan{longtable},
+		\ctan{tabu}.
+\deprecated
+	\item The |\problemsetsetup| command, which has been renamed
+		|\bpsset|.
+\end{version}
+
 \begin{version}[v=0.4.4, date=2019-02-14]
 \changed
 	\item Changed Times body copy font from \ctan{tex-gyre}'s Termes to

Modified: trunk/Master/texmf-dist/doc/latex/brandeis-problemset/example.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/brandeis-problemset/example.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/brandeis-problemset/example.tex	2019-03-07 22:25:34 UTC (rev 50278)
+++ trunk/Master/texmf-dist/doc/latex/brandeis-problemset/example.tex	2019-03-07 22:25:45 UTC (rev 50279)
@@ -1,23 +1,39 @@
-\documentclass[gantt, scheme]{brandeis-problemset}
-\author{Rebecca Turner}
-\problemsetsetup{
+\documentclass[
+	gantt,
+	scheme,
+	assembly,
+	math,
+	pseudocode,
+	tabu
+]{brandeis-problemset}
+\bpsset{
 	coursenumber=21a,
+	author=Rebecca Turner,
 	instructor=Dr.\ Liuba Shrira,
 	duedate=2018-10-20,
 	number=3,
 }
-\newcommand{\io}{\ac{io}}
-\newcommand{\cpu}{\ac{cpu}}
+\newacronyms{io, cpu}
 \begin{document}
-
 \maketitle
 
-\Bf{Note:} This example document is provided for illustrative purposes. The
-solutions below are not guaranteed to be correct, complete, or relevant.
+\Bf{Note:} This example document is provided to demonstrate the capability
+and visual style of the
+\href{https://ctan.org/pkg/brandeis-problemset}{\Tt{brandeis-problemset}}
+document class. The solutions below are not guaranteed to be correct,
+complete, or relevant.
 
+The source code for this document is available at
+\begin{quote}
+	\href{http://mirrors.ctan.org/macros/latex/contrib/brandeis-problemset/example.tex}{\Tt{/macros/latex/contrib/brandeis-problemset/example.tex}}
+\end{quote}
+on \href{https://ctan.org/}{\textsc{ctan}} (or, if you have
+\Tt{brandeis-problemset} installed, in your \TeX\ distribution's
+documentation directory).
+
 \tableofcontents
 
-\begin{problem}[part]
+\begin{problem}[part=Textbook problems]
 	An assembly language program implements the following loop:
 
 \begin{lstlisting}[language=c]
@@ -104,7 +120,8 @@
 
 An example equation which defines $e$:
 \begin{equation}
-	\exists! e \in \Re \left(\int_1^e \frac{1}{t} dt = 1\right).
+	\exists! e \in \Re \text{ such that }
+	\int_1^e \frac{1}{t} dt = 1.
 \end{equation}
 
 The definition of the Mandelbrot set:

Modified: trunk/Master/texmf-dist/tex/latex/brandeis-problemset/brandeis-problemset.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/brandeis-problemset/brandeis-problemset.cls	2019-03-07 22:25:34 UTC (rev 50278)
+++ trunk/Master/texmf-dist/tex/latex/brandeis-problemset/brandeis-problemset.cls	2019-03-07 22:25:45 UTC (rev 50279)
@@ -1,4 +1,6 @@
-\ProvidesClass{brandeis-problemset}[2019/02/14 0.4.4 COSI Problem sets at Brandeis University]
+\ProvidesClass{brandeis-problemset}[2019/03/06 0.5.0 COSI problem sets at
+	Brandeis University]
+\NeedsTeXFormat{LaTeX2e}
 % Description: A document class for Brandeis University's computer science
 %              courses' problem sets
 % Homepage:    https://github.com/9999years/brandeis-problemset
@@ -8,88 +10,92 @@
 % Copyright 2019 Rebecca Turner
 %
 % This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
+% conditions of the LaTeX Project Public License, either version 1.3c
 % of this license or (at your option) any later version.
 % The latest version of this license is in
 %   http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
+% and version 1.3c or later is part of all distributions of LaTeX
 % version 2005/12/01 or later.
 %
-% This work has the LPPL maintenance status `maintained'.
+% This work has the LPPL maintenance status `maintained'. On 2021-05-01 (May
+% 1st), this work will have the LPPL maintenance status `unmaintained'.
 %
 % The Current Maintainer of this work is Rebecca Turner.
 
-\errorcontextlines 10
+\RequirePackage{xparse}
+\RequirePackage{kvoptions}
 
-\PassOptionsToClass{12pt}{article}
-\LoadClass{article}
+\SetupKeyvalOptions{
+	family=bps,
+	prefix=bps@,
+}
 
-\RequirePackage{xparse}
+% passes an option to rebeccastyle
+\newcommand{\bps at passoption}[1]
+	{\DeclareVoidOption{#1}{%
+		\PassOptionsToPackage{\CurrentOption}{brandeis-problemset}%
+	}}
 
-\newif\iffontspec at ok
-\fontspec at okfalse
-\ExplSyntaxOn
-\sys_if_engine_luatex:T
-{
-	\fontspec at oktrue
+% pass a comma-list of options
+\NewDocumentCommand{\bps at passoptions}{>{\SplitList{,}} m}
+	{\ProcessList{#1}{\bps at passoption}}
+
+\bps at passoptions{
+	scheme,     noscheme,
+	pseudocode, nopseudocode,
+	assembly,   noassembly,
+	gantt,      nogantt,
+	solution,   nosolution,
+	tabu,       notabu,
+	maketitle,  nomaketitle,
+	header,     noheader,
+	listings,   nolistings,
+	config,     noconfig,
 }
-\sys_if_engine_xetex:T
-{
-	\fontspec at oktrue
-}
-\ExplSyntaxOff
 
-% pages
-\PassOptionsToPackage{
-	letterpaper,
-	margin=1.25in,
-	tmargin=1.5in,
-	bmargin=1.5in,
-}{geometry}
+\NewDocumentCommand{\bps at comploption}{O{false} m}{%
+	\DeclareBoolOption[#1]{#2}%
+	\DeclareComplementaryOption{no#2}{#2}}
 
-\PassOptionsToPackage{
-	warnings-off={mathtools-colon,mathtools-overbracket}
-}{unicode-math}
+\bps at comploption{antonella}
+\bps at comploption{math}
 
-% utility
-\RequirePackage{xkeyval}
-\RequirePackage{environ}
-\RequirePackage{geometry}
-\RequirePackage{changepage} % for adjustwidth env
+\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessKeyvalOptions*
 
+\let\bps at comploption\relax
+\let\bps at passoption\relax
+\let\bps at passoptions\relax
+
+\LoadClass[12pt]{article}
+
+\RequirePackage[
+	maketitle,
+	header,
+	listings,
+]{brandeis-problemset}
+
+% tables
+\ifbps at tabu
+	\RequirePackage{multirow}
+	\RequirePackage{booktabs}
+	\RequirePackage{longtable}
+	\RequirePackage{tabu}
+\fi
+
 % formatting
-\RequirePackage{hyperref}
-\RequirePackage{xcolor}
-\RequirePackage{comment}
-\RequirePackage{listings}
-\RequirePackage{fancyhdr}
 \RequirePackage{enumitem}
-\RequirePackage{titlesec}
 \RequirePackage{titletoc}
 
-% tables
-\RequirePackage{multirow}
-\RequirePackage{booktabs}
-\RequirePackage{longtable}
-\RequirePackage{tabu}
+% utility
+\RequirePackage{hyperref}
+\RequirePackage[
+	letterpaper,
+	margin=1.25in,
+	tmargin=1.5in,
+	bmargin=1.5in,
+]{geometry}
 
-% package options
-\RequirePackage{kvoptions}
-\SetupKeyvalOptions{
-	family=problemset,
-	prefix=problemset@,
-}
-\DeclareBoolOption{antonella}
-\DeclareBoolOption{scheme}
-\DeclareBoolOption{gantt}
-\DeclareBoolOption{solutions}
-\ProcessKeyvalOptions*
-
-\newif\ifpseudocode at loaded
-\newif\ifpseudocode at unicode
-% pseudocode commands
-\let\pseudocodesymbolfont\ttfamily
-
 % fonts
 % NOTE: The order these packages are loaded in is very important.
 % - unicode-math overwrites a bunch of commands, so should be loaded after
@@ -99,9 +105,15 @@
 %   just load the stix2 fonts without the stix2 package itself, so we load
 %   amsmath before unicode-math (and the stix2 fonts)
 \iffontspec at ok
-	\RequirePackage{amsmath}[2013/01/14]
-	% unicode-math makes equations copy/pastable in pdf output
-	\RequirePackage{unicode-math}
+	\ifbps at math
+		\RequirePackage{amsmath}[2013/01/14]
+		% unicode-math makes equations copy/pastable in pdf output
+		\RequirePackage[
+			warnings-off={mathtools-colon,mathtools-overbracket}
+		]{unicode-math}
+	\else
+		\RequirePackage{fontspec}
+	\fi
 	\setmainfont[
 		Extension      = .otf,
 		UprightFont    = *-Regular,
@@ -109,234 +121,47 @@
 		ItalicFont     = *-Italic,
 		BoldItalicFont = *-BoldItalic,
 	]{STIX2Text}
-	\setmathfont[
-		Extension = .otf,
-		StylisticSet={
-			1, % better caligraphic forms
-			8, % upright integrals
-		},
-	]{STIX2Math}
+	\ifbps at math
+		\setmathfont[
+			Extension = .otf,
+			StylisticSet={
+				1, % better caligraphic forms
+				8, % upright integrals
+			},
+		]{STIX2Math}
+	\fi
+	\newcommand{\setcodefont}[2][]{%
+		% don't fail if fontspec isn't loaded
+		\@ifundefined{setmonofont}{}{%
+			\let\pseudocodesymbolfont\ttfamily
+			\setmonofont[#1]{#2}%
+		}%
+	}
 \else
-	\RequirePackage[upint]{stix2}
-	\RequirePackage{amsmath}[2013/01/14]
+	\ifbps at math
+		\RequirePackage[upint]{stix2}
+		\RequirePackage{amsmath}[2013/01/14]
+	\fi
 \fi
 
 % math
-\RequirePackage{mathtools}
+\ifbps at math
+	\RequirePackage{mathtools}
 
-% for whatever reason, redefining this here has no effect
-\AtBeginDocument{\renewcommand{\Re}{\mathbb{R}}}
-
-\ifproblemset at scheme
-	% Language definition by Rebecca Turner and Andreas Stuhlmüller.
-	\lstdefinelanguage[R5RS]{Scheme}{
-		morekeywords={*,/,<=,<,=>,=,>=,>,+,-,%
-			% ``These procedures are compositions of car and cdr \dots\
-			% Arbitrary compositions, up to four deep, are provided. There are
-			% twenty-eight of these procedures in all.'' (6.3.2)
-			car,cbr,caar,cabr,cbar,cbbr,caaar,caabr,cabar,cabbr,cbaar,%
-			cbabr,cbbar,cbbbr,caaaar,caaabr,caabar,caabbr,cabaar,cababr,%
-			cabbar,cabbbr,cbaaar,cbaabr,cbabar,cbabbr,cbbaar,cbbabr,cbbbar,%
-			cbbbbr,%
-			% Define the rest of the primitives, from R5RS'
-			% \href{https://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-15.html#%_chap_Temp_11}{``Alphabetic
-			% Index of Definitions of Concepts, Keywords, and Procedures''}
-			abs,acos,and,angle,append,apply,asin,assoc,%
-			assq,assv,atan,begin,boolean?,%
-			call-with-current-continuation,call-with-input-file,%
-			call-with-output-file,call-with-values,case,%
-			ceiling,char->integer,char-alphabetic?,char-ci<=?,char-ci<?,%
-			char-ci=?,char-ci>=?,char-ci>?,char-downcase,char-lower-case?,%
-			char-numeric?,char-ready?,char-upcase,char-upper-case?,%
-			char-whitespace?,char<=?,char<?,char=?,char>=?,char>?,char?,%
-			close-input-port,close-output-port,complex?,cond,cons,cos,%
-			current-input-port,current-output-port,define,define-syntax,delay,%
-			denominator,display,do,dynamic-wind,else,eof-object?,eq?,%
-			equal?,eqv?,eval,even?,exact->inexact,exact?,exp,expt,floor,%
-			for-each,force,gcd,if,imag-part,inexact->exact,inexact?,%
-			input-port?,integer->char,integer?,interaction-environment,lambda,%
-			lcm,length,let,let*,let-syntax,letrec,letrec-syntax,list,%
-			list->string,list->vector,list-ref,list-tail,list?,load,log,%
-			magnitude,make-polar,make-rectangular,make-string,make-vector,%
-			map,max,member,memq,memv,min,modulo,negative?,newline,not,%
-			null-environment,null?,number->string,number?,numerator,odd?,%
-			open-input-file,open-output-file,or,output-port?,pair?,peek-char,%
-			port?,positive?,procedure?,quasiquote,quote,quotient,rational?,%
-			rationalize,read,read-char,real-part,real?,remainder,reverse,%
-			round,scheme-report-environment,set!,set-car!,set-cdr!,setcar,%
-			sin,sqrt,string,string->list,string->number,string->symbol,%
-			string-append,string-ci<=?,string-ci<?,string-ci=?,string-ci>=?,%
-			string-ci>?,string-copy,string-fill!,string-length,string-ref,%
-			string-set!,string<=?,string<?,string=?,string>=?,string>?,%
-			string?,substring,symbol->string,symbol?,syntax-rules,tan,%
-			transcript-off,transcript-on,truncate,values,vector,vector->list,%
-			vector-fill!,vector-length,vector-ref,vector-set!,vector?,%
-			with-input-from-file,with-output-to-file,write,write-char,zero?},
-		otherkeywords={\#b,\#o,\#d,\#x,\#e,\#i,\#t,\#f,%
-			',`,{,},\,\@,...},
-		alsoletter={!\$\%&*/:<=>?@^_~+-},
-		alsodigit={.},
-		sensitive=true,
-		morecomment=[l]{;},
-		morecomment=[s]{\#|}{|\#},
-		morestring=[b]",
-		upquote=true,
-		literate=*{`}{{`}}{1}
-	}[keywords,comments,strings]
-	\lstset{
-		defaultdialect=[R5RS]Scheme
-	}
-	\lstnewenvironment{scheme}[1][]
-		{\lstset{language=Scheme, #1}}
-		{}
+	% for whatever reason, redefining this before the \begin{document}
+	% has no effect
+	\AtBeginDocument{\renewcommand{\Re}{\mathbb{R}}}
 \fi
 
-\newcommand{\@antonella}{%
-	\ifproblemset at antonella
-		\instructor{Dr.\ Antonella DiLillio}
-		\iffontspec at ok
-			\setmonofont{Courier New}%
-		\else
-			\RequirePackage{couriers}% package courier-scaled
-		\fi
-	\fi
-}
-\AtBeginDocument{\@antonella}
-
-% lazily loads pseudocode environment
-\newcommand{\ensure at pseudocode}{%
-	\ifpseudocode at loaded
+\ifbps at antonella
+	\instructor{Dr.~Antonella DiLillio}
+	\iffontspec at ok
+		\setmonofont{Courier New}%
 	\else
-		\iffontspec at ok
-			% use unicode shortcuts
-			\ProvideDocumentCommand{\pseudocodeleftarrow} {}{\pseudocodesymbolfont ←}
-			\ProvideDocumentCommand{\pseudocoderightarrow}{}{\pseudocodesymbolfont →}
-			\ProvideDocumentCommand{\pseudocodele}        {}{\pseudocodesymbolfont ≤}
-			\ProvideDocumentCommand{\pseudocodege}        {}{\pseudocodesymbolfont ≥}
-			\ProvideDocumentCommand{\pseudocodeemptyset}  {}{\pseudocodesymbolfont ∅}
-			\ProvideDocumentCommand{\pseudocodene}        {}{\pseudocodesymbolfont ≠}
-			\ProvideDocumentCommand{\pseudocodeinfty}     {}{\pseudocodesymbolfont ∞}
-			\let\lmmath\undefined% ensure no '\lmmath already defined' errors
-			\newfontface{\lmmath}{latinmodern-math.otf}%
-			\let\pseudocodesymbolfont\lmmath
-		\else
-			% use math-mode fallbacks
-			\ProvideDocumentCommand{\pseudocodeleftarrow} {}{\ensuremath{\leftarrow}}
-			\ProvideDocumentCommand{\pseudocoderightarrow}{}{\ensuremath{\rightarrow}}
-			\ProvideDocumentCommand{\pseudocodele}        {}{\ensuremath{\le}}
-			\ProvideDocumentCommand{\pseudocodege}        {}{\ensuremath{\ge}}
-			\ProvideDocumentCommand{\pseudocodeemptyset}  {}{\ensuremath{\emptyset}}
-			\ProvideDocumentCommand{\pseudocodene}        {}{\ensuremath{\ne}}
-			\ProvideDocumentCommand{\pseudocodeinfty}     {}{\ensuremath{\infty}}
-		\fi
-		\pseudocode at loadedtrue
+		\RequirePackage{couriers}% package courier-scaled
 	\fi
-}
+\fi
 
-% loads the ganttschedule environment dependencies
-\newif\ifgantt at loaded
-\newcommand{\ensure at gantt}
-	{\ifgantt at loaded
-	\else
-		\RequirePackage{tikz}
-		\RequirePackage{fp}
-		\RequirePackage{calc}
-		\newcounter{@gantt at time}
-		\newcounter{gantt at time@after}
-		\newlength{\gantt at unit}
-		\gantt at loadedtrue
-	\fi}
-\newcommand{\@loadgantt}
-	{\ifproblemset at gantt
-		\ensure at gantt
-	\fi}
-% if 'gantt' package option was given
-\@loadgantt
-
-\newcommand{\problemset at course}{\relax}
-\newcommand{\problemset at assignment}{\relax}
-% config commands
-\newcommand{\duedate}[1]         {\def\problemset at duedate{#1}}
-\newcommand{\instructor}[1]      {\def\problemset at instructor{#1}}
-\newcommand{\course}[1]          {\def\problemset at course{#1}}
-\newcommand{\coursenumber}[1]    {\def\problemset at course{\Sc{cosi} #1}}
-\newcommand{\assignment}[1]      {\def\problemset at assignment{#1}}
-\newcommand{\problemsetnumber}[1]{\def\problemset at assignment{Problem Set #1}}
-\newcommand{\setcodefont}[2][]{%
-	% don't fail if fontspec isn't loaded
-	\ifx\setmonofont\undefined\else
-		\let\pseudocodesymbolfont\texttt
-		\setmonofont[#1]{#2}%
-	\fi
-}
-
-\define at cmdkeys{problemset}[problemset@]{duedate, instructor, course, assignment}
-\define at key{problemset}{number}{\problemsetnumber{#1}}
-\define at key{problemset}{coursenumber}{\coursenumber{#1}}
-\define at key{problemset}{author}{\author{#1}}
-\define at key{problemset}{date}{\date{#1}}
-\define at key{problemset}{codefont}{%
-	\setcodefont{#1}
-}
-\define at boolkey{problemset}{antonella}[true]{}
-\define at boolkey{problemset}{solutions}[true]{}
-\define at boolkey{problemset}{gantt}[true]{\@loadgantt}
-% carry values from package options over
-\newcommand{\@carryclasskey}[1]{%
-	\csname ifproblemset@#1\endcsname
-		\presetkeys{problemset}{#1}{}
-	\fi
-}
-\@carryclasskey{antonella}
-\@carryclasskey{solutions}
-\@carryclasskey{gantt}
-\newcommand{\problemsetsetup}[1]{\setkeys{problemset}{#1}}
-
-% listings
-\lstset{
-	basicstyle=\ttfamily,
-	numbers=left,
-	numberstyle=\color{gray}\ttfamily,
-	aboveskip=1em,
-	belowskip=0.5em,
-	breaklines,
-	breakatwhitespace=true,
-	tabsize=4,
-	keywordstyle={\bf\ttfamily\color[rgb]{0,.3,.7}},
-	commentstyle={\color[rgb]{0.133,0.545,0.133}},
-	stringstyle={\color[rgb]{0.75,0.49,0.07}},
-}
-
-\lstnewenvironment{assembly}[1][]
-	{\lstset{
-		keywords={LOAD,STORE,ADD,SUB,MUL,DIV,INC,SKIP,BR,BLT,BGT,BLEQ,BGEQ,
-		BEQ,BNEQ,READ,WRITE,HALT},
-		firstnumber=-3,
-		numberstyle={\color{gray}\ttfamily\addtocounter{lstnumber}{3}x +\ },
-		morecomment=[l]{;},
-		#1
-	}}{}
-
-\lstnewenvironment{pseudocode}[1][]
-	{\ensure at pseudocode
-	\lstset{
-		keywords={Input,Output,Complexity,while,do,return,for,to,if,then,else,True,False,None,and,or,nil,len},
-		literate={<-}{{\pseudocodeleftarrow}}2
-			{->} {{\pseudocoderightarrow}}2
-			{(/)}{{\pseudocodeemptyset}}2
-			{inf}{{\pseudocodeinfty}}3
-			{!=} {{\pseudocodene}}2
-			{>=} {{\pseudocodege}}2
-			{<=} {{\pseudocodele}}2,
-		morecomment=[l]{\#},
-		morekeywords={#1},
-}}{}
-
-\lstnewenvironment{java}[1][]
-	{\lstset{language=java, #1}}
-	{}
-
-\errorcontextlines 10
 \widowpenalties 1 10000
 \raggedbottom
 \setlength{\parindent}{0em}
@@ -348,7 +173,6 @@
 \let\Bf\textbf
 \let\It\textit
 \let\Tt\texttt
-\let\ac\textsc
 
 \renewcommand{\labelitemi}{---}
 \setlist[1]{
@@ -357,34 +181,9 @@
 \setlist{
 	partopsep=0em,
 	topsep=0em,
-	%bottomsep=1em,
 	leftmargin=2em,
 }
 
-\NewExpandableDocumentCommand{\Th}{O{l} m}
-	{\multicolumn{1}{#1}{\Bf{#2}}}
-
-% page headers
-\fancyhf{}
-\lhead{\@author
-	\hfill
-	\if\relax\problemset at assignment\else\problemset at assignment\fi
-	\if\relax\problemset at duedate\else\ (due \problemset at duedate)\fi\hfill
-	\if\relax\problemset at instructor\else\problemset at instructor\hfill\fi
-	\thepage}
-\setlength{\headheight}{24pt}
-\fancypagestyle{plain}{\fancyhead[L]{}}
-\AtBeginDocument{\pagestyle{fancy}}
-
-% {command}[shape]{format}{label}{sep}{before}[after]
-\titleformat{\part}{\bfseries\Large}{Part \thepart}{1em}{}[]
-\titleformat{\section}{\bfseries\large}{}{0em}{}[]
-\titleformat{\subsection}{\llap{\thesubsection.}}{}{1em}{}[]
-% {command}{left}{before}{after}[right]
-\titlespacing{\part}{0em}{-0.25in}{0em}[0em]
-\titlespacing{\section}{0em}{1em}{0em}[0em]
-\titlespacing{\subsection}{0em}{1em}{0em}[0em]
-
 \titlecontents{part}
 	[3.8em] % left
 	{\large\bfseries} % above-code
@@ -405,98 +204,10 @@
 	{}
 	[]
 
-\newlength{\problemindent}
-\setlength{\problemindent}{1in}
-
-\newcounter{problemnumber}
-\newcommand{\problem at title}{}
-\define at key{problem}{title}{\renewcommand{\problem at title}{: #1}}
-\define at boolkey{problem}{pagebreak}[true]{\ifKV at problem@pagebreak
-		\vfill\pagebreak
-	\else\fi}
-\define at cmdkeys{problem}{number, label, partlabel}
-\define at cmdkey{problem}{part}[]{%
-		\part{\cmdKV at problem@part}%
-		\@ifundefined{cmdKV at problem@partlabel}{}{%
-			\expandafter\label{\cmdKV at problem@partlabel}%
-		}%
-}
-\presetkeys{problem}{pagebreak}{}
-
-\NewDocumentEnvironment{problem}{O{}}{%
-	\setkeys{problem}{#1}%
-	\@ifundefined{cmdKV at problem@number}{%
-		\stepcounter{problemnumber}%
-		\newcommand{\cmdKV at problem@number}{\arabic{problemnumber}}%
-	}{}%
-	\section{Problem \cmdKV at problem@number\problem at title}%
-	% fix up ref commands
-	\edef\@currentlabel{\cmdKV at problem@number}%
-	\edef\@currentlabelname{Problem \cmdKV at problem@number\problem at title}%
-	\@ifundefined{cmdKV at problem@label}{}{%
-		\expandafter\label{\cmdKV at problem@label}%
-	}%
-	\begin{adjustwidth}{\problemindent}{0pt}}
-	{\end{adjustwidth}}
-
-\newcommand{\subproblem}[1][]{\subsection{#1}}
-
-\newcommand{\solutionstyle}{\color{blue}}
-\NewEnviron{solution}{%
-	\solutionstyle%
-	\ifproblemset at solutions\expandafter\BODY\fi}
-
-\newcommand{\maketitlepage}{\thispagestyle{empty}%
-	\vspace*{2in}%
-	\begin{center}%
-	\Large\begin{tabular}{r|l}
-	\if\relax\problemset at assignment\else assignment & \problemset at assignment \\\fi
-	by & \@author \\
-	\if\relax\problemset at course\else course & \problemset at course \\\fi
-	\if\relax\problemset at instructor\else instructor & \problemset at instructor \\\fi
-	\if\relax\problemset at duedate\else due & \problemset at duedate \\\fi
-	\end{tabular}%
-	\end{center}%
-	\pagebreak}
-
-\renewcommand{\maketitle}{\thispagestyle{empty}%
-	%\vspace*{2in}%
-	\begin{center}%
-	\large\begin{tabular}{r|l}
-	\@ifundefined{problemset at assignment}{}{assignment & \problemset at assignment \\}
-	by & \@author \\
-	\@ifundefined{problemset at course}{}{course & \problemset at course \\}
-	\@ifundefined{problemset at instructor}{}{instructor & \problemset at instructor \\}
-	\@ifundefined{problemset at duedate}{}{due & \problemset at duedate \\}
-	\end{tabular}%
-	\end{center}%
-	\vspace*{2em}%
-	}
-
-\NewDocumentEnvironment{ganttschedule}{m o} % total size, title
-	{\ifgantt at loaded
-	\else
-		\PackageError{brandeis-problemset}{ganttschedule enviornment
-		not loaded in preamble}{Did you mean to use the 'gantt'
-		option for the brandeis-problemset document class?}
-	\fi
-	\setlength{\gantt at unit}{\linewidth / \real{#1}}%
-	\setcounter{@gantt at time}{0}%
-	\DeclareDocumentCommand{\burst}{m m} % pid, burst
-		{\setcounter{gantt at time@after}{\value{@gantt at time}}%
-		\addtocounter{gantt at time@after}{##2}%
-		\FPeval\gantthalf{(\arabic{@gantt at time}
-			+ \arabic{gantt at time@after}) / 2}%
-
-		\draw (\value{@gantt at time}, 0) rectangle
-			(\value{gantt at time@after}, 1);
-		\node at (\gantthalf, 0.5) {$P_{##1}$};
-		\draw [|<->|] (\value{@gantt at time} + 0.05, 1.25)
-			-- node[above=1mm] {##2}
-			(\value{gantt at time@after} - 0.05, 1.25);
-
-		\setcounter{@gantt at time}{\value{gantt at time@after}}}%
-
-	\IfValueT{#2}{\begin{center} #2 \end{center}}%
-	\begin{tikzpicture}[x=\gantt at unit]}
-	{\end{tikzpicture}}
+\titlecontents{subsection}
+	[5.8em]
+	{}
+	{\hspace*{-4.8em}\contentspage\hspace*{4.8em}\small}
+	{\hspace*{-3.3em}}
+	{}
+	[]



More information about the tex-live-commits mailing list