% --------------- identification ---------------- \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PNSProblem}[2003/02/16] % --------------- initial code --------------- % --------------- declaration of options --------------- % --------------- execution of options --------------- % --------------- package loading --------------- % --------------- main code --------------- %%%%%%%%%%%%%%%%%%%%%%% % % % Pedagogic stuff % % % %%%%%%%%%%%%%%%%%%%%%%% \newenvironment{example}[1]{ \begin{list}{}% {\setlength{\labelsep}{0pt}% \setlength{\leftmargin}{.3in}% \setlength{\rightmargin}{\leftmargin}% \setlength{\labelwidth}{0pt}% \setlength{\listparindent}{0pt}}% \item[\umph{Example:}] \mbox{\quad} \colorbox{yellow}{\umph{#1}} \\[.1in] }% {\end{list} \hfill{\color{yellow}\rule{4.5in}{.05in}}\hfill } \newcounter{problemctr} % in the book format, this is linked % to [chapter] \newboolean{compactproblems} % save space in lists of parts of problem \setboolean{compactproblems}{false} \newcommand{\theproblem}{} \newcounter{difficultylevel} \newcounter{problemparts} \newcommand{\toughness}{\ding{45}} \newboolean{iscomputerproblem} \setboolean{iscomputerproblem}{false} \newcommand{\icongap}{\hspace{.5em}} \newcommand{\difficulty}[1]{% \ifthenelse{\equal{#1}{1}}{\toughness}{% \ifthenelse{\equal{#1}{2}}% {\toughness\toughness}% {\toughness\toughness\toughness}% }\hspace{0.5em}% } \newcommand{\theexercise}{} \newenvironment{exercise} {\refstepcounter{problemctr}% \renewcommand{\theexercise}{\arabic{problemctr}}% \begin{list}{\umph{Exercise \theexercise}}% {\setlength{\labelsep}{0pt}% \setlength{\leftmargin}{.2in}% \setlength{\labelwidth}{0pt}% \setlength{\listparindent}{0pt}}% \item\ ~}% {\end{list}} \newenvironment{parts}{}{} \newenvironment{problem}[1][] {\begingroup\refstepcounter{problemctr}% \ifthenelse{\boolean{compactproblems}}% {\renewenvironment{parts}{% \setcounter{problemparts}{0}% \def\item{\nobreak\ignorespaces\stepcounter{problemparts}% \hspace{.25em}(\alph{problemparts})~}% }{\par}% }% end of this version of parts environment {\renewenvironment{parts}{% \setcounter{problemparts}{0}% \begin{list}{% What follows is the default label code \stepcounter{problemparts}% (\alph{problemparts})~% }% {\setlength{\leftmargin}{.35in}% parameter setup \setlength{\labelwidth}{2em}% }% }% end of the first argument of the parts environment {\end{list}} % at end of the parts environment }% end of second definition of parts environment \renewcommand{\theexercise}{\arabic{problemctr}}% % \ifthenelse{\boolean{iscomputerproblem}}{% % \makebox[0pt][r]{\ding{39}\icongap}}{}% \begin{list}{\umph{Problem \theexercise}}% {\setlength{\labelsep}{0pt}% \setlength{\leftmargin}{0in}% \setlength{\labelwidth}{0pt}% \setlength{\listparindent}{0pt}}% \item% \ifthenelse{\equal{#1}{}}{}{\umph{ -- #1}} \icongap% \ifthenelse{\boolean{iscomputerproblem}}{% %\ding{39}\icongap% \ig[.2]{computer}\icongap }{} }% {\end{list}\endgroup% } \newboolean{solutions} \setboolean{solutions}{true} \newcommand{\ifsols}[2][Solution:]{\ifthenelse{\boolean{solutions}}% {\ifthenelse{\equal{#1}{}}% {}% {\smallskip\umph{#1}}#2}% {}} \newcommand{\nosol}[1]{\ifthenelse{\boolean{solutions}}{}{#1}} \newcommand{\yessol}[1]{\ifthenelse{\boolean{solutions}}{#1}{}} \newcommand{\src}[1]{(\textmd{\textsl{#1}})} \newcommand{\pg}{\bigskip} % problem gap \newcommand{\qed}{\ensuremath{\hfill\blacksquare}}