diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/probsoln/probsoln.html')
-rw-r--r-- | Master/texmf-dist/doc/latex/probsoln/probsoln.html | 293 |
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> |