summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/xsim/xsim.environments.code.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-02-23 00:33:45 +0000
committerKarl Berry <karl@freefriends.org>2020-02-23 00:33:45 +0000
commitdb10f49b4b535c1b6752e68a4ba6b0088a621067 (patch)
treefb81b92a2d0d5e7e0ab8013f65d864d85009f2ee /Master/texmf-dist/tex/latex/xsim/xsim.environments.code.tex
parent4275fd1f5f1c2cff545b6cb0d09b72312eef0d28 (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.tex80
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