summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/exsheets/exsheets.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/exsheets/exsheets.sty')
-rw-r--r--Master/texmf-dist/tex/latex/exsheets/exsheets.sty764
1 files changed, 340 insertions, 424 deletions
diff --git a/Master/texmf-dist/tex/latex/exsheets/exsheets.sty b/Master/texmf-dist/tex/latex/exsheets/exsheets.sty
index 73d7bbd6d24..9509f543385 100644
--- a/Master/texmf-dist/tex/latex/exsheets/exsheets.sty
+++ b/Master/texmf-dist/tex/latex/exsheets/exsheets.sty
@@ -28,8 +28,8 @@
\RequirePackage { expl3 , xparse }
\ExplSyntaxOn
-\tl_const:Nn \c_exsheets_date_tl {2016/02/01}
-\tl_const:Nn \c_exsheets_version_tl {0.21b}
+\tl_const:Nn \c_exsheets_date_tl {2016/08/14}
+\tl_const:Nn \c_exsheets_version_tl {0.21d}
\tl_const:Nn \c_exsheets_info_tl
{Yet~ another~ package~ for~ the~ creation~ of~ exercise~ sheets~ and~ exams.}
@@ -41,11 +41,11 @@
% ----------------------------------------------------------------------------
% variants of kernel functions:
-\cs_generate_variant:Nn \prop_get:NnN { NV , Nx , cV , cf }
-\cs_generate_variant:Nn \prop_get:NnNF { NV , Nx , cV , cf }
-\cs_generate_variant:Nn \prop_get:NnNT { NV , Nx , cV , cf }
-\cs_generate_variant:Nn \prop_get:NnNTF { NV , Nx , cV , cf }
-\cs_generate_variant:Nn \prop_gput:Nnn { Nf , Nff , Nfx , Nx , Nxx , NxV , cf , cff }
+\cs_generate_variant:Nn \prop_get:NnN { NV , Nx , cV , cx }
+\cs_generate_variant:Nn \prop_get:NnNF { NV , Nx , cV , cx }
+\cs_generate_variant:Nn \prop_get:NnNT { NV , Nx , cV , cx }
+\cs_generate_variant:Nn \prop_get:NnNTF { NV , Nx , cV , cx }
+\cs_generate_variant:Nn \prop_gput:Nnn { Nf , Nff , Nfx , Nx , Nxx , NxV , cx , cxx }
\cs_generate_variant:Nn \prop_gput_if_new:Nnn { Nxx }
\cs_generate_variant:Nn \tl_if_blank:nTF { x }
\cs_generate_variant:Nn \tl_if_eq:nnF { x }
@@ -63,6 +63,7 @@
\int_new:N \l__exsheets_tmpc_int
\int_new:N \l__exsheets_tmpd_int
\int_new:N \l__exsheets_tmpe_int
+\int_new:N \g__exsheets_tmpa_int
\dim_new:N \l__exsheets_tmpa_dim
\dim_new:N \l__exsheets_tmpb_dim
\seq_new:N \l__exsheets_tmpa_seq
@@ -166,14 +167,7 @@
% ----------------------------------------------------------------------------
\RequirePackage
- { xtemplate , l3sort , l3keys2e , xcolor , etoolbox , environ , pgfcore }
-
-% ----------------------------------------------------------------------------
-% color:
-\xdefinecolor { exsheetsblue } { rgb } { 0.02 , 0.04 , 0.48 }
-\xdefinecolor { exsheetsred } { rgb } { 0.65 , 0.04 , 0.07 }
-% \tl_new:N \g__exsheets_color_tl
-\tl_const:Nn \c__exsheets_color_tl { exsheetsblue }
+ { xtemplate , l3sort , l3keys2e , etoolbox , environ , pgfcore }
% ----------------------------------------------------------------------------
% write to aux file:
@@ -188,78 +182,220 @@
\exp_not:N \providecommand \exp_not:N \exsheets@save@number[2]{} ^^J
\exp_not:N \providecommand \exp_not:N \exsheets@sum@of@points[1]{} ^^J
\exp_not:N \providecommand \exp_not:N \exsheets@sum@of@bonus[1]{} ^^J
- \exp_not:N \providecommand \exp_not:N \exsheets@use@id[2]{} ^^J
- % \exp_not:N \providecommand \exp_not:N \exsheets@number@of@questions[1]{} ^^J
- % \exp_not:N \providecommand \exp_not:N \numberofquestions{}
+ \exp_not:N \providecommand \exp_not:N \exsheets@used@id[2]{} ^^J
}
}
% ----------------------------------------------------------------------------
-% how are questions/solutions/... counted?
-\bool_new:N \l__exsheets_print_number_bool
-\bool_set_true:N \l__exsheets_print_number_bool
-
+% variables:
+\bool_new:N \l__exsheets_print_number_bool
+\bool_set_true:N \l__exsheets_print_number_bool
+\bool_new:N \l__exsheets_solutions_by_ref_bool
+\bool_new:N \l__exsheets_questions_totoc_bool
+\bool_new:N \l__exsheets_solutions_totoc_bool
+\bool_new:N \l__exsheets_auto_label_bool
+\bool_new:N \l__exsheets_no_skip_after_bool
+\bool_new:N \l__exsheets_points_questions_default_bool
+\bool_set_false:N \l__exsheets_points_questions_default_bool
+\bool_new:N \l__exsheets_parse_points_bool
+\bool_set_true:N \l__exsheets_parse_points_bool
+\bool_new:N \l__exsheets_points_name_bool
+\bool_set_true:N \l__exsheets_points_name_bool
+\bool_new:N \l__exsheets_points_separate_bonus_bool
+\bool_new:N \l__exsheets_grades_half_bool
+\bool_new:N \g__exsheets_questions_use_bool
+\bool_gset_true:N \g__exsheets_questions_use_bool
+\bool_new:N \l__exsheets_questions_use_bool
+\bool_set_true:N \l__exsheets_questions_use_bool
+\bool_new:N \l__exsheets_questions_deactivate_bool
+\bool_new:N \l__exsheets_save_question_body_to_aux_bool
+\bool_set_false:N \l__exsheets_save_question_body_to_aux_bool
+\bool_new:N \l__exsheets_solutions_use_bool
+\bool_set_true:N \l__exsheets_solutions_use_bool
+\bool_new:N \l__exsheets_use_this_question_bool
+\bool_new:N \l__exsheets_questions_print_bool
+\bool_set_true:N \l__exsheets_questions_print_bool
+\bool_new:N \l__exsheets_inside_question_bool
+\bool_new:N \l__exsheets_only_print_points_bool
+\bool_new:N \l__exsheets_exam_bool
+\bool_set_false:N \l__exsheets_exam_bool
+\bool_new:N \l__exsheets_questions_runin_bool
+\bool_set_false:N \l__exsheets_questions_runin_bool
+\bool_new:N \l__exsheets_questions_debug_bool
+\bool_set_false:N \l__exsheets_questions_debug_bool
+\bool_new:N \l__exsheets_select_questions_bool
+\bool_new:N \l__exsheets_include_all_bool
+\bool_new:N \l__exsheets_include_random_bool
+\bool_new:N \l__exsheets_include_by_id_bool
+\bool_set_true:N \l__exsheets_include_all_bool
+\bool_new:N \l__exsheets_use_selection_bool
+\bool_new:N \l__exsheets_solutions_print_bool
+\bool_set_false:N \l__exsheets_solutions_print_bool
+\bool_new:N \l__exsheets_solutions_print_here_bool
+\bool_set_false:N \l__exsheets_solutions_print_here_bool
+\bool_new:N \l__exsheets_solutions_print_section_bool
+\bool_set_false:N \l__exsheets_solutions_print_section_bool
+\bool_new:N \l__exsheets_solutions_print_chapter_bool
+\bool_set_false:N \l__exsheets_solutions_print_chapter_bool
+\bool_new:N \l__exsheets_solutions_print_all_bool
+\bool_set_false:N \l__exsheets_solutions_print_all_bool
+\bool_new:N \l__exsheets_inside_solution_bool
+\bool_set_false:N \l__exsheets_inside_solution_bool
+\bool_new:N \l__exsheets_solutions_runin_bool
+\bool_set_false:N \l__exsheets_solutions_runin_bool
+\bool_new:N \l__exsheets_print_byID_sorted_bool
+\bool_set_true:N \l__exsheets_print_byID_sorted_bool
+\bool_new:N \l__exsheets_blank_width_bool
+\bool_new:N \l__exsheets_blank_linespread_bool
+
+\tl_new:N \l__exsheets_points_name_tl
+\tl_set:Nn \l__exsheets_points_name_tl {P.}
+\tl_new:N \l__exsheets_points_name_plural_tl
+\tl_set:Nn \l__exsheets_points_name_plural_tl {P.}
+\tl_new:N \l__exsheets_bonus_name_tl
+\tl_set:Nn \l__exsheets_bonus_name_tl {P.}
+\tl_new:N \l__exsheets_bonus_name_plural_tl
+\tl_set:Nn \l__exsheets_bonus_name_plural_tl {P.}
+\tl_new:N \l__exsheets_points_number_format_tl
+\tl_new:N \l__exsheets_bonus_number_format_tl
+\tl_new:N \l__exsheets_points_pre_bonus_marker_tl
+\tl_set:Nn \l__exsheets_points_pre_bonus_marker_tl { \space(+ }
+\tl_new:N \l__exsheets_points_post_bonus_marker_tl
+\tl_set:Nn \l__exsheets_points_post_bonus_marker_tl { ) }
+\tl_new:N \l__exsheets_points_format_tl
+\tl_set:Nn \l__exsheets_points_format_tl { \use:n }
\tl_new:N \l__exsheets_qu_counter_pattern_tl
\tl_set:Nn \l__exsheets_qu_counter_pattern_tl { qu. }
\tl_new:N \l__exsheets_qu_counter_interpretation_tl
\tl_new:N \l__exsheets_counter_patterns_tl
-\tl_new:N \l__exsheets_current_pattern_interpretation_tl
-\tl_new:N \l__exsheets_current_pattern_tl
+\tl_new:N \l__exsheets_heading_instance_tl
+\tl_set:Nn \l__exsheets_heading_instance_tl {block}
+\tl_new:N \l__exsheets_question_heading_instance_tl
+\tl_new:N \l__exsheets_solution_heading_instance_tl
+\tl_new:N \l_exsheets_heading_title_user_format_tl
+\tl_set:Nn \l_exsheets_heading_title_user_format_tl { \normalsize\bfseries }
+\tl_new:N \l_exsheets_heading_subtitle_user_format_tl
+\tl_set:Nn \l_exsheets_heading_subtitle_user_format_tl { \normalsize\itshape }
+\tl_new:N \l__exsheets_questions_toclevel_tl
+\tl_set:Nn \l__exsheets_questions_toclevel_tl {subsection}
+\tl_new:N \l__exsheets_solutions_toclevel_tl
+\tl_set:Nn \l__exsheets_solutions_toclevel_tl {subsection}
+\tl_new:N \l__exsheets_new_chapter_hook_tl
+\tl_new:N \l__exsheets_new_section_hook_tl
+\tl_new:N \g__exsheets_use_current_question_tl
+\tl_new:N \l__exsheets_questions_name_tl
+\tl_set:Nn \l__exsheets_questions_name_tl {Question}
+\tl_new:N \l__exsheets_exercise_name_tl
+\tl_set:Nn \l__exsheets_exercise_name_tl {Exercise}
+\tl_new:N \l__exsheets_questions_pre_hook_tl
+\tl_new:N \l__exsheets_questions_post_hook_tl
+\tl_new:N \l__exsheets_questions_pre_body_hook_tl
+\tl_new:N \l__exsheets_questions_post_body_hook_tl
+\tl_new:N \l__exsheets_after_begin_question_tl
+\tl_new:N \CurrentQuestionID
+\tl_new:N \l__exsheets_questions_id_tl
+\tl_new:N \l__exsheets_questions_subtitle_tl
+\tl_new:N \g__exsheets_questions_current_id_tl
+\tl_new:N \l__exsheets_questions_title_tl
+\tl_new:N \l__exsheets_questions_label_tl
+\tl_new:N \l__exsheets_questions_points_tl
+\tl_new:N \l__exsheets_include_id_tl
+\tl_new:N \l__exsheets_solutions_name_tl
+\tl_set:Nn \l__exsheets_solutions_name_tl {Solution}
+\tl_new:N \l__exsheets_solutions_pre_body_hook_tl
+\tl_new:N \l__exsheets_solutions_post_body_hook_tl
+\tl_new:N \l__exsheets_solutions_pre_hook_tl
+\tl_new:N \l__exsheets_solutions_post_hook_tl
+\tl_new:N \l__exsheets_blank_linespread_tl
+\tl_set:Nn \l__exsheets_blank_linespread_tl { 1 }
+\tl_new:N \l__exsheets_blank_scale_tl
+\tl_set:Nn \l__exsheets_blank_scale_tl { 1 }
+\tl_new:N \l__exsheets_use_solution_tl
+\tl_new:N \l_exsheets_solutions_name_style_tl
+\tl_set:Nn \l_exsheets_solutions_name_style_tl { \normalsize \bfseries }
-\RequirePackage { cntformats }
+\int_zero_new:N \l__exsheets_variations_int
+\int_new:N \g__exsheets_questions_id_int
+\int_gzero:N \g__exsheets_questions_id_int
+\int_new:N \g__exsheets_questions_used_int
+\int_zero_new:N \l__exsheets_include_random_int
+\int_new:N \l__exsheets_questions_set_int
+\int_new:N \g__exsheets_select_random_int
+\int_new:N \g__exsheets_selection_number_int
+\int_new:N \l__exsheets_counter_ch_int
+\int_new:N \l__exsheets_current_ch_int
+\int_new:N \l__exsheets_counter_sec_int
+\int_new:N \l__exsheets_current_sec_int
+\int_new:N \l_exsheets_counter_qu_int
+
+\fp_new:N \g__exsheets_points_sum_fp
+\fp_new:N \l__exsheets_points_default_fp
+\fp_set:Nn \l__exsheets_points_default_fp {1}
+\fp_new:N \l__exsheets_question_points_fp
+\fp_new:N \g_exsheets_total_points_fp
+\fp_new:N \g__exsheets_bonus_sum_fp
+\fp_new:N \l__exsheets_question_bonus_fp
+\fp_new:N \g_exsheets_total_bonus_fp
+\fp_new:N \l__exsheets_grade_round_fp
+\fp_zero:N \l__exsheets_grade_round_fp
+\fp_new:N \g__exsheets_this_question_points_fp
+\fp_new:N \g__exsheets_this_question_bonus_fp
+
+\dim_new:N \l__exsheets_questions_skip_below_dim
+\dim_set:Nn \l__exsheets_questions_skip_below_dim { .5\baselineskip }
+\dim_new:N \l__exsheets_solutions_skip_below_dim
+\dim_set:Nn \l__exsheets_solutions_skip_below_dim { .5\baselineskip }
+\dim_new:N \l__exsheets_blank_dim
+
+\seq_new:N \l__exsheets_use_tags_seq
+\seq_new:N \g_exsheets_included_questions_seq
+
+\prop_new:N \l__exsheets_relgrades_prop
+\prop_new:N \l__exsheets_class_prop
+\prop_new:N \g__exsheets_tags_prop
+\prop_new:N \g__exsheets_questions_id_prop
+\prop_new:N \g__exsheets_questions_subtitle_prop
+\prop_new:N \g__exsheets_questions_used_prop
+\prop_new:N \g_exsheets_question_identification_prop
+\prop_new:N \g__exsheets_included_questions_prop
+\prop_new:N \g__exsheets_solutions_content_prop
+\prop_new:N \g__exsheets_solutions_questions_id_prop
+\prop_new:N \g__exsheets_solutions_names_prop
+\prop_new:N \g__exsheets_solutions_counter_prop
+
+\clist_new:N \l__exsheets_include_id_clist
+\clist_new:N \l__exsheets_exclude_id_clist
+\clist_new:N \questionsincludedlast
+
+\box_new:N \l__exsheets_blank_box
+
+% ----------------------------------------------------------------------------
+% how are questions/solutions/... counted?
+\RequirePackage {cntformats}
\cs_if_exist:NT \thechapter
{
- \AddCounterPattern* [ exsheets ] { chapter } { ch }
- \ReadCounterFrom [ exsheets ] { chapter } \l__exsheets_counter_ch_int
+ \AddCounterPattern* [exsheets] {chapter} {ch}
+ \ReadCounterFrom [exsheets] {chapter} \l__exsheets_counter_ch_int
}
-\AddCounterPattern* [ exsheets ] { section } { se }
-\ReadCounterFrom [ exsheets ] { section } \l__exsheets_counter_sec_int
+\AddCounterPattern* [exsheets] {section} {se}
+\ReadCounterFrom [exsheets] {section} \l__exsheets_counter_sec_int
-\NewCounterPattern* [ exsheets ] { question } { qu }
-\ReadCounterFrom [ exsheets ] { question } \l_exsheets_counter_qu_int
+\NewCounterPattern* [exsheets] {question} {qu}
+\ReadCounterFrom [exsheets] {question} \l_exsheets_counter_qu_int
% ----------------------------------------------------------------------------
% (also) package options:
-\bool_new:N \l__exsheets_solutions_by_ref_bool
-\bool_new:N \l__exsheets_questions_totoc_bool
-\bool_new:N \l__exsheets_solutions_totoc_bool
-\bool_new:N \l__exsheets_auto_label_bool
-\bool_new:N \l__exsheets_no_skip_after_bool
-\bool_new:N \l__exsheets_use_saved_pattern_bool
-\bool_set_true:N \l__exsheets_use_saved_pattern_bool
-
-\tl_new:N \l__exsheets_heading_instance_tl
-\tl_set:Nn \l__exsheets_heading_instance_tl {block}
-\tl_new:N \l__exsheets_question_heading_instance_tl
-\tl_new:N \l__exsheets_solution_heading_instance_tl
-\tl_new:N \l_exsheets_heading_title_user_format_tl
-\tl_set:Nn \l_exsheets_heading_title_user_format_tl { \normalsize\bfseries }
-\tl_new:N \l_exsheets_heading_subtitle_user_format_tl
-\tl_set:Nn \l_exsheets_heading_subtitle_user_format_tl { \normalsize\itshape }
-\tl_new:N \l__exsheets_questions_toclevel_tl
-\tl_set:Nn \l__exsheets_questions_toclevel_tl {subsection}
-\tl_new:N \l__exsheets_solutions_toclevel_tl
-\tl_set:Nn \l__exsheets_solutions_toclevel_tl {subsection}
-\tl_new:N \l__exsheets_new_chapter_hook_tl
-\tl_new:N \l__exsheets_new_section_hook_tl
-
-\dim_new:N \l__exsheets_questions_skip_below_dim
-\dim_set:Nn \l__exsheets_questions_skip_below_dim { .5\baselineskip }
-\dim_new:N \l__exsheets_solutions_skip_below_dim
-\dim_set:Nn \l__exsheets_solutions_skip_below_dim { .5\baselineskip }
-
\keys_define:nn {exsheets}
{
- color .code:n =
- \exsheets_option_dropped:n {color} ,
counter-format .code:n =
- \SaveCounterPattern [ exsheets ]
+ \SaveCounterPattern [exsheets]
\l__exsheets_qu_counter_pattern_tl
\l__exsheets_qu_counter_interpretation_tl
{#1} ,
- counter-within .code:n = \@addtoreset{question}{#1} ,
+ counter-format .initial:n = qu. ,
+ counter-within .code:n = \@addtoreset {question} {#1} ,
headings .tl_set:N = \l__exsheets_heading_instance_tl ,
load-headings .code:n =
\exsheets_option_dropped:n {load-headings} ,
@@ -303,52 +439,16 @@
\cs_set:Npn \__exsheets_pageref:n {#1}
\exsheets_update_referencing_commands: ,
chapter-hook .tl_set:N = \l__exsheets_new_chapter_hook_tl ,
- section-hook .tl_set:N = \l__exsheets_new_section_hook_tl ,
- use-saved-counter-format .bool_set:N = \l__exsheets_use_saved_pattern_bool
+ section-hook .tl_set:N = \l__exsheets_new_section_hook_tl %,
+% use-saved-counter-format .bool_set:N = \l__exsheets_use_saved_pattern_bool
}
-\keys_set:nn {exsheets} { counter-format = qu. }
+% TODO: remove this in a v1.0:
% process package options:
\ProcessKeysOptions {exsheets}
% ----------------------------------------------------------------------------
% points for exercises
-\bool_new:N \l__exsheets_points_questions_default_bool
-\bool_set_false:N \l__exsheets_points_questions_default_bool
-\bool_new:N \l__exsheets_parse_points_bool
-\bool_set_true:N \l__exsheets_parse_points_bool
-\bool_new:N \l__exsheets_points_name_bool
-\bool_set_true:N \l__exsheets_points_name_bool
-\bool_new:N \l__exsheets_points_separate_bonus_bool
-
-\fp_new:N \g__exsheets_points_sum_fp
-\fp_new:N \l__exsheets_points_default_fp
-\fp_set:Nn \l__exsheets_points_default_fp { 1 }
-\fp_new:N \l__exsheets_question_points_fp
-% this one should be public:
-\fp_new:N \g_exsheets_total_points_fp
-\fp_new:N \g__exsheets_bonus_sum_fp
-\fp_new:N \l__exsheets_question_bonus_fp
-% this one should be public
-\fp_new:N \g_exsheets_total_bonus_fp
-
-\tl_new:N \l__exsheets_points_name_tl
-\tl_set:Nn \l__exsheets_points_name_tl {P.}
-\tl_new:N \l__exsheets_points_name_plural_tl
-\tl_set:Nn \l__exsheets_points_name_plural_tl {P.}
-\tl_new:N \l__exsheets_bonus_name_tl
-\tl_set:Nn \l__exsheets_bonus_name_tl {P.}
-\tl_new:N \l__exsheets_bonus_name_plural_tl
-\tl_set:Nn \l__exsheets_bonus_name_plural_tl {P.}
-\tl_new:N \l__exsheets_points_number_format_tl
-\tl_new:N \l__exsheets_bonus_number_format_tl
-\tl_new:N \l__exsheets_points_pre_bonus_marker_tl
-\tl_set:Nn \l__exsheets_points_pre_bonus_marker_tl { \space(+ }
-\tl_new:N \l__exsheets_points_post_bonus_marker_tl
-\tl_set:Nn \l__exsheets_points_post_bonus_marker_tl { ) }
-\tl_new:N \l__exsheets_points_format_tl
-\tl_set:Nn \l__exsheets_points_format_tl { \use:n }
-
\cs_new_protected:Npn \__exsheets_set_points_name:nNN #1#2#3
{
\tl_if_in:nnTF {#1} { / }
@@ -403,7 +503,7 @@
\tl_use:N #2
{
\bool_if:NTF \l__exsheets_parse_points_bool
- { \exsheets_num:n { \fp_to_decimal:n {#1} } }
+ { \exsheets_num:n {#1} }
{ \use:n {#1} }
}
\group_end:
@@ -646,8 +746,6 @@
% ----------------------------------------------------------------------------
% 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_protected:Npn \exsheets_set_variations:n #1
{
\int_compare:nNnTF {#1} < { 2 }
@@ -736,11 +834,6 @@
% ----------------------------------------------------------------------------
% 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
-\bool_new:N \l__exsheets_grades_half_bool
-
\cs_new:Npn \__exsheets_fp_round_to_half:n #1
{ round( 2*(#1),0)/2 }
@@ -818,25 +911,10 @@
% ----------------------------------------------------------------------------
% Aufgaben und Lösungen
-\bool_new:N \g__exsheets_questions_use_bool
-\bool_gset_true:N \g__exsheets_questions_use_bool
-\bool_new:N \l__exsheets_questions_use_bool
-\bool_set_true:N \l__exsheets_questions_use_bool
-\bool_new:N \l__exsheets_questions_deactivate_bool
-\bool_new:N \l__exsheets_save_question_body_to_aux_bool
-\bool_set_false:N \l__exsheets_save_question_body_to_aux_bool
-
-\bool_new:N \l__exsheets_solutions_use_bool
-\bool_set_true:N \l__exsheets_solutions_use_bool
-
\cs_new:Npn \exsheets_glue:N #1
{ \cleaders \vbox:n {} \skip_vertical:N #1 }
% classes, topics and other group concepts:
-\prop_new:N \l__exsheets_class_prop
-\tl_new:N \g__exsheets_use_current_question_tl
-\bool_new:N \l__exsheets_use_this_question_bool
-
\cs_new_protected:Npn \exsheets_new_question_class:nn #1#2
{
\prop_put:Nnn \l__exsheets_class_prop {#2} {#1}
@@ -874,16 +952,16 @@
\bool_if:cT { l__exsheets_questions_#1_bool }
{
% add #1 to questions property
- \prop_gput:cff { g__exsheets_questions_#1_prop }
+ \prop_gput:cxx { g__exsheets_questions_#1_prop }
{ \int_to_arabic:n { \g__exsheets_questions_id_int } }
- { \tl_use:c { l__exsheets_questions_#1_tl } }
+ { \exp_not:v { l__exsheets_questions_#1_tl } }
% add to #2 list, if it's a new one
- \prop_get:cfNF { g__exsheets_#2_prop }
- { \tl_use:c { l__exsheets_questions_#1_tl } }
+ \prop_get:cxNF { g__exsheets_#2_prop }
+ { \exp_not:v { l__exsheets_questions_#1_tl } }
\l__exsheets_tmpa_tl
{
- \prop_gput:cfn { g__exsheets_#2_prop }
- { \tl_use:c { l__exsheets_questions_#1_tl } }
+ \prop_gput:cxn { g__exsheets_#2_prop }
+ { \exp_not:v { l__exsheets_questions_#1_tl } }
{ \__exsheets_dummy: }
}
}
@@ -891,8 +969,8 @@
\bool_if:cT { g__exsheets_use_#2_bool }
{
% is this question an active one?
- \prop_get:cfNTF { g__exsheets_#2_active_prop }
- { \tl_use:c { l__exsheets_questions_#1_tl } }
+ \prop_get:cxNTF { g__exsheets_#2_active_prop }
+ { \exp_not:v { l__exsheets_questions_#1_tl } }
\l__exsheets_tmpa_tl
{
\bool_set_true:c { l__exsheets_#1_active_bool }
@@ -923,6 +1001,7 @@
\l__exsheets_tmpb_tl
\l__exsheets_tmpc_tl
{ \bool_set_false:N \l__exsheets_solutions_use_bool }
+ % \bool_show:N \l__exsheets_solutions_use_bool
}
}
}
@@ -979,9 +1058,6 @@
% ----------------------------------------------------------------------------
% question tags:
-\prop_new:N \g__exsheets_tags_prop
-\seq_new:N \l__exsheets_use_tags_seq
-
% #1: ID
% #2: tags
\cs_new_protected:Npn \exsheets_set_question_tags:nn #1#2
@@ -1023,26 +1099,6 @@
% ----------------------------------------------------------------------------
% die 'question' Umgebung
-\tl_new:N \l__exsheets_questions_name_tl
-\tl_set:Nn \l__exsheets_questions_name_tl {Question}
-\tl_new:N \l__exsheets_exercise_name_tl
-\tl_set:Nn \l__exsheets_exercise_name_tl {Exercise}
-
-\tl_new:N \l__exsheets_questions_pre_hook_tl
-\tl_new:N \l__exsheets_questions_post_hook_tl
-\tl_new:N \l__exsheets_questions_pre_body_hook_tl
-\tl_new:N \l__exsheets_questions_post_body_hook_tl
-\tl_new:N \l__exsheets_after_begin_question_tl
-
-\tl_new:N \CurrentQuestionID
-
-\bool_new:N \l__exsheets_questions_print_bool
-\bool_set_true:N \l__exsheets_questions_print_bool
-\bool_new:N \l__exsheets_inside_question_bool
-
-\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
@@ -1131,26 +1187,12 @@
\group_end:
\bool_if:NT \l__exsheets_questions_print_bool
{
- #2
- { #1 }
- #3
+ #2 { #1 } #3
\exsheets_add_space:N \l__exsheets_questions_skip_below_dim
}
}
\cs_generate_variant:Nn \__exsheets_save_and_print_question_body:nnn { VVV }
-\prop_new:N \g__exsheets_questions_id_prop
-\prop_new:N \g__exsheets_questions_subtitle_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 \l__exsheets_questions_subtitle_tl
-\tl_new:N \g__exsheets_questions_current_id_tl
-\tl_new:N \l__exsheets_questions_title_tl
-\tl_new:N \l__exsheets_questions_label_tl
-\tl_new:N \l__exsheets_questions_points_tl
-
\prg_new_conditional:Npnn \exsheets_if_question_subtitle: { p,T,F,TF }
{
\tl_if_blank:VTF \l__exsheets_questions_subtitle_tl
@@ -1162,11 +1204,6 @@
\cs_new:Npn \IfQuestionSubtitleT { \exsheets_if_question_subtitle:T }
\cs_new:Npn \IfQuestionSubtitleF { \exsheets_if_question_subtitle:F }
-\bool_new:N \l__exsheets_only_print_points_bool
-
-\fp_new:N \g__exsheets_this_question_points_fp
-\fp_new:N \g__exsheets_this_question_bonus_fp
-
\cs_new_protected:Npn \__exsheets_read_points:w #1 ! #2 ! #3 \q_stop
{
\tl_if_blank:nTF {#1}
@@ -1370,7 +1407,7 @@
{
\__exsheets_determine_question_usage:
\exsheets_if_current_question_is_used:T
- { \refstepcounter{question} }
+ { \refstepcounter {question} }
\__exsheets_get_sectioning_numbers:
\bool_if:nT
{
@@ -1434,8 +1471,8 @@
\l__exsheets_question_heading_instance_tl
\l__exsheets_questions_title_tl
\l__exsheets_qu_counter_interpretation_tl
- { 0 }
- { 0 }
+ {0}
+ {0}
\l__exsheets_tmpa_tl
}
{
@@ -1445,7 +1482,7 @@
\l__exsheets_questions_title_tl
\l__exsheets_qu_counter_interpretation_tl
\l__exsheets_questions_points_tl
- { 0 }
+ {0}
\l__exsheets_tmpa_tl
}
}
@@ -1467,8 +1504,6 @@
}
% current question number:
-\prop_new:N \g_exsheets_question_identification_prop
-
\cs_new_protected:Npn \exsheets@save@number #1#2
{ \expandafter\global\expandafter\edef\csname exsheets@question@#1\endcsname{#2} }
@@ -1509,6 +1544,9 @@
}
}
+% #1: prop
+% #2: id
+% #3: code
\cs_new_protected:Npn \__exsheets_restore_number_from_and_do:Nnn #1#2#3
{
\prop_get:NnNT #1 {#2} \l__exsheets_tmpc_tl
@@ -1522,14 +1560,14 @@
}
\cs_generate_variant:Nn \__exsheets_restore_number_from_and_do:Nnn { NV }
-\NewDocumentCommand \QuestionNumber { m }
+\NewDocumentCommand \QuestionNumber {m}
{ \exsheets_question_number:n {#1} }
\cs_new_protected:Npn \exsheets_question_number:n #1
{
\prop_get:NnNTF \g__exsheets_questions_id_prop {#1} \l__exsheets_tmpa_tl
{ \__exsheets_question_number:c { exsheets@question@\l__exsheets_tmpa_tl } }
- { \textbf{??} }
+ { \textbf {??} }
}
\cs_new_protected:Npn \__exsheets_question_number:N #1
@@ -1537,9 +1575,9 @@
\cs_if_exist:NTF #1
{
\exp_after:wN \__exsheets_get_question_number:w #1 \q_stop
- \ReadCounterPatternFrom [ exsheets ] \l__exsheets_qu_counter_pattern_tl
+ \ReadCounterPatternFrom [exsheets] \l__exsheets_qu_counter_pattern_tl
}
- { \textbf{??} }
+ { \textbf {??} }
}
\cs_generate_variant:Nn \__exsheets_question_number:N { c }
@@ -1591,11 +1629,6 @@
\NewDocumentCommand \ExSheetsHeading { mmmmmm }
{ \exsheets_use_heading:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6} }
-\bool_new:N \l__exsheets_exam_bool
-\bool_set_false:N \l__exsheets_exam_bool
-\bool_new:N \l__exsheets_questions_runin_bool
-\bool_set_false:N \l__exsheets_questions_runin_bool
-
% options for the questions:
\keys_define:nn { exsheets / question }
{
@@ -1705,15 +1738,8 @@
{ \prop_item:cn { g__exsheets_question_property_#1_prop } {#2} }
{ ?? }
}
-\cs_generate_variant:Nn \exsheets_get_question_property:nn { no }
+\cs_generate_variant:Nn \exsheets_get_question_property:nn { no , nV }
-\int_new:N \g__exsheets_tmpa_int
-% \cs_new_protected:Npn \ForEachQuestion #1
-% {
-% \int_gzero:N \g__exsheets_tmpa_int
-% \int_step_inline:nnnn {1} {1} {\numberofquestions}
-% { \int_gincr:N \g__exsheets_tmpa_int #1 }
-% }
\cs_new_protected:Npn \ForEachQuestion #1
{
\int_gzero:N \g__exsheets_tmpa_int
@@ -1735,10 +1761,8 @@
% ----------------------------------------------------------------------------
% debug-Info:
-\bool_new:N \l__exsheets_questions_debug_bool
-\bool_set_false:N \l__exsheets_questions_debug_bool
-
-\colorlet { exsheetsdebugcolor } { yellow }
+\RequirePackage {xcolor}
+\colorlet {exsheetsdebugcolor} {yellow}
\keys_define:nn {exsheets}
{
@@ -1751,7 +1775,7 @@
\noindent
\group_begin:
\normalfont\normalsize\normalcolor
- \colorbox { exsheetsdebugcolor }
+ \colorbox {exsheetsdebugcolor}
{ \parbox { \dim_eval:n { #1 - 2 \fboxsep } } {#2} }
\group_end:
\par
@@ -1797,22 +1821,6 @@
% ----------------------------------------------------------------------------
% include random/selected questions from a file:
-\bool_new:N \l__exsheets_select_questions_bool
-\bool_new:N \l__exsheets_include_all_bool
-\bool_new:N \l__exsheets_include_random_bool
-\bool_new:N \l__exsheets_include_by_id_bool
-\bool_set_true:N \l__exsheets_include_all_bool
-
-\prop_new:N \g__exsheets_included_questions_prop
-\clist_new:N \l__exsheets_include_id_clist
-\clist_new:N \l__exsheets_exclude_id_clist
-\clist_new:N \questionsincludedlast
-
-\seq_new:N \g_exsheets_included_questions_seq
-
-\int_new:N \l__exsheets_include_random_int
-\int_zero:N \l__exsheets_include_random_int
-
\cs_new_protected:Npn \exsheets_file_input_if_exist:n #1
{ \file_if_exist:nT {#1} { \file_input:n {#1} } }
\cs_new_protected:Npn \exsheets_file_input_if_exist:nF #1#2
@@ -1840,9 +1848,6 @@
\group_end:
}
-\int_new:N \l__exsheets_questions_set_int
-\int_new:N \g__exsheets_select_random_int
-
\cs_new_protected:Npn \exsheets_include_questions:n #1
{
\bool_set_true:N \l__exsheets_select_questions_bool
@@ -1915,8 +1920,6 @@
\int_set:Nn \l__exsheets_include_random_int {#1}
}
-\int_new:N \g__exsheets_selection_number_int
-
\cs_new_protected:Npn \__exsheets_select_question:n #1
{
\bool_if:NT \l__exsheets_select_questions_bool
@@ -2016,8 +2019,6 @@
}
\cs_generate_variant:Nn \__exsheets_select_question_by_id:n { V }
-\tl_new:N \l__exsheets_include_id_tl
-\bool_new:N \l__exsheets_use_selection_bool
% TODO: poor efficiency -- there should be no need to map through
% \l__exsheets_class_prop *two* times
\cs_new_protected:Npn \__exsheets_select_question_random:n #1
@@ -2144,26 +2145,6 @@
% ----------------------------------------------------------------------------
% die 'solution' Umgebung:
-\bool_new:N \l__exsheets_solutions_print_bool
-\bool_set_false:N \l__exsheets_solutions_print_bool
-\bool_new:N \l__exsheets_solutions_print_here_bool
-\bool_set_false:N \l__exsheets_solutions_print_here_bool
-\bool_new:N \l__exsheets_solutions_print_section_bool
-\bool_set_false:N \l__exsheets_solutions_print_section_bool
-\bool_new:N \l__exsheets_solutions_print_chapter_bool
-\bool_set_false:N \l__exsheets_solutions_print_chapter_bool
-\bool_new:N \l__exsheets_solutions_print_all_bool
-\bool_set_false:N \l__exsheets_solutions_print_all_bool
-
-% \prop_new:N \g_exsheets_question_identification_prop
-\prop_new:N \g__exsheets_solutions_content_prop
-\prop_new:N \g__exsheets_solutions_questions_id_prop
-\prop_new:N \g__exsheets_solutions_names_prop
-\prop_new:N \g__exsheets_solutions_counter_prop
-
-\tl_new:N \l__exsheets_solutions_name_tl
-\tl_set:Nn \l__exsheets_solutions_name_tl { Solution }
-
\cs_new_protected:Npn \__exsheets_save_solution:n #1
{
% save for later use
@@ -2187,12 +2168,11 @@
{
\bool_if:NT \l__exsheets_solutions_print_here_bool
{
- \int_set:Nn \l_exsheets_counter_qu_int { \arabic{question} }
+ \int_set:Nn \l_exsheets_counter_qu_int { \arabic {question} }
\__exsheets_get_sectioning_numbers:
- \__exsheets_print_solution:VVVn
- \l__exsheets_qu_counter_interpretation_tl
- \l__exsheets_solutions_name_tl
+ \__exsheets_print_solution:VVn
\g__exsheets_questions_current_id_tl
+ \l__exsheets_solutions_name_tl
{#1}
}
}
@@ -2206,39 +2186,35 @@
{ \__exsheets_save_solution:V \BODY }
}
-\bool_new:N \l__exsheets_inside_solution_bool
-\bool_set_false:N \l__exsheets_inside_solution_bool
-
-\tl_new:N \l__exsheets_use_solution_tl
-
-\newenvironment { __exsheets_solution: } [1]
+\newenvironment {__exsheets_solution:} [1]
{
\tl_clear:N \l__exsheets_use_solution_tl
+ % \prop_show:N \l__exsheets_class_prop
\prop_map_inline:Nn \l__exsheets_class_prop
{
- \use:c { __exsheets_solutions_use_##1: }
+ \use:c {__exsheets_solutions_use_##1:}
\bool_if:nTF
{
+ \l__exsheets_solutions_use_bool
+ &&
(
- \l__exsheets_solutions_use_bool
- &&
- \bool_if_p:c { l__exsheets_##2_active_bool }
+ !\bool_if_p:c {g__exsheets_use_##1_bool}
+ ||
+ \bool_if_p:c {l__exsheets_##2_active_bool}
)
- ||
- ! \bool_if_p:c { g__exsheets_use_##1_bool }
}
- { \tl_put_right:Nn \l__exsheets_use_solution_tl { y } }
- { \tl_put_right:Nn \l__exsheets_use_solution_tl { n } }
+ { \tl_put_right:Nn \l__exsheets_use_solution_tl {y} }
+ { \tl_put_right:Nn \l__exsheets_use_solution_tl {n} }
}
% verwende, wenn ein Ja dabei war:
- \tl_if_in:NnT \l__exsheets_use_solution_tl { y }
+ \tl_if_in:NnT \l__exsheets_use_solution_tl {y}
{ \bool_set_true:N \l__exsheets_solutions_use_bool }
\bool_if:NT \l__exsheets_questions_deactivate_bool
{ \bool_set_false:N \l__exsheets_solutions_use_bool }
\bool_if:NT \l__exsheets_solutions_use_bool
{
\bool_set_true:N \l__exsheets_inside_solution_bool
- \IfNoValueF {#1} { \keys_set:nn { exsheets / solution } {#1} }
+ \IfNoValueF {#1} { \keys_set:nn {exsheets/solution} {#1} }
}
\tl_if_blank:VT \l__exsheets_solution_heading_instance_tl
{
@@ -2250,9 +2226,6 @@
}
{ \end__exsheets_solution_internal: }
-\bool_new:N \l__exsheets_solutions_runin_bool
-\bool_set_false:N \l__exsheets_solutions_runin_bool
-
\cs_new_protected:Npn \__exsheets_solutions_name:nnn #1#2#3
{
\tl_if_blank:VT \l__exsheets_solution_heading_instance_tl
@@ -2267,9 +2240,6 @@
}
\cs_generate_variant:Nn \__exsheets_solutions_name:nnn { VV , VVV }
-\tl_new:N \l_exsheets_solutions_name_style_tl
-\tl_set:Nn \l_exsheets_solutions_name_style_tl { \normalsize \bfseries }
-
\cs_new:Npn \exsheets_solutions_name_style:n #1
{ \l_exsheets_solutions_name_style_tl #1 }
@@ -2282,14 +2252,14 @@
\exsheets_write_to_aux_x:n
{
\token_to_str:N \newlabel { exse:#1 }
- { { \arabic { section } } { \thepage } }
+ { { \arabic {section} } { \thepage } }
}
\cs_if_exist:NT \thechapter
{
\exsheets_write_to_aux_x:n
{
\token_to_str:N \newlabel { exch:#1 }
- { { \arabic { chapter } } { \thepage } }
+ { { \arabic {chapter} } { \thepage } }
}
}
\@esphack
@@ -2339,12 +2309,6 @@
\group_end:
}
-\int_new:N \l__exsheets_counter_ch_int
-\int_new:N \l__exsheets_current_ch_int
-\int_new:N \l__exsheets_counter_sec_int
-\int_new:N \l__exsheets_current_sec_int
-\int_new:N \l_exsheets_counter_qu_int
-
\keys_define:nn {exsheets}
{
exsheets_print_solutions .choice: ,
@@ -2361,9 +2325,9 @@
\cs_new_protected:Npn \__exsheets_get_sectioning_numbers:
{
\cs_if_exist:NT \chapter
- { \int_set:Nn \l__exsheets_counter_ch_int { \arabic{chapter} } }
- \int_set:Nn \l__exsheets_counter_sec_int { \arabic{section} }
- \int_set:Nn \l_exsheets_counter_qu_int { \arabic{question} }
+ { \int_set:Nn \l__exsheets_counter_ch_int { \arabic {chapter} } }
+ \int_set:Nn \l__exsheets_counter_sec_int { \arabic {section} }
+ \int_set:Nn \l_exsheets_counter_qu_int { \arabic {question} }
}
% #1: numeric ID
@@ -2388,23 +2352,9 @@
\__exsheets_sectioning_hook:nV {sec}
\l__exsheets_new_section_hook_tl
\group_end:
- \bool_if:NTF \l__exsheets_use_saved_pattern_bool
- {
- \eSaveCounterPatternFrom [ exsheets ]
- \l__exsheets_current_pattern_interpretation_tl
- \l__exsheets_current_pattern_tl
- \l__exsheets_tmpd_tl
- }
- {
- \eSaveCounterPatternFrom [ exsheets ]
- \l__exsheets_current_pattern_interpretation_tl
- \l__exsheets_current_pattern_tl
- \l__exsheets_qu_counter_pattern_tl
- }
- \__exsheets_print_solution:VVVV
- \l__exsheets_current_pattern_tl
- \l__exsheets_tmpa_tl
+ \__exsheets_print_solution:VVV
\l__exsheets_tmpc_tl
+ \l__exsheets_tmpa_tl
\l__exsheets_tmpb_tl
}
}
@@ -2558,6 +2508,7 @@
\__exsheets_print_solution_if:nn {#2} {#1}
}
}
+\cs_generate_variant:Nn \exsheets_print_solutions_if:nnn {nnV}
% print by ID:
\seq_new:N \l__exsheets_solutions_byID_seq
@@ -2582,44 +2533,14 @@
}
\seq_map_inline:Nn \l__exsheets_tmpa_seq
{
- \group_begin:
- \tl_if_eq:nnF {##1} { \q_no_value }
- {
- \prop_get:NnNT \g__exsheets_solutions_names_prop
- {##1} \l__exsheets_tmpa_tl
- {
- \prop_get:NnN \g__exsheets_solutions_content_prop
- {##1} \l__exsheets_tmpb_tl
- \prop_get:NnN \g__exsheets_solutions_questions_id_prop
- {##1} \l__exsheets_tmpc_tl
- \prop_get:NnN \g__exsheets_solutions_counter_prop
- {##1} \l__exsheets_tmpd_tl
- \__exsheets_restore_number_from_and_do:Nnn
- \g_exsheets_question_identification_prop
- {##1}
- {
- \bool_if:NTF \l__exsheets_use_saved_pattern_bool
- {
- \eSaveCounterPatternFrom [ exsheets ]
- \l__exsheets_current_pattern_interpretation_tl
- \l__exsheets_current_pattern_tl
- \l__exsheets_tmpd_tl
- }
- {
- \eSaveCounterPatternFrom [ exsheets ]
- \l__exsheets_current_pattern_interpretation_tl
- \l__exsheets_current_pattern_tl
- \l__exsheets_qu_counter_pattern_tl
- }
- \__exsheets_print_solution:VVVV
- \l__exsheets_current_pattern_tl
- \l__exsheets_tmpa_tl
- \l__exsheets_tmpc_tl
- \l__exsheets_tmpb_tl
- }
- }
- }
- \group_end:
+ \prop_get:NnNT \g_exsheets_question_identification_prop {##1}
+ \l__exsheets_tmpa_tl
+ {
+ \exsheets_print_solutions_if:nnV
+ { \c_true_bool }
+ {##1}
+ \l__exsheets_tmpa_tl
+ }
}
}
@@ -2643,10 +2564,10 @@
{ \char_set_catcode_letter:N \@ } {#1}
\tl_if_in:nnTF {#1} { @@@ }
{ \__exsheets_solutions_name:nnn { } {#2} {#3} }
- { \__exsheets_solutions_name:nnn {#1} { #2 } {#3} }
+ { \__exsheets_solutions_name:nnn {#1} {#2} {#3} }
\tex_penalty:D \c_ten_thousand
}
-\cs_generate_variant:Nn \exsheets_solutions_print_name:nnn { VVV }
+\cs_generate_variant:Nn \exsheets_solutions_print_name:nnn { V , VVV }
\cs_new:Npn \__exsheets_surround_with:nnn #1#2#3 { #2#1#3 }
\cs_generate_variant:Nn \__exsheets_surround_with:nnn { nVV }
@@ -2654,22 +2575,23 @@
% think about the interface with \exsheetsprintsolution a bit more, especially
% about the placement of the hooks!
-% #1: number
+% #1: ID
% #2: name
-% #3: ID
-% #4: body
-\cs_new_protected:Npn \__exsheets_print_solution:nnnn #1#2#3#4
+% #3: body
+\cs_new_protected:Npn \__exsheets_print_solution:nnn #1#2#3
{
\group_begin:
- \tl_set:Nn \CurrentQuestionID {#3}
+ \tl_set:Nn \CurrentQuestionID {#1}
+ \tl_set:Nx \l__exsheets_tmpa_tl
+ { \exsheets_get_question_property:nn {counter} {#1} }
\__exsheets_surround_with:nVV
{
\exp_args:Nnx
\exsheetsprintsolution
- { \exsheets_solutions_print_name:nnn {#1} {#2} {#3} }
+ { \exsheets_solutions_print_name:Vnn \l__exsheets_tmpa_tl {#2} {#1} }
{
\exp_not:V \l__exsheets_solutions_pre_body_hook_tl
- \exp_not:n {#4}
+ \exp_not:n {#3}
\exp_not:V \l__exsheets_solutions_post_body_hook_tl
}
}
@@ -2678,7 +2600,7 @@
\exsheets_add_space:N \l__exsheets_solutions_skip_below_dim
\group_end:
}
-\cs_generate_variant:Nn \__exsheets_print_solution:nnnn { VVV, VVVV }
+\cs_generate_variant:Nn \__exsheets_print_solution:nnn { VV , VVV }
% a user command to be redefined as needed; must have two mandatory arguments!
% #1: heading
@@ -2692,14 +2614,6 @@
\cs_new:Npn \PrintSolutionsF
{ \bool_if:NF \l__exsheets_solutions_print_bool }
-\bool_new:N \l__exsheets_print_byID_sorted_bool
-\bool_set_true:N \l__exsheets_print_byID_sorted_bool
-
-\tl_new:N \l__exsheets_solutions_pre_body_hook_tl
-\tl_new:N \l__exsheets_solutions_post_body_hook_tl
-\tl_new:N \l__exsheets_solutions_pre_hook_tl
-\tl_new:N \l__exsheets_solutions_post_hook_tl
-
\keys_define:nn { exsheets / solution }
{
headings .tl_set:N = \l__exsheets_solution_heading_instance_tl ,
@@ -2767,15 +2681,6 @@
% 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 }
-\tl_new:N \l__exsheets_blank_scale_tl
-\tl_set:Nn \l__exsheets_blank_scale_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:Npn \exsheets_write_blank:n #1 {#1}
\cs_set_eq:NN \exsheets_write_blank:n \uline
@@ -2936,83 +2841,83 @@
% ----------------------------------------------------------------------------
% default definitions:
% question / solution pair:
-\NewQuSolPair{question}{solution}
+\NewQuSolPair {question} {solution}
% properties:
% \DeclareQuestionProperty{number}
-\DeclareQuestionProperty{counter}
-\DeclareQuestionProperty{subtitle}
-\DeclareQuestionProperty{question-body}
-\DeclareQuestionProperty{points}
-\DeclareQuestionProperty{bonus-points}
+\DeclareQuestionProperty {counter}
+\DeclareQuestionProperty {subtitle}
+\DeclareQuestionProperty {question-body}
+\DeclareQuestionProperty {points}
+\DeclareQuestionProperty {bonus-points}
\bool_if:NT \l__exsheets_auto_label_bool
{
- \DeclareQuestionProperty{ref}
- \DeclareQuestionProperty{pageref}
+ \DeclareQuestionProperty {ref}
+ \DeclareQuestionProperty {pageref}
}
% classes:
-\DeclareQuestionClass{class}{classes}
-\DeclareQuestionClass{topic}{topics}
+\DeclareQuestionClass {class} {classes}
+\DeclareQuestionClass {topic} {topics}
% ----------------------------------------------------------------------------
% Sprachanpassungen
-\RequirePackage { translations }
+\RequirePackage {translations}
% translation for the exercises
-\DeclareTranslationFallback { exsheets-exercise-name } { Exercise }
-\DeclareTranslation { English } { exsheets-exercise-name } { Exercise }
-\DeclareTranslation { British } { exsheets-exercise-name } { Exercise }
-\DeclareTranslation { American } { exsheets-exercise-name } { Exercise }
-\DeclareTranslation { French } { exsheets-exercise-name } { Exercice }
-\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 } { Opgave }
-\DeclareTranslation { Norsk } { exsheets-exercise-name } { Oppgave }
-\DeclareTranslation { Portuges } { exsheets-exercise-name } { Exerc\'\i cio }
+\DeclareTranslationFallback {exsheets-exercise-name} {Exercise}
+\DeclareTranslation {English} {exsheets-exercise-name} {Exercise}
+\DeclareTranslation {British} {exsheets-exercise-name} {Exercise}
+\DeclareTranslation {American} {exsheets-exercise-name} {Exercise}
+\DeclareTranslation {French} {exsheets-exercise-name} {Exercice}
+\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} {Opgave}
+\DeclareTranslation {Norsk} {exsheets-exercise-name} {Oppgave}
+\DeclareTranslation {Portuges} {exsheets-exercise-name} {Exerc\'\i cio}
% translation for the question
-\DeclareTranslationFallback { exsheets-question-name } { 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 { Hungarian } { exsheets-question-name } { Feladat }
-\DeclareTranslation { Danish } { exsheets-question-name } { Opgave }
-\DeclareTranslation { Norsk } { exsheets-question-name } { Oppgave }
-\DeclareTranslation { Portuges } { exsheets-question-name } { Quest\~ao }
+\DeclareTranslationFallback {exsheets-question-name} {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 {Hungarian} {exsheets-question-name} {Feladat}
+\DeclareTranslation {Danish} {exsheets-question-name} {Opgave}
+\DeclareTranslation {Norsk} {exsheets-question-name} {Oppgave}
+\DeclareTranslation {Portuges} {exsheets-question-name} {Quest\~ao}
% translation for the solutions
-\DeclareTranslationFallback { exsheets-solution-name } { Solution }
-\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 } { L\o sning }
-\DeclareTranslation { Norsk } { exsheets-solution-name } { L\o sning }
-\DeclareTranslation { Portuges } { exsheets-solution-name } { Solu\c c\~ao }
+\DeclareTranslationFallback {exsheets-solution-name} {Solution}
+\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} {L\o sning}
+\DeclareTranslation {Norsk} {exsheets-solution-name} {L\o sning}
+\DeclareTranslation {Portuges} {exsheets-solution-name} {Solu\c c\~ao}
% the actual translating
\tl_set:Nn \l__exsheets_exercise_name_tl
- { \GetTranslation { exsheets-exercise-name } }
+ { \GetTranslation {exsheets-exercise-name} }
\tl_set:Nn \l__exsheets_questions_name_tl
- { \GetTranslation { exsheets-question-name } }
+ { \GetTranslation {exsheets-question-name} }
\tl_set:Nn \l__exsheets_solutions_name_tl
- { \GetTranslation { exsheets-solution-name } }
+ { \GetTranslation {exsheets-solution-name} }
% ----------------------------------------------------------------------------
@@ -3285,9 +3190,20 @@ HISTORY:
not printed
2016/01/26 v0.21a - remove deprecated \prop_get:Nn (=> \prop_item:Nn)
2016/02/01 v0.21b - fix annoying bug in \exsheets_print_solutions_if:nnn
+2016/03/21 v0.21c - use question property `counter' for retrieving the
+ counter patterns in solution's headings (this
+ resolves http://tex.stackexchange.com/q/299898)
+ - remove option `use-saved-counter-format': solutions
+ should always have the same number pattern as the
+ corresponding questions
+2016/08/14 v0.21d - fix issue #32
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TODO:
+- solve the problem using verbatim material in questions and solutions
+ (difficult)
+- allow for different kinds of problems/solutions using an independant counter
+ (not trivial)
- points/decimal-marker, points/frac (?), points/format (?,im interface)
- points: swedish style
- \examspace inside {tasks} => possible? (\pagegoal-\pagetotal) gives wrong