cgnieder / xsim

eXercise Sheets IMproved
65 stars 20 forks source link

xsimverb: \l_xsim_file_begin_tl is never expanded since v0.20 #84

Closed muzimuzhi closed 3 years ago

muzimuzhi commented 3 years ago

The following example in package manual, Appendix C was broken by commit https://github.com/cgnieder/xsim/commit/5239682803f77f8f86de6a09068b1f357cb232a1, since the argument of \XSIMsetfilebegin, which is then stored in \l_xsim_file_begin_tl, was never expanded before written to a temp file. https://github.com/cgnieder/xsim/blob/899c94c49715cc2487be98361bbf020de21281d6/doc/xsim-manual.tex#L2368-L2393

To be consistent with the usages of \l_xsim_file_(begin/end)_tl in xsim itself, one possible proposal could be

diff --git a/code/xsimverb.sty b/code/xsimverb.sty
index 2945542..e8ea801 100644
--- a/code/xsimverb.sty
+++ b/code/xsimverb.sty
@@ -294,10 +294,10 @@
   { \xsim_file_write_stop: }

 \NewDocumentCommand \XSIMsetfilebegin {+m}
-  { \tl_set:Nn \l_xsim_file_begin_tl {#1} }
+  { \tl_set:Nx \l_xsim_file_begin_tl {#1} }

 \NewDocumentCommand \XSIMsetfileend {+m}
-  { \tl_set:Nn \l_xsim_file_end_tl {#1} }
+  { \tl_set:Nx \l_xsim_file_end_tl {#1} }

 \NewDocumentCommand \XSIMgobblechars {m}
   { \int_set:Nn \l_xsim_line_gobble_int {#1} }
cgnieder commented 3 years ago

Thanks. Fixed by introducing variants that expand their argument first.