From 7c712eff353dad0f5de9c8318d941ad890b9b014 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 17 Sep 2009 00:15:46 +0000 Subject: answers 2.12 (15sep09) git-svn-id: svn://tug.org/texlive/trunk@15323 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/answers/answers.sty | 193 ++++++++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/answers/answers.sty (limited to 'Master/texmf-dist/tex/latex/answers') diff --git a/Master/texmf-dist/tex/latex/answers/answers.sty b/Master/texmf-dist/tex/latex/answers/answers.sty new file mode 100644 index 00000000000..4c0d88c2cc2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/answers/answers.sty @@ -0,0 +1,193 @@ +%% +%% 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. +%% +\def\fileversion{2.12} +\def\filedate{16 Sep 2009 00:00:00 BST} +\def\filename{answers.dtx} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{answers} + [2009/09/16 v2.12 Production of solution sheets in LaTeX2e] +\newif\ifanswerfiles \answerfilestrue +\DeclareOption{nosolutionfiles}{\answerfilesfalse + \typeout{No answer files being produced}}% +\ProcessOptions + +\RequirePackage{verbatim} +\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{% + \immediate\write\@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\@namedef{#1params}{{\Currentlabel}}% + \newenvironment{#1}[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'. -- cgit v1.2.3