From 120c0c49c7474dd161886fd979a0126398043d3d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 29 Dec 2018 22:50:15 +0000 Subject: brandeis-problemset (29dec18) git-svn-id: svn://tug.org/texlive/trunk@49528 c570f23f-e606-0410-a88d-b1316a301751 --- .../brandeis-problemset/brandeis-problemset.cls | 86 +++++++++++++++++----- 1 file changed, 67 insertions(+), 19 deletions(-) (limited to 'Master/texmf-dist/tex/latex/brandeis-problemset') 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}% -- cgit v1.2.3