summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/probsoln/probsoln.html
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/probsoln/probsoln.html')
-rw-r--r--Master/texmf-dist/doc/latex/probsoln/probsoln.html293
1 files changed, 293 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/probsoln/probsoln.html b/Master/texmf-dist/doc/latex/probsoln/probsoln.html
new file mode 100644
index 00000000000..81a36df337e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/probsoln/probsoln.html
@@ -0,0 +1,293 @@
+<html>
+<head>
+<title>probsoln.sty v 2.0</title>
+</head>
+<body>
+<a href=http://theoval.cmp.uea.ac.uk/~nlct>Dr Nicola Talbot</a> |
+<a href=http://www.cmp.uea.ac.uk/>School of Computing Sciences</a> |
+<a href=http://www.uea.ac.uk/>University of East Anglia</a>
+
+<h1>probsoln.sty v 2.0 : LaTeX Package to help create problem sheets</h1>
+<ul>
+<li><a href=#intro>Introduction</a>
+<li><a href=#options>Package Options</a>
+<li><a href=#commands>Commands Provided</a>
+<ul>
+<li><a href=#newproblem>Creating a New Problem</a>
+<li><a href=#sec:useprob>Displaying a Problem</a>
+<li><a href=#sec:selran>Selecting Problems at Random</a>
+<li><a href=#other>Other Commands</a>
+</ul>
+<li><a href=#errors>Error Messages</a>
+</ul>
+
+<h2><a name=intro>Introduction</a></h2>
+
+ The package <tt>probsoln.sty</tt> is designed for teachers or lecturers who
+ want to create problem sheets for their students. This package was
+ designed with specifically 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 LaTeX, 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'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's version or the teacher's version.
+
+ <h2><a name=options>Package Options</a></h2>
+ The following options may be passed to this package:
+<p>
+<table>
+<tr><td><tt> answers</tt></td><td>Show the answers</td></tr>
+<tr><td><tt> noanswers</tt></td><td>Don't show the answers (default)</td></tr>
+</table>
+
+<h2><a name=commands>Commands Provided</a></h2>
+<h3><a name=newproblem>Creating a New Problem</a></h3>
+
+<tt>\newproblem[</tt><em>nargs</em><tt>]{</tt><em>label</em><tt>}{</tt><em>problem</em><tt>}{</tt><em>solution</em><tt>}</tt>
+<p>
+ A new problem is defined using the command <tt>\newproblem</tt>. This does not print anything,
+ but merely stores the problem. The argument <em>label</em> is a unique string that is
+ assigned to this problem so that it can be used later. The argument <em>problem</em>
+ is normal LaTeX code that should be used to typeset the problem. The argument
+ <em>solution</em> is normal LaTeX code that should be used to typeset the solution,
+ if required. For example:
+<a name=quaddiff>
+<pre>
+\newproblem{quaddiff}{%
+% This is the problem
+\begin{displaymath}
+f(x) = x^2 + 3x + 4
+\end{displaymath}
+}{%
+% This is the solution
+\begin{displaymath}
+f'(x) = 2x + 3
+\end{displaymath}
+}
+</pre></a>
+<p>
+ The optional argument <em>nargs</em> specifies the number of parameters this
+ problem will take. By default this value is 0, but any value from 1 to 9
+ may be used. Each parameter is refered to by <tt>#1</tt>, <tt>#2</tt>, ..., <tt>#9</tt>.
+ For example, the following problem takes one parameter:
+<a name=sindiff>
+<pre>
+\newproblem[1]{sindiff}{%
+\(f(x) = \sin(#1x)\)
+}{%
+\(f'(x) = #1\cos(#1x)\)
+}
+</pre></a>
+
+ The <a href=#quaddiff><tt>quaddiff</tt></a> problem shown above can be made more generic by using parameters:
+<pre>
+\newcount\ctr
+\newproblem[3]{diff:quad}{%
+\(f(x) =
+\ifnum#1=0
+\else
+\ifnum#1=1\else#1\fi x^2
+\fi
+\ifnum#2=0
+\else
+\ifnum#2>0 \ifnum#1=0 \else + \fi \fi
+\ifnum#2=1\else#2\fi x
+\fi
+\ifnum#3=0
+\else
+\ifnum#3>0 \ifnum#2=0 \ifnum#1=0 \else + \fi \else + \fi\fi
+#3
+\fi\)
+}{%
+\(f'(x) =
+\ifnum#1=0
+\else
+\ctr=2
+\multiply\ctr by #1
+\the\ctr x
+\fi
+\ifnum#2=0
+\else
+\ifnum#2>0 \ifnum#1=0 \else + \fi \fi
+#2
+\fi
+ % print 0 if both #1 and #2 are 0
+\ifnum#1=0 \ifnum#2=0 0 \fi\fi
+\)
+}
+</pre>
+ The three parameters correspond to the coefficients. Note that they
+ must all be integers since TeX only performs integer arithmetic.
+<p>
+ To generate a database, simply create a <tt>.tex</tt> file where all the problems
+ are defined using <tt>\newproblem</tt>, and either <tt>\input</tt> it at the
+ start of your document if you want to <a href=#sec:useprob>use specific problems</a>, or
+ pass it to <a href=#sec:selran><tt>\selectrandomly</tt></a>.
+
+<h3><a name=sec:useprob>Displaying a Problem</a></h3>
+
+<tt>\useproblem{</tt><em>label</em><tt>}</tt>
+<p>
+ Once a problem has be defined using <tt>\newproblem</tt>, it can be typeset
+ using the command <tt>\useproblem</tt>. If the problem was defined to take
+ arguments, the arguments to the problem should come after the
+ label. In the case of the <a href=#sindiff><tt>sindiff</tt></a> example above, the command
+ <tt>\useproblem{sindiff}{2}</tt> would produce the following:
+<p>
+ <em>f</em>(<em>x</em>) = sin(2<em>x</em>)<br>
+ <b>Solution:</b> <em>f</em>'(<em>x</em>) = 2cos(2<em>x</em>)<br>
+<p>
+ whereas the command <tt>\useproblem{diff:quad}{3}{0}{-2}</tt> would produce:<br>
+ <em>f</em>(<em>x</em>) = 3<em>x</em><sup>2</sup> - 2<br>
+ <b>Solution:</b> <em>f</em>'(<em>x</em>) = 6<em>x</em>
+<p>
+ Suppose all the above problems are defined in the
+ file <tt>probs.tex</tt>, then the following code will create a problem sheet
+ with four questions in it:
+<pre>
+\documentclass{article}
+
+\usepackage{probsoln}
+\input{probs}
+
+\begin{document}
+Differentiate the following functions with respect to $x$:
+\begin{enumerate}
+\item \useproblem{quaddiff}
+\item \useproblem{sindiff}{4}
+\item \useproblem{diff:quad}{2}{3}{1}
+\item \useproblem{diff:quad}{0}{1}{2}
+\end{enumerate}
+\end{document}
+</pre>
+The answer sheet can then be generated by passing the option <tt>answers</tt>
+to the <tt>probsoln</tt> package.
+
+<h3><a name=sec:selran>Selecting Problems at Random</a></h3>
+<tt>\selectrandomly{</tt><em>filename</em><tt>}{</tt><em>n</em><tt>}</tt>
+<p>
+ The command <tt>\selectrandomly</tt> will select <em>n</em> problems that are defined
+ in the file <em>filename</em>. Each problem is preceeded by a <tt>\item</tt>, so the
+ command <tt>\selectrandomly</tt> should occur within one of the list-like environments,
+ such as <tt>enumerate</tt>. For example:
+<pre>
+\begin{enumerate}
+\selectrandomly{easy.tex}{4}
+\end{enumerate}
+</pre>
+ will result in four numbered problems, selected at random from the
+ file <tt>easy.tex</tt>. (The <tt>.tex</tt> extension may be omitted.)
+<p>
+
+ Multiple <tt>\selectrandomly</tt> commands (with different filenames) may be used. For example:
+<pre>
+\begin{enumerate}
+\item Differentiate the following functions with respect to $x$:
+
+\begin{enumerate}
+\selectrandomly{samples/easy.tex}{3}
+\selectrandomly{samples/args.tex}{1}
+\end{enumerate}
+
+\selectrandomly{samples/implicit.tex}{1}
+\selectrandomly{samples/1stprncpl.tex}{1}
+
+\end{enumerate}
+</pre>
+ This will result in a total of 6 problems, numbered 1(a), 1(b), 1(c), 1(d), 2 and 3.
+<p>
+
+ If a randomly selected problem requires arguments, a message similar to the following
+ will be displayed:
+<pre>
+Problem diff:quad requires 3 argument(s), please specify (e.g. {5}{3}):
+</pre>
+ Enter the required arguments, where each argument is enclosed in braces ({ }).
+
+ <h3><a name=other>Other Commands</a></h3>
+<dl>
+<dt><tt>\PSNrandseed</tt></dt>
+<dd> The command <tt>\PSNrandseed{</tt><em>n</em><tt>}</tt> specifies the seed for the random
+ number generator. For example, <tt>\PSNrandseed{\year}</tt> will produce a
+ different set of random problems each year, whereas <tt>\PSNrandseed{\time}</tt>
+ will produce a different set of problems each time you LaTeX the
+ problem (as long as you leave at least a minute between runs.)
+<p>
+
+<dt><tt>\showanswers</tt></dt>
+<dd> The command <tt>\showanswers</tt> will show the solutions from that point
+ on. May be localised by placing within a group.
+<p>
+
+<dt><tt>\hideanswers</tt></dt>
+<dd> The command <tt>\hideanswers</tt> will hide the solutions from that point
+ on. May be localised by placing within a group.
+<p>
+
+<dt><tt>\solutionname</tt></dt>
+<dd> By default, the solution is preceeded by the text: <b>Solution:</b>. This can
+ be changed by redefining the macro <tt>\solutionname</tt>.
+<p>
+
+<dt><tt>showanswers</tt></dt>
+<dd> The boolean variable <tt>showanswers</tt> is defined to be true if the answers
+ are shown and false otherwise. You can therefore do something like:
+<pre>
+\ifthenelse{\boolean{showanswers}}{\textbf{Solution Sheet}}{}
+</pre>
+and <b>Solution Sheet</b> will be printed only if the answers are displayed.
+(For more information on <tt>\ifthenelse</tt> and <tt>\boolean</tt> see the
+documentation for the <tt>ifthen</tt> package by David Carlisle.)
+</dl>
+
+<h2><a name=errors>Error Messages</a></h2>
+<pre>
+! Package probsoln Error: Label ... already used.
+</pre>
+ Each label identifier used in <tt>\newproblem</tt> must be unique.
+ Check to make sure you haven't used the same label more than once.
+ Also check to make sure you haven't <tt>\input</tt>ed or randomly selected
+ from the same file more than once. (Or <tt>\input</tt>ed and randomly
+ selected from the same file.)
+
+<pre>
+! Package probsoln Error: Label ... undefined.
+</pre>
+ You need to define a problem before you can use it. Check to
+ make sure you haven't mis-spelt it.
+
+<pre>
+! Package probsoln Error: Requested number too large.
+</pre>
+ You have asked for more problems than are defined within
+ the specified file. All problems in that file will be selected.
+
+
+<ul>
+<li><a href=#intro>Introduction</a>
+<li><a href=#options>Package Options</a>
+<li><a href=#commands>Commands Provided</a>
+<ul>
+<li><a href=#newproblem>Creating a New Problem</a>
+<li><a href=#sec:useprob>Displaying a Problem</a>
+<li><a href=#sec:selran>Selecting Problems at Random</a>
+<li><a href=#other>Other Commands</a>
+</ul>
+<li><a href=#errors>Error Messages</a>
+</ul>
+
+<a href=http://theoval.cmp.uea.ac.uk/~nlct>Dr Nicola Talbot</a> |
+<a href=http://www.cmp.uea.ac.uk/>School of Computing Sciences</a> |
+<a href=http://www.uea.ac.uk/>University of East Anglia</a>
+
+<hr>
+<h5>N.L.C. Talbot. School of Computing Sciences. University of East Anglia.
+Last Modified: 21 Mar 2004.</h5>
+</body>
+</html>