%% %% This is file `problem.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% problem.dtx (with options: `package') %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{problem}[2012/01/28 v0.9c Semantic Markup for Problems] \DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} \newif\ifexnotes\exnotesfalse\DeclareOption{notes}{\exnotestrue} \newif\ifhints\hintsfalse\DeclareOption{hints}{\hintstrue} \newif\ifsolutions\solutionsfalse\DeclareOption{solutions}{\solutionstrue} \newif\ifpts\ptsfalse\DeclareOption{pts}{\ptstrue} \newif\ifmin\minfalse\DeclareOption{min}{\mintrue} \newif\ifboxed\boxedfalse\DeclareOption{boxed}{\boxedtrue} \newif\ifextract\extractfalse\DeclareOption{extract}{\extracttrue} \ProcessOptions \RequirePackage{keyval}[1997/11/10] \RequirePackage{xcomment} \RequirePackage{sref} \srefaddidkey[prefix=prob.]{problem} \addmetakey{problem}{pts} \addmetakey{problem}{min} \addmetakey*{problem}{title} \addmetakey{problem}{refnum} \newsavebox{\probbox} \newcounter{problem}[section] \def\prob@number{\ifx\inclprob@refnum\@empty \ifx\problem@refnum\@empty\thesection.\theproblem\else\problem@refnum\fi \inclprob@refnum\fi} \def\prob@heading{Problem \prob@number% \ifx\sref@id\@empty\else{\sref@label@id{Problem \thesection.\theproblem}}\fi% \ifx\inclprob@title\@empty% if there is no outside title \ifx\problem@title\@empty{:\quad}\else{\quad(\problem@title)\hfill\\}\fi \else\quad(\inclprob@title)\hfill\\\fi}% else show the outside title \ifboxed \newenvironment{problem}[1][]{\metasetkeys{problem}{#1}\sref@target% \stepcounter{problem}\show@pts\show@min\record@problem% \begin{lrbox}{\probbox}\begin{minipage}{.9\textwidth}\ignorespaces} {\end{minipage}\end{lrbox} \setbox0=\hbox{\begin{minipage}{.9\textwidth}% \noindent\textbf\prob@heading\rm% \end{minipage}} \smallskip\noindent\fbox{\vbox{\box0\vspace*{.2em}\usebox\probbox}}\smallskip} \else \newenvironment{problem}[1][]{\metasetkeys{problem}{#1}\sref@target% \stepcounter{problem}\show@pts\show@min\record@problem% \par\noindent\textbf\prob@heading\rm\ignorespaces} {\smallskip} \fi%boxed \def\record@problem{\protected@write\@auxout{}% {\string\@problem{\prob@number}% {\ifx\inclprob@pts\@empty\problem@pts\else\inclprob@pts\fi}% {\ifx\inclprob@min\@empty\problem@min\else\inclprob@min\fi}}} \def\@problem#1#2#3{} \define@key{soln}{id}{\def\soln@id{#1}} \define@key{soln}{for}{\def\soln@for{#1}} \define@key{soln}{height}{\def\soln@height{#1}} \ifsolutions \newenvironment{solution}[1][]% {\hrule\smallskip{\bf Solution: }\begin{small}}% {\hrule\end{small}} \else\newxcomment[]{solution}\fi \ifexnotes \newenvironment{exnote}[1][]% {\par\noindent\hrule\smallskip{\bf Note: }\small} {\smallskip\hrule} \else%ifexnotes \newxcomment[]{exnote} \fi%ifexnotes \ifhints \newenvironment{hint}[1][]% {\par\noindent\hrule\smallskip{\bf Hint: }\small} {\smallskip\hrule} \else%ifhints \newxcomment[]{hint} \fi%ifhints \ifextract \newwrite\problem@file \immediate\openout\problem@file=\jobname-problems.tex \AtEndDocument{\closeout\problem@file} \fi \addmetakey{inclprob}{pts} \addmetakey{inclprob}{min} \addmetakey*{inclprob}{title} \addmetakey{inclprob}{refnum} \clear@inclprob@keys \newcommand{\includeproblem}[2][]{% \bgroup\metasetkeys{inclprob}{#1}\input{#2}\ifsolutions\newpage\fi\egroup \ifextract\def\@test{#1} \def\prob@num{\ifx\inclprob@refnum\@empty\thesection.\theproblem\else\inclprob@refnum\fi} \def\inclprob@keys{#1\ifx\@test\@empty\else,\fi refnum=\prob@num} \protected@write\problem@file{}{\string\includeproblem[\inclprob@keys]{#2}} \fi} \def\pts#1{\ifpts\marginpar{#1 pt}\fi} \def\min#1{\ifmin\marginpar{#1 min}\fi} \AtEndDocument{\ifpts\message{Total: \arabic{pts} points}\fi \ifmin\message{Total: \arabic{min} minutes}\fi} \newcounter{pts} \def\show@pts{\ifx\inclprob@pts\@empty% \ifx\problem@pts\@empty\else% \ifpts\marginpar{\problem@pts pt\smallskip}\addtocounter{pts}{\problem@pts}\fi% \fi\else% \ifpts\marginpar{\inclprob@pts pt\smallskip}\addtocounter{pts}{\inclprob@pts}\fi% \fi} \newcounter{min} \def\show@min{\ifx\inclprob@min\@empty% \ifx\problem@min\@empty\else% \ifmin\marginpar{\problem@min min}\addtocounter{min}{\problem@min}\fi% \fi\else% \ifmin\marginpar{\inclprob@min min}\addtocounter{min}{\inclprob@min}\fi \fi} \endinput %% %% End of file `problem.sty'.