diff options
author | Karl Berry <karl@freefriends.org> | 2020-02-23 00:33:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-02-23 00:33:45 +0000 |
commit | db10f49b4b535c1b6752e68a4ba6b0088a621067 (patch) | |
tree | fb81b92a2d0d5e7e0ab8013f65d864d85009f2ee /Master/texmf-dist/tex/latex/xsim/xsim.environments.code.tex | |
parent | 4275fd1f5f1c2cff545b6cb0d09b72312eef0d28 (diff) |
xsim (22feb20)
git-svn-id: svn://tug.org/texlive/trunk@53877 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/xsim/xsim.environments.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/xsim/xsim.environments.code.tex | 80 |
1 files changed, 57 insertions, 23 deletions
diff --git a/Master/texmf-dist/tex/latex/xsim/xsim.environments.code.tex b/Master/texmf-dist/tex/latex/xsim/xsim.environments.code.tex index 9c0c30111a0..37a3df68e99 100644 --- a/Master/texmf-dist/tex/latex/xsim/xsim.environments.code.tex +++ b/Master/texmf-dist/tex/latex/xsim/xsim.environments.code.tex @@ -48,6 +48,7 @@ \tl_new:N \l__xsim_file_path_and_name_tl \tl_new:N \l__xsim_file_name_tl \tl_new:N \l__xsim_file_extension_tl +\tl_new:N \l__xsim_solution_tl \bool_new:N \l__xsim_options_given_bool \bool_new:N \l__xsim_insert_mode_bool @@ -276,33 +277,51 @@ % #3: exercise|solution \cs_new_protected:Npn \xsim_typeset_environment:nnn #1#2#3 { + \xsim_if_exchange:nnnT {#1} {#2} {#3} + { \__xsim_set_file_signature:nnn {#1} {#2} {exercise} } \xsim_verbose:n { Typesetting~ #3~ environment~ type~ `#1'~ id~ `#2' } - \use:x + \xsim_use_hook:nnn {#1} {#3} {pre} + \xsim_use_template:nx + {begin} + { \xsim_get_parameter:nn {#1} {#3-template} } + \xsim_use_hook:nnn {#1} {#3} {begin} + \xsim_if_write_to_files:TF { - \exp_not:N \par - \xsim_use_hook:nnn {#1} {#3} {pre} - \xsim_use_template:nn - {begin} - { \xsim_get_parameter:nn {#1} {#3-template} } - \xsim_use_hook:nnn {#1} {#3} {begin} - \xsim_if_write_to_files:TF + \file_if_exist:nTF { \exp_not:V \l__xsim_file_path_and_name_tl } + { \file_input:n { \exp_not:V \l__xsim_file_path_and_name_tl } } { - \file_if_exist:nTF { \exp_not:V \l__xsim_file_path_and_name_tl } - { \file_input:n { \exp_not:V \l__xsim_file_path_and_name_tl } } - { - \xsim_verbose:n - { File~ `\l__xsim_file_path_and_name_tl'~ doesn't~ exist. } - } + \xsim_verbose:n + { File~ `\l__xsim_file_path_and_name_tl'~ doesn't~ exist. } } + } + { + \xsim_if_exchange:nnnTF {#1} {#2} {#3} + { \xsim_get_property:nnn {#1} {#2} {exercise-body} } { \xsim_get_property:nnn {#1} {#2} {#3-body} } - \xsim_use_hook:nnn {#1} {#3} {end} - \xsim_use_template:nn - {end} - { \xsim_get_parameter:nn {#1} {#3-template} } - \xsim_use_hook:nnn {#1} {#3} {post} - \exp_not:N \par } + \xsim_synchronize_goals:nn {#1} {#2} + \str_if_eq:nnT {#3} {exercise} + { \xsim_update_goals:nn {#1} {#2} } + \xsim_use_hook:nnn {#1} {#3} {end} + \xsim_use_template:nx + {end} + { \xsim_get_parameter:nn {#1} {#3-template} } + \xsim_use_hook:nnn {#1} {#3} {post} + } + +% #1: type +% #2: id +% #3: exercise|solution +\prg_new_conditional:Npnn \xsim_if_exchange:nnn #1#2#3 {T,F,TF} + { + \str_if_eq:nnTF {#3} {solution} + { + \xsim_if_boolean_property:nnnTF {#1} {#2} {solution} + { \prg_return_true: } + { \prg_return_false: } + } + { \prg_return_false: } } % #1: type @@ -334,7 +353,9 @@ % #4: exercise|solution \cs_new_protected:Npn \xsim_insert:nnnn #1#2#3#4 { - \xsim_if_exist:nnnTF {#1} {#2} {#4} + \xsim_if_exchange:nnnTF {#1} {#2} {#4} + { \xsim_if_exist:nnnTF {#1} {#2} {exercise} } + { \xsim_if_exist:nnnTF {#1} {#2} {#4} } { \xsim_verbose:n { Inserting~ #4~ type~ `#1'~ id~ `#2'. } @@ -355,6 +376,8 @@ section-value = \the\value{section} , section = \thesection } + \xsim_synchronize_goals:nn {#1} {#2} + \xsim_update_goals:nn {#1} {#2} } \xsim_if_property_exist:nT {chapter} { @@ -414,10 +437,16 @@ \group_begin: \xsim_if_write_to_files:TF { - \__xsim_set_file_signature:nnn {#1} {#2} {#3} + \xsim_if_exchange:nnnTF {#1} {#2} {#3} + { \__xsim_set_file_signature:nnn {#1} {#2} {exercise} } + { \__xsim_set_file_signature:nnn {#1} {#2} {#3} } \file_input:n { \l__xsim_file_path_and_name_tl } } - { \xsim_get_property:nnn {#1} {#2} {#3-body} } + { + \xsim_if_exchange:nnnTF {#1} {#2} {#3} + { \xsim_get_property:nnn {#1} {#2} {exercise-body} } + { \xsim_get_property:nnn {#1} {#2} {#3-body} } + } \group_end: } \cs_generate_variant:Nn \xsim_input:nnn {oo} @@ -492,3 +521,8 @@ 2019/02/17 - fix issue #43 2019/10/03 - add possibility to save environment bodies to property list +2020/02/15 - remove spurious \par at the beginning and end of typeset + exercises and solutions +2020/02/19 - implement issue #33 (solution property) +2020/02/20 - fix issue #27 + - implement issue #2 |