summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-12-20 00:32:28 +0000
committerKarl Berry <karl@freefriends.org>2012-12-20 00:32:28 +0000
commit1101a024b69c93fcaa6ccad896013394b1f806d5 (patch)
tree5100de70e1a7f5e5b59f4c156ed3ede611b5b0dc
parent739063891a32d329e0abff276ba180a8a8bdfa2e (diff)
exsheets (19dec12)
git-svn-id: svn://tug.org/texlive/trunk@28583 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/exsheets/README2
-rw-r--r--Master/texmf-dist/doc/latex/exsheets/exsheets_en.pdfbin649299 -> 651906 bytes
-rw-r--r--Master/texmf-dist/doc/latex/exsheets/exsheets_en.tex138
-rw-r--r--Master/texmf-dist/doc/latex/exsheets/grading-table.pdfbin26403 -> 26406 bytes
-rw-r--r--Master/texmf-dist/doc/latex/exsheets/grading-table.tex1
-rw-r--r--Master/texmf-dist/tex/latex/exsheets/exsheets.sty169
6 files changed, 223 insertions, 87 deletions
diff --git a/Master/texmf-dist/doc/latex/exsheets/README b/Master/texmf-dist/doc/latex/exsheets/README
index 71d92d02bb0..44746a43b46 100644
--- a/Master/texmf-dist/doc/latex/exsheets/README
+++ b/Master/texmf-dist/doc/latex/exsheets/README
@@ -1,5 +1,5 @@
--------------------------------------------------------------------------
-EXSHEETS v0.5a - 2012/12/06
+EXSHEETS v0.6 - 2012/12/18
bundled packages:
the EXSHEETS package
diff --git a/Master/texmf-dist/doc/latex/exsheets/exsheets_en.pdf b/Master/texmf-dist/doc/latex/exsheets/exsheets_en.pdf
index b53965922c9..ce878434f15 100644
--- a/Master/texmf-dist/doc/latex/exsheets/exsheets_en.pdf
+++ b/Master/texmf-dist/doc/latex/exsheets/exsheets_en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/exsheets/exsheets_en.tex b/Master/texmf-dist/doc/latex/exsheets/exsheets_en.tex
index 9add39fd108..9e8d9faf667 100644
--- a/Master/texmf-dist/doc/latex/exsheets/exsheets_en.tex
+++ b/Master/texmf-dist/doc/latex/exsheets/exsheets_en.tex
@@ -85,17 +85,20 @@
% code examples
% ExSheets:
\addcmds{
- acs, addpoints, blank, bigstar, bottomrule, checkedchoicebox, choice, choicebox,
- citetitle, cmd, color, correct,
+ acs, addpoints,
+ blank, bigstar, bottomrule,
+ checkedchoicebox, choice, choicebox, citetitle, cmd, color, correct,
DeclareInstance, DeclareTemplateInterface, DeclareQuestionProperty,
- DebugExSheets, endspacing, examspace, ForEachQuestion, GetQuestionProperty,
+ DebugExSheets, endspacing, examspace, ForEachQuestion, GetQuestionProperty,
grade, includequestions, iflastquestion,
midrule, NewQuSolPair, NewTasks, numberofquestions, points,
PrintIfIncludeActiveF, PrintIfIncludeActiveT, PrintIfIncludeActiveTF,
- printsolutions, PrintSolutionsF, PrintSolutionsTF, PrintSolutionsT,
+ printsolutions, PrintSolutionsF, PrintSolutionsTF, PrintSolutionsT,
QuestionNumber, RenewQuSolPair, rightarrow, s, sample, setlength,
- SetQuestionProperties, SetupExSheets, spacing, square, sumpoints,
- tabcolsep, task, textcite, textcolor, toprule, totalpoints
+ SetQuestionProperties, SetupExSheets, SetVariations, spacing, square,
+ sumpoints,
+ tabcolsep, task, textcite, textcolor, toprule, totalpoints,
+ variant, vary
}
% translations:
@@ -770,50 +773,6 @@ You have two possibilities to display and count them:
\end{beispiel}
\secidx*{Counting Points}
-\subsection{A Grade Distribution}\secidx{Grade Distribution}
-Probably this is a rather esoteric feature but it could proof useful in some cases.
-Suppose you are a German math teacher and want to grade exactly corresponding to
-the number of points relative to the sum of total points, regardless of how big
-that might be. You could do something like this to present your grading decisions
-for the exam:
-\begin{beispiel}
- % preamble:
- % \DeclareRelGrades{
- % 1 = 1 ,
- % {1,5} = .9167 ,
- % 2 = .8333 ,
- % {2,5} = .75 ,
- % 3 = .6667 ,
- % {3,5} = .5833 ,
- % 4 = .5
- % }
- \small\setlength\tabcolsep{2pt}
- \begin{tabular}{r|*8c}
- Punkte
- & $\grade*{1}$ & $\le\grade*{1}$ & $\le\grade*{1,5}$ & $\le\grade*{2}$
- & $\le\grade*{2,5}$ & $\le\grade*{3}$ & $\le\grade*{3,5}$ & $<\grade*{4}$ \\
- Note
- & 1 & 1--2 & 2 & 2--3 & 3 & 3--4 & 4 & 5
- \end{tabular}
-\end{beispiel}
-
-These are the available commands and options:
-\begin{beschreibung}
- \Befehl{DeclareRelGrades}{<grade>=<num>,...}\newline
- This command is used to define grades and assign the percentage of total
- points to them.
- \Befehl{grade}*{<grade>}\newline
- Gives the number of points corresponding to a grade depending on the value
- of \cmd{pointssum} with or without (starred version) ``unit''.
- \Option[grades]{round}{<num>}\Default{0}
- The number of decimals the points of a grade are rounded to. This doesn't apply
- to the maximum number of points if the rounded number would be bigger than the
- actual sum.
- \Option[grades]{half}{\default{true}|false}\Default{false}
- If set to \code{true} points are rounded either to full or to half points.
-\end{beschreibung}
-\secidx*{Grade Distribution}
-
\subsection{Printing Solutions}\label{sec:solutions}\secidx[print]{solutions}
You have already seen that you can print solutions where they are using the
\key[solution]{print} option. But \ExSheets offers you quite more possibilities.
@@ -943,8 +902,8 @@ has an \acs{id}. To see which \acs{id} a question has you can call the following
command:
\begin{beschreibung}
\Befehl{DebugExSheets}{true|false}
- \befehl{CurrentQuestionID} \sinceversion{0.4a}expands to the current question
- \acs{id} (after two expansions).
+ \Befehl{CurrentQuestionID}\sinceversion{0.4a}\newline
+ expands to the current question \acs{id} (after two expansions).
\end{beschreibung}
Let's create some more questions and take a look what this command does:
\begin{beispiel}
@@ -1036,6 +995,81 @@ supported yet.
\bool_set_false:N \g__exsheets_use_topics_bool
\ExplSyntaxOff
+\subsection{Variations of an Exam}\secidx{Variations}
+\noindent\sinceversion{0.6}It is a quite common task to design an exam in two
+different variants. This is of course possible with \ExSheets' classes (see
+section~\ref{sec:classes}). However, often not the whole question is to be
+different but only small details, the numbers in a maths exam, say. For this
+purpose \ExSheets provides the following commands:
+\begin{beschreibung}
+ \Befehl{SetVariations}{<num>}\newline
+ Set the number of different variants. This will determine how many arguments
+ the command \cmd*{vary} will get. \code{<num>} must at least be \code{2} and
+ is initially set to \code{2}.
+ \Befehl{variant}{<num>}\newline
+ Choose the active variant. The argument must be a number between \code{1}
+ and the number set with \cmd*{variations}. Initially set to \code{1}.
+ \Befehl{vary}{<variant 1>}\ma{<variant 2>}\newline
+ This command is the one actually used in the document. It has a number of
+ required arguments equal to the number set with \cmd*{variations}. All of its
+ arguments are discarded except the one specified with \cmd*{variant}.
+\end{beschreibung}
+
+\begin{beispiel}
+ \SetVariations{6}%
+ \variant{6}\vary{A}{B}{C}{D}{E}{F}
+ \variant{1}\vary{A}{B}{C}{D}{E}{F}
+ \variant{5}\vary{A}{B}{C}{D}{E}{F}
+ \variant{2}\vary{A}{B}{C}{D}{E}{F}
+ \variant{4}\vary{A}{B}{C}{D}{E}{F}
+ \variant{3}\vary{A}{B}{C}{D}{E}{F}
+\end{beispiel}
+\secidx*{Variations}
+
+\subsection{A Grade Distribution}\secidx{Grade Distribution}
+Probably this is a rather esoteric feature but it could proof useful in some cases.
+Suppose you are a German math teacher and want to grade exactly corresponding to
+the number of points relative to the sum of total points, regardless of how big
+that might be. You could do something like this to present your grading decisions
+for the exam:
+\begin{beispiel}
+ % preamble:
+ % \DeclareRelGrades{
+ % 1 = 1 ,
+ % {1,5} = .9167 ,
+ % 2 = .8333 ,
+ % {2,5} = .75 ,
+ % 3 = .6667 ,
+ % {3,5} = .5833 ,
+ % 4 = .5
+ % }
+ \small\setlength\tabcolsep{2pt}
+ \begin{tabular}{r|*8c}
+ Punkte
+ & $\grade*{1}$ & $\le\grade*{1}$ & $\le\grade*{1,5}$ & $\le\grade*{2}$
+ & $\le\grade*{2,5}$ & $\le\grade*{3}$ & $\le\grade*{3,5}$ & $<\grade*{4}$ \\
+ Note
+ & 1 & 1--2 & 2 & 2--3 & 3 & 3--4 & 4 & 5
+ \end{tabular}
+\end{beispiel}
+
+These are the available commands and options:
+\begin{beschreibung}
+ \Befehl{DeclareRelGrades}{<grade>=<num>,...}\newline
+ This command is used to define grades and assign the percentage of total
+ points to them.
+ \Befehl{grade}*{<grade>}\newline
+ Gives the number of points corresponding to a grade depending on the value
+ of \cmd{pointssum} with or without (starred version) ``unit''.
+ \Option[grades]{round}{<num>}\Default{0}
+ The number of decimals the points of a grade are rounded to. This doesn't apply
+ to the maximum number of points if the rounded number would be bigger than the
+ actual sum.
+ \Option[grades]{half}{\default{true}|false}\Default{false}
+ If set to \code{true} points are rounded either to full or to half points.
+\end{beschreibung}
+\secidx*{Grade Distribution}
+
\subsection{Adding and Using Additional Information to Questions}\label{sec:additional_info}
\secidx{Additional Information to Questions}
For managing lots of questions and corresponding solutions it can be very useful
diff --git a/Master/texmf-dist/doc/latex/exsheets/grading-table.pdf b/Master/texmf-dist/doc/latex/exsheets/grading-table.pdf
index 424286f0916..a11f8cbea66 100644
--- a/Master/texmf-dist/doc/latex/exsheets/grading-table.pdf
+++ b/Master/texmf-dist/doc/latex/exsheets/grading-table.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/exsheets/grading-table.tex b/Master/texmf-dist/doc/latex/exsheets/grading-table.tex
index 85239f69181..6b65f8c475e 100644
--- a/Master/texmf-dist/doc/latex/exsheets/grading-table.tex
+++ b/Master/texmf-dist/doc/latex/exsheets/grading-table.tex
@@ -1,6 +1,5 @@
\documentclass{scrartcl}
\usepackage{exsheets}
-\DeclareQuestionProperty{points}
\begin{document}
diff --git a/Master/texmf-dist/tex/latex/exsheets/exsheets.sty b/Master/texmf-dist/tex/latex/exsheets/exsheets.sty
index 772c760b610..0aac0c3bf6f 100644
--- a/Master/texmf-dist/tex/latex/exsheets/exsheets.sty
+++ b/Master/texmf-dist/tex/latex/exsheets/exsheets.sty
@@ -31,8 +31,8 @@
% If you have any ideas, questions, suggestions or bugs to report, please
% feel free to contact me.
% ----------------------------------------------------------------------------
-\def\exsheets@date{2012/12/06}
-\def\exsheets@version{0.5a}
+\def\exsheets@date{2012/12/18}
+\def\exsheets@version{0.6}
\RequirePackage { expl3 , xparse }
\ProvidesExplPackage
@@ -99,6 +99,18 @@
`points/parse=false'.
}
+\msg_new:nnn { exsheets } { variations }
+ {
+ The~number~of~variations~must~at~least~be~`2'.~You~chose~`#1'~hence~I'm~
+ doing~nothing.
+ }
+
+\msg_new:nnn { exsheets } { variant }
+ {
+ You~must~choose~an~integer~between~`1'~and~`#1'.~You~chose~`#2'~hence~
+ I'm~doing~nothing.
+ }
+
\cs_new:Npn \exsheets_depr_cmd:nn #1#2
{
\cs_new:Npn #1
@@ -511,7 +523,89 @@
}
% ----------------------------------------------------------------------------
-% Noten-Verteilung
+% variations of an exam, see http://tex.stackexchange.com/q/57012/5049 for
+% inspiration of the following features
+\int_zero_new:N \l__exsheets_variations_int
+
+\cs_new:Npn \exsheets_set_variations:n #1
+ {
+ \int_compare:nNnTF { #1 } < { 2 }
+ { \msg_warning:nnn { exsheets } { variations } { #1 } }
+ {
+ \int_set:Nn \l__exsheets_variations_int { #1 }
+ \int_zero:N \l__exsheets_tmpa_int
+ \int_do_while:nNnn
+ { \l__exsheets_tmpa_int } < { \l__exsheets_variations_int }
+ {
+ \int_incr:N \l__exsheets_tmpa_int
+ \__exsheets_generate_variation_auxiliary:n
+ { \l__exsheets_tmpa_int }
+ \__exsheets_reset_variation_auxiliary:x
+ { \int_use:N \l__exsheets_tmpa_int }
+ }
+ \__exsheets_generate_variation_auxiliary:n
+ { \l__exsheets_variations_int + 1 }
+ \exsheets_variant:n { 1 }
+ }
+ }
+
+\cs_new:Npn \exsheets_variant:n #1
+ {
+ \bool_if:nTF
+ {
+ \int_compare_p:nNn { #1 } > { 0 } &&
+ \int_compare_p:nNn { #1 } < { \l__exsheets_variations_int + 1 }
+ }
+ {
+ \int_zero:N \l__exsheets_tmpa_int
+ \int_do_while:nNnn
+ { \l__exsheets_tmpa_int } < { \l__exsheets_variations_int }
+ {
+ \int_incr:N \l__exsheets_tmpa_int
+ \__exsheets_reset_variation_auxiliary:x
+ { \int_use:N \l__exsheets_tmpa_int }
+ }
+ \cs_set:cpn { __exsheets_variation_ \int_to_roman:n { #1 } :n } ##1
+ { ##1 \use:c { __exsheets_variation_ \int_to_roman:n { #1 + 1 } :n } }
+ }
+ {
+ \msg_warning:nnxx { exsheets } { variant }
+ { \int_use:N \l__exsheets_variations_int } { #1 }
+ }
+ }
+
+\cs_new:Npn \exsheets_vary:w
+ { \__exsheets_variation_i:n }
+
+\cs_new:Npn \__exsheets_generate_variation_auxiliary:n #1
+ {
+ \cs_if_exist:cTF { __exsheets_variation_ \int_to_roman:n { #1 } :n }
+ { \cs_set:cpn { __exsheets_variation_ \int_to_roman:n { #1 } :n } { } }
+ { \cs_new:cpn { __exsheets_variation_ \int_to_roman:n { #1 } :n } { } }
+ }
+
+\cs_new:Npn \__exsheets_reset_variation_auxiliary:n #1
+ {
+ \cs_set:cpn { __exsheets_variation_ \int_to_roman:n { #1 } :n } ##1
+ { \use:c { __exsheets_variation_ \int_to_roman:n { #1 + 1 } :n } }
+ }
+\cs_generate_variant:Nn \__exsheets_reset_variation_auxiliary:n { x }
+
+\NewDocumentCommand \SetVariations { m }
+ { \exsheets_set_variations:n { #1 } }
+
+\NewDocumentCommand \variant { m }
+ { \exsheets_variant:n { #1 } }
+
+\NewDocumentCommand \vary { }
+ { \exsheets_vary:w }
+
+% initiate: two variations, first is default
+\SetVariations { 2 }
+\variant { 1 }
+
+% ----------------------------------------------------------------------------
+% grades distribution
\prop_new:N \l__exsheets_relgrades_prop
\fp_new:N \l__exsheets_grade_round_fp
\fp_zero:N \l__exsheets_grade_round_fp
@@ -2116,38 +2210,44 @@
{
\RequirePackage { translations }
% translation for the exercises
- \DeclareTranslation { English } { exsheets-exercise-name } { Exercise }
- \DeclareTranslation { British } { exsheets-exercise-name } { Exercise }
- \DeclareTranslation { American } { exsheets-exercise-name } { Exercise }
- \DeclareTranslation { French } { exsheets-exercise-name } { Exercise }
- \DeclareTranslation { German } { exsheets-exercise-name } { \"Ubung }
- \DeclareTranslation { Italian } { exsheets-exercise-name } { Esercizio }
- \DeclareTranslation { Spanish } { exsheets-exercise-name } { Ejercicio }
- \DeclareTranslation { Catalan } { exsheets-exercise-name } { Exercir }
- \DeclareTranslation { Turkish } { exsheets-exercise-name } { Egzersiz }
- \DeclareTranslation { Croatian } { exsheets-exercise-name } { Primjer }
+ \DeclareTranslation { English } { exsheets-exercise-name } { Exercise }
+ \DeclareTranslation { British } { exsheets-exercise-name } { Exercise }
+ \DeclareTranslation { American } { exsheets-exercise-name } { Exercise }
+ \DeclareTranslation { French } { exsheets-exercise-name } { Exercise }
+ \DeclareTranslation { German } { exsheets-exercise-name } { \"Ubung }
+ \DeclareTranslation { Italian } { exsheets-exercise-name } { Esercizio }
+ \DeclareTranslation { Spanish } { exsheets-exercise-name } { Ejercicio }
+ \DeclareTranslation { Catalan } { exsheets-exercise-name } { Exercici }
+ \DeclareTranslation { Turkish } { exsheets-exercise-name } { Egzersiz }
+ \DeclareTranslation { Croatian } { exsheets-exercise-name } { Primjer }
+ \DeclareTranslation { Hungarian } { exsheets-exercise-name } { Gyakorol }
+ \DeclareTranslation { Danish } { exsheets-exercise-name } { \O{}velse }
% translation for the question
- \DeclareTranslation { English } { exsheets-question-name } { Question }
- \DeclareTranslation { British } { exsheets-question-name } { Question }
- \DeclareTranslation { American } { exsheets-question-name } { Question }
- \DeclareTranslation { French } { exsheets-question-name } { Question }
- \DeclareTranslation { German } { exsheets-question-name } { Aufgabe }
- \DeclareTranslation { Italian } { exsheets-question-name } { Questione }
- \DeclareTranslation { Spanish } { exsheets-question-name } { Pregunta }
- \DeclareTranslation { Catalan } { exsheets-question-name } { Q\"uesti\'o }
- \DeclareTranslation { Turkish } { exsheets-question-name } { Soru }
- \DeclareTranslation { Croatian } { exsheets-question-name } { Zadatak }
+ \DeclareTranslation { English } { exsheets-question-name } { Question }
+ \DeclareTranslation { British } { exsheets-question-name } { Question }
+ \DeclareTranslation { American } { exsheets-question-name } { Question }
+ \DeclareTranslation { French } { exsheets-question-name } { Question }
+ \DeclareTranslation { German } { exsheets-question-name } { Aufgabe }
+ \DeclareTranslation { Italian } { exsheets-question-name } { Questione }
+ \DeclareTranslation { Spanish } { exsheets-question-name } { Pregunta }
+ \DeclareTranslation { Catalan } { exsheets-question-name } { Q\"uesti\'o }
+ \DeclareTranslation { Turkish } { exsheets-question-name } { Soru }
+ \DeclareTranslation { Croatian } { exsheets-question-name } { Zadatak }
+ \DeclareTranslation { Hungarian } { exsheets-question-name } { Feladat }
+ \DeclareTranslation { Danish } { exsheets-question-name } { Opgave }
% translation for the solutions
- \DeclareTranslation { English } { exsheets-solution-name } { Solution }
- \DeclareTranslation { British } { exsheets-solution-name } { Solution }
- \DeclareTranslation { American } { exsheets-solution-name } { Solution }
- \DeclareTranslation { French } { exsheets-solution-name } { Solution }
- \DeclareTranslation { German } { exsheets-solution-name } { L\"osung }
- \DeclareTranslation { Italian } { exsheets-solution-name } { Soluzione }
- \DeclareTranslation { Spanish } { exsheets-solution-name } { Soluci\'on }
- \DeclareTranslation { Catalan } { exsheets-solution-name } { Soluci\'o }
- \DeclareTranslation { Turkish } { exsheets-solution-name } { \c C\"oz\"um }
- \DeclareTranslation { Croatian } { exsheets-solution-name } { Rje\v{s}enje }
+ \DeclareTranslation { English } { exsheets-solution-name } { Solution }
+ \DeclareTranslation { British } { exsheets-solution-name } { Solution }
+ \DeclareTranslation { American } { exsheets-solution-name } { Solution }
+ \DeclareTranslation { French } { exsheets-solution-name } { Solution }
+ \DeclareTranslation { German } { exsheets-solution-name } { L\"osung }
+ \DeclareTranslation { Italian } { exsheets-solution-name } { Soluzione }
+ \DeclareTranslation { Spanish } { exsheets-solution-name } { Soluci\'on }
+ \DeclareTranslation { Catalan } { exsheets-solution-name } { Soluci\'o }
+ \DeclareTranslation { Turkish } { exsheets-solution-name } { \c C\"oz\"um }
+ \DeclareTranslation { Croatian } { exsheets-solution-name } { Rje\v{s}enje }
+ \DeclareTranslation { Hungarian } { exsheets-solution-name } { Megold\'{a}s }
+ \DeclareTranslation { Danish } { exsheets-solution-name } { Opl\o{}sning }
% the actual translating
\tl_set:Nn \l__exsheets_exsheets_name_tl
{ \GetTranslation { exsheets-exercise-name } }
@@ -2252,6 +2352,9 @@ HISTORY:
2012/12/02 v0.5 - added \CurrentQuestionID
2012/12/06 v0.5a - bug fix: solutions had wrong numbers with
counter-format=se.qu and [print] option
+2012/12/18 v0.6 - variations, Hungarian translations, corrected Catalanian
+ translations
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TODO: