%% %% This is file `answers.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% answers.dtx (with options: `answers') %% %% Originally developed by Mike Piff %% Copyright (C) 1990,1994-1996 by Mike Piff %% Copyright (C) 2009 by %% Joseph Wright %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of %% this license or (at your option) any later version. The latest %% version of this license is in the file: %% %% http://www.latex-project.org/lppl.txt %% %% This work is "maintained" (as per LPPL maintenance status) by %% Joseph Wright. %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{answers} [2014/08/24 v2.16 Production of solution sheets in LaTeX2e] \newif\ifanswerfiles \answerfilestrue \DeclareOption{nosolutionfiles}{\answerfilesfalse \typeout{No answer files being produced}}% \ProcessOptions \RequirePackage{verbatim} \long\def\protected@iwrite#1#2#3{% \begingroup \let\thepage\relax #2% \let\protect\@unexpandable@protect \edef \reserved@a{\immediate\write#1{#3}}% \reserved@a \endgroup \if@nobreak \ifvmode \nobreak \fi \fi } \newcommand{\solutionpoint}{.} \newcommand{\solutionextension}{tex} \newenvironment{Filesave}[1]{% \@bsphack \def\verbatim@processline{}% \Iffileundefined{#1}{}{% \Ifopen{#1}{% \def\verbatim@processline{% \Ifanswerfiles{% \immediate\write\@nameuse{#1@file}% {\the\verbatim@line}% }{}% }% }{}% }% \let\do\@makeother\dospecials \catcode`\^^M\active \catcode`\^^I=12\relax \verbatim@start }{\@esphack} \newcommand{\Writetofile}[2]{% \@bsphack \Iffileundefined{#1}{}{% \Ifopen{#1}{% {% \let\protect\string \Ifanswerfiles{% \protected@iwrite{\@nameuse{#1@file}}{}{#2}% }{}% }% }{}% }% \@esphack } \newcommand{\Ifopen}[3]{% \csname if#1open\endcsname#2\else#3\fi}% \newcommand{\Iffileundefined}[3]{% \csname ifx\expandafter\endcsname \csname #1@file\endcsname\relax #2\else#3\fi} \newcommand{\Ifanswerfiles}[2]{% \ifanswerfiles #1\else #2\fi} \def\Opensolutionfile#1{% \@ifnextchar[{\define@filename{#1}}% {\define@filename{#1}[#1]}}% \def\define@filename#1[#2]{% \global\@namedef{#1@filename}{#2\solutionpoint\solutionextension}% \Ifanswerfiles{% \typeout{Output from handle #1 going to #2.\solutionextension}% }{}% \Iffileundefined{#1}{% \expandafter\newwrite\csname #1@file\endcsname \csname newif\expandafter\endcsname \csname if#1open\endcsname \global\csname #1openfalse\endcsname \expandafter\ifx\csname Open#1hook\endcsname\relax \global\@namedef{Open#1hook}##1{}% \fi \expandafter\ifx\csname Close#1hook\endcsname\relax \global\@namedef{Close#1hook}##1{}% \fi }{}% \let\Tmp\relax \Ifopen{#1}{\typeout{File #1 already open}}{% \Ifanswerfiles{% \immediate\openout\@nameuse{#1@file}=% \@nameuse{#1@filename}% }{}% \global\csname#1opentrue\endcsname \def\Tmp{\@nameuse{Open#1hook}{#1}}% }% \Tmp } \def\Closesolutionfile#1{% \let\Tmp\relax \Iffileundefined{#1}{}{% \Ifopen{#1}{% \Ifanswerfiles{% \immediate\closeout\@nameuse{#1@file}% }{}% \global\csname #1openfalse\endcsname \def\Tmp{\@nameuse{Close#1hook}{#1}}% }{}% }% \Tmp } \def\Readsolutionfile#1{% \Ifanswerfiles{% \Iffileundefined{#1}{}{% \Ifopen{#1}{% \typeout{WARNING: attempt to read open file #1}% }{% \edef\Tmp{% \noexpand\InputIfFileExists {\@nameuse{#1@filename}}{}% {\noexpand\message{File \@nameuse{#1@filename}% \space not found}}% }% \Tmp }% }% }{}% } \newcommand{\Newassociation}[3]{% \newsolution{#2}% \expandafter\ifx\csname #3opentrue\endcsname\relax \expandafter\newif\csname if#3open\endcsname \fi \newenvironment{#1}{% \Ifanswerfiles{% \let\Tmp\relax \Iffileundefined{#3}{}{% \Ifopen{#3}{% \immediate\write\@nameuse{#3@file}% {\string\begin{#2}\@nameuse{#2params}}% \def\Tmp{\Filesave{#3}}% }{}% }% }{% \edef\Tmp{\noexpand\begin{#2}\@nameuse{#2params}}% }% \csname pre#1\endcsname \Tmp }% {% \Ifanswerfiles{% \Iffileundefined{#3}{}{% \Ifopen{#3}{% \endFilesave% \immediate\write\@nameuse{#3@file}% {\string\end{#2}}% \csname post#1\endcsname }{}% }% }{% \end{#2}% }% }% } \newcommand{\newsolution}[1]{% \@ifundefined{#1}{% \global\@definecounter{#1}% \global\@namedef{#1params}{{\Currentlabel}}% \newenvironment{#1}[1]% {% \refstepcounter{#1}% \csname pre#1\endcsname \trivlist \item[\hskip\itemsep{\@nameuse{#1label}{##1}}]}% {\csname post#1\endcsname\endtrivlist}% \global\@namedef{#1label}##1{\solutionstyle{##1}}% }{\typeout{WARNING: environment #1 already in use}}% } \newcommand{\solutionstyle}[1]{\textbf{#1}} \newcommand{\Currentlabel}{\@currentlabel} \endinput %% %% End of file `answers.sty'.