diff options
author | Karl Berry <karl@freefriends.org> | 2021-01-31 21:33:37 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-01-31 21:33:37 +0000 |
commit | 23096896d90fa4e84c769e8e310fad6173aa910d (patch) | |
tree | 15989c9eceec2c02c6dc490935682f42e430cdbb /Master/texmf-dist/tex/latex/xsim/xsim.interface.code.tex | |
parent | e1d229bfed2eacb9ae53a210f84da32889984de9 (diff) |
xsim (31jan21)
git-svn-id: svn://tug.org/texlive/trunk@57572 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/xsim/xsim.interface.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/xsim/xsim.interface.code.tex | 696 |
1 files changed, 0 insertions, 696 deletions
diff --git a/Master/texmf-dist/tex/latex/xsim/xsim.interface.code.tex b/Master/texmf-dist/tex/latex/xsim/xsim.interface.code.tex deleted file mode 100644 index b96e5a47b5d..00000000000 --- a/Master/texmf-dist/tex/latex/xsim/xsim.interface.code.tex +++ /dev/null @@ -1,696 +0,0 @@ -% ---------------------------------------------------------------------------- -% the XSIM package - interface module -% -% eXercise Sheets IMproved -% -% ---------------------------------------------------------------------------- -% Clemens Niederberger -% Web: https://github.com/cgnieder/xsim -% E-Mail: contact@mychemistry.eu -% ---------------------------------------------------------------------------- -% Copyright 2017--2020 Clemens Niederberger -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Clemens Niederberger. -% ---------------------------------------------------------------------------- -% If you have any ideas, questions, suggestions or bugs to report, please -% feel free to contact me. -% ---------------------------------------------------------------------------- -\XSIMmodule{interface}{user interface} - -\NewDocumentCommand \DeclareExerciseEnvironmentTemplate {m+m+m} - { \xsim_declare_environment_template:nnn {#1} {#2} {#3} } -\@onlypreamble \DeclareExerciseEnvironmentTemplate - -\NewDocumentCommand \DeclareExerciseHeadingTemplate {m+m} - { \xsim_declare_heading_template:nn {#1} {#2} } -\@onlypreamble \DeclareExerciseHeadingTemplate - -\NewDocumentCommand \DeclareExerciseTableTemplate {m+m} - { \xsim_declare_table_template:nn {#1} {#2} } -\@onlypreamble \DeclareExerciseTableTemplate - -\NewDocumentCommand \UseExerciseTemplate {mm} - { \xsim_use_template:nn {#1} {#2} } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \DeclareExerciseType {mm} - { \xsim_declare_exercise_type:nn {#1} {#2} } -\@onlypreamble \DeclareExerciseType - -\NewExpandableDocumentCommand \numberofusedexercises {} - { \int_use:N \g_xsim_max_id_int } - -% ---------------------------------------------------------------------------- - -\ProvideDocumentCommand \IfExistSolutionTF {+m+m} - { \xsim_if_solution_exist:ooTF {\ExerciseType} {\ExerciseID} {#1} {#2} } - -\NewDocumentCommand \IfExistSolutionT {+m} - { \IfExistSolutionTF {#1} {} } - -\NewDocumentCommand \IfExistSolutionF {+m} - { \IfExistSolutionTF {} {#1} } - -\NewExpandableDocumentCommand \IfInsideSolutionTF {+m+m} - { \xsim_if_inside_solution:TF {#1} {#2} } - -\NewExpandableDocumentCommand \IfInsideSolutionT {+m} - { \IfInsideSolutionTF {#1} {} } - -\NewExpandableDocumentCommand \IfInsideSolutionF {+m} - { \IfInsideSolutionTF {} {#1} } - -\NewExpandableDocumentCommand \IfSolutionPrintTF {+m+m} - { \xsim_if_solution_print:nTF {\ExerciseType} {#1} {#2} } - -\NewExpandableDocumentCommand \IfSolutionPrintT {+m} - { \IfSolutionPrintTF {#1} {} } - -\NewExpandableDocumentCommand \IfSolutionPrintF {+m} - { \IfSolutionPrintTF {} {#1} } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \DeclareExerciseProperty {t!st-m} - { - \IfBooleanTF {#2} - { - \IfBooleanTF {#3} - { - \xsim_declare_property:nnnn - { \c_false_bool } - { \c_true_bool } - { \c_true_bool } - {#4} - } - { - \xsim_declare_property:nnnn - { \c_false_bool } - { \c_true_bool } - { \c_false_bool } - {#4} - } - } - { - \IfBooleanTF {#1} - { - \IfBooleanTF {#3} - { - \xsim_declare_property:nnnn - { \c_true_bool } - { \c_false_bool } - { \c_true_bool } - {#4} - } - { - \xsim_declare_property:nnnn - { \c_true_bool } - { \c_false_bool } - { \c_false_bool } - {#4} - } - } - { - \IfBooleanTF {#3} - { - \xsim_declare_property:nnnn - { \c_false_bool } - { \c_false_bool } - { \c_true_bool } - {#4} - } - { - \xsim_declare_property:nnnn - { \c_false_bool } - { \c_false_bool } - { \c_false_bool } - {#4} - } - } - } - } -\@onlypreamble \DeclareExerciseProperty - -\NewDocumentCommand \DeclareExercisePropertyAlias {mm} - { \xsim_make_property_alias:nn {#1} {#2} } -\@onlypreamble \DeclareExercisePropertyAlias - -\NewDocumentCommand \SetExerciseProperty {m+m} - { \xsim_set_property:xxnn {\ExerciseType} {\ExerciseID} {#1} {#2} } - -\NewDocumentCommand \SetExpandedExerciseProperty {m+m} - { \xsim_set_property:xxnx {\ExerciseType} {\ExerciseID} {#1} {#2} } - -\NewDocumentCommand \ExerciseSetProperty {mmm+m} - { \xsim_set_property:nnnn {#1} {#2} {#3} {#4} } - -\NewDocumentCommand \ExerciseSetExpandedProperty {mmm+m} - { \xsim_set_property:nnnx {#1} {#2} {#3} {#4} } - -\NewExpandableDocumentCommand \IfExercisePropertyExistTF {+m+m+m} - { \xsim_if_property_exist:nTF {#1} {#2} {#3} } - -\NewExpandableDocumentCommand \IfExercisePropertyExistT {+m+m} - { \IfExercisePropertyExistTF {#1} {#2} {} } - -\NewExpandableDocumentCommand \IfExercisePropertyExistF {+m+m} - { \IfExercisePropertyExistTF {#1} {} {#2} } - -\NewDocumentCommand \IfExercisePropertySetTF {m+m+m} - { \xsim_if_property_set:xxnTF {\ExerciseType} {\ExerciseID} {#1} {#2} {#3} } - -\NewDocumentCommand \IfExercisePropertySetT {m+m} - { \IfExercisePropertySetTF {#1} {#2} {} } - -\NewDocumentCommand \IfExercisePropertySetF {m+m} - { \IfExercisePropertySetTF {#1} {} {#2} } - -\NewExpandableDocumentCommand \GetExerciseProperty {m} - { \xsim_get_property:oon {\ExerciseType} {\ExerciseID} {#1} } - -\NewExpandableDocumentCommand \GetExerciseAliasProperty {m} - { - \xsim_get_property:oof - {\ExerciseType} - {\ExerciseID} - { \xsim_property_alias:n {#1} } - } - -\NewDocumentCommand \GetExercisePropertyTF {m+m+m} - { - \xsim_get_property_if_set:oonTF {\ExerciseType} {\ExerciseID} {#1} - {#2} - {#3} - } - -\NewDocumentCommand \GetExercisePropertyT {m+m} - { \GetExercisePropertyTF {#1} {#2} {} } -\NewDocumentCommand \GetExercisePropertyF {m+m+m} - { \GetExercisePropertyTF {#1} {} {#2} } - -\NewExpandableDocumentCommand \GetExerciseIdForProperty {mm} - { \xsim_get_id_for_property:nn {#1} {#2} } - -\NewExpandableDocumentCommand \GetExerciseTypeForProperty {mm} - { \xsim_get_type_for_property:nn {#1} {#2} } - -\NewExpandableDocumentCommand \IfExerciseBooleanPropertyTF {+m+m+m} - { - \xsim_if_boolean_property:oonTF {\ExerciseType} {\ExerciseID} {#1} - {#2} - {#3} - } - -\NewExpandableDocumentCommand \IfExerciseBooleanPropertyT {+m+m} - { \IfExerciseBooleanPropertyTF {#1} {#2} {} } -\NewExpandableDocumentCommand \IfExerciseBooleanPropertyF {+m+m} - { \IfExerciseBooleanPropertyTF {#1} {} {#2} } - -\NewDocumentCommand \SaveExerciseProperty {mm} - { \xsim_save_property:xxnN {\ExerciseType} {\ExerciseID} {#1} #2 } - -\NewDocumentCommand \GlobalSaveExerciseProperty {mm} - { \xsim_gsave_property:xxnN {\ExerciseType} {\ExerciseID} {#1} #2 } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \DeclareExerciseParameter {st!m} - { - \IfBooleanTF {#1} % fixed - { - \IfBooleanTF {#2} % mandatory - { \xsim_declare_parameter:nnn {true} {true} {#3} } - { \xsim_declare_parameter:nnn {true} {false} {#3} } - } - { - \IfBooleanTF {#2} % mandatory - { \xsim_declare_parameter:nnn {false} {true} {#3} } - { \xsim_declare_parameter:nnn {false} {false} {#3} } - } - } - -\NewExpandableDocumentCommand \GetExerciseParameter {m} - { \xsim_get_parameter:on {\ExerciseType} {#1} } - -\NewDocumentCommand \SetExerciseParameter {mmm} - { \xsim_set_parameter:nnn {#1} {#2} {#3} } - -\NewDocumentCommand \SetExerciseParameters {mm} - { \xsim_set_parameters:nn {#1} {#2} } - -\NewExpandableDocumentCommand \GetExerciseName {} - { - \IfInsideSolutionTF - { \GetExerciseParameter {solution-name} } - { \GetExerciseParameter {exercise-name} } - } - -\NewExpandableDocumentCommand \GetExerciseHeadingF {m} - { - \IfInsideSolutionTF - { - \IfExerciseParameterSetTF {solution-heading} - { \GetExerciseParameter {solution-heading} } - {#1} - } - { - \IfExerciseParameterSetTF {exercise-heading} - { \GetExerciseParameter {exercise-heading} } - {#1} - } - } - -\NewDocumentCommand \GetExerciseBody {m} - { \xsim_input:oon { \ExerciseType } { \ExerciseID } {#1} } - -\NewExpandableDocumentCommand \IfExerciseParameterSetTF {+m+m+m} - { \xsim_if_parameter_set:nnTF {\ExerciseType} {#1} {#2} {#3} } - -\NewExpandableDocumentCommand \IfExerciseParameterSetT {+m+m} - { \IfExerciseParameterSetTF {#1} {#2} {} } - -\NewExpandableDocumentCommand \IfExerciseParameterSetF {+m+m} - { \IfExerciseParameterSetTF {#1} {} {#2} } - -\NewExpandableDocumentCommand \ExerciseParameterIfSetTF {+m+m+m+m} - { \xsim_if_parameter_set:nnTF {#1} {#2} {#3} {#4} } - -\NewExpandableDocumentCommand \ExerciseParameterIfSetT {+m+m+m} - { \ExerciseParameterIfSetTF {#1} {#2} {#3} {} } - -\NewExpandableDocumentCommand \ExerciseParameterIfSetF {+m+m+m} - { \ExerciseParameterIfSetTF {#1} {#2} {} {#3} } - -\NewDocumentCommand \GetExerciseParameterTF {m+m+m} - { \xsim_get_parameter_if_set:onTF {\ExerciseType} {#1} {#2} {#3} } - -\NewDocumentCommand \GetExerciseParameterT {m+m} - { \GetExerciseParameterTF {#1} {#2} {} } - -\NewDocumentCommand \GetExerciseParameterF {m+m+m} - { \GetExerciseParameterTF {#1} {} {#2} } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \ExercisePropertyIfSetTF {mmm+m+m} - { \xsim_if_property_set:nnnTF {#1} {#2} {#3} {#4} {#5} } - -\NewDocumentCommand \ExercisePropertyIfSetT {mmm+m} - { \ExercisePropertyIfSetTF {#1} {#2} {#3} {#4} {} } - -\NewDocumentCommand \ExercisePropertyIfSetF {mmm+m} - { \ExercisePropertyIfSetTF {#1} {#2} {#3} {} {#4} } - -\NewExpandableDocumentCommand \ExercisePropertyGet {mmm} - { \xsim_get_property:nnn {#1} {#2} {#3} } - -\NewExpandableDocumentCommand \ExercisePropertyGetAlias {mm} - { \xsim_get_property:nnf {#1} {#2} { \xsim_property_alias:n {#1} } } - -\NewDocumentCommand \ExercisePropertySave {mmmm} - { \xsim_save_property:nnnN {#1} {#2} {#3} #4 } - -\NewDocumentCommand \ExercisePropertyGlobalSave {mmmm} - { \xsim_gsave_property:nnnN {#1} {#2} {#3} #4 } - -\NewExpandableDocumentCommand \ExerciseParameterGet {mm} - { \xsim_get_parameter:nn {#1} {#2} } - -% ---------------------------------------------------------------------------- - -\NewExpandableDocumentCommand \XSIMtranslate {m} - { \xsim_translate:n {#1} } - -\NewExpandableDocumentCommand \XSIMexpandcode {+m} - { \use:e {#1} } - -\NewExpandableDocumentCommand \XSIMmixedcase {m} - { \tl_mixed_case:f {#1} } - -\NewDocumentCommand \XSIMputright {mm} - { \tl_put_right:Nn #1 {#2} } - -\NewExpandableDocumentCommand \XSIMifeqTF {+m+m+m+m} - { \tl_if_eq:ffTF {#1} {#2} {#3} {#4} } - -\NewExpandableDocumentCommand \XSIMifeqT {+m+m+m} - { \XSIMifeqTF {#1} {#2} {#3} {} } - -\NewExpandableDocumentCommand \XSIMifeqF {+m+m+m} - { \XSIMifeqTF {#1} {#2} {} {#3} } - -\NewExpandableDocumentCommand \XSIMifblankTF {+m+m+m} - { \tl_if_blank:fTF {#1} {#2} {#3} } - -\NewExpandableDocumentCommand \XSIMifblankT {+m+m} - { \XSIMifblankTF {#1} {#2} {} } - -\NewExpandableDocumentCommand \XSIMifblankF {+m+m} - { \XSIMifblankTF {#1} {} {#2} {} } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \DeclareExerciseGoal {m} - { \xsim_declare_exercise_goal:n {#1} } -\@onlypreamble \DeclareExerciseGoal - -\NewDocumentCommand \IfExerciseGoalTF {mm+m+m} - { - \xsim_if_goal_value:xxnnTF - {\ExerciseType} {\ExerciseID} {#1} - {#2} - {#3} {#4} - } - -\NewDocumentCommand \IfExerciseGoalT {mm+m} - { \IfExerciseGoalTF {#1} {#2} {#3} {} } - -\NewDocumentCommand \IfExerciseGoalF {mm+m} - { \IfExerciseGoalTF {#1} {#2} {} {#3} } - -\NewDocumentCommand \IfExerciseGoalSingularTF {mmm} - { \IfExerciseGoalTF {#1} {=1} {#2} {#3} } - -\NewDocumentCommand \IfExerciseGoalSingularT {mm} - { \IfExerciseGoalT {#1} {=1} {#2} } - -\NewDocumentCommand \IfExerciseGoalSingularF {mm} - { \IfExerciseGoalF {#1} {=1} {#2} } - -\NewDocumentCommand \IfExerciseTypeGoalsSumTF {mmm+m+m} - { \xsim_if_goals_sum:nnnTF {#1} {#2} {#3} {#4} {#5} } - -\NewDocumentCommand \IfExerciseTypeGoalsSumT {mmm+m} - { \IfExerciseTypeGoalsSumTF {#1} {#2} {#3} {#4} {} } - -\NewDocumentCommand \IfExerciseTypeGoalsSumF {mmm+m} - { \IfExerciseTypeGoalsSumTF {#1} {#2} {#3} {} {#4} } - -\NewDocumentCommand \IfExerciseGoalsSumTF {mm+m+m} - { \xsim_if_total_goals_sum:nnTF {#1} {#2} {#3} {#4} } - -\NewDocumentCommand \IfExerciseGoalsSumT {mm+m} - { \IfExerciseGoalsSumTF {#1} {#2} {#3} {} } - -\NewDocumentCommand \IfExerciseGoalsSumF {mm+m} - { \IfExerciseGoalsSumTF {#1} {#2} {} {#3} } - -\NewDocumentCommand \TotalExerciseTypeGoal {mmmm} - { \xsim_print_goal_sum:nnnn {#1} {#2} {#3} {#4} } - -\NewDocumentCommand \TotalExerciseTypeGoals {mmmm} - { \xsim_print_goals_sum:nnnn {#1} {#2} {#3} {#4} } - -\NewDocumentCommand \TotalExerciseGoal {mmm} - { \xsim_print_total_goal_sum:nnn {#1} {#2} {#3} } - -\NewDocumentCommand \TotalExerciseGoals {mmm} - { \xsim_print_total_goals_sum:nnn {#1} {#2} {#3} } - -\NewDocumentCommand \AddtoExerciseTypeGoal {mmmm} - { \xsim_addto_goal:nnnn {#1} {#2} {#3} {#4} } - -\NewDocumentCommand \AddtoExerciseGoal {mm} - { \xsim_addto_goal:xxnn {\ExerciseType} {\ExerciseID} {#1} {#2} } - -\NewDocumentCommand \ExerciseGoalValuePrint {mmm} - { \xsim_print_goal:nnn {#1} {#2} {#3} } - -\NewDocumentCommand \AddtoExerciseTypeGoalPrint {mmmmmm} - { - \xsim_addto_goal:nnnn {#1} {#2} {#3} {#4} - \xsim_print_goal:nnn {#4} {#5} {#6} - } - -\NewDocumentCommand \AddtoExerciseGoalPrint {mmmm} - { - \xsim_addto_goal:xxnn {\ExerciseType} {\ExerciseID} {#1} {#2} - \xsim_print_goal:nnn {#2} {#3} {#4} - } - -% ---------------------------------------------------------------------------- -\NewDocumentCommand \DeclareGradeDistribution {m} - { \xsim_declare_relative_grades:n {#1} } - -\NewDocumentCommand \GetGradeRequirementForGoal {mmmm} - { \xsim_get_grade_goal:nnnn {#1} {#2} {#3} {#4} } - -\NewDocumentCommand \GetGradeRequirementForGoals {mmmm} - { \xsim_get_grade_requirement:nnnn {#1} {#2} {#3} {#4} } - -\NewDocumentCommand \GetGradeRequirement {mmm} - { \xsim_get_absolute_grade_requirement:nnn {#1} {#2} {#3} } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \DeclareExerciseTagging {m} - { \xsim_new_tag_type:n {#1} } -\@onlypreamble \DeclareExerciseTagging - -\NewDocumentCommand \ProvideExerciseTagging {m} - { - \xsim_if_tag_type_exist:nTF {#1} - { \msg_warning:nnn {xsim} {tag-exists} {#1} } - { \xsim_new_tag_type:n {#1} } - } - -\NewDocumentCommand \ForEachExerciseTag {m+m} - { \xsim_foreach_exercise_tag:oonn {\ExerciseType} {\ExerciseID} {#1} {#2} } - -\NewDocumentCommand \ListExerciseTags {mm} - { \xsim_exercise_tags_use:oonn {\ExerciseType} {\ExerciseID} {#1} {#2} } - -\NewDocumentCommand \UseExerciseTags {mmmm} - { - \xsim_exercise_tags_use:oonnnn - {\ExerciseType} - {\ExerciseID} - {#1} - {#2} - {#3} - {#4} - } - -\NewDocumentCommand \IfExerciseTagSetTF {m+m+m} - { \xsim_if_tags_value:nTF {#1} {#2} {#3} } -\NewDocumentCommand \IfExerciseTagSetT {m+m} - { \xsim_if_tags_value:nT {#1} {#2} } -\NewDocumentCommand \IfExerciseTagSetF {m+m} - { \xsim_if_tags_value:nF {#1} {#2} } - -\NewDocumentCommand \IfExerciseTopicSetTF {m+m+m} - { \xsim_if_topic_value:nTF {#1} {#2} {#3} } -\NewDocumentCommand \IfExerciseTopicSetT {m+m} - { \xsim_if_topic_value:nT {#1} {#2} } -\NewDocumentCommand \IfExerciseTopicSetF {m+m} - { \xsim_if_topic_value:nF {#1} {#2} } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \XSIMatbegindocument {+m} - { \xsim_at_begin_document:n {#1} } - -\NewDocumentCommand \XSIMatenddocument {+m} - { \xsim_at_end_document:n {#1} } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \ForEachPrintedExerciseByType {+m} - { \xsim_foreach_exercise_type_id:nn {print} {#1} } - -\NewDocumentCommand \ForEachPrintedExerciseByID {+m} - { \xsim_foreach_exercise_id_type:nn {print} {#1} } - -\NewDocumentCommand \ForEachUsedExerciseByType {+m} - { \xsim_foreach_exercise_type_id:nn {used} {#1} } - -\NewDocumentCommand \ForEachUsedExerciseByID {+m} - { \xsim_foreach_exercise_id_type:nn {used} {#1} } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \DeclareExerciseTranslations {mm} - { \xsim_declare_translations:nn {#1} {#2} } -\@onlypreamble \DeclareExerciseTranslations - -\NewDocumentCommand \DeclareExerciseTranslation {mmm} - { \xsim_declare_translation:nnn {#1} {#2} {#3} } -\@onlypreamble \DeclareExerciseTranslation - -\NewDocumentCommand \ForEachExerciseTranslation {+m} - { \xsim_for_all_translations_do:n {#1} } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \DeclareExerciseCollection {m} - { \xsim_new_collection:n {#1} } -\@onlypreamble \DeclareExerciseCollection - -\NewDocumentCommand \collectexercisestype {mm} - { \xsim_start_collection:nn {#1} {#2} } - -\NewDocumentCommand \collectexercises {m} - { \xsim_start_collection:n {#1} } - -\NewDocumentCommand \collectexercisesstop {m} - { \xsim_stop_collection:n {#1} } - -\NewDocumentCommand \printcollection {O{}m} - { \xsim_print_collection:nn {#1} {#2} } - -\NewDocumentCommand \printrandomexercises {O{}m} - { - \group_begin: - \keys_set:nn {xsim/random} {#1} - \xsim_print_random_list:VnN - \l_xsim_random_collection_tl - {#2} - \l_xsim_random_exclude_list_clist - \group_end: - } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \blank {som} - { - \group_begin: - \IfNoValueF {#2} { \keys_set:nn {xsim/blank} {#2} } - \mode_if_vertical:TF - { - \IfBooleanTF {#1} - { \xsim_blank:n {#3} } - { - \bool_if:NT \l__xsim_blank_linespread_bool - { \linespread { \l__xsim_blank_linespread_tl } \selectfont } - \noindent \null \xsim_blank:n {#3} \par - } - } - { \xsim_blank:n {#3} } - \group_end: - } - -\NewDocumentCommand \examspace { sm } - { - \IfBooleanTF {#1} - { \xsim_examspace:nn { \c_true_bool } {#2} } - { \xsim_examspace:nn { \c_false_bool } {#2} } - } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \gradingtable {O{}} - { - \group_begin: - \keys_set:nn {xsim/grading-table} {#1} - \xsim_setup_template:nVn {table} \l_xism_grading_table_template_tl - { - \providecommand* \ExerciseTableCode {} - \providecommand* \ExerciseTableType [1] {} - \providecommand* \ExerciseType {} - \tl_set_eq:NN \ExerciseType \l_xism_grading_table_exercise_type_tl - \renewcommand* \ExerciseTableCode {} - \renewcommand* \ExerciseTableType [1] - { \XSIMifblankTF { \ExerciseType } {##1} { \ExerciseType } } - } - \xsim_use_template:nV {table} \l_xism_grading_table_template_tl - \group_end: - } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \XSIMprint {mO{}mm} - { \xsim_insert:nenn {#3} { \xsim_normalize_id:n {#4} } {#2} {#1} } - -\NewDocumentCommand \XSIMxprint {mO{}mm} - { \xsim_insert:xxnn {#3} { \xsim_normalize_id:e {#4} } {#2} {#1} } - -\NewDocumentCommand \printexercise {O{}mm} - { - \clist_map_inline:nn {#3} - { \xsim_insert:nenn {#2} { \xsim_normalize_id:n {##1} } {#1} {exercise} } - } - -\NewDocumentCommand \xprintexercise {O{}mm} - { - \clist_map_inline:nn {#3} - { \xsim_insert:xxnn {#2} { \xsim_normalize_id:e {##1} } {#1} {exercise} } - } - -\NewDocumentCommand \printsolution {O{}mm} - { - \clist_map_inline:nn {#3} - { \xsim_insert:nenn {#2} { \xsim_normalize_id:n {##1} } {#1} {solution} } - } - -\NewDocumentCommand \xprintsolution {O{}mm} - { - \clist_map_inline:nn {#3} - { \xsim_insert:xxnn {#2} { \xsim_normalize_id:e {##1} } {#1} {solution} } - } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \printsolutionstype {sO{}m} - { - \IfBooleanTF {#1} - { \xsim_print_type_solutions:nnn { \c_true_bool } {#2} {#3} } - { \xsim_print_type_solutions:nnn { \c_false_bool } {#2} {#3} } - } - -\NewDocumentCommand \printsolutions {sO{}} - { - \IfBooleanTF {#1} - { \xsim_print_all_solutions_per_type:nn { \c_true_bool } {#2} } - { \xsim_print_all_solutions_per_type:nn { \c_false_bool } {#2} } - } - -\NewDocumentCommand \printallsolutions {sO{}} - { - \IfBooleanTF {#1} - { \xsim_print_all_solutions_per_id:nn { \c_true_bool } {#2} } - { \xsim_print_all_solutions_per_id:nn { \c_false_bool } {#2} } - } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \printforexercises {sO{}+mO{}} - { - \IfBooleanTF {#1} - { - \xsim_foreach_exercise_type:n - { \xsim_print_type_code:nnnnn { \c_true_bool } {#2} {#4} {##1} {#3} } - } - { - \xsim_foreach_exercise_type:n - { \xsim_print_type_code:nnnnn { \c_false_bool } {#2} {#4} {##1} {#3} } - } - } - -% ---------------------------------------------------------------------------- - -\NewDocumentCommand \xsimsetup {+m} - { \xsim_setup:n {#1} } - -% ---------------------------------------------------------------------------- -\NewExpandableDocumentCommand \XSIMifchapterTF {+m+m} - { \xsim_if_chapter:TF {#1} {#2} } - -\NewExpandableDocumentCommand \XSIMifchapterT {+m} - { \xsim_if_chapter:T {#1} } - -\NewExpandableDocumentCommand \XSIMifchapterF {+m} - { \xsim_if_chapter:F {#1} } - -% ---------------------------------------------------------------------------- -\file_input_stop: |