summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-03-13 22:35:46 +0000
committerKarl Berry <karl@freefriends.org>2013-03-13 22:35:46 +0000
commit95080bc66f5d1022cbcfbe7535a87055d02aa568 (patch)
tree78110a9731c73d008803b1243437378b52afc905 /Master
parent8b6e07d34f4b46b6c6a049934683348b12ff3fd6 (diff)
probsoln (13mar13)
git-svn-id: svn://tug.org/texlive/trunk@29371 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/CHANGES8
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/README4
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/probsoln-manual.css170
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/probsoln-manual.html3153
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/probsoln-manual.tex119
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/probsoln.pdfbin522144 -> 390794 bytes
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample-exclude.tex129
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample.pdfbin127374 -> 81519 bytes
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample.tex8
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample2.pdfbin84459 -> 76287 bytes
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample2.tex4
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample3.pdfbin31901 -> 31901 bytes
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample3.tex4
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample4.pdfbin91464 -> 92920 bytes
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample4.tex4
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample5.pdfbin73995 -> 82851 bytes
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample5.tex4
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample6.tex4
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample7.tex4
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/samples/sample8.tex4
-rw-r--r--Master/texmf-dist/source/latex/probsoln/probsoln.dtx750
-rw-r--r--Master/texmf-dist/source/latex/probsoln/probsoln.ins8
-rw-r--r--Master/texmf-dist/tex/latex/probsoln/probsoln.sty264
23 files changed, 3038 insertions, 1603 deletions
diff --git a/Master/texmf-dist/doc/latex/probsoln/CHANGES b/Master/texmf-dist/doc/latex/probsoln/CHANGES
index 353a6ee6db8..3c3efc2c943 100644
--- a/Master/texmf-dist/doc/latex/probsoln/CHANGES
+++ b/Master/texmf-dist/doc/latex/probsoln/CHANGES
@@ -1,5 +1,13 @@
probsoln package versions:
+Version 3.04:
+
+ * fixed bug in textenum
+
+version 3.03:
+
+ * added facility to exclude problems selected in the past n years
+
version 3.02:
* Added xkeyval to required package list
diff --git a/Master/texmf-dist/doc/latex/probsoln/README b/Master/texmf-dist/doc/latex/probsoln/README
index d3a2a30d676..e3e0912a332 100644
--- a/Master/texmf-dist/doc/latex/probsoln/README
+++ b/Master/texmf-dist/doc/latex/probsoln/README
@@ -1,6 +1,6 @@
-LaTeX Package : probsoln v3.02
+LaTeX Package : probsoln v3.04
-Last Modified : 2011-12-10
+Last Modified : 2012-08-23
Author : Nicola L.C. Talbot
diff --git a/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.css b/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.css
index 0581f0a1a53..86f6de1a936 100644
--- a/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.css
+++ b/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.css
@@ -1,19 +1,86 @@
/* start css.sty */
-.ec-lmr-17{font-size:170%;}
-.ec-lmr-12{font-size:120%;}
-.ec-lmtt-12{font-size:120%; font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
+.ec-lmr-10x-x-109{}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{font-size:188%; font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmr-12x-x-120{font-size:130%;}
+.ec-lmtt-12x-x-120{font-size:130%; font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmtt-10{font-size:90%; font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
@@ -26,43 +93,27 @@
.ec-lmtt-10{ font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmtt-9{font-size:90%; font-family: monospace;}
+.rm-lmr-8x-x-103{font-size:74%;}
+.lmmi-10x-x-109{}
+.lmmi-8x-x-103{font-size:74%;}
+.lmsy-10x-x-109{}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmr-10{font-size:90%;}
+.ec-lmr-9{font-size:81%;}
+.ec-lmtt-9{font-size:81%; font-family: monospace;}
+.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
@@ -74,22 +125,6 @@
.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
-.rm-lmr-8x-x-95{font-size:76%;}
-.lmmi-8x-x-95{font-size:76%;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmr-9{font-size:90%;}
-.ec-lmr-8{font-size:80%;}
p.noindent { text-indent: 0em }
td p.noindent { text-indent: 0em; margin-top:0em; }
p.nopar { text-indent: 0em; }
@@ -198,6 +233,7 @@ div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
.abstract p {margin-left:5%; margin-right:5%;}
div.abstract {width:100%;}
+span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
table.multicols { width:100%; margin-left:1em; margin-top:1em; margin-bottom:1em; }
.equation td{text-align:center; }
.equation-star td{text-align:center; }
diff --git a/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.html b/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.html
index 5f2552db5b0..55dfa44a832 100644
--- a/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.html
+++ b/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.html
@@ -1,36 +1,102 @@
-<a
- id="top"></a><?xml version="1.0" encoding="iso-8859-1" ?>
+<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
<html xmlns="http://www.w3.org/1999/xhtml"
>
-<head><title>probsoln v3.02: creating problem sheets optionally with solutions</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<head><title>probsoln v3.04: creating problem sheets optionally with solutions</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
-<!-- xhtml,fn-in,css-in -->
+<!-- xhtml,fn-in,css-in,uni-html4,utf8 -->
<meta name="src" content="probsoln-manual.tex" />
-<meta name="date" content="2011-12-13 15:58:00" />
+<meta name="date" content="2013-03-13 15:29:00" />
<style type="text/css">
<!--
/* start css.sty */
-.ec-lmr-17{font-size:170%;}
-.ec-lmr-12{font-size:120%;}
-.ec-lmtt-12{font-size:120%; font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
-.ec-lmtt-12{ font-family: monospace;}
+.ec-lmr-10x-x-109{}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmss-10x-x-109{ font-family: sans-serif;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{font-size:188%; font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmssbx-10x-x-207{ font-family: sans-serif; font-weight: bold;}
+.ec-lmr-12x-x-120{font-size:130%;}
+.ec-lmtt-12x-x-120{font-size:130%; font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-12x-x-120{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmtt-10x-x-109{ font-family: monospace;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmbx-10x-x-109{ font-weight: bold;}
+.ec-lmtt-10{font-size:90%; font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
@@ -43,43 +109,27 @@
.ec-lmtt-10{ font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
.ec-lmtt-10{ font-family: monospace;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmss-10{ font-family: sans-serif;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmbx-10{ font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
-.ec-lmtt-9{font-size:90%; font-family: monospace;}
+.rm-lmr-8x-x-103{font-size:74%;}
+.lmmi-10x-x-109{}
+.lmmi-8x-x-103{font-size:74%;}
+.lmsy-10x-x-109{}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmri-10x-x-109{ font-style:italic;}
+.ec-lmr-10{font-size:90%;}
+.ec-lmr-9{font-size:81%;}
+.ec-lmtt-9{font-size:81%; font-family: monospace;}
+.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
@@ -91,22 +141,6 @@
.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
.ec-lmtt-9{ font-family: monospace;}
-.rm-lmr-8x-x-95{font-size:76%;}
-.lmmi-8x-x-95{font-size:76%;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmri-10{ font-style:italic;}
-.ec-lmr-9{font-size:90%;}
-.ec-lmr-8{font-size:80%;}
p.noindent { text-indent: 0em }
td p.noindent { text-indent: 0em; margin-top:0em; }
p.nopar { text-indent: 0em; }
@@ -215,6 +249,7 @@ div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
.abstract p {margin-left:5%; margin-right:5%;}
div.abstract {width:100%;}
+span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
table.multicols { width:100%; margin-left:1em; margin-top:1em; margin-bottom:1em; }
.equation td{text-align:center; }
.equation-star td{text-align:center; }
@@ -237,253 +272,257 @@ div.important { background-color:red; }
</style>
</head><body
>
- <div class="maketitle">
+ <div class="maketitle">
-
-
+<div class="minipage"><a
+ id="top"></a>
+</div>
-<h2 class="titleHead">probsoln v3.02: creating problem sheets optionally
-with solutions</h2>
- <div class="author" ><span
-class="ec-lmr-12">Nicola L.C. Talbot</span>
-<br /> <span
-class="ec-lmr-12">School of Computing Sciences</span>
-<br /> <span
-class="ec-lmr-12">University of East Anglia</span>
-<br /> <span
-class="ec-lmr-12">Norwich. Norfolk</span>
+<h2 class="titleHead">probsoln v3.04: creating problem
+sheets optionally with solutions</h2>
+ <div class="author" ><span
+class="ec-lmr-12x-x-120">Nicola L.C. Talbot</span>
<br /> <span
-class="ec-lmr-12">NR4 7TJ. United Kingdom.</span>
+class="ec-lmr-12x-x-120">School of Computing Sciences</span>
+<br /> <span
+class="ec-lmr-12x-x-120">University of East Anglia</span>
+<br /> <span
+class="ec-lmr-12x-x-120">Norwich. Norfolk</span>
+<br /> <span
+class="ec-lmr-12x-x-120">NR4 7TJ. United Kingdom.</span>
<br /><a
href="http://theoval.cmp.uea.ac.uk/~nlct/" class="url" ><span
-class="ec-lmtt-12">http://theoval.cmp.uea.ac.uk/~nlct/</span></a></div><br />
+class="ec-lmtt-12x-x-120">http://theoval.cmp.uea.ac.uk/~nlct/</span></a></div><br />
<div class="date" ><span
-class="ec-lmr-12">2011-12-10</span></div>
- </div>
- <h3 class="likesectionHead"><a
+class="ec-lmr-12x-x-120">2012-08-23</span></div>
+ </div>
+ <h3 class="likesectionHead"><a
id="x1-1000"></a>Contents</h3>
- <div class="tableofcontents">
- <span class="sectionToc" >1 <a
+ <div class="tableofcontents">
+ <span class="sectionToc" >1 <a
href="#x1-20001" id="QQ2-1-2">Introduction</a></span>
-<br /> <span class="sectionToc" >2 <a
+<br /> <span class="sectionToc" >2 <a
href="#x1-30002" id="QQ2-1-3">Package Options</a></span>
-<br /> <span class="sectionToc" >3 <a
+<br /> <span class="sectionToc" >3 <a
href="#x1-40003" id="QQ2-1-4">Verbatim</a></span>
-<br /> <span class="sectionToc" >4 <a
+<br /> <span class="sectionToc" >4 <a
href="#x1-50004" id="QQ2-1-5">Showing and Hiding Solutions</a></span>
-<br /> <span class="sectionToc" >5 <a
+<br /> <span class="sectionToc" >5 <a
href="#x1-60005" id="QQ2-1-6">General Formatting Commands</a></span>
-<br /> <span class="sectionToc" >6 <a
+<br /> <span class="sectionToc" >6 <a
href="#x1-70006" id="QQ2-1-7">Defining a Problem</a></span>
-<br /> <span class="sectionToc" >7 <a
+<br /> <span class="sectionToc" >7 <a
href="#x1-80007" id="QQ2-1-8">Using a Problem</a></span>
-<br /> <span class="sectionToc" >8 <a
+<br /> <span class="sectionToc" >8 <a
href="#x1-90008" id="QQ2-1-9">Loading Problems From External Files</a></span>
-<br /> <span class="sectionToc" >9 <a
-href="#x1-100009" id="QQ2-1-10">Iterating Through Datasets</a></span>
-<br /> <span class="sectionToc" >10 <a
-href="#x1-1100010" id="QQ2-1-11">Random Number Generator</a></span>
-<br /> <span class="sectionToc" >11 <a
-href="#x1-1200011" id="QQ2-1-12">Compatibility With Versions Prior to 3.0</a></span>
-<br /> <span class="sectionToc" ><a
-href="#Q1-1-13">Index</a></span>
- </div>
+<br /> &#x00A0;<span class="subsectionToc" >8.1 <a
+href="#x1-100008.1" id="QQ2-1-10">Randomly Selecting Problems Not Selected in Previous Documents</a></span>
+<br /> <span class="sectionToc" >9 <a
+href="#x1-110009" id="QQ2-1-11">Iterating Through Datasets</a></span>
+<br /> <span class="sectionToc" >10 <a
+href="#x1-1200010" id="QQ2-1-12">Random Number Generator</a></span>
+<br /> <span class="sectionToc" >11 <a
+href="#x1-1300011" id="QQ2-1-13">Compatibility With Versions Prior to 3.0</a></span>
+<br /> <span class="sectionToc" ><a
+href="#Q1-1-14">Index</a></span>
+
+
+ </div>
<!--l. 40--><p class="noindent" >
</p>
- <h3 class="sectionHead"><span class="titlemark">1 </span> <a
+ <h3 class="sectionHead"><span class="titlemark">1 </span> <a
id="x1-20001"></a>Introduction</h3>
<!--l. 41--><p class="noindent" >The <span
-class="ec-lmss-10">probsoln </span>package is designed for teachers or lecturers who want to create problem
-sheets for their students. This package was designed with mathematics problems in
-mind, but can be used for other subjects as well. The idea is to create a file
-containing a large number of problems with their solutions which can be read in
-
-
-
-by <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>, and then select a number of problems to typeset. This means
-that once the database has been set up, each year you can easily create a new
-problem sheet that is sufficiently different from the previous year, thus preventing
-the temptation of current students seeking out the previous year&#8217;s students,
-and checking out their answers. There is also an option that can be passed to
-the package to determine whether or not the solutions should be printed. In
-this way, one file can either produce the student&#8217;s version or the teacher&#8217;s
+class="ec-lmss-10x-x-109">probsoln </span>package is designed for teachers or lecturers who want to
+create problem sheets for their students. This package was designed with
+mathematics problems in mind, but can be used for other subjects as well. The
+idea is to create a file containing a large number of problems with their
+solutions which can be read in by <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>, and then select a number of
+problems to typeset. This means that once the database has been set up,
+each year you can easily create a new problem sheet that is sufficiently
+different from the previous year, thus preventing the temptation of current
+students seeking out the previous year&#8217;s students, and checking out their
+answers. There is also an option that can be passed to the package
+to determine whether or not the solutions should be printed. In this
+way, one file can either produce the student&#8217;s version or the teacher&#8217;s
version.
</p><!--l. 56--><p class="noindent" >
</p>
<!--l. 56--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">2 </span> <a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">2 </span> <a
id="x1-30002"></a>Package Options</h3>
<!--l. 57--><p class="noindent" >The following options may be passed to this package:
</p><dl class="description"><dt class="description">
<span
-class="ec-lmssbx-10">answers</span><a
+class="ec-lmssbx-10x-x-109">answers</span><a
id="dx1-3001"></a> </dt><dd
class="description">Show the answers
</dd><dt class="description">
<span
-class="ec-lmssbx-10">noanswers</span><a
+class="ec-lmssbx-10x-x-109">noanswers</span><a
id="dx1-3002"></a> </dt><dd
class="description">Don&#8217;t show the answers (default)
</dd><dt class="description">
<span
-class="ec-lmssbx-10">draft</span><a
+class="ec-lmssbx-10x-x-109">draft</span><a
id="dx1-3003"></a> </dt><dd
class="description">Display the label and dataset name when a problem is used
</dd><dt class="description">
<span
-class="ec-lmssbx-10">final</span><a
+class="ec-lmssbx-10x-x-109">final</span><a
id="dx1-3004"></a> </dt><dd
class="description">Don&#8217;t display label and dataset name when a problem is used
</dd><dt class="description">
<span
-class="ec-lmssbx-10">usedefaultargs</span><a
+class="ec-lmssbx-10x-x-109">usedefaultargs</span><a
id="dx1-3005"></a> </dt><dd
class="description">Make <span
-class="ec-lmtt-10">\thisproblem</span><a
- id="dx1-3006"></a> use the default arguments supplied in the
- problem definition.
+class="ec-lmtt-10x-x-109">\thisproblem</span><a
+ id="dx1-3006"></a> use the default arguments supplied in
+ the problem definition.
+
+
</dd><dt class="description">
<span
-class="ec-lmssbx-10">nousedefaultargs</span><a
+class="ec-lmssbx-10x-x-109">nousedefaultargs</span><a
id="dx1-3007"></a> </dt><dd
-class="description">Make <span
-class="ec-lmtt-10">\thisproblem</span><a
- id="dx1-3008"></a> prompt for problem arguments (default).</dd></dl>
+class="description">Make <span
+class="ec-lmtt-10x-x-109">\thisproblem</span><a
+ id="dx1-3008"></a> prompt for problem arguments
+ (default).</dd></dl>
<!--l. 69--><p class="noindent" >
</p>
<!--l. 69--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">3 </span> <a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">3 </span> <a
id="x1-40003"></a>Verbatim</h3>
-<!--l. 71--><p class="noindent" >As from version 3.02, problems and solutions may contain verbatim text, but you must
-use the <a
+<!--l. 71--><p class="noindent" >As from version 3.02, problems and solutions may contain verbatim text, but
+you must use the <a
id="dx1-4001"></a><span
-class="ec-lmtt-10">fragile </span>(or <span
-class="ec-lmtt-10">fragile=true</span>) option for the associated environments.
-</p><!--l. 75--><p class="indent" > Alternatively, if most of your problems contain verbatim, you can globally set this
-option using:
+class="ec-lmtt-10x-x-109">fragile </span>(or <span
+class="ec-lmtt-10x-x-109">fragile=true</span>) option for the associated
+environments.
+</p><!--l. 75--><p class="indent" > Alternatively, if most of your problems contain verbatim, you can globally set
+this option using:
-
</p>
- <div class="verbatim" id="verbatim-1">
+ <div class="verbatim" id="verbatim-1">
\setkeys{probsoln}{fragile}
</div>
<!--l. 79--><p class="nopar" > You can switch off this option using <span
-class="ec-lmtt-10">fragile=false</span>.
-</p><!--l. 82--><p class="indent" > The <span
-class="ec-lmtt-10">fragile </span>option writes information to a temporary file. This defaults to
+class="ec-lmtt-10x-x-109">fragile=false</span>.
+</p><!--l. 82--><p class="indent" > The <span
+class="ec-lmtt-10x-x-109">fragile </span>option writes information to a temporary file. This defaults to
<span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\jobname.vrb</span></span></span> but the name may be changed. The extension (<span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">.vrb</span></span></span>) is given
+class="ec-lmtt-10x-x-109">\jobname.vrb</span></span></span> but the name may be changed. The extension (<span class="obeylines-h"><span class="verb"><span
+class="ec-lmtt-10x-x-109">.vrb</span></span></span>) is given
by:
-</p><!--l. 85--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\ProbSolnFragileExt</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 85--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\ProbSolnFragileExt</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-4002"></a> <span
-class="ec-lmtt-10">\ProbSolnFragileExt </span></div><hr>
+class="ec-lmtt-10x-x-109">\ProbSolnFragileExt </span></div><hr>
</p><!--l. 87--><p class="noindent" >
The base name (<span
-class="ec-lmtt-10">\jobname</span>) is given by:
-</p><!--l. 89--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\ProbSolnFragileFile</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="ec-lmtt-10x-x-109">\jobname</span>) is given by:
+</p><!--l. 89--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\ProbSolnFragileFile</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-4003"></a> <span
-class="ec-lmtt-10">\ProbSolnFragileFile </span></div><hr>
+class="ec-lmtt-10x-x-109">\ProbSolnFragileFile </span></div><hr>
</p><!--l. 91--><p class="noindent" >
</p><!--l. 93--><p class="noindent" >
</p>
<!--l. 93--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">4 </span> <a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">4 </span> <a
id="x1-50004"></a>Showing and Hiding Solutions</h3>
<!--l. 95--><p class="noindent" >In addition to the <span
-class="ec-lmss-10">answers</span><a
+class="ec-lmss-10x-x-109">answers</span><a
id="dx1-5001"></a> and <span
-class="ec-lmss-10">noanswers</span><a
- id="dx1-5002"></a> package options, it is also possible to show or
-suppress the solutions using
-</p><!--l. 98--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\showanswers</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="ec-lmss-10x-x-109">noanswers</span><a
+ id="dx1-5002"></a> package options, it is also possible to
+show or suppress the solutions using
+</p><!--l. 98--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\showanswers</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-5003"></a> <span
-class="ec-lmtt-10">\showanswers </span></div><hr>
+class="ec-lmtt-10x-x-109">\showanswers </span></div><hr>
</p><!--l. 100--><p class="noindent" >
and
-</p><!--l. 102--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\hideanswers</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 102--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\hideanswers</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-5004"></a> <span
-class="ec-lmtt-10">\hideanswers </span></div><hr>
+class="ec-lmtt-10x-x-109">\hideanswers </span></div><hr>
</p><!--l. 104--><p class="noindent" >
respectively.
-</p><!--l. 107--><p class="indent" > The boolean variable <span
-class="ec-lmss-10">showanswers</span><a
+</p><!--l. 107--><p class="indent" > The boolean variable <span
+class="ec-lmss-10x-x-109">showanswers</span><a
id="dx1-5005"></a> determines whether the answers should be
displayed. You can use this value with the <span
-class="ec-lmss-10">ifthen</span><a
- id="dx1-5006"></a> package to specify different text
-depending on whether the solutions should be displayed. For example:
+class="ec-lmss-10x-x-109">ifthen</span><a
+ id="dx1-5006"></a> package to specify
+different text depending on whether the solutions should be displayed. For
+example:
-
</p>
- <div class="verbatim" id="verbatim-2">
+ <div class="verbatim" id="verbatim-2">
Assignment&#x00A0;1\ifthenelse{\boolean{showanswers}}{&#x00A0;(Solution&#x00A0;Sheet)}{}
</div>
<!--l. 113--><p class="nopar" > Alternatively you can use <span
-class="ec-lmtt-10">\ifshowanswers</span><a
+class="ec-lmtt-10x-x-109">\ifshowanswers</span><a
id="dx1-5007"></a>&#x2026;<span
-class="ec-lmtt-10">\else</span>&#x2026;<span
-class="ec-lmtt-10">\fi</span>:
+class="ec-lmtt-10x-x-109">\else</span>&#x2026;<span
+class="ec-lmtt-10x-x-109">\fi</span>:
-
</p>
- <div class="verbatim" id="verbatim-3">
+ <div class="verbatim" id="verbatim-3">
Assignment&#x00A0;1\ifshowanswers\space&#x00A0;(Solution&#x00A0;Sheet)\fi
</div>
<!--l. 118--><p class="nopar" >
-</p><!--l. 120--><p class="indent" > For longer passages, you can use the environments
-</p><!--l. 121--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">onlyproblem</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 120--><p class="indent" > For longer passages, you can use the environments
+</p><!--l. 121--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">onlyproblem</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-5008"></a><a
id="dx1-5009"></a> <span
-class="ec-lmtt-10">\begin{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">onlyproblem</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">option</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">] </span></div><hr>
+class="ec-lmtt-10x-x-109">\begin{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">onlyproblem</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">option</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">] </span></div><hr>
</p><!--l. 123--><p class="noindent" >
and
-</p><!--l. 125--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">onlysolution</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 125--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">onlysolution</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-5010"></a><a
id="dx1-5011"></a> <span
-class="ec-lmtt-10">\begin{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">onlysolution</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">option</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">] </span></div><hr>
+class="ec-lmtt-10x-x-109">\begin{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">onlysolution</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">option</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">] </span></div><hr>
</p><!--l. 127--><p class="noindent" >
For example:
-
</p>
- <div class="verbatim" id="verbatim-4">
+ <div class="verbatim" id="verbatim-4">
\begin{onlyproblem}%
&#x00A0;<br />What&#x00A0;is&#x00A0;the&#x00A0;derivative&#x00A0;of&#x00A0;$f(x)&#x00A0;=&#x00A0;x^2$?
&#x00A0;<br />\end{onlyproblem}%
@@ -492,130 +531,130 @@ For example:
&#x00A0;<br />\end{onlysolution}
</div>
<!--l. 136--><p class="nopar" > The above will only display the question if <span
-class="ec-lmss-10">showanswers</span><a
- id="dx1-5012"></a> is false and will only display
-the solution if <span
-class="ec-lmss-10">showanswers</span><a
- id="dx1-5013"></a> is true. If you want the question to appear in the answer
-sheet as well as the solution, then don&#8217;t put the question in the <span
-class="ec-lmss-10">onlyproblem</span><a
+class="ec-lmss-10x-x-109">showanswers</span><a
+ id="dx1-5012"></a> is false and will only
+display the solution if <span
+class="ec-lmss-10x-x-109">showanswers</span><a
+ id="dx1-5013"></a> is true. If you want the question to appear in
+the answer sheet as well as the solution, then don&#8217;t put the question in the
+<span
+class="ec-lmss-10x-x-109">onlyproblem</span><a
id="dx1-5014"></a><a
- id="dx1-5015"></a>
-environment:
+ id="dx1-5015"></a> environment:
-
</p>
- <div class="verbatim" id="verbatim-5">
+ <div class="verbatim" id="verbatim-5">
What&#x00A0;is&#x00A0;the&#x00A0;derivative&#x00A0;of&#x00A0;$f(x)&#x00A0;=&#x00A0;x^2$?
&#x00A0;<br />\begin{onlysolution}%
&#x00A0;<br />Solution:&#x00A0;$f&#8217;(x)&#x00A0;=&#x00A0;2x$
&#x00A0;<br />\end{onlysolution}
</div>
<!--l. 147--><p class="nopar" >
-</p><!--l. 149--><p class="indent" > <div class="important" title="Important Note"> If you want to include verbatim text in the body of <span
-class="ec-lmss-10">onlyproblem</span><a
+</p><!--l. 149--><p class="indent" > <div class="important" title="Important Note"> If you want to include verbatim text in the body of <span
+class="ec-lmss-10x-x-109">onlyproblem</span><a
id="dx1-5016"></a><a
- id="dx1-5017"></a> or <span
-class="ec-lmss-10">onlysolution</span><a
+ id="dx1-5017"></a> or
+<span
+class="ec-lmss-10x-x-109">onlysolution</span><a
id="dx1-5018"></a><a
- id="dx1-5019"></a>, you
-need to specify <span
-class="ec-lmtt-10">fragile </span>in the optional argument of the environment. (See <a
+ id="dx1-5019"></a>, you need to specify <span
+class="ec-lmtt-10x-x-109">fragile </span>in the optional argument of the
+environment. (See <a
href="#x1-40003">§3 </a><a
-href="#x1-40003">Verbatim<!--tex4ht:ref: sec:verbatim --></a>
-for further details.) </div>
+href="#x1-40003">Verbatim<!--tex4ht:ref: sec:verbatim --></a> for further details.) </div>
</p><!--l. 154--><p class="noindent" >
-</p><!--l. 156--><p class="indent" > If you use <span
-class="ec-lmss-10">onlysolution </span>within the <span
-class="ec-lmss-10">defproblem</span><a
+</p><!--l. 156--><p class="indent" > If you use <span
+class="ec-lmss-10x-x-109">onlysolution </span>within the <span
+class="ec-lmss-10x-x-109">defproblem</span><a
id="dx1-5020"></a><a
- id="dx1-5021"></a> environment, the problem will be
-tagged as having a solution and will be added to the list used by <span
-class="ec-lmtt-10">\foreachsolution</span><a
- id="dx1-5022"></a>.
-The optional argument of <span
-class="ec-lmss-10">onlysolution </span>(and <span
-class="ec-lmss-10">onlyproblem</span><a
- id="dx1-5023"></a><a
- id="dx1-5024"></a>) is inherited from the parent
+ id="dx1-5021"></a> environment, the problem will
+be tagged as having a solution and will be added to the list used by
<span
-class="ec-lmss-10">defproblem</span><a
+class="ec-lmtt-10x-x-109">\foreachsolution</span><a
+ id="dx1-5022"></a>. The optional argument of <span
+class="ec-lmss-10x-x-109">onlysolution </span>(and <span
+class="ec-lmss-10x-x-109">onlyproblem</span><a
+ id="dx1-5023"></a><a
+ id="dx1-5024"></a>) is
+inherited from the parent <span
+class="ec-lmss-10x-x-109">defproblem</span><a
id="dx1-5025"></a><a
id="dx1-5026"></a> setting.
</p><!--l. 162--><p class="noindent" >
</p>
<!--l. 162--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">5 </span> <a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">5 </span> <a
id="x1-60005"></a>General Formatting Commands</h3>
<!--l. 164--><p class="noindent" >The commands and environments described in this section are provided to assist
formatting problems and their solutions.
-</p><!--l. 166--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">solution</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 166--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">solution</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-6001"></a><a
id="dx1-6002"></a> <span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\begin{solution}</span></span></span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">text</span><span
-class="lmsy-10">&#x27E9;</span><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\end{solution}</span></span></span> </div><hr>
+class="ec-lmtt-10x-x-109">\begin{solution}</span></span></span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">text</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmtt-10x-x-109">\end{solution}</span></span></span> </div><hr>
</p><!--l. 168--><p class="noindent" >
By default, this is equivalent to <spacer type=vertical size=10><span class="obeylines-h">
- <br /><span class="verb"><span
-class="ec-lmtt-10">\par\noindent\textbf{\solutionname}:</span><span
-class="ec-lmtt-10">&#x00A0;</span></span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">text</span><span
-class="lmsy-10">&#x27E9;</span>
- <br /><spacer type=vertical size=10></span>
+ <br /><span class="verb"><span
+class="ec-lmtt-10x-x-109">\par\noindent\textbf{\solutionname}:</span><span
+class="ec-lmtt-10x-x-109">&#x00A0;</span></span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">text</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>
+ <br /><spacer type=vertical size=10></span>
where <span class="marginpar"><span
-class="ec-lmtt-9">\solutionname</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="ec-lmtt-10">\solutionname</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-6003"></a><span
-class="ec-lmtt-10">\solutionname </span>defaults to &#8220;Solution&#8221;. Note that you must
-place the <span
-class="ec-lmss-10">solution</span><a
+class="ec-lmtt-10x-x-109">\solutionname </span>defaults to &#8220;Solution&#8221;. Note that you
+must place the <span
+class="ec-lmss-10x-x-109">solution</span><a
id="dx1-6004"></a><a
id="dx1-6005"></a> environment inside the <span
-class="ec-lmss-10">onlysolution </span>environment or between
-<span
-class="ec-lmtt-10">\ifshowanswers</span><a
+class="ec-lmss-10x-x-109">onlysolution </span>environment or
+between <span
+class="ec-lmtt-10x-x-109">\ifshowanswers</span><a
id="dx1-6006"></a>&#x2026;<span
-class="ec-lmtt-10">\fi </span>to ensure that it is suppressed when the solutions are not wanted.
-(See <a
+class="ec-lmtt-10x-x-109">\fi </span>to ensure that it is suppressed when the solutions
+are not wanted. (See <a
href="#x1-50004">§4 </a><a
href="#x1-50004">Showing and Hiding Solutions<!--tex4ht:ref: sec:showanswers --></a>.)
-</p><!--l. 181--><p class="indent" > Note that the <span
-class="ec-lmss-10">probsoln </span>package will only define the <span
-class="ec-lmss-10">solution</span><a
+</p><!--l. 181--><p class="indent" > Note that the <span
+class="ec-lmss-10x-x-109">probsoln </span>package will only define the <span
+class="ec-lmss-10x-x-109">solution</span><a
id="dx1-6007"></a><a
- id="dx1-6008"></a> environment if it is not
-already defined.
-</p><!--l. 184--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">textenum</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+ id="dx1-6008"></a> environment if it
+is not already defined.
+</p><!--l. 184--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">textenum</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-6009"></a><a
id="dx1-6010"></a> <span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\begin{textenum}</span></span></span><span
-class="ec-lmtt-10">&#x2026;</span><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\end{textenum}</span></span></span> </div><hr>
+class="ec-lmtt-10x-x-109">\begin{textenum}</span></span></span><span
+class="ec-lmtt-10x-x-109">&#x2026;</span><span class="obeylines-h"><span class="verb"><span
+class="ec-lmtt-10x-x-109">\end{textenum}</span></span></span> </div><hr>
</p><!--l. 186--><p class="noindent" >
The <span
-class="ec-lmss-10">textenum </span>environment is like the <span
-class="ec-lmss-10">enumerate</span><a
+class="ec-lmss-10x-x-109">textenum </span>environment is like the <span
+class="ec-lmss-10x-x-109">enumerate</span><a
id="dx1-6011"></a><a
- id="dx1-6012"></a> environment but is in-line. It uses
-the same counter that the <span
-class="ec-lmss-10">enumerate </span>environment would use at that level so
-the question can be compact but the answer can use <span
-class="ec-lmss-10">enumerate </span>instead. For
+ id="dx1-6012"></a> environment but is in-line. It
+uses the same counter that the <span
+class="ec-lmss-10x-x-109">enumerate </span>environment would use at that level
+so the question can be compact but the answer can use <span
+class="ec-lmss-10x-x-109">enumerate </span>instead. For
+
+
example:
-
</p>
- <div class="verbatim" id="verbatim-6">
+ <div class="verbatim" id="verbatim-6">
\begin{onlyproblem}%
&#x00A0;<br />&#x00A0;&#x00A0;Differentiate&#x00A0;the&#x00A0;following:
&#x00A0;<br />&#x00A0;&#x00A0;\begin{textenum}
@@ -640,65 +679,64 @@ example:
&#x00A0;<br />\end{onlysolution}
</div>
<!--l. 215--><p class="nopar" > In this example, the items in the question are brief, so an <span
-class="ec-lmss-10">enumerate</span><a
+class="ec-lmss-10x-x-109">enumerate</span><a
id="dx1-6013"></a><a
- id="dx1-6014"></a> environment
-would result in a lot of unnecessary white space, but the answers require more space, so
-an <span
-class="ec-lmss-10">enumerate </span>environment is more appropriate. Since the <span
-class="ec-lmss-10">textenum </span>environment uses
-the same counters as the <span
-class="ec-lmss-10">enumerate </span>environment, the question and answer sheets use
-consistent labelling. Note that there are other packages available on CTAN
-that you can use to create in-line lists. Check the <a
-href="http://www.tex.ac.uk/tex-archive/help/Catalogue/bytopic.html#enumeration" >TeX Catalogue</a> for further
-details.
-</p><!--l. 227--><p class="indent" > <span class="marginpar"><span
-class="ec-lmtt-9">\correctitem</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+ id="dx1-6014"></a>
+environment would result in a lot of unnecessary white space, but the answers
+require more space, so an <span
+class="ec-lmss-10x-x-109">enumerate </span>environment is more appropriate. Since the
+<span
+class="ec-lmss-10x-x-109">textenum </span>environment uses the same counters as the <span
+class="ec-lmss-10x-x-109">enumerate </span>environment, the
+question and answer sheets use consistent labelling. Note that there are other
+packages available on CTAN that you can use to create in-line lists. Check the
+<a
+href="http://www.tex.ac.uk/tex-archive/help/Catalogue/bytopic.html#enumeration" >TeX Catalogue</a> for further details.
+</p><!--l. 227--><p class="indent" > <span class="marginpar"><span
+class="ec-lmtt-10">\correctitem</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-6015"></a><span class="marginpar"><span
-class="ec-lmtt-9">\incorrectitem</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="ec-lmtt-10">\incorrectitem</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-6016"></a>
-</p><!--l. 229--><p class="indent" > <hr><div title="Definition"><span
-class="ec-lmtt-10">\correctitem</span><br
+</p><!--l. 229--><p class="indent" > <hr><div title="Definition"><span
+class="ec-lmtt-10x-x-109">\correctitem</span><br
class="newline" /><span
-class="ec-lmtt-10">\incorrectitem </span></div><hr>
+class="ec-lmtt-10x-x-109">\incorrectitem </span></div><hr>
</p><!--l. 231--><p class="noindent" >
You can use the commands <span
-class="ec-lmtt-10">\correctitem </span>and <span
-class="ec-lmtt-10">\incorrectitem </span>in place of
+class="ec-lmtt-10x-x-109">\correctitem </span>and <span
+class="ec-lmtt-10x-x-109">\incorrectitem </span>in place of
<span
-class="ec-lmtt-10">\item</span><a
+class="ec-lmtt-10x-x-109">\item</span><a
id="dx1-6017"></a>. If the solutions are suppressed, these commands behave in the same way
as <span
-class="ec-lmtt-10">\item</span>, otherwise they format the item label using one of the commands:
+class="ec-lmtt-10x-x-109">\item</span>, otherwise they format the item label using one of the commands:
<span class="marginpar"><span
-class="ec-lmtt-9">\correctitemformat</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="ec-lmtt-10">\correctitemformat</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-6018"></a><span class="marginpar"><span
-class="ec-lmtt-9">\incorrectitemformat</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="ec-lmtt-10">\incorrectitemformat</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-6019"></a>
-</p><!--l. 238--><p class="indent" > <hr><div title="Definition"><span
-class="ec-lmtt-10">\correctitemformat{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}</span><br
+</p><!--l. 238--><p class="indent" > <hr><div title="Definition"><span
+class="ec-lmtt-10x-x-109">\correctitemformat{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}</span><br
class="newline" /><span
-class="ec-lmtt-10">\incorrectitemformat{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
+class="ec-lmtt-10x-x-109">\incorrectitemformat{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
</p><!--l. 240--><p class="noindent" >
For example:
-
</p>
- <div class="verbatim" id="verbatim-7">
+ <div class="verbatim" id="verbatim-7">
Under&#x00A0;which&#x00A0;of&#x00A0;the&#x00A0;following&#x00A0;functions&#x00A0;does&#x00A0;$S=\{a_1,a_2\}$
&#x00A0;<br />become&#x00A0;a&#x00A0;probability&#x00A0;space?
&#x00A0;<br />\begin{enumerate}
@@ -709,146 +747,147 @@ Under&#x00A0;which&#x00A0;of&#x00A0;the&#x00A0;following&#x00A0;functions&#x00A0
&#x00A0;<br />\end{enumerate}
</div>
<!--l. 251--><p class="nopar" > The default definition of <span
-class="ec-lmtt-10">\correctitemformat </span>puts a frame around the label.
+class="ec-lmtt-10x-x-109">\correctitemformat </span>puts a frame around the
+label.
</p><!--l. 255--><p class="noindent" >
</p>
<!--l. 255--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">6 </span> <a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">6 </span> <a
id="x1-70006"></a>Defining a Problem</h3>
-<!--l. 257--><p class="noindent" >It is possible to construct a problem sheet with solutions using the commands described
-in the previous sections, however it is also possible to define a set of problems for later
-use. In this way you can create an external file containing many problems some or all of
-which can be loaded and used in a document. The <span
-class="ec-lmss-10">probsoln </span>package has a default data
-set labelled &#8220;default&#8221; in which you can store problems. Alternatively, you can
-create multiple data sets. You can then iterate through each problem in a
-problem set. You can use a previously defined problem more than once, which
-means that by judicious use of <span
-class="ec-lmss-10">onlyproblem</span><a
+<!--l. 257--><p class="noindent" >It is possible to construct a problem sheet with solutions using the commands
+described in the previous sections, however it is also possible to define a set of
+problems for later use. In this way you can create an external file containing
+many problems some or all of which can be loaded and used in a document. The
+<span
+class="ec-lmss-10x-x-109">probsoln </span>package has a default data set labelled &#8220;default&#8221; in which you can
+store problems. Alternatively, you can create multiple data sets. You
+can then iterate through each problem in a problem set. You can use a
+previously defined problem more than once, which means that by judicious
+use of <span
+class="ec-lmss-10x-x-109">onlyproblem</span><a
id="dx1-7001"></a><a
id="dx1-7002"></a>, <span
-class="ec-lmss-10">onlysolution</span><a
+class="ec-lmss-10x-x-109">onlysolution</span><a
id="dx1-7003"></a><a
id="dx1-7004"></a> or the <span
-class="ec-lmss-10">showanswers</span><a
- id="dx1-7005"></a>
-boolean variable in conjunction with <span
-class="ec-lmtt-10">\showanswers</span><a
+class="ec-lmss-10x-x-109">showanswers</span><a
+ id="dx1-7005"></a> boolean variable
+in conjunction with <span
+class="ec-lmtt-10x-x-109">\showanswers</span><a
id="dx1-7006"></a> and <span
-class="ec-lmtt-10">\hideanswers</span><a
- id="dx1-7007"></a>, you can
-print the solutions in a different location to the questions (for example in an
+class="ec-lmtt-10x-x-109">\hideanswers</span><a
+ id="dx1-7007"></a>, you can print
+the solutions in a different location to the questions (for example in an
appendix).
-</p><!--l. 272--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">defproblem</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 272--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">defproblem</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-7008"></a><a
id="dx1-7009"></a> <span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\begin{defproblem}</span></span></span><span
-class="ec-lmtt-10">[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">][</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">default args</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">option</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]</span><br
+class="ec-lmtt-10x-x-109">\begin{defproblem}</span></span></span><span
+class="ec-lmtt-10x-x-109">[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">][</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">default args</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">option</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]</span><br
class="newline" /><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">definition</span><span
-class="lmsy-10">&#x27E9;</span><br
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">definition</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><br
class="newline" /><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\end{defproblem}</span></span></span> </div><hr>
+class="ec-lmtt-10x-x-109">\end{defproblem}</span></span></span> </div><hr>
</p><!--l. 276--><p class="noindent" >
This defines the problem whose label is given by <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9;</span>. The label must be unique for a
-given data set and should not contain active characters or a comma. (Active characters
-include the special characters such as $ and &amp;, but some packages may make other
-symbols active, such as the colon (:) character. For example, the <span
-class="ec-lmss-10">ngerman</span><a
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>. The label must be
+unique for a given data set and should not contain active characters or
+a comma. (Active characters include the special characters such as $
+and &amp;, but some packages may make other symbols active, such as the
+colon (:) character. For example, the <span
+class="ec-lmss-10x-x-109">ngerman</span><a
id="dx1-7010"></a> and <span
-class="ec-lmss-10">babel</span><a
- id="dx1-7011"></a>
-packages make certain punctuation active. Check the relevant package documentation
-for details.)
-</p><!--l. 285--><p class="indent" > <div class="important" title="Important Note"> The final optional argument <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">option</span><span
-class="lmsy-10">&#x27E9; </span>may be <span
-class="ec-lmtt-10">fragile </span>to indicate that the problem
-contains verbatim text. Any occurrences of <span
-class="ec-lmss-10">onlyproblem</span><a
+class="ec-lmss-10x-x-109">babel</span><a
+ id="dx1-7011"></a> packages make
+certain punctuation active. Check the relevant package documentation for
+details.)
+
+
+</p><!--l. 285--><p class="indent" > <div class="important" title="Important Note"> The final optional argument <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">option</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>may be <span
+class="ec-lmtt-10x-x-109">fragile </span>to indicate that the
+problem contains verbatim text. Any occurrences of <span
+class="ec-lmss-10x-x-109">onlyproblem</span><a
id="dx1-7012"></a><a
id="dx1-7013"></a> or <span
-class="ec-lmss-10">onlysolution</span><a
+class="ec-lmss-10x-x-109">onlysolution</span><a
id="dx1-7014"></a><a
- id="dx1-7015"></a> contained within
-<span
-class="ec-lmss-10">defproblem </span>are inherited from <span
-class="ec-lmss-10">defproblem</span>. (See <a
+ id="dx1-7015"></a>
+contained within <span
+class="ec-lmss-10x-x-109">defproblem </span>are inherited from <span
+class="ec-lmss-10x-x-109">defproblem</span>. (See <a
href="#x1-40003">§3 </a><a
-href="#x1-40003">Verbatim<!--tex4ht:ref: sec:verbatim --></a> for further details.)
-</div>
+href="#x1-40003">Verbatim<!--tex4ht:ref: sec:verbatim --></a> for
+further details.) </div>
</p><!--l. 291--><p class="noindent" >
-</p><!--l. 293--><p class="indent" > If <span
-class="ec-lmss-10">defproblem</span><a
+</p><!--l. 293--><p class="indent" > If <span
+class="ec-lmss-10x-x-109">defproblem</span><a
id="dx1-7016"></a><a
id="dx1-7017"></a> occurs in the document or is included via <span
-class="ec-lmtt-10">\input</span><a
+class="ec-lmtt-10x-x-109">\input</span><a
id="dx1-7018"></a> or <span
-class="ec-lmtt-10">\include</span><a
- id="dx1-7019"></a>, then
-the problem will be added to the default data set. If <span
-class="ec-lmss-10">defproblem </span>occurs in an external
-file that is loaded using one of the commands defined in <a
+class="ec-lmtt-10x-x-109">\include</span><a
+ id="dx1-7019"></a>,
+then the problem will be added to the default data set. If <span
+class="ec-lmss-10x-x-109">defproblem </span>occurs in
+an external file that is loaded using one of the commands defined in <a
href="#x1-90008">§8 </a><a
-href="#x1-90008">Loading Problems
-
-
-
-From External Files<!--tex4ht:ref: sec:load --></a> then the problem will be added to the specified data
-set.
-</p><!--l. 300--><p class="indent" > The contents of the <span
-class="ec-lmss-10">defproblem</span><a
+href="#x1-90008">Loading
+Problems From External Files<!--tex4ht:ref: sec:load --></a> then the problem will be added to the specified
+data set.
+</p><!--l. 300--><p class="indent" > The contents of the <span
+class="ec-lmss-10x-x-109">defproblem</span><a
id="dx1-7020"></a><a
- id="dx1-7021"></a> environment should be the text that defines the
-problem. This may include any of the commands defined in <a
+ id="dx1-7021"></a> environment should be the text that defines
+the problem. This may include any of the commands defined in <a
href="#x1-50004">§4 </a><a
-href="#x1-50004">Showing and Hiding
-Solutions<!--tex4ht:ref: sec:showanswers --></a> and <a
+href="#x1-50004">Showing and
+Hiding Solutions<!--tex4ht:ref: sec:showanswers --></a> and <a
href="#x1-60005">§5 </a><a
href="#x1-60005">General Formatting Commands<!--tex4ht:ref: sec:formatting --></a>.
-</p><!--l. 305--><p class="indent" > The problem may optionally take <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9; </span>arguments (where <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9; </span>is from 0 to 9). The
-arguments can be referenced in the definition via <span
-class="ec-lmtt-10">#1</span>,&#x2026;,<span
-class="ec-lmtt-10">#9</span>. If <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9; </span>is omitted then the
-problem doesn&#8217;t take any arguments. The following example defines a problem with one
-argument:
+</p><!--l. 305--><p class="indent" > The problem may optionally take <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>arguments (where <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>is from 0 to 9).
+The arguments can be referenced in the definition via <span
+class="ec-lmtt-10x-x-109">#1</span>,&#x2026;,<span
+class="ec-lmtt-10x-x-109">#9</span>. If <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>is omitted
+then the problem doesn&#8217;t take any arguments. The following example defines a
+problem with one argument:
-
</p>
- <div class="verbatim" id="verbatim-8">
+ <div class="verbatim" id="verbatim-8">
\begin{defproblem}[1]{diffsin}
&#x00A0;<br />Differentiate&#x00A0;$f(x)=\sin(#1x)$.
&#x00A0;<br />\begin{onlysolution}%
@@ -859,26 +898,25 @@ argument:
&#x00A0;<br />\end{defproblem}
</div>
<!--l. 320--><p class="nopar" >
-</p><!--l. 322--><p class="indent" > The second optional argument <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">default args</span><span
-class="lmsy-10">&#x27E9; </span>supplies default problem arguments
-that will automatically be used within <span
-class="ec-lmtt-10">\thisproblem</span><a
- id="dx1-7022"></a> when used in <span
-class="ec-lmtt-10">\foreachproblem</span><a
- id="dx1-7023"></a>
-in conjunction with the package option <span
-class="ec-lmss-10">usedefaultargs</span><a
+</p><!--l. 322--><p class="indent" > The second optional argument <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">default args</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>supplies default problem
+arguments that will automatically be used within <span
+class="ec-lmtt-10x-x-109">\thisproblem</span><a
+ id="dx1-7022"></a> when used in
+<span
+class="ec-lmtt-10x-x-109">\foreachproblem</span><a
+ id="dx1-7023"></a> in conjunction with the package option <span
+class="ec-lmss-10x-x-109">usedefaultargs</span><a
id="dx1-7024"></a>. (See <a
-href="#x1-100009">§9 </a><a
-href="#x1-100009">Iterating Through
-Datasets<!--tex4ht:ref: sec:foreach --></a>.) For example:
+href="#x1-110009">§9
+</a><a
+href="#x1-110009">Iterating Through Datasets<!--tex4ht:ref: sec:foreach --></a>.) For example:
-
</p>
- <div class="verbatim" id="verbatim-9">
+ <div class="verbatim" id="verbatim-9">
\begin{defproblem}[1][{2}]{diffsin}
&#x00A0;<br />Differentiate&#x00A0;$f(x)=\sin(#1x)$.
&#x00A0;<br />\begin{onlysolution}%
@@ -889,74 +927,73 @@ Datasets<!--tex4ht:ref: sec:foreach --></a>.) For example:
&#x00A0;<br />\end{defproblem}
</div>
<!--l. 336--><p class="nopar" >
-</p><!--l. 338--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\newproblem</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 338--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\newproblem</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-7025"></a> <span
-class="ec-lmtt-10">\newproblem[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">][</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">default args</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">problem</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">solution</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}</span>
+class="ec-lmtt-10x-x-109">\newproblem[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">][</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">default args</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">problem</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">solution</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}</span>
</div><hr>
</p><!--l. 340--><p class="noindent" >
This is a shortcut command for: <span class="obeylines-h">
- <span
-class="ec-lmtt-10">\begin{defproblem}[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">][</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">default args</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}%</span>
- <br /><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">problem</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">%</span>
- <br /><span
-class="ec-lmtt-10">\begin{onlysolution}%</span>
- <br /><span
-class="ec-lmtt-10">\begin{solution}%</span>
- <br /><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">solution</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">%</span>
- <br /><span
-class="ec-lmtt-10">\end{solution}%</span>
- <br /><span
-class="ec-lmtt-10">\end{onlysolution}%</span>
- <br /><span
-class="ec-lmtt-10">\end{defproblem}</span></span>
-</p><!--l. 352--><p class="indent" > For example:
+ <span
+class="ec-lmtt-10x-x-109">\begin{defproblem}[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">][</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">default args</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}%</span>
+ <br /><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">problem</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">%</span>
+ <br /><span
+class="ec-lmtt-10x-x-109">\begin{onlysolution}%</span>
+ <br /><span
+class="ec-lmtt-10x-x-109">\begin{solution}%</span>
+ <br /><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">solution</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">%</span>
+ <br /><span
+class="ec-lmtt-10x-x-109">\end{solution}%</span>
+ <br /><span
+class="ec-lmtt-10x-x-109">\end{onlysolution}%</span>
+ <br /><span
+class="ec-lmtt-10x-x-109">\end{defproblem}</span></span>
+</p><!--l. 352--><p class="indent" > For example:
-
</p>
- <div class="verbatim" id="verbatim-10">
+ <div class="verbatim" id="verbatim-10">
\newproblem[1]{diffsin}{%
&#x00A0;<br />&#x00A0;&#x00A0;\(f(x)&#x00A0;=&#x00A0;\sin(#1x)\)
&#x00A0;<br />}%
@@ -966,10 +1003,9 @@ class="ec-lmtt-10">\end{defproblem}</span></span>
</div>
<!--l. 360--><p class="nopar" > is equivalent to
-
</p>
- <div class="verbatim" id="verbatim-11">
+ <div class="verbatim" id="verbatim-11">
\begin{defproblem}[1]{diffcos}%
&#x00A0;<br />&#x00A0;&#x00A0;\(f(x)&#x00A0;=&#x00A0;\cos(#1x)\)
&#x00A0;<br />\begin{onlysolution}%
@@ -979,22 +1015,21 @@ class="ec-lmtt-10">\end{defproblem}</span></span>
&#x00A0;<br />\end{onlysolution}%
&#x00A0;<br />\end{defproblem}
</div>
-<!--l. 371--><p class="nopar" > (In this example, the argument will need to be a positive number to avoid a double
-minus in the answer. If you want to perform floating point arithmetic on the arguments,
-then try the <span
-class="ec-lmss-10">fp</span><a
+<!--l. 371--><p class="nopar" > (In this example, the argument will need to be a positive number to avoid a
+double minus in the answer. If you want to perform floating point arithmetic on
+the arguments, then try the <span
+class="ec-lmss-10x-x-109">fp</span><a
id="dx1-7026"></a> or <span
-class="ec-lmss-10">pgfmath</span><a
+class="ec-lmss-10x-x-109">pgfmath</span><a
id="dx1-7027"></a> packages.)
-</p><!--l. 377--><p class="indent" > Alternatively, if you want to supply default arguments to use when iterating through
-problems with <span
-class="ec-lmtt-10">\foreachproblem</span><a
+</p><!--l. 377--><p class="indent" > Alternatively, if you want to supply default arguments to use when iterating
+through problems with <span
+class="ec-lmtt-10x-x-109">\foreachproblem</span><a
id="dx1-7028"></a>:
-
</p>
- <div class="verbatim" id="verbatim-12">
+ <div class="verbatim" id="verbatim-12">
\newproblem[1][{3}]{diffsin}{%
&#x00A0;<br />&#x00A0;&#x00A0;\(f(x)&#x00A0;=&#x00A0;\sin(#1x)\)
&#x00A0;<br />}%
@@ -1003,135 +1038,134 @@ class="ec-lmtt-10">\foreachproblem</span><a
&#x00A0;<br />}
</div>
<!--l. 386--><p class="nopar" >
-</p><!--l. 389--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\newproblem*</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 389--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\newproblem*</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-7029"></a> <span
-class="ec-lmtt-10">\newproblem*[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">][</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">default args</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">definition</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}</span>
+class="ec-lmtt-10x-x-109">\newproblem*[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">][</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">default args</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">definition</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}</span>
</div><hr>
</p><!--l. 391--><p class="noindent" >
This is a shortcut for: <span class="obeylines-h">
- <span
-class="ec-lmtt-10">\begin{defproblem}[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">][</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">default args</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}%</span>
- <br /><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">definition</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">%</span>
- <br /><span
-class="ec-lmtt-10">\end{defproblem}</span></span>
-</p><!--l. 399--><p class="indent" > <div class="important" title="Important Note"> Note that you can&#8217;t use verbatim text with <span
-class="ec-lmtt-10">\newproblem </span>or <span
-class="ec-lmtt-10">\newproblem*</span>. Use the
-<span
-class="ec-lmss-10">defproblem</span><a
+ <span
+class="ec-lmtt-10x-x-109">\begin{defproblem}[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">][</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">default args</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}%</span>
+ <br /><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">definition</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">%</span>
+ <br /><span
+class="ec-lmtt-10x-x-109">\end{defproblem}</span></span>
+</p><!--l. 399--><p class="indent" > <div class="important" title="Important Note"> Note that you can&#8217;t use verbatim text with <span
+class="ec-lmtt-10x-x-109">\newproblem </span>or <span
+class="ec-lmtt-10x-x-109">\newproblem*</span>.
+Use the <span
+class="ec-lmss-10x-x-109">defproblem</span><a
id="dx1-7030"></a><a
id="dx1-7031"></a> environment instead with the <span
-class="ec-lmtt-10">fragile option</span>. </div>
+class="ec-lmtt-10x-x-109">fragile option</span>. </div>
</p><!--l. 403--><p class="noindent" >
</p><!--l. 405--><p class="noindent" >
</p>
<!--l. 405--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">7 </span> <a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">7 </span> <a
id="x1-80007"></a>Using a Problem</h3>
<!--l. 407--><p class="noindent" >Once you have defined a problem using <span
-class="ec-lmss-10">defproblem</span><a
+class="ec-lmss-10x-x-109">defproblem</span><a
id="dx1-8001"></a><a
id="dx1-8002"></a> or <span
-class="ec-lmtt-10">\newproblem</span><a
+class="ec-lmtt-10x-x-109">\newproblem</span><a
id="dx1-8003"></a> (see <a
-href="#x1-70006">§6 </a><a
-href="#x1-70006">Defining a
-Problem<!--tex4ht:ref: sec:defproblem --></a>), you can later display the problem using:
-</p><!--l. 410--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\useproblem</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+href="#x1-70006">§6
+</a><a
+href="#x1-70006">Defining a Problem<!--tex4ht:ref: sec:defproblem --></a>), you can later display the problem using:
+</p><!--l. 410--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\useproblem</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-8004"></a> <span
-class="ec-lmtt-10">\useproblem[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">arg</span><sub><span
-class="rm-lmr-8x-x-95">1</span></sub><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}</span><span
-class="ec-lmtt-10">&#x2026;{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">arg</span><sub><span
-class="lmmi-8x-x-95">N</span></sub><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
+class="ec-lmtt-10x-x-109">\useproblem[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">arg</span><sub><span
+class="rm-lmr-8x-x-103">1</span></sub><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}</span><span
+class="ec-lmtt-10x-x-109">&#x2026;{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">arg</span><sub><span
+class="lmmi-8x-x-103">N</span></sub><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}</span>
+</div><hr>
</p><!--l. 413--><p class="noindent" >
where <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9; </span>is the name of the data set that contains the problem (the default data
-set is used if omitted), <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">label</span><span
-class="lmsy-10">&#x27E9; </span>is the label identifying the required problem and <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">arg</span><sub><span
-class="rm-lmr-8x-x-95">1</span></sub><span
-class="lmsy-10">&#x27E9;</span>, &#x2026;,
-<span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">arg</span><sub><span
-class="lmmi-8x-x-95">N</span></sub><span
-class="lmsy-10">&#x27E9; </span>are the arguments to pass to the problem, if the problem was defined to have
-arguments (where <span
-class="lmmi-10">N </span>is the number of arguments specified when the problem was
-defined).
-</p><!--l. 422--><p class="indent" > For example, in the previous section the problem <span
-class="ec-lmtt-10">diffcos </span>was defined to have one
-argument, so it can be used as follows:
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>is the name of the data set that contains the problem (the
+default data set is used if omitted), <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">label</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>is the label identifying the required
+problem and <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">arg</span><sub><span
+class="rm-lmr-8x-x-103">1</span></sub><span
+class="lmsy-10x-x-109">&#x27E9;</span>, &#x2026;, <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">arg</span><sub><span
+class="lmmi-8x-x-103">N</span></sub><span
+class="lmsy-10x-x-109">&#x27E9; </span>are the arguments to pass to the problem, if the
+problem was defined to have arguments (where <span
+class="lmmi-10x-x-109">N </span>is the number of arguments
+specified when the problem was defined).
+</p><!--l. 422--><p class="indent" > For example, in the previous section the problem <span
+class="ec-lmtt-10x-x-109">diffcos </span>was defined to have
+one argument, so it can be used as follows:
-
</p>
- <div class="verbatim" id="verbatim-13">
+ <div class="verbatim" id="verbatim-13">
\useproblem{diffcos}{3}
</div>
<!--l. 426--><p class="nopar" > This will be equivalent to:
-
</p>
- <div class="verbatim" id="verbatim-14">
+ <div class="verbatim" id="verbatim-14">
\(f(x)&#x00A0;=&#x00A0;\cos(3x)\)
&#x00A0;<br />\begin{onlysolution}%
&#x00A0;<br />\begin{solution}%
@@ -1143,367 +1177,575 @@ argument, so it can be used as follows:
</p><!--l. 437--><p class="noindent" >
</p>
<!--l. 437--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">8 </span> <a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">8 </span> <a
id="x1-90008"></a>Loading Problems From External Files</h3>
<!--l. 439--><p class="noindent" >You can store all your problem definitions (see <a
href="#x1-70006">§6 </a><a
-href="#x1-70006">Defining a Problem<!--tex4ht:ref: sec:defproblem --></a>) in an external
-file. These problems can all be appended to the default data set by including the file via
-<span
-class="ec-lmtt-10">\input</span><a
- id="dx1-9001"></a> or they can be appended to other data sets using one of the commands
-described below. Once you have loaded all the required problems, you can iterate
-through the data sets using the commands described in <a
-href="#x1-100009">§9 </a><a
-href="#x1-100009">Iterating Through Datasets<!--tex4ht:ref: sec:foreach --></a>.
-Note that the commands below will create a new data set, if the named data set doesn&#8217;t
+href="#x1-70006">Defining a Problem<!--tex4ht:ref: sec:defproblem --></a>) in an
+external file. These problems can all be appended to the default data set by
+including the file via <span
+class="ec-lmtt-10x-x-109">\input</span><a
+ id="dx1-9001"></a> or they can be appended to other data sets
+using one of the commands described below. Once you have loaded all
+the required problems, you can iterate through the data sets using the
+commands described in <a
+href="#x1-110009">§9 </a><a
+href="#x1-110009">Iterating Through Datasets<!--tex4ht:ref: sec:foreach --></a>. Note that the
+commands below will create a new data set, if the named data set doesn&#8217;t
exist.
-</p><!--l. 450--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\loadallproblems</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 450--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\loadallproblems</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-9002"></a> <span
-class="ec-lmtt-10">\loadallproblems[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
+class="ec-lmtt-10x-x-109">\loadallproblems[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
</p><!--l. 452--><p class="noindent" >
This will load all problems defined in <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9; </span>and append them to the specified
-data set, in the order in which they are defined in the file. If <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9; </span>is
-omitted, the default data set will be used. If <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9; </span>doesn&#8217;t exist, it will be
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>and append them to the
+specified data set, in the order in which they are defined in the file. If <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>
+is omitted, the default data set will be used. If <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>doesn&#8217;t exist, it will be
created.
-</p><!--l. 459--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\loadselectedproblems</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 459--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\loadselectedproblems</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-9003"></a> <span
-class="ec-lmtt-10">\loadselectedproblems[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">labels</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}</span>
+class="ec-lmtt-10x-x-109">\loadselectedproblems[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">labels</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}</span>
</div><hr>
</p><!--l. 461--><p class="noindent" >
This is like <span
-class="ec-lmtt-10">\loadallproblems</span>, but only those problems whose label is listed in the
-comma-separated list <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">labels</span><span
-class="lmsy-10">&#x27E9; </span>are loaded. For example, if I have some problems defined
-in the file <span
-class="ec-lmtt-10">derivatives.tex</span>, then
+class="ec-lmtt-10x-x-109">\loadallproblems</span>, but only those problems whose label is listed in
+the comma-separated list <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">labels</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>are loaded. For example, if I have some
+problems defined in the file <span
+class="ec-lmtt-10x-x-109">derivatives.tex</span>, then
-
</p>
- <div class="verbatim" id="verbatim-15">
+ <div class="verbatim" id="verbatim-15">
\loadselectedproblems{diffsin,diffcos}{derivatives}
</div>
<!--l. 468--><p class="nopar" > will only load the problems whose labels are <span
-class="ec-lmtt-10">diffsin </span>and <span
-class="ec-lmtt-10">diffcos</span>, respectively. All
-the other problems in the file will remain undefined.
-</p><!--l. 473--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\loadexceptproblems</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="ec-lmtt-10x-x-109">diffsin </span>and <span
+class="ec-lmtt-10x-x-109">diffcos</span>,
+respectively. All the other problems in the file will remain undefined.
+</p><!--l. 473--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\loadexceptproblems</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-9004"></a> <span
-class="ec-lmtt-10">\loadexceptproblems[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">exception list</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}</span>
-</div><hr>
+class="ec-lmtt-10x-x-109">\loadexceptproblems[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">exception</span>
+<span
+class="ec-lmri-10x-x-109">list</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
</p><!--l. 475--><p class="noindent" >
This is the reverse of <span
-class="ec-lmtt-10">\loadselectedproblems</span>. This loads all problems except those
-whose labels are listed in <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">exception list</span><span
-class="lmsy-10">&#x27E9;</span>.
-</p><!--l. 480--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\loadrandomproblems</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="ec-lmtt-10x-x-109">\loadselectedproblems</span>. This loads all problems except
+those whose labels are listed in <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">exception list</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>.
+</p><!--l. 480--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\loadrandomproblems</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-9005"></a> <span
-class="ec-lmtt-10">\loadrandomproblems[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}</span>
+class="ec-lmtt-10x-x-109">\loadrandomproblems[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}</span>
</div><hr>
</p><!--l. 482--><p class="noindent" >
This randomly loads <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9; </span>problems from <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9; </span>and adds them to the given data
-set. If <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9; </span>is omitted, the default data set is assumed. Note that the
-problems will be added to the data set in a random order, not in the order
-in which they were defined. There must be at least <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9; </span>problems defined in
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>problems from <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>and adds them to the given
+data set. If <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>is omitted, the default data set is assumed. Note that the
+problems will be added to the data set in a random order, not in the order in
+which they were defined. There must be at least <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>problems defined in
<span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span>.
-</p><!--l. 490--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\loadrandomexcept</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>.
+</p><!--l. 490--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\loadrandomexcept</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-9006"></a> <span
-class="ec-lmtt-10">\loadrandomexcept[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">exception</span>
+class="ec-lmtt-10x-x-109">\loadrandomexcept[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">exception</span>
<span
-class="ec-lmri-10">list</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
+class="ec-lmri-10x-x-109">list</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
</p><!--l. 493--><p class="noindent" >
This is similar to <span
-class="ec-lmtt-10">\loadrandomproblems </span>except that it won&#8217;t load those problems
-whose labels are listed in <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">exception list</span><span
-class="lmsy-10">&#x27E9;</span>.
-</p><!--l. 497--><p class="indent" > Note that the random number generator has been modified in version 3.01 in order
-to fix a bug. If you want to ensure that your random numbers are compatible with
-earlier versions, you can switch to the old generator using
-</p><!--l. 501--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\PSNuseoldrandom</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+class="ec-lmtt-10x-x-109">\loadrandomproblems </span>except that it won&#8217;t load those
+problems whose labels are listed in <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">exception list</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>. <span
+class="ec-lmbx-10x-x-109">If you want to</span>
+<span
+class="ec-lmbx-10x-x-109">automatically exclude problems included in previous documents, see</span>
+<a
+href="#x1-100008.1"><span
+class="ec-lmbx-10x-x-109">§8.1 </span></a><a
+href="#x1-100008.1"><span
+class="ec-lmbx-10x-x-109">Randomly Selecting Problems Not Selected in Previous</span>
+<span
+class="ec-lmbx-10x-x-109">Documents</span><!--tex4ht:ref: sec:exprev --></a><span
+class="ec-lmbx-10x-x-109">.</span>
+</p><!--l. 499--><p class="indent" > Note that the random number generator has been modified in version 3.01 in
+order to fix a bug. If you want to ensure that your random numbers are
+compatible with earlier versions, you can switch to the old generator
+using
+</p><!--l. 503--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\PSNuseoldrandom</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-9007"></a> <span
-class="ec-lmtt-10">\PSNuseoldrandom </span></div><hr>
-</p><!--l. 503--><p class="noindent" >
-</p><!--l. 505--><p class="indent" > <div class="important" title="Important Note"> It is generally not a good idea to place anything in <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9; </span>that is not inside the
-body of <span
-class="ec-lmss-10">defproblem</span><a
+class="ec-lmtt-10x-x-109">\PSNuseoldrandom </span></div><hr>
+</p><!--l. 505--><p class="noindent" >
+</p><!--l. 507--><p class="indent" > <div class="important" title="Important Note"> It is generally not a good idea to place anything in <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>that is not
+inside the body of <span
+class="ec-lmss-10x-x-109">defproblem</span><a
id="dx1-9008"></a><a
id="dx1-9009"></a> or in the arguments to <span
-class="ec-lmtt-10">\newproblem</span><a
- id="dx1-9010"></a> or <span
-class="ec-lmtt-10">\newproblem*</span><a
- id="dx1-9011"></a>. All
-the commands in this section input the external file within a local scope, so
-command definitions would need to be made global to have any effect. In addition,
+class="ec-lmtt-10x-x-109">\newproblem</span><a
+ id="dx1-9010"></a> or
<span
-class="ec-lmtt-10">\loadrandomproblems </span>has to load each file twice, which means that anything outside a
-problem definition will be parsed twice. </div>
-</p><!--l. 514--><p class="noindent" >
-</p><!--l. 516--><p class="noindent" >
-</p>
-<!--l. 516--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">9 </span> <a
- id="x1-100009"></a>Iterating Through Datasets</h3>
-<!--l. 518--><p class="noindent" >Once you have defined all your problems for a given data set, you can use an individual
-problem with <span
-class="ec-lmtt-10">\useproblem</span><a
- id="dx1-10001"></a> (see <a
-href="#x1-80007">§7 </a><a
-href="#x1-80007">Using a Problem<!--tex4ht:ref: sec:useproblem --></a>) but it is more likely that you will
-want to iterate through all the problems so that you don&#8217;t need to remember the labels
-of all the problems you have defined.
+class="ec-lmtt-10x-x-109">\newproblem*</span><a
+ id="dx1-9011"></a>. All the commands in this section input the external file within a
+local scope, so command definitions would need to be made global to have any
+effect. In addition, <span
+class="ec-lmtt-10x-x-109">\loadrandomproblems </span>has to load each file twice, which
+means that anything outside a problem definition will be parsed twice.
+</div>
-
-</p><!--l. 524--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\foreachproblem</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
+</p><!--l. 516--><p class="noindent" >
+</p><!--l. 519--><p class="noindent" >
+</p>
+<!--l. 519--><p class="noindent" ><a
+href="#top">Top</a></p><h4 class="subsectionHead"><span class="titlemark">8.1 </span> <a
+ id="x1-100008.1"></a>Randomly Selecting Problems Not Selected in Previous Documents</h4>
+<!--l. 522--><p class="noindent" >Suppose you have a large set of questions that you want to randomly select for
+assignments and exams. The chances are, you don&#8217;t want to include questions
+that have been previously set for, say, the last three years. That is, you don&#8217;t
+want to select questions the students may already have seen. As from version
+3.03, you can now do this.
+</p><!--l. 529--><p class="indent" > The <span
+class="ec-lmss-10x-x-109">probsoln</span><a
+ id="dx1-10001"></a> package defaults to the UK academic year, which starts in
+September. If this isn&#8217;t appropriate, you can change it using:
+</p><!--l. 532--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\SetStartMonth</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
id="dx1-10002"></a> <span
-class="ec-lmtt-10">\foreachproblem[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">body</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 526--><p class="noindent" >
+class="ec-lmtt-10x-x-109">\SetStartMonth{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 534--><p class="noindent" >
+where <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>is the number of the month. (1 = January, 2 = February,
+etc.)
+</p><!--l. 538--><p class="indent" > The <span
+class="ec-lmri-10x-x-109">start year </span>is the calender year in effect when the academic
+year started. For example, if this is the academic year 2011/12, then
+the start year is 2011. This is automatically set to the start of the
+current academic year. It is also updated when <span
+class="ec-lmtt-10x-x-109">\SetStartMonth </span>is
+used.<span class="footnote-mark"><a
+href="#fn1x0" id="fn1x0-bk"><sup class="textsuperscript">1</sup></a></span><a
+ id="x1-10003f1"></a>
+If you want to set it to a specific year, you can use:
+</p><!--l. 545--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\SetStartYear</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-10004"></a> <span
+class="ec-lmtt-10x-x-109">\SetStartYear{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">year</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 547--><p class="noindent" >
+For example: <span class="obeylines-h"><span class="verb"><span
+class="ec-lmtt-10x-x-109">\SetStartYear{2008}</span></span></span> indicates the academic year 2008/9.
+</p><!--l. 551--><p class="indent" > There are two files concerned with previously used labels. They are:
+ </p><dl class="description"><dt class="description">
+<span
+class="ec-lmssbx-10x-x-109">The previously used labels file</span> </dt><dd
+class="description">This keeps track of all problems used in
+ previous years, as well as problems used by other documents that have
+ this as their previously used labels file, and it contains the problem
+ labels from the last run of the current document.
+ </dd><dt class="description">
+<span
+class="ec-lmssbx-10x-x-109">The current used labels file</span> </dt><dd
+class="description">This defaults to <span
+class="ec-lmtt-10x-x-109">\jobname.prb</span>, but the name can
+ be changed using:
+ <!--l. 562--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\SetUsedFileName</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-10005"></a> <span
+class="ec-lmtt-10x-x-109">\SetUsedFileName{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">name</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+ </p><!--l. 564--><p class="noindent" >
+ This file keeps track of all the labels used in the current document from
+ the previous <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run. Note that if you want to delete this file, first
+ clear it using
+
+
+ </p><!--l. 568--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\ClearUsedFile</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-10006"></a> <span
+class="ec-lmtt-10x-x-109">\ClearUsedFile{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">file</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+ </p><!--l. 570--><p class="noindent" >
+ in place of <span
+class="ec-lmtt-10x-x-109">\ExcludePreviousFile{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">file</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}</span>, described below. The
+ argument <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">file</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>is the previously used labels file described above.
+ <span
+class="ec-lmtt-10x-x-109">\ClearUsedFile </span>will remove all labels in the current used labels file from
+ the previously used labels file and clear the current used labels file. Once
+ this file is empty, it may then be deleted.
+</p>
+ </dd></dl>
+<!--l. 580--><p class="indent" > Before loading randomly selected problems, first specify the previously used
+labels file with the command:
+</p><!--l. 582--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\ExcludePreviousFile</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-10007"></a> <span
+class="ec-lmtt-10x-x-109">\ExcludePreviousFile[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">number of years</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">file</span>
+<span
+class="ec-lmri-10x-x-109">name</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 584--><p class="noindent" >
+where <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">file name</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>is the name of the previously used file. The optional argument
+<span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">number of years</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>specifies the year cut-off. This defaults to 3, which means that
+only those labels used this year or the previous 2 years will be kept. Any
+problems used before then may be reused.
+</p><!--l. 591--><p class="indent" > Suppose I&#8217;m lecturing a first year undergraduate mathematics course
+(designated, say, mth101). I want to set assignments on each topic and an exam
+at the end of the year (as well as a resit or second sitting paper). I&#8217;ve got
+databases with problems for each topic, but the first and second sitting
+exams mustn&#8217;t include any of the problems used in the assignments
+or any problems used in assignments or exams for the previous two
+academic years. I&#8217;m going to arrange my directory structure as follows:
+</p>
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">mth101/</span>
+ <ul class="itemize2">
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">assignment1/ </span>(differentiation)
+ <ul class="itemize3">
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">assignment1.tex</span></li></ul>
+ </li>
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">assignment2/ </span>(probability spaces)
+ <ul class="itemize3">
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">assignment2.tex</span></li></ul>
+ </li>
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">assignment3/ </span>(linear algebra)
+ <ul class="itemize3">
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">assignment3.tex</span></li></ul>
+
+
+ </li>
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">exams/</span>
+ <ul class="itemize3">
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">exam.tex </span>(first sitting)
+ </li>
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">resit.tex </span>(second sitting)</li></ul>
+ </li>
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">databases/</span>
+ <ul class="itemize3">
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">differentiation.tex</span>
+ </li>
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">probabilityspaces.tex</span>
+ </li>
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">linearalgebra.tex</span></li></ul>
+ </li>
+ <li class="itemize"><span
+class="ec-lmtt-10x-x-109">previouslabels.tex </span>(created by <span
+class="ec-lmss-10x-x-109">probsoln</span><a
+ id="dx1-10008"></a>)</li></ul>
+ </li></ul>
+<!--l. 629--><p class="noindent" >
+</p>
+<!--l. 629--><p class="noindent" ><a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">9 </span> <a
+ id="x1-110009"></a>Iterating Through Datasets</h3>
+<!--l. 631--><p class="noindent" >Once you have defined all your problems for a given data set, you can use an
+individual problem with <span
+class="ec-lmtt-10x-x-109">\useproblem</span><a
+ id="dx1-11001"></a> (see <a
+href="#x1-80007">§7 </a><a
+href="#x1-80007">Using a Problem<!--tex4ht:ref: sec:useproblem --></a>) but it is more
+likely that you will want to iterate through all the problems so that
+you don&#8217;t need to remember the labels of all the problems you have
+defined.
+</p><!--l. 637--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\foreachproblem</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-11002"></a> <span
+class="ec-lmtt-10x-x-109">\foreachproblem[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">body</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 639--><p class="noindent" >
This does <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">body</span><span
-class="lmsy-10">&#x27E9; </span>for each problem in the given data set. If <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9; </span>is omitted, the
-default data set is used. Within <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">body</span><span
-class="lmsy-10">&#x27E9; </span>you can use
-</p><!--l. 530--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\thisproblem</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-10003"></a> <span
-class="ec-lmtt-10">\thisproblem </span></div><hr>
-</p><!--l. 532--><p class="noindent" >
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">body</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>for each problem in the given data set. If <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>is omitted,
+the default data set is used. Within <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">body</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>you can use
+</p><!--l. 643--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\thisproblem</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-11003"></a> <span
+class="ec-lmtt-10x-x-109">\thisproblem </span></div><hr>
+</p><!--l. 645--><p class="noindent" >
to use the current problem and
-</p><!--l. 534--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\thisproblemlabel</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-10004"></a> <span
-class="ec-lmtt-10">\thisproblemlabel </span></div><hr>
-</p><!--l. 536--><p class="noindent" >
+</p><!--l. 647--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\thisproblemlabel</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-11004"></a> <span
+class="ec-lmtt-10x-x-109">\thisproblemlabel </span></div><hr>
+</p><!--l. 649--><p class="noindent" >
to access the current label. If the problem requires arguments, and no default
-arguments were supplied in the problem definition or the package option <span
-class="ec-lmss-10">usedefaultargs</span><a
- id="dx1-10005"></a>
-was not used, then you will be prompted for arguments, so if you want to use this
-approach you will need to use <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>&#x00A0;in interactive mode. If you do provide
-arguments, they will be stored in the event that you need to iterate through the data
-set again. The arguments will be included in <span
-class="ec-lmtt-10">\thisproblem</span>, so you only need to use
+arguments were supplied in the problem definition or the package option
<span
-class="ec-lmtt-10">\thisproblem </span>without having to specify <span
-class="ec-lmtt-10">\useproblem</span><a
- id="dx1-10006"></a>.
-</p><!--l. 548--><p class="indent" > For example, to iterate through all problems in the default data set:
+class="ec-lmss-10x-x-109">usedefaultargs</span><a
+ id="dx1-11005"></a> was not used, then you will be prompted for arguments, so if you
+
+
+want to use this approach you will need to use <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;in interactive mode. If
+you do provide arguments, they will be stored in the event that you need to
+iterate through the data set again. The arguments will be included in
+<span
+class="ec-lmtt-10x-x-109">\thisproblem</span>, so you only need to use <span
+class="ec-lmtt-10x-x-109">\thisproblem </span>without having to specify
+<span
+class="ec-lmtt-10x-x-109">\useproblem</span><a
+ id="dx1-11006"></a>.
+</p><!--l. 661--><p class="indent" > For example, to iterate through all problems in the default data set:
-
</p>
- <div class="verbatim" id="verbatim-16">
+ <div class="verbatim" id="verbatim-16">
\begin{enumerate}
&#x00A0;<br />\foreachproblem{\item\thisproblem}
&#x00A0;<br />\end{enumerate}
</div>
-<!--l. 554--><p class="nopar" >
-</p><!--l. 556--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\foreachsolution</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-10007"></a> <span
-class="ec-lmtt-10">\foreachsolution[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">data set</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">body</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 558--><p class="noindent" >
+<!--l. 667--><p class="nopar" >
+</p><!--l. 669--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\foreachsolution</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-11007"></a> <span
+class="ec-lmtt-10x-x-109">\foreachsolution[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">data set</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">body</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 671--><p class="noindent" >
This is equivalent to <span
-class="ec-lmtt-10">\foreachsolution</span>, but only iterates through problems that
-contain the <span
-class="ec-lmss-10">onlysolution</span><a
- id="dx1-10008"></a><a
- id="dx1-10009"></a> environment. Note that you still need to use <span
-class="ec-lmtt-10">\showanswers</span><a
- id="dx1-10010"></a> or
-the <span
-class="ec-lmss-10">answers</span><a
- id="dx1-10011"></a> package option for the contents of the <span
-class="ec-lmss-10">onlysolution</span><a
- id="dx1-10012"></a><a
- id="dx1-10013"></a> environment to
-appear.
-</p><!--l. 565--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\foreachdataset</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-10014"></a> <span
-class="ec-lmtt-10">\foreachdataset{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">cmd</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">body</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 567--><p class="noindent" >
+class="ec-lmtt-10x-x-109">\foreachsolution</span>, but only iterates through problems
+that contain the <span
+class="ec-lmss-10x-x-109">onlysolution</span><a
+ id="dx1-11008"></a><a
+ id="dx1-11009"></a> environment. Note that you still need to use
+<span
+class="ec-lmtt-10x-x-109">\showanswers</span><a
+ id="dx1-11010"></a> or the <span
+class="ec-lmss-10x-x-109">answers</span><a
+ id="dx1-11011"></a> package option for the contents of the <span
+class="ec-lmss-10x-x-109">onlysolution</span><a
+ id="dx1-11012"></a><a
+ id="dx1-11013"></a>
+environment to appear.
+</p><!--l. 678--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\foreachdataset</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-11014"></a> <span
+class="ec-lmtt-10x-x-109">\foreachdataset{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">cmd</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">body</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 680--><p class="noindent" >
This does <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">body</span><span
-class="lmsy-10">&#x27E9; </span>for each of the defined data sets. Within <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">body</span><span
-class="lmsy-10">&#x27E9;</span>, <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">cmd</span><span
-class="lmsy-10">&#x27E9; </span>will be set to
-the name of the current data set. For example, to display all problems in all data
-sets:
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">body</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>for each of the defined data sets. Within <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">body</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>, <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">cmd</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>will be
+set to the name of the current data set. For example, to display all problems in
+all data sets:
-
</p>
- <div class="verbatim" id="verbatim-17">
+ <div class="verbatim" id="verbatim-17">
\begin{enumerate}
&#x00A0;<br />\foreachdataset{\thisdataset}{%
&#x00A0;<br />\foreachproblem[\thisdataset]{\item\thisproblem}}
&#x00A0;<br />\end{enumerate}
</div>
-<!--l. 576--><p class="nopar" >
-</p><!--l. 578--><p class="indent" > Suppose I have two external files called <span
-class="ec-lmtt-10">derivatives.tex </span>and <span
-class="ec-lmtt-10">probspaces.tex</span>
-which define problems using both <span
-class="ec-lmss-10">onlyproblem</span><a
- id="dx1-10015"></a><a
- id="dx1-10016"></a> and <span
-class="ec-lmss-10">onlysolution</span><a
- id="dx1-10017"></a><a
- id="dx1-10018"></a> for example:
+<!--l. 689--><p class="nopar" >
+</p><!--l. 691--><p class="indent" > Suppose I have two external files called <span
+class="ec-lmtt-10x-x-109">derivatives.tex </span>and
+<span
+class="ec-lmtt-10x-x-109">probspaces.tex </span>which define problems using both <span
+class="ec-lmss-10x-x-109">onlyproblem</span><a
+ id="dx1-11015"></a><a
+ id="dx1-11016"></a> and <span
+class="ec-lmss-10x-x-109">onlysolution</span><a
+ id="dx1-11017"></a><a
+ id="dx1-11018"></a>
+for example:
-
</p>
- <div class="verbatim" id="verbatim-18">
+ <div class="verbatim" id="verbatim-18">
\begin{defproblem}{cosxsqsinx}%
&#x00A0;<br />\begin{onlyproblem}%
&#x00A0;<br />$y&#x00A0;=&#x00A0;\cos(x^2)\sin&#x00A0;x$.%
@@ -1513,30 +1755,30 @@ class="ec-lmss-10">onlysolution</span><a
&#x00A0;<br />\end{onlysolution}%
&#x00A0;<br />\end{defproblem}
</div>
-<!--l. 591--><p class="nopar" > I can write a document that creates two data sets, one for the derivative problems and
-one for the problems about probability spaces. I can then use <span
-class="ec-lmtt-10">\hideanswers</span><a
- id="dx1-10019"></a> and iterate
-through the require data set to produce the problems. Later, I can use <span
-class="ec-lmtt-10">\showanswers</span><a
- id="dx1-10020"></a>
-and iterate over all problems defined in both data sets to produce the chapter
-containing all the answers. When displaying the questions, I have taken advantage of
-the fact that I can cross-reference items within an <span
-class="ec-lmss-10">enumerate</span><a
- id="dx1-10021"></a><a
- id="dx1-10022"></a> environment,
-and redefined <span
-class="ec-lmtt-10">\theenumi</span><a
- id="dx1-10023"></a> to label the questions according to the chapter. The
-cross-reference label is constructed from the problem label and is referenced
-in the answer section to ensure that the answers have the same label as the
+<!--l. 704--><p class="nopar" > I can write a document that creates two data sets, one for the derivative
+problems and one for the problems about probability spaces. I can then use
+<span
+class="ec-lmtt-10x-x-109">\hideanswers</span><a
+ id="dx1-11019"></a> and iterate through the require data set to produce the
+problems. Later, I can use <span
+class="ec-lmtt-10x-x-109">\showanswers</span><a
+ id="dx1-11020"></a> and iterate over all problems defined
+in both data sets to produce the chapter containing all the answers. When
+displaying the questions, I have taken advantage of the fact that I can
+cross-reference items within an <span
+class="ec-lmss-10x-x-109">enumerate</span><a
+ id="dx1-11021"></a><a
+ id="dx1-11022"></a> environment, and redefined
+<span
+class="ec-lmtt-10x-x-109">\theenumi</span><a
+ id="dx1-11023"></a> to label the questions according to the chapter. The cross-reference
+label is constructed from the problem label and is referenced in the
+answer section to ensure that the answers have the same label as the
questions.
-
</p>
- <div class="verbatim" id="verbatim-19">
+ <div class="verbatim" id="verbatim-19">
\documentclass{report}
&#x00A0;<br />\usepackage{probsoln}
&#x00A0;<br />\begin{document}
@@ -1571,241 +1813,234 @@ questions.
&#x00A0;<br />\end{itemize}
&#x00A0;<br />\end{document}
</div>
-<!--l. 644--><p class="nopar" >
-</p><!--l. 646--><p class="noindent" >
-</p>
-<!--l. 646--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">10 </span> <a
- id="x1-1100010"></a>Random Number Generator</h3>
-<!--l. 648--><p class="noindent" >This package provides a pseudo-random number generator that is used by
-<span
-class="ec-lmtt-10">\loadrandomproblems</span><a
- id="dx1-11001"></a>. As noted earlier the random number generator has been
+<!--l. 757--><p class="nopar" >
-
-modified in version 3.01 in order to fix a bug. If you want to ensure that your random
-numbers are compatible with earlier versions, you can switch to the old generator
-using
-</p><!--l. 653--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\PSNuseoldrandom</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-11002"></a> <span
-class="ec-lmtt-10">\PSNuseoldrandom </span></div><hr>
-</p><!--l. 655--><p class="noindent" >
-</p><!--l. 657--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\PSNrandseed</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-11003"></a> <span
-class="ec-lmtt-10">\PSNrandseed{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 659--><p class="noindent" >
+</p><!--l. 759--><p class="noindent" >
+</p>
+<!--l. 759--><p class="noindent" ><a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">10 </span> <a
+ id="x1-1200010"></a>Random Number Generator</h3>
+<!--l. 761--><p class="noindent" >This package provides a pseudo-random number generator that is used by
+<span
+class="ec-lmtt-10x-x-109">\loadrandomproblems</span><a
+ id="dx1-12001"></a>. As noted earlier the random number generator has been
+modified in version 3.01 in order to fix a bug. If you want to ensure that your
+random numbers are compatible with earlier versions, you can switch to the old
+generator using
+</p><!--l. 766--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\PSNuseoldrandom</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-12002"></a> <span
+class="ec-lmtt-10x-x-109">\PSNuseoldrandom </span></div><hr>
+</p><!--l. 768--><p class="noindent" >
+</p><!--l. 770--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\PSNrandseed</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-12003"></a> <span
+class="ec-lmtt-10x-x-109">\PSNrandseed{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 772--><p class="noindent" >
This sets the seed to <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9; </span>which must be a non-zero integer. For example, to
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>which must be a non-zero integer. For example, to
generate a different set of random numbers every time you <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
class="E">E</span>X</span></span>&#x00A0;your
document,<span class="footnote-mark"><a
-href="#fn1x0" id="fn1x0-bk"><sup class="textsuperscript">1</sup></a></span><a
- id="x1-11004f1"></a>
+href="#fn2x0" id="fn2x0-bk"><sup class="textsuperscript">2</sup></a></span><a
+ id="x1-12004f2"></a>
put the following in your preamble:
-
</p>
- <div class="verbatim" id="verbatim-20">
+ <div class="verbatim" id="verbatim-20">
\PSNrandseed{\time}
</div>
-<!--l. 667--><p class="nopar" > or to generate a different set of random numbers every year you <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+<!--l. 780--><p class="nopar" > or to generate a different set of random numbers every year you <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
class="E">E</span>X</span></span>&#x00A0;your
document:
-
</p>
- <div class="verbatim" id="verbatim-21">
+ <div class="verbatim" id="verbatim-21">
\PSNrandseed{\year}
</div>
-<!--l. 672--><p class="nopar" >
-</p><!--l. 674--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\PSNgetrandseed</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-11005"></a> <span
-class="ec-lmtt-10">\PSNgetrandseed{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">register</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 676--><p class="noindent" >
+<!--l. 785--><p class="nopar" >
+</p><!--l. 787--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\PSNgetrandseed</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-12005"></a> <span
+class="ec-lmtt-10x-x-109">\PSNgetrandseed{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">register</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 789--><p class="noindent" >
This stores the current seed in the count register specified by <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">register</span><span
-class="lmsy-10">&#x27E9;</span>. For
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">register</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>. For
example:
-
</p>
- <div class="verbatim" id="verbatim-22">
+ <div class="verbatim" id="verbatim-22">
\newcount\myseed
&#x00A0;<br />\PSNgetrandseed{\myseed}
</div>
-<!--l. 683--><p class="nopar" >
-</p><!--l. 685--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\PSNrandom</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-11006"></a> <span
-class="ec-lmtt-10">\PSNrandom{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">register</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 687--><p class="noindent" >
+<!--l. 796--><p class="nopar" >
+</p><!--l. 798--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\PSNrandom</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-12006"></a> <span
+class="ec-lmtt-10x-x-109">\PSNrandom{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">register</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 800--><p class="noindent" >
Generates a random integer from 1 to <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9; </span>and stores in the count register specified by
-<span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">register</span><span
-class="lmsy-10">&#x27E9;</span>. For example, the following generates an integer from 1 to 10 and stores it in
-the register <span
-class="ec-lmtt-10">\myreg</span>:
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>and stores in the count register
+specified by <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">register</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>. For example, the following generates an integer from 1 to
+10 and stores it in the register <span
+class="ec-lmtt-10x-x-109">\myreg</span>:
-
</p>
- <div class="verbatim" id="verbatim-23">
+ <div class="verbatim" id="verbatim-23">
\newcount\myreg
&#x00A0;<br />\PSNrandom{\myreg}{10}
</div>
-<!--l. 695--><p class="nopar" >
-</p><!--l. 697--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\random</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-11007"></a> <span
-class="ec-lmtt-10">\random{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">counter</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">min</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">max</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 699--><p class="noindent" >
+<!--l. 808--><p class="nopar" >
+</p><!--l. 810--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\random</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-12007"></a> <span
+class="ec-lmtt-10x-x-109">\random{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">counter</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">min</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">max</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 812--><p class="noindent" >
Generates a random integer from <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">min</span><span
-class="lmsy-10">&#x27E9; </span>to <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">max</span><span
-class="lmsy-10">&#x27E9; </span>and stores in the given counter. For
-example, the following generates a random number between 3 and 8 (inclusive) and
-stores it in the counter <span
-class="ec-lmtt-10">myrand</span>.
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">min</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>to <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">max</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>and stores in the given
+counter. For example, the following generates a random number between 3 and
+8 (inclusive) and stores it in the counter <span
+class="ec-lmtt-10x-x-109">myrand</span>.
-
</p>
- <div class="verbatim" id="verbatim-24">
+ <div class="verbatim" id="verbatim-24">
\newcounter{myrand}
&#x00A0;<br />\random{myrand}{3}{8}
</div>
-<!--l. 707--><p class="nopar" >
-</p><!--l. 709--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\doforrandN</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-11008"></a> <span
-class="ec-lmtt-10">\doforrandN{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">cmd</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">list</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">text</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 711--><p class="noindent" >
+<!--l. 820--><p class="nopar" >
+</p><!--l. 822--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\doforrandN</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-12008"></a> <span
+class="ec-lmtt-10x-x-109">\doforrandN{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">cmd</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">list</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">text</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 824--><p class="noindent" >
Randomly selects <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9; </span>values from the comma-separated list given by <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">list</span><span
-class="lmsy-10">&#x27E9; </span>and iterates
-through this subset. On each iteration it sets <span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">cmd</span><span
-class="lmsy-10">&#x27E9; </span>to the current value and does
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>values from the comma-separated list given by
+<span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">list</span><span
+class="lmsy-10x-x-109">&#x27E9; </span>and iterates through this subset. On each iteration it sets <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">cmd</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>
+to the current value and does <span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">text</span><span
+class="lmsy-10x-x-109">&#x27E9;</span>. For example, the following will
+load a randomly selected problem from two of the listed files (where
<span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">text</span><span
-class="lmsy-10">&#x27E9;</span>. For example, the following will load a randomly selected problem from two of the
-listed files (where <span
-class="ec-lmtt-10">file1.tex</span>, <span
-class="ec-lmtt-10">file2.tex </span>and <span
-class="ec-lmtt-10">file3.tex </span>are files containing at least
-one problem):
+class="ec-lmtt-10x-x-109">file1.tex</span>, <span
+class="ec-lmtt-10x-x-109">file2.tex </span>and <span
+class="ec-lmtt-10x-x-109">file3.tex </span>are files containing at least one
+problem):
-
</p>
- <div class="verbatim" id="verbatim-25">
+ <div class="verbatim" id="verbatim-25">
\doforrandN{2}{\thisfile}{file1,file2,file3}{%
&#x00A0;<br />\loadrandomproblems{1}{\thisfile}}
</div>
-<!--l. 722--><p class="nopar" >
-</p><!--l. 724--><p class="noindent" >
+<!--l. 835--><p class="nopar" >
+</p><!--l. 837--><p class="noindent" >
</p>
-<!--l. 724--><p class="noindent" ><a
-href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">11 </span> <a
- id="x1-1200011"></a>Compatibility With Versions Prior to 3.0</h3>
-<!--l. 726--><p class="noindent" >Version 3.0 of the <span
-class="ec-lmss-10">probsoln</span><a
- id="dx1-12001"></a> package completely changed the structure of the package,
-but the commands described in this section have been provided to maintain
-compatibility with earlier versions. The only problems that are likely to occur
-are those where commands are contained within groups. This will effect any
-commands that are contained in external files that are outside of the arguments to
-<span
-class="ec-lmtt-10">\newproblem</span><a
- id="dx1-12002"></a> and <span
-class="ec-lmtt-10">\newproblem*</span><a
- id="dx1-12003"></a>. However, since the external files had to be
-parsed twice in order to load the problems, this shouldn&#8217;t be an issue as adding
-anything other than problem definitions in those files would be problematic
-anyway.
-</p><!--l. 738--><p class="indent" > The other likely difference is where the random generator is used in a group. This
-includes commands such as <span
-class="ec-lmtt-10">\selectrandomly</span><a
- id="dx1-12004"></a>. For example, if your document
-contained something like:
+<!--l. 837--><p class="noindent" ><a
+href="#top">Top</a></p><h3 class="sectionHead"><span class="titlemark">11 </span> <a
+ id="x1-1300011"></a>Compatibility With Versions Prior to 3.0</h3>
+<!--l. 839--><p class="noindent" >Version 3.0 of the <span
+class="ec-lmss-10x-x-109">probsoln</span><a
+ id="dx1-13001"></a> package completely changed the structure of the
+package, but the commands described in this section have been provided to
+maintain compatibility with earlier versions. The only problems that are likely
+to occur are those where commands are contained within groups. This will effect
+any commands that are contained in external files that are outside of the
+arguments to <span
+class="ec-lmtt-10x-x-109">\newproblem</span><a
+ id="dx1-13002"></a> and <span
+class="ec-lmtt-10x-x-109">\newproblem*</span><a
+ id="dx1-13003"></a>. However, since the external files
+had to be parsed twice in order to load the problems, this shouldn&#8217;t be an issue
+as adding anything other than problem definitions in those files would be
+problematic anyway.
+</p><!--l. 851--><p class="indent" > The other likely difference is where the random generator is used in a group.
+This includes commands such as <span
+class="ec-lmtt-10x-x-109">\selectrandomly</span><a
+ id="dx1-13004"></a>. For example, if your
+document contained something like:
-
</p>
- <div class="verbatim" id="verbatim-26">
+ <div class="verbatim" id="verbatim-26">
\begin{enumerate}
&#x00A0;<br />\selectrandomly{file1}{8}
&#x00A0;<br />\item&#x00A0;Solve&#x00A0;the&#x00A0;following:
@@ -1815,18 +2050,17 @@ contained something like:
&#x00A0;<br />\selectrandomly{file3}{2}
&#x00A0;<br />\end{enumerate}
</div>
-<!--l. 753--><p class="nopar" > Then using versions prior to v3.0 will produce a different set of random numbers since
-the second <span
-class="ec-lmtt-10">\selectrandomly </span>is in a different level of grouping. If you want to
-ensure that the document produces exactly the same random set with the
-new version as with the old version, you will need to get and set the random
-number seed. For example, the above would need to be modified so that it
-becomes:
+<!--l. 866--><p class="nopar" > Then using versions prior to v3.0 will produce a different set of random
+numbers since the second <span
+class="ec-lmtt-10x-x-109">\selectrandomly </span>is in a different level of grouping. If
+you want to ensure that the document produces exactly the same random set
+with the new version as with the old version, you will need to get and set the
+random number seed. For example, the above would need to be modified so that
+it becomes:
-
</p>
- <div class="verbatim" id="verbatim-27">
+ <div class="verbatim" id="verbatim-27">
\begin{enumerate}
&#x00A0;<br />\selectrandomly{file1}{8}
&#x00A0;<br />\item&#x00A0;Solve&#x00A0;the&#x00A0;following:
@@ -1839,424 +2073,451 @@ becomes:
&#x00A0;<br />\selectrandomly{file3}{2}
&#x00A0;<br />\end{enumerate}
</div>
-<!--l. 775--><p class="nopar" >
-</p><!--l. 777--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\selectrandomly</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-12005"></a> <span
-class="ec-lmtt-10">\selectrandomly{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 779--><p class="noindent" >
+<!--l. 888--><p class="nopar" >
+</p><!--l. 890--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\selectrandomly</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-13005"></a> <span
+class="ec-lmtt-10x-x-109">\selectrandomly{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 892--><p class="noindent" >
This is now equivalent to: <span class="obeylines-h">
- <span
-class="ec-lmtt-10">{\loadrandomproblems[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">n</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}}%</span>
- <br /><span
-class="ec-lmtt-10">\foreachproblem[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{\PSNitem\thisproblem\endPSNitem}</span></span>
-</p><!--l. 786--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
-class="ec-lmtt-9">\selectallproblems</span><span
-class="ec-lmtt-9">&#x00A0;</span></span><a
- id="dx1-12006"></a> <span
-class="ec-lmtt-10">\selectallproblems{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">} </span></div><hr>
-</p><!--l. 788--><p class="noindent" >
+ <span
+class="ec-lmtt-10x-x-109">{\loadrandomproblems[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">n</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}}%</span>
+ <br /><span
+class="ec-lmtt-10x-x-109">\foreachproblem[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{\PSNitem\thisproblem\endPSNitem}</span></span>
+</p><!--l. 899--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="ec-lmtt-10">\selectallproblems</span><span
+class="ec-lmtt-10">&#x00A0;</span></span><a
+ id="dx1-13006"></a> <span
+class="ec-lmtt-10x-x-109">\selectallproblems{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">} </span></div><hr>
+</p><!--l. 901--><p class="noindent" >
This is now equivalent to: <span class="obeylines-h">
- <span
-class="ec-lmtt-10">{\loadallproblems[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">}}%</span>
- <br /><span
-class="ec-lmtt-10">\foreachproblem[</span><span
-class="lmsy-10">&#x27E8;</span><span
-class="ec-lmri-10">filename</span><span
-class="lmsy-10">&#x27E9;</span><span
-class="ec-lmtt-10">]{\PSNitem\thisproblem\endPSNitem}</span></span>
-</p><!--l. 795--><p class="indent" > Note that in both the above cases, a new data set is created with the same name as
-the file name.
-
-
-
-</p><!--l. 798--><p class="indent" > <a
+ <span
+class="ec-lmtt-10x-x-109">{\loadallproblems[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">}}%</span>
+ <br /><span
+class="ec-lmtt-10x-x-109">\foreachproblem[</span><span
+class="lmsy-10x-x-109">&#x27E8;</span><span
+class="ec-lmri-10x-x-109">filename</span><span
+class="lmsy-10x-x-109">&#x27E9;</span><span
+class="ec-lmtt-10x-x-109">]{\PSNitem\thisproblem\endPSNitem}</span></span>
+</p><!--l. 908--><p class="indent" > Note that in both the above cases, a new data set is created with the same
+name as the file name.
+
+
+</p><!--l. 911--><p class="indent" > <a
id="likesection.1"></a><a
- id="Q1-1-13"></a>
+ id="Q1-1-14"></a>
</p>
<!--l. 2--><p class="noindent" ><a
href="#top">Top</a></p><h3 class="likesectionHead"><a
- id="x1-1300011"></a>Index</h3>
+ id="x1-1400011"></a>Index</h3>
<!--l. 4--><p class="noindent" > <span
-class="ec-lmbx-10">B</span>
+class="ec-lmbx-10x-x-109">B</span>
</p>
- <div class="theindex"><span class="index-item"><span
-class="ec-lmss-10">babel </span>package&#x00A0;&#x00A0;<a
+ <div class="theindex"><span class="index-item"><span
+class="ec-lmss-10x-x-109">babel </span>package&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-7011" >1</a> <br /></span>
<p class="theindex"> <span
-class="ec-lmbx-10">C</span>
+class="ec-lmbx-10x-x-109">C</span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmtt-10x-x-109">\ClearUsedFile</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-10006" ><span
+class="ec-lmri-10x-x-109">2</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\correctitem</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\correctitem</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-6015" ><span
-class="ec-lmri-10">2</span></a> <br /></span>
+class="ec-lmri-10x-x-109">3</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\correctitemformat</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\correctitemformat</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-6018" ><span
-class="ec-lmri-10">3</span></a> <br /></span>
+class="ec-lmri-10x-x-109">4</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">D</span>
+class="ec-lmbx-10x-x-109">D</span>
<span class="index-item"><span
-class="ec-lmtt-10">defproblem </span>(environment)&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-5020" ><span class="underline">4</span></a>, <a
-href="probsoln-manual.html#dx1-5025" ><span class="underline">5</span></a>, <a
+class="ec-lmtt-10x-x-109">defproblem </span>(environment)&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-5020" ><span class="underline">5</span></a>, <a
+href="probsoln-manual.html#dx1-5025" ><span class="underline">6</span></a>, <a
href="probsoln-manual.html#dx1-7008" ><span
-class="ec-lmri-10">6</span></a>, <a
-href="probsoln-manual.html#dx1-7016" ><span class="underline">7</span></a>, <a
-href="probsoln-manual.html#dx1-7020" ><span class="underline">8</span></a>, <a
-href="probsoln-manual.html#dx1-7030" ><span class="underline">9</span></a>, <a
-href="probsoln-manual.html#dx1-8001" ><span class="underline">10</span></a>, <a
-href="probsoln-manual.html#dx1-9008" ><span class="underline">11</span></a> <br /></span>
+class="ec-lmri-10x-x-109">7</span></a>, <a
+href="probsoln-manual.html#dx1-7016" ><span class="underline">8</span></a>, <a
+href="probsoln-manual.html#dx1-7020" ><span class="underline">9</span></a>, <a
+href="probsoln-manual.html#dx1-7030" ><span class="underline">10</span></a>, <a
+href="probsoln-manual.html#dx1-8001" ><span class="underline">11</span></a>, <a
+href="probsoln-manual.html#dx1-9008" ><span class="underline">12</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\doforrandN</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-11008" ><span
-class="ec-lmri-10">12</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\doforrandN</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-12008" ><span
+class="ec-lmri-10x-x-109">13</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">E</span>
+class="ec-lmbx-10x-x-109">E</span>
<span class="index-item"><span
-class="ec-lmtt-10">enumerate </span>(environment)&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-6011" ><span class="underline">13</span></a>, <a
-href="probsoln-manual.html#dx1-6013" ><span class="underline">14</span></a>, <a
-href="probsoln-manual.html#dx1-10021" ><span class="underline">15</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">enumerate </span>(environment)&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-6011" ><span class="underline">14</span></a>, <a
+href="probsoln-manual.html#dx1-6013" ><span class="underline">15</span></a>, <a
+href="probsoln-manual.html#dx1-11021" ><span class="underline">16</span></a> <br /></span>
<span class="index-item">environments:<br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmtt-10">defproblem</span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-5021" ><span class="underline">16</span></a>, <a
-href="probsoln-manual.html#dx1-5026" ><span class="underline">17</span></a>, <a
+class="ec-lmtt-10x-x-109">defproblem</span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-5021" ><span class="underline">17</span></a>, <a
+href="probsoln-manual.html#dx1-5026" ><span class="underline">18</span></a>, <a
href="probsoln-manual.html#dx1-7009" ><span
-class="ec-lmri-10">18</span></a>, <a
-href="probsoln-manual.html#dx1-7017" ><span class="underline">19</span></a>, <a
-href="probsoln-manual.html#dx1-7021" ><span class="underline">20</span></a>, <a
-href="probsoln-manual.html#dx1-7031" ><span class="underline">21</span></a>, <a
-href="probsoln-manual.html#dx1-8002" ><span class="underline">22</span></a>, <a
-href="probsoln-manual.html#dx1-9009" ><span class="underline">23</span></a> <br /></span>
+class="ec-lmri-10x-x-109">19</span></a>, <a
+href="probsoln-manual.html#dx1-7017" ><span class="underline">20</span></a>, <a
+href="probsoln-manual.html#dx1-7021" ><span class="underline">21</span></a>, <a
+href="probsoln-manual.html#dx1-7031" ><span class="underline">22</span></a>, <a
+href="probsoln-manual.html#dx1-8002" ><span class="underline">23</span></a>, <a
+href="probsoln-manual.html#dx1-9009" ><span class="underline">24</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmtt-10">enumerate</span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-6012" ><span class="underline">24</span></a>, <a
-href="probsoln-manual.html#dx1-6014" ><span class="underline">25</span></a>, <a
-href="probsoln-manual.html#dx1-10022" ><span class="underline">26</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">enumerate</span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-6012" ><span class="underline">25</span></a>, <a
+href="probsoln-manual.html#dx1-6014" ><span class="underline">26</span></a>, <a
+href="probsoln-manual.html#dx1-11022" ><span class="underline">27</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmtt-10">onlyproblem</span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">onlyproblem</span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-5009" ><span
-class="ec-lmri-10">27</span></a>, <a
-href="probsoln-manual.html#dx1-5015" ><span class="underline">28</span></a>, <a
-href="probsoln-manual.html#dx1-5017" ><span class="underline">29</span></a>, <a
-href="probsoln-manual.html#dx1-5024" ><span class="underline">30</span></a>, <a
-href="probsoln-manual.html#dx1-7002" ><span class="underline">31</span></a>, <a
-href="probsoln-manual.html#dx1-7013" ><span class="underline">32</span></a>, <a
-href="probsoln-manual.html#dx1-10016" ><span class="underline">33</span></a> <br /></span>
+class="ec-lmri-10x-x-109">28</span></a>, <a
+href="probsoln-manual.html#dx1-5015" ><span class="underline">29</span></a>, <a
+href="probsoln-manual.html#dx1-5017" ><span class="underline">30</span></a>, <a
+href="probsoln-manual.html#dx1-5024" ><span class="underline">31</span></a>, <a
+href="probsoln-manual.html#dx1-7002" ><span class="underline">32</span></a>, <a
+href="probsoln-manual.html#dx1-7013" ><span class="underline">33</span></a>, <a
+href="probsoln-manual.html#dx1-11016" ><span class="underline">34</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmtt-10">onlysolution</span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">onlysolution</span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-5011" ><span
-class="ec-lmri-10">34</span></a>, <a
-href="probsoln-manual.html#dx1-5019" ><span class="underline">35</span></a>, <a
-href="probsoln-manual.html#dx1-7004" ><span class="underline">36</span></a>, <a
-href="probsoln-manual.html#dx1-7015" ><span class="underline">37</span></a>, <a
-href="probsoln-manual.html#dx1-10009" ><span class="underline">38</span></a>, <a
-href="probsoln-manual.html#dx1-10013" ><span class="underline">39</span></a>, <a
-href="probsoln-manual.html#dx1-10018" ><span class="underline">40</span></a> <br /></span>
+class="ec-lmri-10x-x-109">35</span></a>, <a
+href="probsoln-manual.html#dx1-5019" ><span class="underline">36</span></a>, <a
+href="probsoln-manual.html#dx1-7004" ><span class="underline">37</span></a>, <a
+href="probsoln-manual.html#dx1-7015" ><span class="underline">38</span></a>, <a
+href="probsoln-manual.html#dx1-11009" ><span class="underline">39</span></a>, <a
+href="probsoln-manual.html#dx1-11013" ><span class="underline">40</span></a>, <a
+href="probsoln-manual.html#dx1-11018" ><span class="underline">41</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmtt-10">solution</span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">solution</span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-6002" ><span
-class="ec-lmri-10">41</span></a>, <a
-href="probsoln-manual.html#dx1-6005" ><span class="underline">42</span></a>, <a
-href="probsoln-manual.html#dx1-6008" ><span class="underline">43</span></a> <br /></span>
+class="ec-lmri-10x-x-109">42</span></a>, <a
+href="probsoln-manual.html#dx1-6005" ><span class="underline">43</span></a>, <a
+href="probsoln-manual.html#dx1-6008" ><span class="underline">44</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmtt-10">textenum</span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">textenum</span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-6010" ><span
-class="ec-lmri-10">44</span></a> <br /></span>
+class="ec-lmri-10x-x-109">45</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmtt-10x-x-109">\ExcludePreviousFile</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-10007" ><span
+class="ec-lmri-10x-x-109">46</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">F</span>
+class="ec-lmbx-10x-x-109">F</span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\foreachdataset</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-10014" ><span
-class="ec-lmri-10">45</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\foreachdataset</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-11014" ><span
+class="ec-lmri-10x-x-109">47</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\foreachproblem</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-7023" ><span class="underline">46</span></a>, <a
-href="probsoln-manual.html#dx1-7028" ><span class="underline">47</span></a>, <a
-href="probsoln-manual.html#dx1-10002" ><span
-class="ec-lmri-10">48</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\foreachproblem</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-7023" ><span class="underline">48</span></a>, <a
+href="probsoln-manual.html#dx1-7028" ><span class="underline">49</span></a>, <a
+href="probsoln-manual.html#dx1-11002" ><span
+class="ec-lmri-10x-x-109">50</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\foreachsolution</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-5022" ><span class="underline">49</span></a>, <a
-href="probsoln-manual.html#dx1-10007" ><span
-class="ec-lmri-10">50</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\foreachsolution</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-5022" ><span class="underline">51</span></a>, <a
+href="probsoln-manual.html#dx1-11007" ><span
+class="ec-lmri-10x-x-109">52</span></a> <br /></span>
<span class="index-item"><span
-class="ec-lmss-10">fp </span>package&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-7026" >51</a> <br /></span>
+class="ec-lmss-10x-x-109">fp </span>package&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-7026" >53</a> <br /></span>
<span class="index-item">fragile&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-4001" ><span class="underline">52</span></a> <br /></span>
+href="probsoln-manual.html#dx1-4001" ><span class="underline">54</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">H</span>
+class="ec-lmbx-10x-x-109">H</span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\hideanswers</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\hideanswers</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-5004" ><span
-class="ec-lmri-10">53</span></a>, <a
-href="probsoln-manual.html#dx1-7007" ><span class="underline">54</span></a>, <a
-href="probsoln-manual.html#dx1-10019" ><span class="underline">55</span></a> <br /></span>
+class="ec-lmri-10x-x-109">55</span></a>, <a
+href="probsoln-manual.html#dx1-7007" ><span class="underline">56</span></a>, <a
+href="probsoln-manual.html#dx1-11019" ><span class="underline">57</span></a> <br /></span>
+
+
</p><p class="theindex"> <span
-class="ec-lmbx-10">I</span>
+class="ec-lmbx-10x-x-109">I</span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\ifshowanswers</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-5007" ><span class="underline">56</span></a>, <a
-href="probsoln-manual.html#dx1-6006" ><span class="underline">57</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\ifshowanswers</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-5007" ><span class="underline">58</span></a>, <a
+href="probsoln-manual.html#dx1-6006" ><span class="underline">59</span></a> <br /></span>
<span class="index-item"><span
-class="ec-lmss-10">ifthen </span>package&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-5006" >58</a> <br /></span>
+class="ec-lmss-10x-x-109">ifthen </span>package&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-5006" >60</a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\include</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-7019" ><span class="underline">59</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\include</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-7019" ><span class="underline">61</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\incorrectitem</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\incorrectitem</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-6016" ><span
-class="ec-lmri-10">60</span></a> <br /></span>
-
-
-
+class="ec-lmri-10x-x-109">62</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\incorrectitemformat</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\incorrectitemformat</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-6019" ><span
-class="ec-lmri-10">61</span></a> <br /></span>
+class="ec-lmri-10x-x-109">63</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\input</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-7018" ><span class="underline">62</span></a>, <a
-href="probsoln-manual.html#dx1-9001" ><span class="underline">63</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\input</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-7018" ><span class="underline">64</span></a>, <a
+href="probsoln-manual.html#dx1-9001" ><span class="underline">65</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\item</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-6017" ><span class="underline">64</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\item</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-6017" ><span class="underline">66</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">L</span>
+class="ec-lmbx-10x-x-109">L</span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\loadallproblems</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\loadallproblems</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-9002" ><span
-class="ec-lmri-10">65</span></a> <br /></span>
+class="ec-lmri-10x-x-109">67</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\loadexceptproblems</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\loadexceptproblems</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-9004" ><span
-class="ec-lmri-10">66</span></a> <br /></span>
+class="ec-lmri-10x-x-109">68</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\loadrandomexcept</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\loadrandomexcept</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-9006" ><span
-class="ec-lmri-10">67</span></a> <br /></span>
+class="ec-lmri-10x-x-109">69</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\loadrandomproblems</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\loadrandomproblems</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-9005" ><span
-class="ec-lmri-10">68</span></a>, <a
-href="probsoln-manual.html#dx1-11001" ><span class="underline">69</span></a> <br /></span>
+class="ec-lmri-10x-x-109">70</span></a>, <a
+href="probsoln-manual.html#dx1-12001" ><span class="underline">71</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\loadselectedproblems</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\loadselectedproblems</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-9003" ><span
-class="ec-lmri-10">70</span></a> <br /></span>
+class="ec-lmri-10x-x-109">72</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">N</span>
+class="ec-lmbx-10x-x-109">N</span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\newproblem</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\newproblem</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-7025" ><span
-class="ec-lmri-10">71</span></a>, <a
-href="probsoln-manual.html#dx1-8003" ><span class="underline">72</span></a>, <a
-href="probsoln-manual.html#dx1-9010" ><span class="underline">73</span></a>, <a
-href="probsoln-manual.html#dx1-12002" ><span class="underline">74</span></a> <br /></span>
+class="ec-lmri-10x-x-109">73</span></a>, <a
+href="probsoln-manual.html#dx1-8003" ><span class="underline">74</span></a>, <a
+href="probsoln-manual.html#dx1-9010" ><span class="underline">75</span></a>, <a
+href="probsoln-manual.html#dx1-13002" ><span class="underline">76</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\newproblem*</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\newproblem*</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-7029" ><span
-class="ec-lmri-10">75</span></a>, <a
-href="probsoln-manual.html#dx1-9011" ><span class="underline">76</span></a>, <a
-href="probsoln-manual.html#dx1-12003" ><span class="underline">77</span></a> <br /></span>
+class="ec-lmri-10x-x-109">77</span></a>, <a
+href="probsoln-manual.html#dx1-9011" ><span class="underline">78</span></a>, <a
+href="probsoln-manual.html#dx1-13003" ><span class="underline">79</span></a> <br /></span>
<span class="index-item"><span
-class="ec-lmss-10">ngerman </span>package&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-7010" >78</a> <br /></span>
+class="ec-lmss-10x-x-109">ngerman </span>package&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-7010" >80</a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">O</span>
+class="ec-lmbx-10x-x-109">O</span>
<span class="index-item"><span
-class="ec-lmtt-10">onlyproblem </span>(environment)&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">onlyproblem </span>(environment)&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-5008" ><span
-class="ec-lmri-10">79</span></a>, <a
-href="probsoln-manual.html#dx1-5014" ><span class="underline">80</span></a>, <a
-href="probsoln-manual.html#dx1-5016" ><span class="underline">81</span></a>, <a
-href="probsoln-manual.html#dx1-5023" ><span class="underline">82</span></a>, <a
-href="probsoln-manual.html#dx1-7001" ><span class="underline">83</span></a>, <a
-href="probsoln-manual.html#dx1-7012" ><span class="underline">84</span></a>, <a
-href="probsoln-manual.html#dx1-10015" ><span class="underline">85</span></a> <br /></span>
+class="ec-lmri-10x-x-109">81</span></a>, <a
+href="probsoln-manual.html#dx1-5014" ><span class="underline">82</span></a>, <a
+href="probsoln-manual.html#dx1-5016" ><span class="underline">83</span></a>, <a
+href="probsoln-manual.html#dx1-5023" ><span class="underline">84</span></a>, <a
+href="probsoln-manual.html#dx1-7001" ><span class="underline">85</span></a>, <a
+href="probsoln-manual.html#dx1-7012" ><span class="underline">86</span></a>, <a
+href="probsoln-manual.html#dx1-11015" ><span class="underline">87</span></a> <br /></span>
<span class="index-item"><span
-class="ec-lmtt-10">onlysolution </span>(environment)&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">onlysolution </span>(environment)&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-5010" ><span
-class="ec-lmri-10">86</span></a>, <a
-href="probsoln-manual.html#dx1-5018" ><span class="underline">87</span></a>, <a
-href="probsoln-manual.html#dx1-7003" ><span class="underline">88</span></a>, <a
-href="probsoln-manual.html#dx1-7014" ><span class="underline">89</span></a>, <a
-href="probsoln-manual.html#dx1-10008" ><span class="underline">90</span></a>, <a
-href="probsoln-manual.html#dx1-10012" ><span class="underline">91</span></a>, <a
-href="probsoln-manual.html#dx1-10017" ><span class="underline">92</span></a> <br /></span>
+class="ec-lmri-10x-x-109">88</span></a>, <a
+href="probsoln-manual.html#dx1-5018" ><span class="underline">89</span></a>, <a
+href="probsoln-manual.html#dx1-7003" ><span class="underline">90</span></a>, <a
+href="probsoln-manual.html#dx1-7014" ><span class="underline">91</span></a>, <a
+href="probsoln-manual.html#dx1-11008" ><span class="underline">92</span></a>, <a
+href="probsoln-manual.html#dx1-11012" ><span class="underline">93</span></a>, <a
+href="probsoln-manual.html#dx1-11017" ><span class="underline">94</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">P</span>
+class="ec-lmbx-10x-x-109">P</span>
<span class="index-item">package options:<br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmss-10">answers</span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-3001" ><span class="underline">93</span></a>, <a
-href="probsoln-manual.html#dx1-5001" ><span class="underline">94</span></a>, <a
-href="probsoln-manual.html#dx1-10011" ><span class="underline">95</span></a> <br /></span>
+class="ec-lmss-10x-x-109">answers</span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-3001" ><span class="underline">95</span></a>, <a
+href="probsoln-manual.html#dx1-5001" ><span class="underline">96</span></a>, <a
+href="probsoln-manual.html#dx1-11011" ><span class="underline">97</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmss-10">draft</span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-3003" ><span class="underline">96</span></a> <br /></span>
+class="ec-lmss-10x-x-109">draft</span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-3003" ><span class="underline">98</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmss-10">final</span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-3004" ><span class="underline">97</span></a> <br /></span>
+class="ec-lmss-10x-x-109">final</span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-3004" ><span class="underline">99</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmss-10">noanswers</span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-3002" ><span class="underline">98</span></a>, <a
-href="probsoln-manual.html#dx1-5002" ><span class="underline">99</span></a> <br /></span>
+class="ec-lmss-10x-x-109">noanswers</span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-3002" ><span class="underline">100</span></a>, <a
+href="probsoln-manual.html#dx1-5002" ><span class="underline">101</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmss-10">nousedefaultargs</span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-3007" ><span class="underline">100</span></a> <br /></span>
+class="ec-lmss-10x-x-109">nousedefaultargs</span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-3007" ><span class="underline">102</span></a> <br /></span>
<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
-class="ec-lmss-10">usedefaultargs</span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-3005" ><span class="underline">101</span></a>, <a
-href="probsoln-manual.html#dx1-7024" ><span class="underline">102</span></a>, <a
-href="probsoln-manual.html#dx1-10005" ><span class="underline">103</span></a> <br /></span>
+class="ec-lmss-10x-x-109">usedefaultargs</span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-3005" ><span class="underline">103</span></a>, <a
+href="probsoln-manual.html#dx1-7024" ><span class="underline">104</span></a>, <a
+href="probsoln-manual.html#dx1-11005" ><span class="underline">105</span></a> <br /></span>
<span class="index-item"><span
-class="ec-lmss-10">pgfmath </span>package&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-7027" >104</a> <br /></span>
+class="ec-lmss-10x-x-109">pgfmath </span>package&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-7027" >106</a> <br /></span>
<span class="index-item"><span
-class="ec-lmss-10">probsoln </span>package&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-12001" >105</a> <br /></span>
+class="ec-lmss-10x-x-109">probsoln </span>package&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-10001" >107</a>, <a
+href="probsoln-manual.html#dx1-10008" >108</a>, <a
+href="probsoln-manual.html#dx1-13001" >109</a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\ProbSolnFragileExt</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\ProbSolnFragileExt</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-4002" ><span
-class="ec-lmri-10">106</span></a> <br /></span>
+class="ec-lmri-10x-x-109">110</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\ProbSolnFragileFile</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\ProbSolnFragileFile</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-4003" ><span
-class="ec-lmri-10">107</span></a> <br /></span>
+class="ec-lmri-10x-x-109">111</span></a> <br /></span>
+
+
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\PSNgetrandseed</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-11005" ><span
-class="ec-lmri-10">108</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\PSNgetrandseed</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-12005" ><span
+class="ec-lmri-10x-x-109">112</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\PSNrandom</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-11006" ><span
-class="ec-lmri-10">109</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\PSNrandom</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-12006" ><span
+class="ec-lmri-10x-x-109">113</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\PSNrandseed</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-11003" ><span
-class="ec-lmri-10">110</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\PSNrandseed</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-12003" ><span
+class="ec-lmri-10x-x-109">114</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\PSNuseoldrandom</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\PSNuseoldrandom</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-9007" ><span
-class="ec-lmri-10">111</span></a>, <a
-href="probsoln-manual.html#dx1-11002" ><span
-class="ec-lmri-10">112</span></a> <br /></span>
+class="ec-lmri-10x-x-109">115</span></a>, <a
+href="probsoln-manual.html#dx1-12002" ><span
+class="ec-lmri-10x-x-109">116</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">R</span>
+class="ec-lmbx-10x-x-109">R</span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\random</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-11007" ><span
-class="ec-lmri-10">113</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\random</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-12007" ><span
+class="ec-lmri-10x-x-109">117</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">S</span>
+class="ec-lmbx-10x-x-109">S</span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\selectallproblems</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-12006" ><span
-class="ec-lmri-10">114</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\selectallproblems</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-13006" ><span
+class="ec-lmri-10x-x-109">118</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\selectrandomly</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-12004" ><span class="underline">115</span></a>, <a
-href="probsoln-manual.html#dx1-12005" ><span
-class="ec-lmri-10">116</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\selectrandomly</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-13004" ><span class="underline">119</span></a>, <a
+href="probsoln-manual.html#dx1-13005" ><span
+class="ec-lmri-10x-x-109">120</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\showanswers</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\SetStartMonth</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-10002" ><span
+class="ec-lmri-10x-x-109">121</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmtt-10x-x-109">\SetStartYear</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-10004" ><span
+class="ec-lmri-10x-x-109">122</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmtt-10x-x-109">\SetUsedFileName</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-10005" ><span
+class="ec-lmri-10x-x-109">123</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="ec-lmtt-10x-x-109">\showanswers</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-5003" ><span
-class="ec-lmri-10">117</span></a>, <a
-href="probsoln-manual.html#dx1-7006" ><span class="underline">118</span></a>, <a
-href="probsoln-manual.html#dx1-10010" ><span class="underline">119</span></a>, <a
-href="probsoln-manual.html#dx1-10020" ><span class="underline">120</span></a> <br /></span>
-
-
-
+class="ec-lmri-10x-x-109">124</span></a>, <a
+href="probsoln-manual.html#dx1-7006" ><span class="underline">125</span></a>, <a
+href="probsoln-manual.html#dx1-11010" ><span class="underline">126</span></a>, <a
+href="probsoln-manual.html#dx1-11020" ><span class="underline">127</span></a> <br /></span>
<span class="index-item"><span
-class="ec-lmss-10">showanswers </span>boolean variable&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-5005" >121</a>, <a
-href="probsoln-manual.html#dx1-5012" >122</a>, <a
-href="probsoln-manual.html#dx1-5013" >123</a>, <a
-href="probsoln-manual.html#dx1-7005" >124</a> <br /></span>
+class="ec-lmss-10x-x-109">showanswers </span>boolean variable&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-5005" >128</a>, <a
+href="probsoln-manual.html#dx1-5012" >129</a>, <a
+href="probsoln-manual.html#dx1-5013" >130</a>, <a
+href="probsoln-manual.html#dx1-7005" >131</a> <br /></span>
<span class="index-item"><span
-class="ec-lmtt-10">solution </span>(environment)&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">solution </span>(environment)&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-6001" ><span
-class="ec-lmri-10">125</span></a>, <a
-href="probsoln-manual.html#dx1-6004" ><span class="underline">126</span></a>, <a
-href="probsoln-manual.html#dx1-6007" ><span class="underline">127</span></a> <br /></span>
+class="ec-lmri-10x-x-109">132</span></a>, <a
+href="probsoln-manual.html#dx1-6004" ><span class="underline">133</span></a>, <a
+href="probsoln-manual.html#dx1-6007" ><span class="underline">134</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\solutionname</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\solutionname</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-6003" ><span
-class="ec-lmri-10">128</span></a> <br /></span>
+class="ec-lmri-10x-x-109">135</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">T</span>
+class="ec-lmbx-10x-x-109">T</span>
<span class="index-item"><span
-class="ec-lmtt-10">textenum </span>(environment)&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">textenum </span>(environment)&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-6009" ><span
-class="ec-lmri-10">129</span></a> <br /></span>
+class="ec-lmri-10x-x-109">136</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\theenumi</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-10023" ><span class="underline">130</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\theenumi</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-11023" ><span class="underline">137</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\thisproblem</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-3006" ><span class="underline">131</span></a>, <a
-href="probsoln-manual.html#dx1-3008" ><span class="underline">132</span></a>, <a
-href="probsoln-manual.html#dx1-7022" ><span class="underline">133</span></a>, <a
-href="probsoln-manual.html#dx1-10003" ><span
-class="ec-lmri-10">134</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\thisproblem</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-3006" ><span class="underline">138</span></a>, <a
+href="probsoln-manual.html#dx1-3008" ><span class="underline">139</span></a>, <a
+href="probsoln-manual.html#dx1-7022" ><span class="underline">140</span></a>, <a
+href="probsoln-manual.html#dx1-11003" ><span
+class="ec-lmri-10x-x-109">141</span></a> <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\thisproblemlabel</span></span></span>&#x00A0;&#x00A0;<a
-href="probsoln-manual.html#dx1-10004" ><span
-class="ec-lmri-10">135</span></a> <br /></span>
+class="ec-lmtt-10x-x-109">\thisproblemlabel</span></span></span>&#x00A0;&#x00A0;<a
+href="probsoln-manual.html#dx1-11004" ><span
+class="ec-lmri-10x-x-109">142</span></a> <br /></span>
</p><p class="theindex"> <span
-class="ec-lmbx-10">U</span>
+class="ec-lmbx-10x-x-109">U</span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="ec-lmtt-10">\useproblem</span></span></span>&#x00A0;&#x00A0;<a
+class="ec-lmtt-10x-x-109">\useproblem</span></span></span>&#x00A0;&#x00A0;<a
href="probsoln-manual.html#dx1-8004" ><span
-class="ec-lmri-10">136</span></a>, <a
-href="probsoln-manual.html#dx1-10001" ><span class="underline">137</span></a>, <a
-href="probsoln-manual.html#dx1-10006" ><span class="underline">138</span></a> <br /></span>
+class="ec-lmri-10x-x-109">143</span></a>, <a
+href="probsoln-manual.html#dx1-11001" ><span class="underline">144</span></a>, <a
+href="probsoln-manual.html#dx1-11006" ><span class="underline">145</span></a> <br /></span>
</p></div>
- <div class="footnotes"><!--l. 663--><p class="indent" > <span class="footnote-mark"><a
-href="#fn1x0-bk" id="fn1x0"><sup class="textsuperscript">1</sup></a></span><span
-class="ec-lmr-8">assuming you leave at least a minute between runs.</span></p> </div>
+ <div class="footnotes"><!--l. 543--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x0-bk" id="fn1x0">
+<sup class="textsuperscript">1</sup></a></span><span
+class="ec-lmr-9">So don&#8217;t use </span><span
+class="ec-lmtt-9">\SetStartMonth </span><span
+class="ec-lmr-9">after </span><span
+class="ec-lmtt-9">\SetStartYear</span><span
+class="ec-lmr-9">.</span></p><!--l. 776--><p class="indent" > <span class="footnote-mark"><a
+href="#fn2x0-bk" id="fn2x0">
+<sup class="textsuperscript">2</sup></a></span><span
+class="ec-lmr-9">assuming you leave at least a minute between runs.</span></p> </div>
</body></html>
diff --git a/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.tex b/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.tex
index 83f12ca68e6..d2822c6093d 100644
--- a/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.tex
+++ b/Master/texmf-dist/doc/latex/probsoln/probsoln-manual.tex
@@ -16,7 +16,7 @@
\RecordChanges
\PageIndex
-\CheckSum{1484}
+\CheckSum{1822}
\newcommand*{\dq}[1]{``#1''}
@@ -24,7 +24,7 @@
\MakeShortVerb{"}
\DeleteShortVerb{\|}
- \title{probsoln v3.02:
+ \title{probsoln v3.04:
creating problem sheets optionally with solutions}
\author{Nicola L.C. Talbot\\[10pt]
School of Computing Sciences\\
@@ -33,7 +33,7 @@ Norwich. Norfolk\\
NR4 7TJ. United Kingdom.\\
\url{http://theoval.cmp.uea.ac.uk/~nlct/}}
- \date{2011-12-10}
+ \date{2012-08-23}
\maketitle
\tableofcontents
@@ -493,6 +493,8 @@ set}\marg{n}\marg{filename}\marg{exception list}
\end{definition}
This is similar to \cs{loadrandomproblems} except that it won't load
those problems whose labels are listed in \meta{exception list}.
+\textbf{If you want to automatically exclude problems included in
+previous documents, see \sectionref{sec:exprev}.}
Note that the random number generator has been modified in version
3.01 in order to fix a bug. If you want to ensure that your random
@@ -513,6 +515,117 @@ has to load each file twice, which means that anything outside
a problem definition will be parsed twice.
\end{important}
+\subsection{Randomly Selecting Problems Not Selected in Previous
+Documents}
+\label{sec:exprev}
+
+Suppose you have a large set of questions that you want to randomly
+select for assignments and exams. The chances are, you don't want to
+include questions that have been previously set for, say, the last
+three years. That is, you don't want to select questions the
+students may already have seen. As from version 3.03, you can now do
+this.
+
+The \sty{probsoln} package defaults to the UK academic year, which
+starts in September. If this isn't appropriate, you can change it
+using:
+\begin{definition}[\DescribeMacro{\SetStartMonth}]
+\cs{SetStartMonth}\marg{n}
+\end{definition}
+where \meta{n} is the number of the month. (1 = January, 2 =
+February, etc.)
+
+The \emph{start year} is the calender year in effect when the
+academic year started. For example, if this is the academic year
+2011/12, then the start year is 2011. This is automatically set to
+the start of the current academic year. It is also updated when
+\cs{SetStartMonth} is used.\footnote{So don't use \cs{SetStartMonth}
+after \cs{SetStartYear}.} If you want to set it to a specific year,
+you can use:
+\begin{definition}[\DescribeMacro{\SetStartYear}]
+\cs{SetStartYear}\marg{year}
+\end{definition}
+For example: \verb|\SetStartYear{2008}| indicates the academic year
+2008/9.
+
+There are two files concerned with previously used labels. They are:
+\begin{description}
+
+ \item[The previously used labels file] This keeps track of all
+ problems used in previous years, as well as problems used by
+ other documents that have this as their previously used labels
+ file, and it contains the problem labels from the last run of
+ the current document.
+
+ \item[The current used labels file] This defaults to
+\cs{jobname}\texttt{.prb}, but the name can be changed using:
+ \begin{definition}[\DescribeMacro{\SetUsedFileName}]
+ \cs{SetUsedFileName}\marg{name}
+ \end{definition}
+ This file keeps track of all the labels used in the current
+ document from the previous \LaTeX\ run. Note that if you want to
+ delete this file, first clear it using
+ \begin{definition}[\DescribeMacro{\ClearUsedFile}]
+ \cs{ClearUsedFile}\marg{file}
+ \end{definition}
+ in place of \cs{ExcludePreviousFile}\marg{file}, described below.
+ The argument \meta{file} is the previously used labels file
+ described above. \cs{ClearUsedFile} will remove all labels in
+ the current used labels file from the previously used labels file
+ and clear the current used labels file. Once this file is empty,
+ it may then be deleted.
+
+\end{description}
+
+Before loading randomly selected problems, first specify the
+previously used labels file with the command:
+\begin{definition}[\DescribeMacro{\ExcludePreviousFile}]
+\cs{ExcludePreviousFile}\oarg{number of years}\marg{file name}
+\end{definition}
+where \meta{file name} is the name of the previously used file. The
+optional argument \meta{number of years} specifies the year cut-off.
+This defaults to 3, which means that only those labels used this
+year or the previous 2 years will be kept. Any problems used before
+then may be reused.
+
+Suppose I'm lecturing a first year undergraduate mathematics course
+(designated, say, mth101). I want to set assignments on each topic
+and an exam at the end of the year (as well as a resit or second
+sitting paper). I've got databases with problems for each topic, but
+the first and second sitting exams mustn't include any of the
+problems used in the assignments or any problems used in assignments
+or exams for the previous two academic years. I'm going to arrange
+my directory structure as follows:
+\begin{itemize}
+\item \texttt{mth101/}
+ \begin{itemize}
+ \item \texttt{assignment1/} (differentiation)
+ \begin{itemize}
+ \item \texttt{assignment1.tex}
+ \end{itemize}
+ \item \texttt{assignment2/} (probability spaces)
+ \begin{itemize}
+ \item \texttt{assignment2.tex}
+ \end{itemize}
+ \item \texttt{assignment3/} (linear algebra)
+ \begin{itemize}
+ \item \texttt{assignment3.tex}
+ \end{itemize}
+ \item \texttt{exams/}
+ \begin{itemize}
+ \item \texttt{exam.tex} (first sitting)
+ \item \texttt{resit.tex} (second sitting)
+ \end{itemize}
+ \item \texttt{databases/}
+ \begin{itemize}
+ \item \texttt{differentiation.tex}
+ \item \texttt{probabilityspaces.tex}
+ \item \texttt{linearalgebra.tex}
+ \end{itemize}
+ \item \texttt{previouslabels.tex} (created by \sty{probsoln})
+ \end{itemize}
+\end{itemize}
+
\section{Iterating Through Datasets}\label{sec:foreach}
Once you have defined all your problems for a given data set, you
diff --git a/Master/texmf-dist/doc/latex/probsoln/probsoln.pdf b/Master/texmf-dist/doc/latex/probsoln/probsoln.pdf
index 50eb3513ddf..e0bbc92904f 100644
--- a/Master/texmf-dist/doc/latex/probsoln/probsoln.pdf
+++ b/Master/texmf-dist/doc/latex/probsoln/probsoln.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample-exclude.tex b/Master/texmf-dist/doc/latex/probsoln/samples/sample-exclude.tex
new file mode 100644
index 00000000000..8295015352e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample-exclude.tex
@@ -0,0 +1,129 @@
+%%
+%% This is file `sample-exclude.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% probsoln.dtx (with options: `sample-exclude.tex,package')
+%%
+%% probsoln.dtx
+%% Copyright 2013 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license of (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%% randomly select 25 problems from derivatives.tex and add to
+%% the data set called 'deriv'
+%% Display the problems
+%% You may need to change \theenumi back here
+%% randomly select 25 problems from probspaces.tex and add to
+%% the data set called 'spaces'
+%% Display the problems
+%% You may need to change \theenumi back here
+ % This file is public domain
+\documentclass[a4paper]{article}
+
+\usepackage{probsoln}
+ %uncomment the following line to display the answers
+ %\showanswers
+
+ % Set the academic year to be 2011/12 (if omitted assume current
+ % academic year):
+ \SetStartYear{2011}
+
+ % Set the seed for the random number generator:
+ \PSNrandseed{\GetStartYear}
+
+ % Exclude problems that have been used this year or the previous
+ % two academic years. (Creates a file called 'excluded.tex' to
+ % store labels of used problems. Also creates a file called
+ % \jobname.prb that stores labels of problems used in this
+ % document, so they don't get excluded on subsequent runs.)
+ \ExcludePreviousFile[3]{excluded}
+
+ % To clear the used problems file (\jobname.prb) of the labels
+ % generated in the previous run, comment the above and uncomment
+ % below:
+ % \ClearUsedFile{excluded}
+
+ % Load 1 problem randomly selected from the given file
+ % and store in database 'firstprinciples':
+\loadrandomproblems[firstprinciples]{1}{prob-1stprncp}
+
+ % Load 5 problems randomly selected from the given file
+ % and store in database 'easy':
+\loadrandomproblems[easy]{5}{prob-easy}
+
+ % Load 2 problems randomly selected from the given file
+ % and store in database 'implicit':
+\loadrandomproblems[implicit]{2}{prob-implicit}
+
+ % Load 2 problems randomly selected from the given file
+ % and store in database 'probspaces':
+\loadrandomproblems[probspaces]{2}{prob-probspaces}
+
+ % Load 1 problem randomly selected from the given file
+ % and store in database 'mchoice':
+\loadrandomproblems[mchoice]{1}{prob-mchoice}
+
+ % Load 1 problem randomly selected from the given file
+ % and store in database 'nosoln':
+\loadrandomproblems[nosoln]{1}{prob-nosoln}
+
+\begin{document}
+\title{Sample Problem Sheet}
+\author{Nicola Talbot}
+\maketitle
+
+\begin{enumerate}
+ % Differentiation from first principles
+ \foreachproblem[firstprinciples]{\item \thisproblem}
+
+\item Differentiate the following functions:
+\begin{enumerate}
+ \foreachproblem[easy]{\item \thisproblem}
+\end{enumerate}
+
+ % Implicit differentiation
+\foreachproblem[implicit]{\item \thisproblem}
+
+ % Finite probability spaces
+\foreachproblem[probspaces]{\item \thisproblem}
+
+ % Multiple choice question
+\foreachproblem[mchoice]{\item \thisproblem}
+
+ % select one essay style question that doesn't come with a solution
+
+\foreachproblem[nosoln]{\item \thisproblem}
+\end{enumerate}
+\end{document}
+\endinput
+%%
+%% End of file `sample-exclude.tex'.
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample.pdf b/Master/texmf-dist/doc/latex/probsoln/samples/sample.pdf
index b5b7adf2538..43f13544672 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample.pdf
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample.tex b/Master/texmf-dist/doc/latex/probsoln/samples/sample.tex
index 8b927bd5588..c5b631659e6 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample.tex
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample.tex
@@ -7,7 +7,7 @@
%% probsoln.dtx (with options: `sample.tex,package')
%%
%% probsoln.dtx
-%% Copyright 2011 Nicola Talbot
+%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -50,8 +50,8 @@
\documentclass[a4paper]{article}
\usepackage{probsoln}
- %uncomment the following line to display the answers
-\showanswers
+ % uncomment the following line to display the answers
+ % \showanswers
% The following will generate a different set of
% problems each year
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample2.pdf b/Master/texmf-dist/doc/latex/probsoln/samples/sample2.pdf
index 545b648d531..a54bc6f77d3 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample2.pdf
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample2.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample2.tex b/Master/texmf-dist/doc/latex/probsoln/samples/sample2.tex
index 57580107254..72a2f6df6a3 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample2.tex
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample2.tex
@@ -7,7 +7,7 @@
%% probsoln.dtx (with options: `sample2.tex,package')
%%
%% probsoln.dtx
-%% Copyright 2011 Nicola Talbot
+%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample3.pdf b/Master/texmf-dist/doc/latex/probsoln/samples/sample3.pdf
index 2a4bdd77839..1b0e3717ade 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample3.pdf
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample3.tex b/Master/texmf-dist/doc/latex/probsoln/samples/sample3.tex
index e10158ae4db..f40e4755ae4 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample3.tex
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample3.tex
@@ -7,7 +7,7 @@
%% probsoln.dtx (with options: `sample3.tex,package')
%%
%% probsoln.dtx
-%% Copyright 2011 Nicola Talbot
+%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample4.pdf b/Master/texmf-dist/doc/latex/probsoln/samples/sample4.pdf
index 3abaeb7843e..fba702a13fb 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample4.pdf
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample4.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample4.tex b/Master/texmf-dist/doc/latex/probsoln/samples/sample4.tex
index 8d0355a2f2b..e79fd08340d 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample4.tex
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample4.tex
@@ -7,7 +7,7 @@
%% probsoln.dtx (with options: `sample4.tex,package')
%%
%% probsoln.dtx
-%% Copyright 2011 Nicola Talbot
+%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample5.pdf b/Master/texmf-dist/doc/latex/probsoln/samples/sample5.pdf
index e8b50cfa542..3d50533dc6c 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample5.pdf
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample5.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample5.tex b/Master/texmf-dist/doc/latex/probsoln/samples/sample5.tex
index fd31bef8d66..4f515585196 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample5.tex
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample5.tex
@@ -7,7 +7,7 @@
%% probsoln.dtx (with options: `sample5.tex,package')
%%
%% probsoln.dtx
-%% Copyright 2011 Nicola Talbot
+%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample6.tex b/Master/texmf-dist/doc/latex/probsoln/samples/sample6.tex
index 1edcbaad89b..321fda452a9 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample6.tex
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample6.tex
@@ -7,7 +7,7 @@
%% probsoln.dtx (with options: `sample6.tex,package')
%%
%% probsoln.dtx
-%% Copyright 2011 Nicola Talbot
+%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample7.tex b/Master/texmf-dist/doc/latex/probsoln/samples/sample7.tex
index 5b1997c8f39..0b48c4cc85e 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample7.tex
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample7.tex
@@ -7,7 +7,7 @@
%% probsoln.dtx (with options: `sample7.tex,package')
%%
%% probsoln.dtx
-%% Copyright 2011 Nicola Talbot
+%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
diff --git a/Master/texmf-dist/doc/latex/probsoln/samples/sample8.tex b/Master/texmf-dist/doc/latex/probsoln/samples/sample8.tex
index d52549da9eb..503488f5e2e 100644
--- a/Master/texmf-dist/doc/latex/probsoln/samples/sample8.tex
+++ b/Master/texmf-dist/doc/latex/probsoln/samples/sample8.tex
@@ -7,7 +7,7 @@
%% probsoln.dtx (with options: `sample8.tex,package')
%%
%% probsoln.dtx
-%% Copyright 2011 Nicola Talbot
+%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
diff --git a/Master/texmf-dist/source/latex/probsoln/probsoln.dtx b/Master/texmf-dist/source/latex/probsoln/probsoln.dtx
index 9515bfe3a4a..0468d92c632 100644
--- a/Master/texmf-dist/source/latex/probsoln/probsoln.dtx
+++ b/Master/texmf-dist/source/latex/probsoln/probsoln.dtx
@@ -9,7 +9,7 @@
% -doc "probsoln-manual.tex"
% -author "Nicola Talbot"
% probsoln
-% Created on 2011/12/10 17:17
+% Created on 2013/3/13 15:28
%\fi
%\iffalse
%<*package>
@@ -32,7 +32,7 @@
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2011 Nicola Talbot, all rights reserved.
+% Copyright (C) 2013 Nicola Talbot, all rights reserved.
% \fi
% \iffalse
%<*driver>
@@ -54,7 +54,7 @@
\RecordChanges
\PageIndex
-\CheckSum{1484}
+\CheckSum{1822}
\newcommand*{\dq}[1]{``#1''}
@@ -66,7 +66,7 @@
%\MakeShortVerb{"}
%\DeleteShortVerb{\|}
%
-% \title{probsoln v3.02:
+% \title{probsoln v3.04:
%creating problem sheets optionally with solutions}
% \author{Nicola L.C. Talbot\\[10pt]
%School of Computing Sciences\\
@@ -75,7 +75,7 @@
%NR4 7TJ. United Kingdom.\\
%\url{http://theoval.cmp.uea.ac.uk/~nlct/}}
%
-% \date{2011-12-10}
+% \date{2012-08-23}
% \maketitle
%\tableofcontents
%
@@ -535,6 +535,8 @@
%\end{definition}
%This is similar to \cs{loadrandomproblems} except that it won't load
%those problems whose labels are listed in \meta{exception list}.
+%\textbf{If you want to automatically exclude problems included in
+%previous documents, see \sectionref{sec:exprev}.}
%
%Note that the random number generator has been modified in version
%3.01 in order to fix a bug. If you want to ensure that your random
@@ -555,6 +557,117 @@
%a problem definition will be parsed twice.
%\end{important}
%
+%\subsection{Randomly Selecting Problems Not Selected in Previous
+%Documents}
+%\label{sec:exprev}
+%
+%Suppose you have a large set of questions that you want to randomly
+%select for assignments and exams. The chances are, you don't want to
+%include questions that have been previously set for, say, the last
+%three years. That is, you don't want to select questions the
+%students may already have seen. As from version 3.03, you can now do
+%this.
+%
+%The \sty{probsoln} package defaults to the UK academic year, which
+%starts in September. If this isn't appropriate, you can change it
+%using:
+%\begin{definition}[\DescribeMacro{\SetStartMonth}]
+%\cs{SetStartMonth}\marg{n}
+%\end{definition}
+%where \meta{n} is the number of the month. (1 = January, 2 =
+%February, etc.)
+%
+%The \emph{start year} is the calender year in effect when the
+%academic year started. For example, if this is the academic year
+%2011/12, then the start year is 2011. This is automatically set to
+%the start of the current academic year. It is also updated when
+%\cs{SetStartMonth} is used.\footnote{So don't use \cs{SetStartMonth}
+%after \cs{SetStartYear}.} If you want to set it to a specific year,
+%you can use:
+%\begin{definition}[\DescribeMacro{\SetStartYear}]
+%\cs{SetStartYear}\marg{year}
+%\end{definition}
+%For example: \verb|\SetStartYear{2008}| indicates the academic year
+%2008/9.
+%
+%There are two files concerned with previously used labels. They are:
+%\begin{description}
+%
+% \item[The previously used labels file] This keeps track of all
+% problems used in previous years, as well as problems used by
+% other documents that have this as their previously used labels
+% file, and it contains the problem labels from the last run of
+% the current document.
+%
+% \item[The current used labels file] This defaults to
+%\cs{jobname}\texttt{.prb}, but the name can be changed using:
+% \begin{definition}[\DescribeMacro{\SetUsedFileName}]
+% \cs{SetUsedFileName}\marg{name}
+% \end{definition}
+% This file keeps track of all the labels used in the current
+% document from the previous \LaTeX\ run. Note that if you want to
+% delete this file, first clear it using
+% \begin{definition}[\DescribeMacro{\ClearUsedFile}]
+% \cs{ClearUsedFile}\marg{file}
+% \end{definition}
+% in place of \cs{ExcludePreviousFile}\marg{file}, described below.
+% The argument \meta{file} is the previously used labels file
+% described above. \cs{ClearUsedFile} will remove all labels in
+% the current used labels file from the previously used labels file
+% and clear the current used labels file. Once this file is empty,
+% it may then be deleted.
+%
+%\end{description}
+%
+%Before loading randomly selected problems, first specify the
+%previously used labels file with the command:
+%\begin{definition}[\DescribeMacro{\ExcludePreviousFile}]
+%\cs{ExcludePreviousFile}\oarg{number of years}\marg{file name}
+%\end{definition}
+%where \meta{file name} is the name of the previously used file. The
+%optional argument \meta{number of years} specifies the year cut-off.
+%This defaults to 3, which means that only those labels used this
+%year or the previous 2 years will be kept. Any problems used before
+%then may be reused.
+%
+%Suppose I'm lecturing a first year undergraduate mathematics course
+%(designated, say, mth101). I want to set assignments on each topic
+%and an exam at the end of the year (as well as a resit or second
+%sitting paper). I've got databases with problems for each topic, but
+%the first and second sitting exams mustn't include any of the
+%problems used in the assignments or any problems used in assignments
+%or exams for the previous two academic years. I'm going to arrange
+%my directory structure as follows:
+%\begin{itemize}
+%\item \texttt{mth101/}
+% \begin{itemize}
+% \item \texttt{assignment1/} (differentiation)
+% \begin{itemize}
+% \item \texttt{assignment1.tex}
+% \end{itemize}
+% \item \texttt{assignment2/} (probability spaces)
+% \begin{itemize}
+% \item \texttt{assignment2.tex}
+% \end{itemize}
+% \item \texttt{assignment3/} (linear algebra)
+% \begin{itemize}
+% \item \texttt{assignment3.tex}
+% \end{itemize}
+% \item \texttt{exams/}
+% \begin{itemize}
+% \item \texttt{exam.tex} (first sitting)
+% \item \texttt{resit.tex} (second sitting)
+% \end{itemize}
+% \item \texttt{databases/}
+% \begin{itemize}
+% \item \texttt{differentiation.tex}
+% \item \texttt{probabilityspaces.tex}
+% \item \texttt{linearalgebra.tex}
+% \end{itemize}
+% \item \texttt{previouslabels.tex} (created by \sty{probsoln})
+% \end{itemize}
+%\end{itemize}
+%
%\section{Iterating Through Datasets}\label{sec:foreach}
%
%Once you have defined all your problems for a given data set, you
@@ -854,7 +967,7 @@
% \end{macrocode}
% Identify this package and version:
% \begin{macrocode}
-\ProvidesPackage{probsoln}[2011/12/10 v3.02 (NLCT)]
+\ProvidesPackage{probsoln}[2012/08/23 v3.04 (NLCT)]
% \end{macrocode}
% Required packages:
%\changes{3.01}{2011/08/22}{substr package no longer required}
@@ -862,6 +975,11 @@
\RequirePackage{ifthen}
\RequirePackage{amsmath}
% \end{macrocode}
+%\changes{3.03}{2011/01/16}{added etoolbox to list of required
+%packages}
+% \begin{macrocode}
+\RequirePackage{etoolbox}
+% \end{macrocode}
% \subsection{Package Options}
%\begin{macro}{\ifshowanswers}
% Define boolean to determine whether or not to show the
@@ -979,6 +1097,393 @@
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\probsoln@startyear}
+%\changes{3.03}{2011/01/16}{new}
+% The year as at the start of the new academic year. (For example,
+% if the academic year starts in September and today is any date
+% between 2011-09-01 and 2012-08-30, then the start year is 2011.)
+% \begin{macrocode}
+\newcount\probsoln@startyear
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetStartYear}
+%\changes{3.03}{2011/01/16}{new}
+% Provide command to set the starting year manually.
+% \begin{macrocode}
+\newcommand*{\SetStartYear}[1]{%
+ \probsoln@startyear=#1\relax
+ \renewcommand\SetStartMonth[1]{%
+ \PackageError{probsoln}{\string\SetStartMonth\space
+ can't be used after \string\SetStartYear}{}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GetStartYear}
+% Gets the value of the start year count register:
+% \begin{macrocode}
+\newcommand*{\GetStartYear}{\probsoln@startyear}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\probsoln@startmonth}
+%\changes{3.03}{2011/01/16}{new}
+% The month starting the academic year. (1=January, 2=February,
+% etc).
+% \begin{macrocode}
+\newcount\probsoln@startmonth
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SetStartMonth}
+%\changes{3.03}{2011/01/16}{new}
+% Define command to set the month starting the academic year. This
+% also sets the starting year.
+% \begin{macrocode}
+\newcommand*{\SetStartMonth}[1]{%
+ \probsoln@startmonth=#1\relax
+ \probsoln@startyear=\year\relax
+ \ifnum\month<\probsoln@startmonth
+ \advance\probsoln@startyear by -1\relax
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Set the default starting month to 9 (September):
+% \begin{macrocode}
+\SetStartMonth{9}
+% \end{macrocode}
+%
+%\begin{macro}{\probsoln@prev}
+%\changes{3.03}{2011/01/16}{new}
+% File handle for file containing previous labels.
+% \begin{macrocode}
+\newwrite\probsoln@prev
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\probsoln@used}
+%\changes{3.03}{2011/01/16}{new}
+% File handle for file containing previous used.
+% \begin{macrocode}
+\newwrite\probsoln@used
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\probsoln@prev@cutoff}
+%\changes{3.03}{2011/01/16}{new}
+% Cut-off year. Problems excluded if the year they were set is
+% greater than the cut-off year.
+% \begin{macrocode}
+\newcount\probsoln@prev@cutoff
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@probsoln@usedfilename}
+% Stores the file name for the used problems file. (Defaults to
+% \cs{jobname}\texttt{.prb})
+% \begin{macrocode}
+\newcommand*{\@probsoln@usedfilename}{\jobname.prb}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetUsedFileName}
+% Set the name of the used problems file.
+% \begin{macrocode}
+\newcommand*{\SetUsedFileName}[1]{%
+ \renewcommand*{\@probsoln@usedfilename}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ClearUsedFile}
+%\changes{3.03}{2011/01/16}{new}
+% Clear the contents of the used file (\cs{@probsoln@usedfilename})
+% and remove corresponding entries from the previous file (as
+% specified in \cs{ExcludePreviousFile}).
+% Not to be used after \cs{ExcludePreviousFile}.
+% \begin{macrocode}
+\newcommand*{\ClearUsedFile}[1]{%
+ \probsoln@prev@cutoff=0\relax
+ \@probsoln@readprev{#1}%
+% \end{macrocode}
+% Only write labels that aren't in the used file.
+% \begin{macrocode}
+ \@for\@this@db:=\prob@databases\do{%
+ {%
+ \edef\@prev@list{\csname probsoln@prev@list@\@this@db\endcsname}%
+ \ifdefempty{\@prev@list}%
+ {}%
+ {%
+ \@for\@this@label:=\@prev@list\do{%
+ \ifcsundef{@used@problem@\@this@db @\@this@label}%
+ {%
+ \immediate\write\probsoln@prev{%
+ \string\previousproblem{\@this@label}{\@this@db}%
+ {\csname @prev@problem@\@this@db @\@this@label\endcsname}}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ \immediate\closeout\probsoln@prev
+ \immediate\closeout\probsoln@used
+ \@disable@exclude@prev
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ExcludePreviousFile}
+%\changes{3.03}{2011/01/16}{new}
+% Exclude problems used in the last \meta{n} years.
+% \begin{macrocode}
+\newcommand*{\ExcludePreviousFile}[2][3]{%
+ \probsoln@prev@cutoff=\probsoln@startyear\relax
+ \advance\probsoln@prev@cutoff by -#1\relax
+ \@probsoln@readprev{#2}%
+ \@write@prev
+ \def\ExcludePreviousFile[2][3]{\PackageError{probsoln}{Only one
+ instance of \string\ExcludePreviousFile\space allowed}{You've
+ already used this command. You are only allowed to use it once}}%
+ \def\ClearUsedFile[1]{%
+ \PackageError{probsoln}%
+ {\string\ClearUsedFile\space may not be used after
+ \string\ExcludePreviousFile}{}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@probsoln@readprev}
+% Read contents of previous and used files and open for writing.
+% \begin{macrocode}
+\newcommand*{\@probsoln@readprev}[1]{%
+ \@enable@exclude@prev
+ \InputIfFileExists{#1}%
+ {\PackageInfo{probsoln}%
+ {Excluded problem file `#1' found}}%
+ {\PackageInfo{probsoln}%
+ {Excluded problem file `#1' not found. A new one will be
+ created}}%
+ \InputIfFileExists{\@probsoln@usedfilename}%
+ {\PackageInfo{probsoln}%
+ {Current problems file `\@probsoln@usedfilename' found}}%
+ {\PackageInfo{probsoln}%
+ {No current problem file `\@probsoln@usedfilename' found. A new one will be created}}%
+ \immediate\openout\probsoln@prev=#1
+ \immediate\openout\probsoln@used=\@probsoln@usedfilename
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\probsoln@prev@list}
+%\changes{3.03}{2011/01/16}{new}
+% Maintain a list of all previous problem labels:
+% \begin{macrocode}
+\newcommand*{\probsoln@prev@list@default}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@write@prev}
+%\changes{3.03}{2011/01/16}{new}
+% Write all previous labels to file.
+% \begin{macrocode}
+\newcommand*{\@write@prev}{%
+ \@for\@this@db:=\prob@databases\do{%
+ {%
+ \edef\@prev@list{\csname probsoln@prev@list@\@this@db\endcsname}%
+ \ifdefempty{\@prev@list}%
+ {}%
+ {%
+ \@for\@this@label:=\@prev@list\do{%
+ \immediate\write\probsoln@prev{%
+ \string\previousproblem{\@this@label}{\@this@db}%
+ {\csname @prev@problem@\@this@db @\@this@label\endcsname}}%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@enable@exclude@prev}
+%\changes{3.03}{2011/01/16}{new}
+% Enable commands for excluding previously selected problems.
+% \begin{macrocode}
+\newcommand*{\@enable@exclude@prev}{%
+% \end{macrocode}
+% Redefine macro that adds used problem to used problem file and
+% previous problem file.
+% \begin{macrocode}
+ \renewcommand*{\@add@used@problem}[2]{%
+ \immediate\write\probsoln@used{\string\usedproblem{##1}{##2}{\number\probsoln@startyear}}%
+ \ifcsundef{@prev@problem@##2@##1}%
+ {%
+ \immediate\write\probsoln@prev{%
+ \string\previousproblem{##1}{##2}{\number\probsoln@startyear}}%
+ \expandafter\xdef\csname @prev@problem@##2@##1\endcsname{%
+ \number\probsoln@startyear}%
+ }%
+ {%
+ \expandafter\ifnum\csname @prev@problem@##2@##1\endcsname
+ <\probsoln@startyear
+ \immediate\write\probsoln@prev{%
+ \string\previousproblem{##1}{##2}{\number\probsoln@startyear}}%
+ \expandafter\xdef\csname @prev@problem@##2@##1\endcsname{%
+ \number\probsoln@startyear}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+% Redefine macro that fetches the exclusion list. (First argument is
+% the macro in which to store the list, the second argument is the
+% database.)
+% \begin{macrocode}
+ \renewcommand*{\@fetch@excluded@list}[2]{%
+ \def##1{}%
+ \ifcsdef{probsoln@prev@list@##2}%
+ {%
+ \edef\@prev@list{\csname probsoln@prev@list@##2\endcsname}%
+ \@for\@this@label:=\@prev@list\do{%
+% \end{macrocode}
+% If it isn't one of the used problems, it can be added to the
+% exclusion list:
+% \begin{macrocode}
+ \ifcsundef{@used@problem@##2@\@this@label}%
+ {%
+% \end{macrocode}
+% It isn't, so label can be added to the exclusion list:
+% \begin{macrocode}
+ \ifcsempty{##1}%
+ {\edef##1{\@this@label}}%
+ {\edef##1{##1,\@this@label}}%
+ }%
+ {}%
+ }%
+ }%
+ {}%
+ }%
+% \end{macrocode}
+% Add new previous list for given database:
+% \begin{macrocode}
+ \renewcommand*{\@add@newprevlist}[1]{%
+ \expandafter\gdef\csname probsoln@prev@list@##1\endcsname{}%
+ }%
+% \end{macrocode}
+% Redefine macro that closes the exclusion-related files.
+% \begin{macrocode}
+ \renewcommand*{\close@probsoln@prev}{%
+ \closeout\probsoln@prev
+ \closeout\probsoln@used
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@disable@exclude@prev}
+%\changes{3.03}{2011/01/16}{new}
+% Disable commands for excluding previously selected problems.
+% \begin{macrocode}
+\newcommand*{\@disable@exclude@prev}{%
+ \renewcommand*{\@add@used@problem}[2]{}%
+ \renewcommand*{\@fetch@excluded@list}[2]{\def##1{}}%
+ \renewcommand*{\@add@newprevlist}[1]{}%
+ \renewcommand*{\close@probsoln@prev}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% By default, the commands for excluding previously selected
+% problems are disabled.
+%\begin{macro}{\@add@used@problem}
+%\changes{3.03}{2011/01/16}{new}
+% Adds problem to used problems list. (First argument is the label,
+% the second argument is the database name.)
+% \begin{macrocode}
+\newcommand*{\@add@used@problem}[2]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@fetch@excluded@list}
+%\changes{3.03}{2011/01/16}{new}
+% Fetches the excluded list. (First argument macro in which to store
+% the list. The second argument is the database name.)
+% \begin{macrocode}
+\newcommand*{\@fetch@excluded@list}[2]{%
+ \def#1{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@add@newprevlist}
+%\changes{3.03}{2011/01/16}{new}
+% Adds a new previous list for the given database:
+% \begin{macrocode}
+\newcommand*{\@add@newprevlist}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\close@probsoln@prev}
+%\changes{3.03}{2011/01/16}{new}
+% Close file used for previous labels
+% \begin{macrocode}
+\newcommand*{\close@probsoln@prev}{}
+% \end{macrocode}
+%\end{macro}
+%
+% At the end of the document, close file if required:
+% \begin{macrocode}
+\AtEndDocument{\close@probsoln@prev}
+% \end{macrocode}
+%
+%\begin{macro}{\previousproblem}
+%\changes{3.03}{2011/01/16}{new}
+% Identifies problem that has been selected and the year it was
+% selected. (First argument label, second argument database name,
+% third argument year.)
+% \begin{macrocode}
+\newcommand*{\previousproblem}[3]{%
+ \ifnum#3>\probsoln@prev@cutoff
+% \end{macrocode}
+% If data set hasn't been defined, define it:
+% \begin{macrocode}
+ \ifcsundef{prob@db@#2}{\prob@newdb{#2}}{}%
+% \end{macrocode}
+% Define command that stores the year the problem was used:
+% \begin{macrocode}
+ \expandafter\gdef\csname @prev@problem@#2@#1\endcsname{#3}%
+% \end{macrocode}
+% Add label to the previous list for this data set:
+% \begin{macrocode}
+ \edef\@prev@list{\csname probsoln@prev@list@#2\endcsname}%
+ \ifdefempty{\@prev@list}%
+ {%
+ \expandafter\xdef\csname probsoln@prev@list@#2\endcsname{#1}%
+ }%
+ {%
+ \expandafter\xdef\csname probsoln@prev@list@#2\endcsname{%
+ \@prev@list,#1}%
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\usedproblem}
+%\changes{3.03}{2011/01/16}{new}
+% Don't want to exclude problems that were selected in the previous
+% run of this document for the current year, so they need to be
+% identified in the aux file.
+% \begin{macrocode}
+\newcommand*{\usedproblem}[3]{%
+ \ifnum#3=\probsoln@startyear
+ \expandafter\def\csname @used@problem@#2@#1\endcsname{#3}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
%\subsection{Databases}
% All the problems are stored in data bases. Each data base
% \meta{name} is represented as a macro \cs{prob@db@}\meta{name}
@@ -1014,12 +1519,18 @@
% Creates a new (empty) data base.
% \begin{macrocode}
\newcommand*{\prob@newdb}[1]{%
-\@ifundefined{prob@db@#1}{%
- \expandafter\gdef\csname prob@db@#1\endcsname{}%
- \xdef\prob@databases{\prob@databases,#1}%
- \expandafter\gdef\csname prob@db@#1@solutions\endcsname{}%
- }{%
- \PackageError{probsoln}{Data set `#1' is already defined}{}}}
+ \ifcsundef{prob@db@#1}%
+ {%
+ \expandafter\gdef\csname prob@db@#1\endcsname{}%
+ \xdef\prob@databases{\prob@databases,#1}%
+ \expandafter\gdef\csname prob@db@#1@solutions\endcsname{}%
+ \@add@newprevlist{#1}%
+ }%
+ {%
+ \PackageError{probsoln}{Data set `#1' is already defined}%
+ {Data set names must be unique}%
+ }%
+}
% \end{macrocode}
%\end{macro}
%
@@ -1067,12 +1578,14 @@
% \end{macrocode}
% Add label to target data base
% \begin{macrocode}
- \expandafter\ifx\csname prob@db@#3\endcsname\@empty
+ \ifcsempty{prob@db@#3}%
+ {%
\expandafter\xdef\csname prob@db@#3\endcsname{#1}%
- \else
+ }%
+ {%
\expandafter\xdef\csname prob@db@#3\endcsname{%
\csname prob@db@#3\endcsname,#1}%
- \fi
+ }%
% \end{macrocode}
% Redefine \cs{prob@data@}\meta{source}"@"\meta{label} as
% \cs{prob@data@}\meta{target}"@"\meta{label}.
@@ -1665,6 +2178,7 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\def\@prob@currentlabel{#2}%
\def\prob@currentdb{#1}%
\prob@showdraftlabel{#1}{#2}%
+ \@add@used@problem{#2}{#1}%
\let\@useprob@next=\relax
\@ifundefined{prob@data@#1@#2}%
{%
@@ -1793,9 +2307,11 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
%\cs{loadrandomproblems}\oarg{db name}\marg{n}\marg{filename}
%\end{definition}
% Loads \meta{n} randomly selected problems from \meta{filename}.
+%\changes{3.03}{2011/01/16}{fetch exclusion list}
% \begin{macrocode}
\newcommand{\loadrandomproblems}[3][default]{%
- \@loadrandomproblems{#1}{#2}{#3}{}%
+ \@fetch@excluded@list{\@excl@list}{#1}%
+ \@loadrandomproblems{#1}{#2}{#3}{\@excl@list}%
}
% \end{macrocode}
%\end{macro}
@@ -1835,8 +2351,13 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
% \begin{macrocode}
\@probselN=0\relax
\@for\@thislabel:=\prob@selectedlabels\do{%
- \expandafter\DTLifinlist\expandafter
- {\@thislabel}{#4}{}%
+% \end{macrocode}
+%\changes{3.03}{2011/01/16}{ensure arguments expanded in
+%\cs{DTLifinlist}}
+% \begin{macrocode}
+ \edef\@if@in@list{\noexpand\DTLifinlist{\@thislabel}{#4}}%
+ \@if@in@list
+ {}%
{%
\advance\@probselN by 1\relax
\expandafter
@@ -1844,16 +2365,41 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\@thislabel}%
}%
}%
- \shuffle{@prob@tmp@}{\@probselN}%
- \ifnum\@probselN<#2\relax
% \end{macrocode}
-%\changes{3.01}{2011/08/22}{changed error to warning}
+%\changes{3.03}{2012/01/16}{added exclusion list to warning messages}
% \begin{macrocode}
- \PackageWarning{probsoln}{You have requested
- \number#2\space\space problem(s) but `#3' only contains
- \number\@probselN\space problems. All problems will be selected}%
+ \edef\@do@excludedlist{#4}%
+ \ifdefempty{\@do@excludedlist}%
+ {}%
+ {\def\@do@excludedlist{(Excluded list: #4.) }}%
+% \end{macrocode}
+%\changes{3.03}{2012/01/16}{added check for 0 available problems}
+% \begin{macrocode}
+ \ifnum\@probselN=0\relax
+ \PackageWarning{probsoln}{You have requested
+ \number#2\space\space problem(s) but there are no available
+ problems in `#3'. \@do@excludedlist No problems will be selected}%
\else
- \@probselN=#2\relax
+ \shuffle{@prob@tmp@}{\@probselN}%
+ \ifnum\@probselN<#2\relax
+% \end{macrocode}
+%\changes{3.01}{2011/08/22}{changed error to warning}
+% \begin{macrocode}
+ \ifnum\@probselN=1\relax
+ \PackageWarning{probsoln}{You have requested
+ \number#2\space\space problem(s) but there is only
+ 1 problem available in `#3'. \@do@excludedlist
+ Only 1 problem will be selected}%
+ \else
+ \PackageWarning{probsoln}{You have requested
+ \number#2\space\space problem(s) but there are only
+ \number\@probselN\space problems available in `#3'.
+ \@do@excludedlist
+ Only \number\@probselN\space problems will be selected}%
+ \fi
+ \else
+ \@probselN=#2\relax
+ \fi
\fi
% \end{macrocode}
% Store only the first \meta{n} of the shuffled labels.
@@ -2139,33 +2685,38 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
%\loadrandomproblems{1}{\tmp}}
%\end{verbatim}
%
+%\changes{3.03}{}{added count register to keep track of level to
+%allow for nested loops}
% \begin{macrocode}
\newcount\@ps@forrand
+\newcount\@ps@forrand@level
\newcommand{\doforrandN}[4]{%
+ \global\advance\@ps@forrand@level by 1\relax
{%
\@ps@forrand=0\relax
\@for#2:=#3\do{%
\advance\@ps@forrand by 1\relax
\expandafter
- \edef\csname @doforrandN@\romannumeral\@ps@forrand\endcsname{#2}%
+ \edef\csname @doforrandN@\number\@ps@forrand@level @\romannumeral\@ps@forrand\endcsname{#2}%
}%
\ifnum\@ps@forrand<#1\relax
- \PackageError{probsoln}{Can't randomly select \number#1 item(s)}{You
- have requested \number#1 item(s), but there
- are only \number\@ps@forrand item(s) in the list}%
+ \PackageError{probsoln}{Can't randomly select \number#1\space item(s)}{You
+ have requested \number#1\space item(s), but there
+ are only \number\@ps@forrand\space item(s) in the list: #3}%
\else
- \shuffle{@doforrandN@}{\@ps@forrand}%
+ \shuffle{@doforrandN@\number\@ps@forrand@level @}{\@ps@forrand}%
\ifnum#1>0\relax
\@ps@forrand=0\relax
\loop
\advance\@ps@forrand by 1\relax
- \edef#2{\csname @doforrandN@\romannumeral\@ps@forrand\endcsname}%
+ \edef#2{\csname @doforrandN@\number\@ps@forrand@level @\romannumeral\@ps@forrand\endcsname}%
#4%
\ifnum\@ps@forrand<#1\relax
\repeat
\fi
\fi
}%
+ \global\advance\@ps@forrand@level by -1\relax
}
% \end{macrocode}
%\end{macro}
@@ -2264,12 +2815,13 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
% environment's counters.
%\begin{environment}{textenum}
%\changes{2007 Oct 6}{2.05}{new}
+%\changes{2012/08/23}{3.04}{fixed bug that interfered with depth counter}
% \begin{macrocode}
\newenvironment{textenum}{%
\ifnum\@enumdepth>\thr@@
\@toodeep
\else
- \advance\@enumdepth\@ne\relax
+ \advance\@enumdepth by 1\relax
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
\let\@item\@textitem
\def\@itemlabel{%
@@ -2281,7 +2833,6 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\ignorespaces
}%
{%
- \global\advance\@enumdepth\m@ne\relax
}
% \end{macrocode}
%\end{environment}
@@ -2359,7 +2910,7 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
%\fi
%\iffalse
% \begin{macrocode}
-%<*sample.tex>
+%<*sample-exclude.tex>
% \end{macrocode}
%\fi
%\iffalse
@@ -2369,7 +2920,100 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\usepackage{probsoln}
%uncomment the following line to display the answers
-\showanswers
+ %\showanswers
+
+ % Set the academic year to be 2011/12 (if omitted assume current
+ % academic year):
+ \SetStartYear{2011}
+
+ % Set the seed for the random number generator:
+ \PSNrandseed{\GetStartYear}
+
+ % Exclude problems that have been used this year or the previous
+ % two academic years. (Creates a file called 'excluded.tex' to
+ % store labels of used problems. Also creates a file called
+ % \jobname.prb that stores labels of problems used in this
+ % document, so they don't get excluded on subsequent runs.)
+ \ExcludePreviousFile[3]{excluded}
+
+ % To clear the used problems file (\jobname.prb) of the labels
+ % generated in the previous run, comment the above and uncomment
+ % below:
+ % \ClearUsedFile{excluded}
+
+ % Load 1 problem randomly selected from the given file
+ % and store in database 'firstprinciples':
+\loadrandomproblems[firstprinciples]{1}{prob-1stprncp}
+
+ % Load 5 problems randomly selected from the given file
+ % and store in database 'easy':
+\loadrandomproblems[easy]{5}{prob-easy}
+
+ % Load 2 problems randomly selected from the given file
+ % and store in database 'implicit':
+\loadrandomproblems[implicit]{2}{prob-implicit}
+
+ % Load 2 problems randomly selected from the given file
+ % and store in database 'probspaces':
+\loadrandomproblems[probspaces]{2}{prob-probspaces}
+
+ % Load 1 problem randomly selected from the given file
+ % and store in database 'mchoice':
+\loadrandomproblems[mchoice]{1}{prob-mchoice}
+
+ % Load 1 problem randomly selected from the given file
+ % and store in database 'nosoln':
+\loadrandomproblems[nosoln]{1}{prob-nosoln}
+
+
+\begin{document}
+\title{Sample Problem Sheet}
+\author{Nicola Talbot}
+\maketitle
+
+\begin{enumerate}
+ % Differentiation from first principles
+ \foreachproblem[firstprinciples]{\item \thisproblem}
+
+\item Differentiate the following functions:
+\begin{enumerate}
+ \foreachproblem[easy]{\item \thisproblem}
+\end{enumerate}
+
+ % Implicit differentiation
+\foreachproblem[implicit]{\item \thisproblem}
+
+ % Finite probability spaces
+\foreachproblem[probspaces]{\item \thisproblem}
+
+ % Multiple choice question
+\foreachproblem[mchoice]{\item \thisproblem}
+
+ % select one essay style question that doesn't come with a solution
+
+\foreachproblem[nosoln]{\item \thisproblem}
+\end{enumerate}
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-exclude.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+\documentclass[a4paper]{article}
+
+\usepackage{probsoln}
+ % uncomment the following line to display the answers
+ % \showanswers
% The following will generate a different set of
% problems each year
@@ -2941,6 +3585,33 @@ f'(x) & = & g'(x)\ln(g(x)) + \frac{g(x)}{g(x)}g'(x)\\
$y = \frac{\sin x}{x}$.}{%
\[\frac{dy}{dx} = \frac{\cos x}{x} - \frac{\sin x}{x^2}\]}
+\newproblem{diffeasy:exp4x}{%
+ $y = \exp(4x)$
+}%
+{%
+ \[\frac{dy}{dx} = 4\exp(4x)\]
+}
+
+\newproblem{diffeasy:exp3x+2}{%
+ $y = \exp(3x+2)$
+}%
+{%
+ \[\frac{dy}{dx} = 3\exp(3x+2)\]
+}
+
+\newproblem{diffeasy:cubic}{%
+ $y=x^3 + 4x^2 - x + 3$
+}%
+{%
+ \[\frac{dy}{dx} = 3x^2 + 8x - 1\]
+}
+
+\newproblem{diffeasy:quad}{%
+ $y=2x^3 + 6x -1$
+}%
+{%
+ \[\frac{dy}{dx} = 6x + 6 = 6(x+1)\]
+}
% \end{macrocode}
%\fi
%\iffalse
@@ -3119,6 +3790,15 @@ Differentiating with respect to $x$ gives:
& = & \frac{-x}{\sqrt{1-x^2}}.
\end{eqnarray*}}
+\newproblem{imd:ellipse}{%
+Find the gradient of the ellipse given by $4x^2 + 3y^2 = 25$.}{%
+Differentiating with respect to $x$ gives:
+\begin{eqnarray*}
+8x + 6y\frac{dy}{dx} & = & 0\\
+\frac{dy}{dx} & = & \frac{-8x}{6y}\\
+ & = & \frac{-4x}{\sqrt{25-4x^2}}.
+\end{eqnarray*}}
+
\newproblem{imd:ysq:xcuov2mx}{%
Find $\frac{dy}{dx}$, given
\begin{displaymath}
diff --git a/Master/texmf-dist/source/latex/probsoln/probsoln.ins b/Master/texmf-dist/source/latex/probsoln/probsoln.ins
index 20afb0ffb88..261f5de04d8 100644
--- a/Master/texmf-dist/source/latex/probsoln/probsoln.ins
+++ b/Master/texmf-dist/source/latex/probsoln/probsoln.ins
@@ -1,10 +1,10 @@
-% probsoln.ins generated using makedtx version 0.94b 2011/12/10 17:17
+% probsoln.ins generated using makedtx version 0.94b 2013/3/13 15:28
\input docstrip
\preamble
probsoln.dtx
- Copyright 2011 Nicola Talbot
+ Copyright 2013 Nicola Talbot
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -18,7 +18,7 @@
The Current Maintainer of this work is Nicola Talbot.
- This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+ This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
\endpreamble
@@ -26,6 +26,8 @@
\generate{\file{probsoln.sty}{\usepreamble\defaultpreamble
\usepostamble\defaultpostamble\from{probsoln.dtx}{probsoln.sty,package}}
+\file{sample-exclude.tex}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{probsoln.dtx}{sample-exclude.tex,package}}
\file{sample.tex}{\usepreamble\defaultpreamble
\usepostamble\defaultpostamble\from{probsoln.dtx}{sample.tex,package}}
\file{sample2.tex}{\usepreamble\defaultpreamble
diff --git a/Master/texmf-dist/tex/latex/probsoln/probsoln.sty b/Master/texmf-dist/tex/latex/probsoln/probsoln.sty
index 8144c5e1c22..86e685a1327 100644
--- a/Master/texmf-dist/tex/latex/probsoln/probsoln.sty
+++ b/Master/texmf-dist/tex/latex/probsoln/probsoln.sty
@@ -7,7 +7,7 @@
%% probsoln.dtx (with options: `probsoln.sty,package')
%%
%% probsoln.dtx
-%% Copyright 2011 Nicola Talbot
+%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
+%% This work consists of the files probsoln.dtx and probsoln.ins and the derived files probsoln.sty, sample-exclude.tex, sample.tex, sample2.tex, sample3.tex, sample4.tex, sample5.tex, sample6.tex, sample7.tex, sample8.tex, prob-1stprncp.tex, prob-args.tex, prob-easy.tex, prob-easy2.tex, prob-implicit.tex, prob-mchoice.tex, prob-mixed.tex, prob-newdata.tex, prob-nosoln.tex, prob-probspaces.tex, prob-probspaces2.tex, prob-tabmchoice.tex, prob-verb.tex.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -47,9 +47,10 @@
%% Display the problems
%% You may need to change \theenumi back here
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{probsoln}[2011/12/10 v3.02 (NLCT)]
+\ProvidesPackage{probsoln}[2012/08/23 v3.04 (NLCT)]
\RequirePackage{ifthen}
\RequirePackage{amsmath}
+\RequirePackage{etoolbox}
\newif\ifshowanswers
\showanswersfalse
\let\showanswers\showanswerstrue
@@ -72,16 +73,195 @@
\newcommand*{\ProbSolnFragileExt}{vrb}
\newcommand*{\ProbSolnFragileFile}{\jobname}
\newwrite\probsoln@write
+\newcount\probsoln@startyear
+\newcommand*{\SetStartYear}[1]{%
+ \probsoln@startyear=#1\relax
+ \renewcommand\SetStartMonth[1]{%
+ \PackageError{probsoln}{\string\SetStartMonth\space
+ can't be used after \string\SetStartYear}{}}%
+}
+\newcommand*{\GetStartYear}{\probsoln@startyear}
+\newcount\probsoln@startmonth
+\newcommand*{\SetStartMonth}[1]{%
+ \probsoln@startmonth=#1\relax
+ \probsoln@startyear=\year\relax
+ \ifnum\month<\probsoln@startmonth
+ \advance\probsoln@startyear by -1\relax
+ \fi
+}
+\SetStartMonth{9}
+\newwrite\probsoln@prev
+\newwrite\probsoln@used
+\newcount\probsoln@prev@cutoff
+\newcommand*{\@probsoln@usedfilename}{\jobname.prb}
+\newcommand*{\SetUsedFileName}[1]{%
+ \renewcommand*{\@probsoln@usedfilename}{#1}%
+}
+\newcommand*{\ClearUsedFile}[1]{%
+ \probsoln@prev@cutoff=0\relax
+ \@probsoln@readprev{#1}%
+ \@for\@this@db:=\prob@databases\do{%
+ {%
+ \edef\@prev@list{\csname probsoln@prev@list@\@this@db\endcsname}%
+ \ifdefempty{\@prev@list}%
+ {}%
+ {%
+ \@for\@this@label:=\@prev@list\do{%
+ \ifcsundef{@used@problem@\@this@db @\@this@label}%
+ {%
+ \immediate\write\probsoln@prev{%
+ \string\previousproblem{\@this@label}{\@this@db}%
+ {\csname @prev@problem@\@this@db @\@this@label\endcsname}}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ \immediate\closeout\probsoln@prev
+ \immediate\closeout\probsoln@used
+ \@disable@exclude@prev
+}
+\newcommand*{\ExcludePreviousFile}[2][3]{%
+ \probsoln@prev@cutoff=\probsoln@startyear\relax
+ \advance\probsoln@prev@cutoff by -#1\relax
+ \@probsoln@readprev{#2}%
+ \@write@prev
+ \def\ExcludePreviousFile[2][3]{\PackageError{probsoln}{Only one
+ instance of \string\ExcludePreviousFile\space allowed}{You've
+ already used this command. You are only allowed to use it once}}%
+ \def\ClearUsedFile[1]{%
+ \PackageError{probsoln}%
+ {\string\ClearUsedFile\space may not be used after
+ \string\ExcludePreviousFile}{}}%
+}
+\newcommand*{\@probsoln@readprev}[1]{%
+ \@enable@exclude@prev
+ \InputIfFileExists{#1}%
+ {\PackageInfo{probsoln}%
+ {Excluded problem file `#1' found}}%
+ {\PackageInfo{probsoln}%
+ {Excluded problem file `#1' not found. A new one will be
+ created}}%
+ \InputIfFileExists{\@probsoln@usedfilename}%
+ {\PackageInfo{probsoln}%
+ {Current problems file `\@probsoln@usedfilename' found}}%
+ {\PackageInfo{probsoln}%
+ {No current problem file `\@probsoln@usedfilename' found. A new one will be created}}%
+ \immediate\openout\probsoln@prev=#1
+ \immediate\openout\probsoln@used=\@probsoln@usedfilename
+}
+\newcommand*{\probsoln@prev@list@default}{}
+\newcommand*{\@write@prev}{%
+ \@for\@this@db:=\prob@databases\do{%
+ {%
+ \edef\@prev@list{\csname probsoln@prev@list@\@this@db\endcsname}%
+ \ifdefempty{\@prev@list}%
+ {}%
+ {%
+ \@for\@this@label:=\@prev@list\do{%
+ \immediate\write\probsoln@prev{%
+ \string\previousproblem{\@this@label}{\@this@db}%
+ {\csname @prev@problem@\@this@db @\@this@label\endcsname}}%
+ }%
+ }%
+ }%
+ }%
+}
+\newcommand*{\@enable@exclude@prev}{%
+ \renewcommand*{\@add@used@problem}[2]{%
+ \immediate\write\probsoln@used{\string\usedproblem{##1}{##2}{\number\probsoln@startyear}}%
+ \ifcsundef{@prev@problem@##2@##1}%
+ {%
+ \immediate\write\probsoln@prev{%
+ \string\previousproblem{##1}{##2}{\number\probsoln@startyear}}%
+ \expandafter\xdef\csname @prev@problem@##2@##1\endcsname{%
+ \number\probsoln@startyear}%
+ }%
+ {%
+ \expandafter\ifnum\csname @prev@problem@##2@##1\endcsname
+ <\probsoln@startyear
+ \immediate\write\probsoln@prev{%
+ \string\previousproblem{##1}{##2}{\number\probsoln@startyear}}%
+ \expandafter\xdef\csname @prev@problem@##2@##1\endcsname{%
+ \number\probsoln@startyear}%
+ \fi
+ }%
+ }%
+ \renewcommand*{\@fetch@excluded@list}[2]{%
+ \def##1{}%
+ \ifcsdef{probsoln@prev@list@##2}%
+ {%
+ \edef\@prev@list{\csname probsoln@prev@list@##2\endcsname}%
+ \@for\@this@label:=\@prev@list\do{%
+ \ifcsundef{@used@problem@##2@\@this@label}%
+ {%
+ \ifcsempty{##1}%
+ {\edef##1{\@this@label}}%
+ {\edef##1{##1,\@this@label}}%
+ }%
+ {}%
+ }%
+ }%
+ {}%
+ }%
+ \renewcommand*{\@add@newprevlist}[1]{%
+ \expandafter\gdef\csname probsoln@prev@list@##1\endcsname{}%
+ }%
+ \renewcommand*{\close@probsoln@prev}{%
+ \closeout\probsoln@prev
+ \closeout\probsoln@used
+ }%
+}
+\newcommand*{\@disable@exclude@prev}{%
+ \renewcommand*{\@add@used@problem}[2]{}%
+ \renewcommand*{\@fetch@excluded@list}[2]{\def##1{}}%
+ \renewcommand*{\@add@newprevlist}[1]{}%
+ \renewcommand*{\close@probsoln@prev}{}%
+}
+\newcommand*{\@add@used@problem}[2]{}
+\newcommand*{\@fetch@excluded@list}[2]{%
+ \def#1{}%
+}
+\newcommand*{\@add@newprevlist}[1]{}
+\newcommand*{\close@probsoln@prev}{}
+\AtEndDocument{\close@probsoln@prev}
+\newcommand*{\previousproblem}[3]{%
+ \ifnum#3>\probsoln@prev@cutoff
+ \ifcsundef{prob@db@#2}{\prob@newdb{#2}}{}%
+ \expandafter\gdef\csname @prev@problem@#2@#1\endcsname{#3}%
+ \edef\@prev@list{\csname probsoln@prev@list@#2\endcsname}%
+ \ifdefempty{\@prev@list}%
+ {%
+ \expandafter\xdef\csname probsoln@prev@list@#2\endcsname{#1}%
+ }%
+ {%
+ \expandafter\xdef\csname probsoln@prev@list@#2\endcsname{%
+ \@prev@list,#1}%
+ }%
+ \fi
+}
+\newcommand*{\usedproblem}[3]{%
+ \ifnum#3=\probsoln@startyear
+ \expandafter\def\csname @used@problem@#2@#1\endcsname{#3}%
+ \fi
+}
\newcommand*{\prob@db@default}{}
\newcommand*{\prob@databases}{default}
\newcommand*{\prob@db@default@solutions}{}
\newcommand*{\prob@newdb}[1]{%
-\@ifundefined{prob@db@#1}{%
- \expandafter\gdef\csname prob@db@#1\endcsname{}%
- \xdef\prob@databases{\prob@databases,#1}%
- \expandafter\gdef\csname prob@db@#1@solutions\endcsname{}%
- }{%
- \PackageError{probsoln}{Data set `#1' is already defined}{}}}
+ \ifcsundef{prob@db@#1}%
+ {%
+ \expandafter\gdef\csname prob@db@#1\endcsname{}%
+ \xdef\prob@databases{\prob@databases,#1}%
+ \expandafter\gdef\csname prob@db@#1@solutions\endcsname{}%
+ \@add@newprevlist{#1}%
+ }%
+ {%
+ \PackageError{probsoln}{Data set `#1' is already defined}%
+ {Data set names must be unique}%
+ }%
+}
\newcommand*{\prob@currentdb}{default}
\newcommand{\moveproblem}[3]{%
\@moveproblem{#1}{#2}{#3}%
@@ -101,12 +281,14 @@
}%
}
\newcommand*{\@moveproblem}[3]{%
- \expandafter\ifx\csname prob@db@#3\endcsname\@empty
+ \ifcsempty{prob@db@#3}%
+ {%
\expandafter\xdef\csname prob@db@#3\endcsname{#1}%
- \else
+ }%
+ {%
\expandafter\xdef\csname prob@db@#3\endcsname{%
\csname prob@db@#3\endcsname,#1}%
- \fi
+ }%
\edef\do@movedata{%
\noexpand\global\noexpand\let\expandafter\noexpand
\csname prob@data@#3@#1\endcsname=%
@@ -402,6 +584,7 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\def\@prob@currentlabel{#2}%
\def\prob@currentdb{#1}%
\prob@showdraftlabel{#1}{#2}%
+ \@add@used@problem{#2}{#1}%
\let\@useprob@next=\relax
\@ifundefined{prob@data@#1@#2}%
{%
@@ -462,7 +645,8 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\newif\iffirstpass
\firstpasstrue
\newcommand{\loadrandomproblems}[3][default]{%
- \@loadrandomproblems{#1}{#2}{#3}{}%
+ \@fetch@excluded@list{\@excl@list}{#1}%
+ \@loadrandomproblems{#1}{#2}{#3}{\@excl@list}%
}
\newcommand{\loadrandomexcept}[4][default]{%
\@loadrandomproblems{#1}{#2}{#3}{#4}%
@@ -478,8 +662,9 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\input{#3}%
\@probselN=0\relax
\@for\@thislabel:=\prob@selectedlabels\do{%
- \expandafter\DTLifinlist\expandafter
- {\@thislabel}{#4}{}%
+ \edef\@if@in@list{\noexpand\DTLifinlist{\@thislabel}{#4}}%
+ \@if@in@list
+ {}%
{%
\advance\@probselN by 1\relax
\expandafter
@@ -487,13 +672,32 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\@thislabel}%
}%
}%
- \shuffle{@prob@tmp@}{\@probselN}%
- \ifnum\@probselN<#2\relax
- \PackageWarning{probsoln}{You have requested
- \number#2\space\space problem(s) but `#3' only contains
- \number\@probselN\space problems. All problems will be selected}%
+ \edef\@do@excludedlist{#4}%
+ \ifdefempty{\@do@excludedlist}%
+ {}%
+ {\def\@do@excludedlist{(Excluded list: #4.) }}%
+ \ifnum\@probselN=0\relax
+ \PackageWarning{probsoln}{You have requested
+ \number#2\space\space problem(s) but there are no available
+ problems in `#3'. \@do@excludedlist No problems will be selected}%
\else
- \@probselN=#2\relax
+ \shuffle{@prob@tmp@}{\@probselN}%
+ \ifnum\@probselN<#2\relax
+ \ifnum\@probselN=1\relax
+ \PackageWarning{probsoln}{You have requested
+ \number#2\space\space problem(s) but there is only
+ 1 problem available in `#3'. \@do@excludedlist
+ Only 1 problem will be selected}%
+ \else
+ \PackageWarning{probsoln}{You have requested
+ \number#2\space\space problem(s) but there are only
+ \number\@probselN\space problems available in `#3'.
+ \@do@excludedlist
+ Only \number\@probselN\space problems will be selected}%
+ \fi
+ \else
+ \@probselN=#2\relax
+ \fi
\fi
\@probN=0\relax
\def\prob@selectedlabels{}%
@@ -652,31 +856,34 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
}%
}
\newcount\@ps@forrand
+\newcount\@ps@forrand@level
\newcommand{\doforrandN}[4]{%
+ \global\advance\@ps@forrand@level by 1\relax
{%
\@ps@forrand=0\relax
\@for#2:=#3\do{%
\advance\@ps@forrand by 1\relax
\expandafter
- \edef\csname @doforrandN@\romannumeral\@ps@forrand\endcsname{#2}%
+ \edef\csname @doforrandN@\number\@ps@forrand@level @\romannumeral\@ps@forrand\endcsname{#2}%
}%
\ifnum\@ps@forrand<#1\relax
- \PackageError{probsoln}{Can't randomly select \number#1 item(s)}{You
- have requested \number#1 item(s), but there
- are only \number\@ps@forrand item(s) in the list}%
+ \PackageError{probsoln}{Can't randomly select \number#1\space item(s)}{You
+ have requested \number#1\space item(s), but there
+ are only \number\@ps@forrand\space item(s) in the list: #3}%
\else
- \shuffle{@doforrandN@}{\@ps@forrand}%
+ \shuffle{@doforrandN@\number\@ps@forrand@level @}{\@ps@forrand}%
\ifnum#1>0\relax
\@ps@forrand=0\relax
\loop
\advance\@ps@forrand by 1\relax
- \edef#2{\csname @doforrandN@\romannumeral\@ps@forrand\endcsname}%
+ \edef#2{\csname @doforrandN@\number\@ps@forrand@level @\romannumeral\@ps@forrand\endcsname}%
#4%
\ifnum\@ps@forrand<#1\relax
\repeat
\fi
\fi
}%
+ \global\advance\@ps@forrand@level by -1\relax
}
\newcommand*{\newproblem}{\@ifstar\@snewproblem\@newproblem}
\newcommand{\@snewproblem}[1][0]{%
@@ -718,7 +925,7 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\ifnum\@enumdepth>\thr@@
\@toodeep
\else
- \advance\@enumdepth\@ne\relax
+ \advance\@enumdepth by 1\relax
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
\let\@item\@textitem
\def\@itemlabel{%
@@ -730,7 +937,6 @@ Please specify (e.g. \csname @prob@getargs@eg@\romannumeral#1\endcsname):}%
\ignorespaces
}%
{%
- \global\advance\@enumdepth\m@ne\relax
}
\def\@textitem[#1]{#1\space\ignorespaces}
\newcommand*{\correctitemformat}[1]{\fbox{#1}}