diff options
Diffstat (limited to 'macros/latex/contrib/xsim/code/xsim.exercises.code.tex')
-rw-r--r-- | macros/latex/contrib/xsim/code/xsim.exercises.code.tex | 72 |
1 files changed, 60 insertions, 12 deletions
diff --git a/macros/latex/contrib/xsim/code/xsim.exercises.code.tex b/macros/latex/contrib/xsim/code/xsim.exercises.code.tex index 6f1503dbc4..2fc9e4d142 100644 --- a/macros/latex/contrib/xsim/code/xsim.exercises.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.exercises.code.tex @@ -394,35 +394,82 @@ \int_gincr:N \g_xsim_id_int \int_compare:nF { \g_xsim_max_id_int > \g_xsim_id_int } { \int_gset_eq:NN \g_xsim_max_id_int \g_xsim_id_int } - \xsim_set_properties:nxx {#1} { \int_use:N \g_xsim_id_int } + \tl_gset:Nx \g_xsim_exercise_id_tl { \int_use:N \g_xsim_id_int } + % save the goal values from the auxiliary files: + \xsim_foreach_goal:n { + \xsim_temporary_goal_new:nVn {#1} \g_xsim_exercise_id_tl {##1} + \xsim_if_property_set:nVnT {#1} \g_xsim_exercise_id_tl {##1} + { + \xsim_temporary_goal_set:nVnn + {#1} + \g_xsim_exercise_id_tl + {##1} + { \xsim_get_property:nVn {#1} \g_xsim_exercise_id_tl {##1} } + } + } + \xsim_set_properties:nVx {#1} \g_xsim_exercise_id_tl + { + % preset options so the user doesn't has to: print = true , use = true , + % options set by the user: \exp_not:n {#2} , - id = \int_use:N \g_xsim_id_int , + % options which need to have certain values: + id = \g_xsim_exercise_id_tl , section-value = \arabic{section} , section = \thesection , page-value = \arabic{page} , sectioning = - { \cs_if_exist:NTF \chapter { \arabic{chapter} } {0} } + { \cs_if_exist:NTF \thechapter { \arabic {chapter} } {0} } { \arabic {section} } { \arabic {subsection} } { \arabic {subsubsection} } { \arabic {paragraph} } , page = \thepage , + % this cannot yet be set (see below): used = false } + % temporary goal now: either 0 or equal the complete property + % property: equal to the given value + \xsim_foreach_goal:n + { + \fp_set:Nn \l__xsim_tmpa_fp + { \xsim_temporary_goal_get:nVn {#1} \g_xsim_exercise_id_tl {##1} } + % set temporary goal to given property: + \xsim_if_property_given:nTF {##1} + { + \xsim_temporary_goal_set:nVnn + {#1} + \g_xsim_exercise_id_tl + {##1} + { \xsim_get_property:nVn {#1} \g_xsim_exercise_id_tl {##1} } + } + { + \xsim_temporary_goal_set:nVnn + {#1} + \g_xsim_exercise_id_tl + {##1} + {0} + } + % update to property to complete value: + \xsim_if_property_set:nVnT {#1} \g_xsim_exercise_id_tl {##1} + { + \xsim_set_property:nVnx {#1} \g_xsim_exercise_id_tl {##1} + { \fp_to_decimal:N \l__xsim_tmpa_fp } + } + } \xsim_if_property_exist:nT {chapter} { - \xsim_set_properties:nxx {#1} { \int_use:N \g_xsim_id_int } + \xsim_set_properties:nVx {#1} \g_xsim_exercise_id_tl { chapter-value = \arabic{chapter} , chapter = \thechapter } } - \tl_gclear:N \g_xsim_exercise_id_tl - \xsim_gsave_property:nxnN {#1} { \int_use:N \g_xsim_id_int } {id} - \g_xsim_exercise_id_tl + % \tl_gclear:N \g_xsim_exercise_id_tl + % \xsim_gsave_property:nVnN {#1} \l__xsim_tmpa_tl {id} + % \g_xsim_exercise_id_tl \tl_gset_eq:NN \ExerciseID \g_xsim_exercise_id_tl \tl_gset:Nn \ExerciseType {#1} \xsim_verbose:x @@ -449,7 +496,6 @@ \xsim_set_property:nVnn {#1} \g_xsim_exercise_id_tl {use} {true} - \xsim_update_goals:nV {#1} \g_xsim_exercise_id_tl } { \xsim_set_properties:nVn {#1} \g_xsim_exercise_id_tl @@ -524,7 +570,7 @@ % ---------------------------------------------------------------------------- -\xsim_new_aux_cs:cpn {total-number} #1 +\xsim_new_aux_property:cpn {total-number} #1 { \int_gset:Nn \g_xsim_max_id_int {#1} } \RequirePackage {etoolbox} @@ -535,7 +581,7 @@ { \tl_new:c { number of #1 s } \tl_set:cn { number of #1 s } {0} - \xsim_new_aux_cs:cpn {#1} ##1 + \xsim_new_aux_property:cpn {#1} ##1 { \tl_gset:cn { number of #1 s } {##1} } } } @@ -556,10 +602,10 @@ \int_compare:nNnF { \g_xsim_max_id_int } = { \g_xsim_id_int } { \xsim_empty_lists: } } - \xsim_add_cs_to_aux:nn {total-number} { { \int_use:N \g_xsim_id_int } } + \xsim_add_property_to_aux:nn {total-number} { { \int_use:N \g_xsim_id_int } } \xsim_foreach_exercise_type:n { - \xsim_add_cs_to_aux:nn {#1} + \xsim_add_property_to_aux:nn {#1} { { \arabic { \xsim_get_parameter:nn {#1} {number} } } } } \xsim_update_list:n {types} @@ -567,3 +613,5 @@ % ---------------------------------------------------------------------------- \file_input_stop: + +2020/02/21 - implement issue #2 |