summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/brandeis-problemset
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-12-29 22:50:15 +0000
committerKarl Berry <karl@freefriends.org>2018-12-29 22:50:15 +0000
commit120c0c49c7474dd161886fd979a0126398043d3d (patch)
tree8f5d5bc99b6c321770f388c85d30b8b775d62c6e /Master/texmf-dist/tex/latex/brandeis-problemset
parentbc7aa0d51e3d33e22443fbc7eda7b5c63d58afbf (diff)
brandeis-problemset (29dec18)
git-svn-id: svn://tug.org/texlive/trunk@49528 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/brandeis-problemset')
-rw-r--r--Master/texmf-dist/tex/latex/brandeis-problemset/brandeis-problemset.cls86
1 files changed, 67 insertions, 19 deletions
diff --git a/Master/texmf-dist/tex/latex/brandeis-problemset/brandeis-problemset.cls b/Master/texmf-dist/tex/latex/brandeis-problemset/brandeis-problemset.cls
index cb60b75857a..c346a248051 100644
--- a/Master/texmf-dist/tex/latex/brandeis-problemset/brandeis-problemset.cls
+++ b/Master/texmf-dist/tex/latex/brandeis-problemset/brandeis-problemset.cls
@@ -1,4 +1,4 @@
-\ProvidesClass{brandeis-problemset}[2018-10-24 0.3.0 COSI Problem sets at Brandeis University]
+\ProvidesClass{brandeis-problemset}[2018-12-20 0.4.0 COSI Problem sets at Brandeis University]
% Description: A document class for Brandeis University's computer science
% courses' problem sets
% License: GPL-3.0
@@ -40,12 +40,14 @@
% utility
\RequirePackage{xkeyval}
+\RequirePackage{environ}
\RequirePackage{geometry}
\RequirePackage{changepage} % for adjustwidth env
% formatting
\RequirePackage{hyperref}
\RequirePackage{xcolor}
+\RequirePackage{comment}
\RequirePackage{listings}
\RequirePackage{fancyhdr}
\RequirePackage{enumitem}
@@ -68,12 +70,10 @@
family=problemset,
prefix=problemset@,
}
-\DeclareStringOption[\relax]{duedate}
-\DeclareStringOption[\relax]{assignment}
-\DeclareStringOption[\relax]{instructor}
-\DeclareStringOption[\relax]{course}
\DeclareBoolOption{antonella}
+\DeclareBoolOption{scheme}
\DeclareBoolOption{gantt}
+\DeclareBoolOption{solutions}
\ProcessKeyvalOptions*
\newif\ifpseudocode@loaded
@@ -100,6 +100,38 @@
\RequirePackage{stix}
\fi
+\ifproblemset@scheme
+ % from https://github.com/stuhlmueller/scheme-listings
+ \lstdefinelanguage{scheme}{
+ morekeywords=[1]{define, define-syntax, define-macro, lambda, define-stream, stream-lambda},
+ morekeywords=[2]{begin, call-with-current-continuation, call/cc,
+ call-with-input-file, call-with-output-file, case, cond,
+ do, else, for-each, if,
+ let*, let, let-syntax, letrec, letrec-syntax,
+ let-values, let*-values,
+ and, or, not, delay, force,
+ quasiquote, quote, unquote, unquote-splicing,
+ map, fold, syntax, syntax-rules, eval, environment, query },
+ morekeywords=[3]{import, export},
+ alsodigit=!\$\%&*+-./:<=>?@^_~,
+ sensitive=true,
+ morecomment=[l]{;},
+ morecomment=[s]{\#|}{|\#},
+ morestring=[b]",
+ basicstyle=\small\ttfamily,
+ 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}},
+ upquote=true,
+ breaklines=true,
+ breakatwhitespace=true,
+ literate=*{`}{{`}}{1}
+ }
+ \lstnewenvironment{scheme}[1][]
+ {\lstset{language=scheme, #1}}
+ {}
+\fi
+
\newcommand{\@antonella}{%
\ifproblemset@antonella
\instructor{Dr.\ Antonella DiLillio}
@@ -162,7 +194,9 @@
% if 'gantt' package option was given
\@loadgantt
-% additional options
+\newcommand{\problemset@course}{\relax}
+\newcommand{\problemset@assignment}{\relax}
+% config commands
\newcommand{\duedate}[1] {\renewcommand{\problemset@duedate}{#1}}
\newcommand{\instructor}[1] {\renewcommand{\problemset@instructor}{#1}}
\newcommand{\course}[1] {\renewcommand{\problemset@course}{#1}}
@@ -179,13 +213,23 @@
\define@cmdkeys{problemset}[problemset@]{duedate, instructor, course, assignment}
\define@key{problemset}{number}{\problemsetnumber{#1}}
-\define@key{problemset}{coursenumber}{\course{#1}}
+\define@key{problemset}{coursenumber}{\coursenumber{#1}}
\define@key{problemset}{codefont}{%
\setcodefont{#1}
}
-\define@boolkey{problemset}[problemset@]{antonella}[true]{}
-\define@boolkey{problemset}[problemset@]{gantt}[true]{\@loadgantt}
-\newcommand{\problemsetsetup}[1] {\setkeys{problemset}{#1}}
+\define@boolkey{problemset}{antonella}[true]{}
+\define@boolkey{problemset}{solutions}[true]{}
+\define@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{
@@ -268,7 +312,7 @@
\AtBeginDocument{\pagestyle{fancy}}
% {command}[shape]{format}{label}{sep}{before}[after]
-\titleformat{\part}[hang]{\bfseries\Large}{Part \thepart}{0em}{}[]
+\titleformat{\part}{\bfseries\Large}{Part \thepart}{1em}{}[]
\titleformat{\section}{\bfseries\large}{}{0em}{}[]
\titleformat{\subsection}{\llap{\thesubsection.}}{}{1em}{}[]
% {command}{left}{before}{after}[right]
@@ -306,7 +350,12 @@
\vfill\pagebreak
\else\fi}
\define@cmdkeys{problem}{number, label, partlabel}
-\define@cmdkey{problem}{part}[]{}
+\define@cmdkey{problem}{part}[]{%
+ \part{\cmdKV@problem@part}%
+ \@ifundefined{cmdKV@problem@partlabel}{}{%
+ \expandafter\label{\cmdKV@problem@partlabel}%
+ }%
+}
\presetkeys{problem}{pagebreak}{}
\NewDocumentEnvironment{problem}{O{}}{%
@@ -314,13 +363,7 @@
\@ifundefined{cmdKV@problem@number}{%
\stepcounter{problemnumber}%
\newcommand{\cmdKV@problem@number}{\arabic{problemnumber}}%
- }%
- \@ifundefined{cmdKV@problem@part}{}{%
- \part{\cmdKV@problem@part}%
- \@ifundefined{cmdKV@problem@partlabel}{}{%
- \expandafter\label{\cmdKV@problem@partlabel}
- }%
- }
+ }{}%
\section{Problem \cmdKV@problem@number\problem@title}%
% fix up ref commands
\edef\@currentlabel{\cmdKV@problem@number}%
@@ -333,6 +376,11 @@
\newcommand{\subproblem}[1][]{\subsection{#1}}
+\newcommand{\solutionstyle}{\color{blue}}
+\NewEnviron{solution}{%
+ \solutionstyle%
+ \ifproblemset@solutions\expandafter\BODY\fi}
+
\newcommand{\maketitlepage}{\thispagestyle{empty}%
\vspace*{2in}%
\begin{center}%