%% %% problemset package: %% macros for problem sets %% %% TeX format \NeedsTeXFormat{LaTeX2e}[1995/12/01] %% package name \ProvidesPackage{problemset}[2022/01/25] \newif\ifproblemineq \newif\ifquestionineq \DeclareOption{problem_in_eq}{\problemineqtrue} \DeclareOption{no_problem_in_eq}{\problemineqfalse} \DeclareOption{question_in_eq}{\questionineqtrue} \DeclareOption{no_question_in_eq}{\questionineqfalse} \def\problemset@defaultoptions{ \ExecuteOptions{problem_in_eq, no_question_in_eq} \ProcessOptions } %% the problem command handles automatic problem numbering, as well as per-problem equation numbering % problem counter \newcounter{problemcount} % problem@temp is set to true when there is an optional argument \newif\ifproblem@temp \def\problem{% % check whether there is an optional argument (if there is none, add on empty '[]') \@ifnextchar [{\problem@temptrue\@problemx}{\problem@tempfalse\@problemx[]}% } % command with optional argument \def\@problemx[#1]{% % reset question counter \setcounter{questioncount}{0} % if optional argument, set problem num to argument \ifproblem@temp% \edef\problemnum{#1}% % otherwise, count \else% \stepcounter{problemcount}% \edef\problemnum{\theproblemcount}% \fi% % if ian class \ifianclass% % define tag for label \hrefanchor% \xdef\tag{E\problemnum}% % % add header to equation numbers (for ian class) \ifproblemineq% \def\eqprefix{E\problemnum.}% % reset equation number \setcounter{seqcount}{0}% \fi% \fi% % header \problemformat{E\problemnum}% } % problem formatting (override to customize) \def\problemformat#1{{\bf #1}. } %% question is to problem as subsection is to section % question counter \newcounter{questioncount} % question@temp is set to true when there is an optional argument \newif\ifquestion@temp \def\question{% % check whether there is an optional argument (if there is none, add on empty '[]') \@ifnextchar [{\question@temptrue\@questionx}{\question@tempfalse\@questionx[]}% } % command with optional argument \def\@questionx[#1]{% % if optional argument, set problem num to argument \ifquestion@temp% \edef\questionnum{#1}% % otherwise, count \else% \stepcounter{questioncount}% \edef\questionnum{\alph{questioncount}}% \fi% % header \questionformat{\questionnum}% % if ian class \ifianclass% % define tag for label \hrefanchor% \xdef\tag{\questionnum}% % % add header to equation numbers (for ian class) \ifquestionineq% \def\eqprefix{\questionnum.}% % reset equation number \setcounter{seqcount}{0}% \fi% \fi% } % question formatting (override to customize) \def\questionformat#1{{\bf(#1)} } \def\solution#1{ \makelink{sol:#1}{\thepage} {\bf Solution\-~\ref{ex:#1}}\par\penalty10000\smallskip\penalty10000 \def\eqprefix{S\textref{ex:#1}.} \resetpointcounter \setcounter{seqcount}{0} } %\newif\ifsolution %% display solutions %\long\def\solution#1{ % \ifsolution % \bigskip % \leftskip20pt % \rightskip20pt % {\bf Solution}: #1 % \par % \leftskip0pt % \rightskip0pt % \bigskip % \fi %} % rubric \newif\ifrubric \long\def\rubric#1{ \ifrubric ({\it #1}) \fi } %% end \problemset@defaultoptions \endinput