summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/exsheets
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-10-24 23:27:10 +0000
committerKarl Berry <karl@freefriends.org>2012-10-24 23:27:10 +0000
commit0e06b454144b2b566f5889836e1605d9cade581a (patch)
tree834a28bb5cb9875b65c52c4722126b6559aacdd4 /Master/texmf-dist/tex/latex/exsheets
parent26a54db94560dd44a149728ce558d1882d9f6beb (diff)
exsheets (24oct12)
git-svn-id: svn://tug.org/texlive/trunk@28067 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/exsheets')
-rw-r--r--Master/texmf-dist/tex/latex/exsheets/cntformats.sty4
-rw-r--r--Master/texmf-dist/tex/latex/exsheets/exsheets.sty145
-rw-r--r--Master/texmf-dist/tex/latex/exsheets/translations.sty4
3 files changed, 135 insertions, 18 deletions
diff --git a/Master/texmf-dist/tex/latex/exsheets/cntformats.sty b/Master/texmf-dist/tex/latex/exsheets/cntformats.sty
index 41e4cef75d3..df81ccb7c1b 100644
--- a/Master/texmf-dist/tex/latex/exsheets/cntformats.sty
+++ b/Master/texmf-dist/tex/latex/exsheets/cntformats.sty
@@ -29,8 +29,8 @@
% If you have any ideas, questions, suggestions or bugs to report, please
% feel free to contact me.
% --------------------------------------------------------------------------
-\def\cntfmts@date{2012/10/08}
-\def\cntfmts@version{v0.2b}
+\def\cntfmts@date{2012/10/23}
+\def\cntfmts@version{v0.3}
\ProvidesPackage{cntformats}[\cntfmts@date\space \cntfmts@version\space A different way to read counters.]
\RequirePackage{etoolbox,xparse}
diff --git a/Master/texmf-dist/tex/latex/exsheets/exsheets.sty b/Master/texmf-dist/tex/latex/exsheets/exsheets.sty
index db748f1baf5..54c803127f2 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/10/08}
-\def\exsheets@version{0.2b}
+\def\exsheets@date{2012/10/23}
+\def\exsheets@version{0.3}
\RequirePackage { expl3 , xparse }
\ProvidesExplPackage
@@ -800,6 +800,13 @@
\int_new:N \g__exsheets_questions_id_int
\int_gzero:N \g__exsheets_questions_id_int
+\cs_new:Npn \IfInsideQuestionTF
+ { \bool_if:NTF \l__exsheets_inside_question_bool }
+\cs_new:Npn \IfInsideQuestionT
+ { \bool_if:NT \l__exsheets_inside_question_bool }
+\cs_new:Npn \IfInsideQuestionF
+ { \bool_if:NF \l__exsheets_inside_question_bool }
+
\NewEnviron { __exsheets_questions_internal: }
{
\cspreto { BODY } { \ifhmode \vspace*{0pt} \fi }
@@ -822,6 +829,8 @@
}
\prop_new:N \g__exsheets_questions_id_prop
+\prop_new:N \g__exsheets_questions_used_prop
+\int_new:N \g__exsheets_questions_used_int
\tl_new:N \l__exsheets_questions_id_tl
\tl_new:N \g__exsheets_questions_current_id_tl
@@ -845,7 +854,7 @@
\cs_new:Npn \__exsheets_read_points:n #1
{ \__exsheets_read_points:w #1++ \q_stop }
-\NewDocumentEnvironment { question } { og }
+\NewDocumentEnvironment { __exsheets_question: } { gg }
{
\bool_set_true:N \l__exsheets_inside_question_bool
\bool_if:NT \l__exsheets_questions_use_bool
@@ -871,6 +880,13 @@
\prop_gput:NVV \g__exsheets_questions_id_prop
\g__exsheets_questions_id_int
\g__exsheets_questions_id_int
+ \bool_if:NT \l__exsheets_questions_use_bool
+ {
+ \prop_gput:NVV \g__exsheets_questions_used_prop
+ \g__exsheets_questions_id_int
+ \g__exsheets_questions_id_int
+ \int_gincr:N \g__exsheets_questions_used_int
+ }
\tl_gset:Nx \g__exsheets_questions_current_id_tl
{ \int_use:N \g__exsheets_questions_id_int }
}
@@ -878,6 +894,13 @@
\prop_gput:NVV \g__exsheets_questions_id_prop
\l__exsheets_questions_id_tl
\g__exsheets_questions_id_int
+ \bool_if:NT \l__exsheets_questions_use_bool
+ {
+ \prop_gput:NVV \g__exsheets_questions_used_prop
+ \l__exsheets_questions_id_tl
+ \g__exsheets_questions_id_int
+ \int_gincr:N \g__exsheets_questions_used_int
+ }
\tl_gset:Nx \g__exsheets_questions_current_id_tl
{ \tl_use:N \l__exsheets_questions_id_tl }
}
@@ -1142,6 +1165,23 @@
{ \prop_get:cn { g__exsheets_question_property_#1_prop } { #2 } }
}
+\int_new:N \g__exsheets_tmpa_int
+\cs_new:Npn \ForEachQuestion #1
+ {
+ \int_gzero:N \g__exsheets_tmpa_int
+ \prop_map_inline:Nn \g__exsheets_questions_used_prop
+ { \int_gincr:N \g__exsheets_tmpa_int #1 }
+ }
+
+\cs_new:Npn \iflastquestion
+ {
+ \int_compare:nTF
+ { \g__exsheets_questions_used_int = \g__exsheets_tmpa_int }
+ }
+
+\cs_new:Npn \numberofquestions
+ { \int_use:N \g__exsheets_questions_used_int }
+
% ----------------------------------------------------------------------------
% debug-Info:
\bool_new:N \l__exsheets_questions_debug_bool
@@ -1396,7 +1436,7 @@
\cs_generate_variant:Nn \prop_gput:Nnn { Nff,Nfx,Nfn,Nxx }
\cs_generate_variant:Nn \__exsheets_save_solution:n { V }
-\NewEnviron { __exsheets_solution_int: }
+\NewEnviron { __exsheets_solution_internal: }
{
\bool_if:nT { \g__exsheets_questions_use_bool && \l__exsheets_solutions_use_bool }
{
@@ -1408,7 +1448,7 @@
\bool_new:N \l__exsheets_inside_solution_bool
\bool_set_false:N \l__exsheets_inside_solution_bool
-\NewDocumentEnvironment { solution } { o }
+\NewDocumentEnvironment { __exsheets_solution: } { g }
{
\__exsheets_solutions_use_classes:
\__exsheets_solutions_use_topics:
@@ -1419,9 +1459,9 @@
\bool_set_true:N \l__exsheets_inside_solution_bool
\IfNoValueF { #1 } { \keys_set:nn { exsheets / solution } { #1 } }
}
- \__exsheets_solution_int:
+ \__exsheets_solution_internal:
}
- { \end__exsheets_solution_int: }
+ { \end__exsheets_solution_internal: }
\bool_new:N \l__exsheets_solutions_runin_bool
\bool_set_false:N \l__exsheets_solutions_runin_bool
@@ -1479,8 +1519,8 @@
\cs_if_exist:cTF { r@#1 }
{ \__exsheets_ref_aux:n { #1 } }
{
+ 1\relax
\protect\G@refundefinedtrue
- 1
\@latex@warning{exlabel `#1' on page \thepage \space undefined}%
}
}
@@ -1798,6 +1838,38 @@
}
% ----------------------------------------------------------------------------
+% create question/solution pairs
+\cs_new:Npn \__exsheets_new_qu_sol_pair:nnnn #1#2#3#4
+ {
+ \NewDocumentEnvironment { #1 } { O{}G{} }
+ { \__exsheets_question: {#2,##1} {##2} }
+ { \end__exsheets_question: }
+ \NewDocumentEnvironment { #3 } { O{} }
+ { \__exsheets_solution: {#4,##1} }
+ { \end__exsheets_solution: }
+ }
+
+\cs_new:Npn \__exsheets_renew_qu_sol_pair:nnnn #1#2#3#4
+ {
+ \RenewDocumentEnvironment { #1 } { O{}G{} }
+ { \__exsheets_question: {#2,##1} {##2} }
+ { \end__exsheets_question: }
+ \RenewDocumentEnvironment { #3 } { O{} }
+ { \__exsheets_solution: {#4,##1} }
+ { \end__exsheets_solution: }
+ }
+
+\NewDocumentCommand \NewQuSolPair { mO{}mO{} }
+ { \__exsheets_new_qu_sol_pair:nnnn { #1 } { #2 } { #3 } { #4 } }
+\@onlypreamble\NewQuSolPair
+
+\NewDocumentCommand \RenewQuSolPair { mO{}mO{} }
+ { \__exsheets_renew_qu_sol_pair:nnnn { #1 } { #2 } { #3 } { #4 } }
+\@onlypreamble\RenewQuSolPair
+
+\NewQuSolPair { question } { solution }
+
+% ----------------------------------------------------------------------------
% the `tasks' list
\input { exsheets_tasks.def }
\bool_if:NT \l__exsheets_load_tasks_bool
@@ -1810,10 +1882,13 @@
% the \blank{<words>} command
\RequirePackage { ulem } \normalem
\dim_new:N \l__exsheets_blank_dim
+\tl_new:N \l__exsheets_blank_linespread_tl
+\tl_set:Nn \l__exsheets_blank_linespread_tl { 1 }
\box_new:N \l__exsheets_blank_box
\bool_new:N \l__exsheets_blank_width_bool
+\bool_new:N \l__exsheets_blank_linespread_bool
-\cs_new_nopar:Npn \exsheets_write_blank:n #1 { #1 }
+\cs_new:Npn \exsheets_write_blank:n #1 { #1 }
\cs_set_eq:NN \exsheets_write_blank:n \uline
\keys_define:nn { exsheets / blank }
@@ -1833,14 +1908,28 @@
{
\bool_set_true:N \l__exsheets_blank_width_bool
\dim_set:Nn \l__exsheets_blank_dim { #1 }
- }
+ } ,
+ linespread .code:n =
+ \bool_set_true:N \l__exsheets_blank_linespread_bool
+ \tl_set:Nn \l__exsheets_blank_linespread_tl { #1 }
}
-\NewDocumentCommand \blank { o m }
+\NewDocumentCommand \blank { som }
{
\group_begin:
- \IfNoValueF { #1 } { \keys_set:nn { exsheets / blank } { #1 } }
- \exsheets_blank:n { #2 }
+ \IfNoValueF { #2 } { \keys_set:nn { exsheets / blank } { #2 } }
+ \mode_if_horizontal:TF
+ { \exsheets_blank:n { #3 } }
+ {
+ \IfBooleanF { #1 } { \noindent }
+ \exsheets_blank:n { #3 }
+ \IfBooleanF { #1 }
+ {
+ \bool_if:NT \l__exsheets_blank_linespread_bool
+ { \linespread { \l__exsheets_blank_linespread_tl } \selectfont }
+ \par
+ }
+ }
\group_end:
}
@@ -1907,6 +1996,30 @@
% \makeatother
% ----------------------------------------------------------------------------
+% \examspace
+% insert space for a student to answer a question
+\cs_new:Npn \__exsheets_examspace:nn #1#2
+ {
+ \par \tex_penalty:D -100 \scan_stop:
+ \group_begin:
+ \dim_set:Nn \l_tmpa_dim { #2 }
+ \dim_set:Nn \l_tmpb_dim { \pagegoal - \pagetotal }
+ \dim_compare:nTF { \l_tmpa_dim > \l_tmpb_dim }
+ {
+ \vfil \break
+ \IfBooleanF { #1 }
+ {
+ \dim_sub:Nn \l_tmpa_dim { \l_tmpb_dim }
+ \vspace* { \l_tmpa_dim }
+ }
+ }
+ { \vspace* { #2 } }
+ \group_end:
+ }
+\NewDocumentCommand \examspace { sm }
+ { \__exsheets_examspace:nn { #1 } { #2 } }
+
+% ----------------------------------------------------------------------------
% SETUP
\NewDocumentCommand \SetupExSheets { o m }
{
@@ -2040,6 +2153,10 @@ HISTORY:
update
- upload to CTAN
+2012/10/23 v0.3 - bugfix in \exref
+ - new: \NewQuSolPair, \RenewQuSolPair, \examspace
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TODO:
-- points/decimal-marker, points/frac (?), points/format (?,im interface) \ No newline at end of file
+- points/decimal-marker, points/frac (?), points/format (?,im interface)
+- grading table? Should not be necessary...? Access via meta-data
diff --git a/Master/texmf-dist/tex/latex/exsheets/translations.sty b/Master/texmf-dist/tex/latex/exsheets/translations.sty
index 208bc7295c1..feb1ff1d369 100644
--- a/Master/texmf-dist/tex/latex/exsheets/translations.sty
+++ b/Master/texmf-dist/tex/latex/exsheets/translations.sty
@@ -29,8 +29,8 @@
% If you have any ideas, questions, suggestions or bugs to report, please
% feel free to contact me.
% --------------------------------------------------------------------------
-\def\@trnslt@date{2012/10/08}
-\def\@trnslt@version{v0.2b}
+\def\@trnslt@date{2012/10/23}
+\def\@trnslt@version{v0.3}
\ProvidesPackage{translations}[\@trnslt@date\space \@trnslt@version\space a simple translator]
\RequirePackage{etoolbox}