cgnieder/xsim

xsimverb: \l_xsim_file_begin_tl is never expanded since v0.20

muzimuzhi opened this issue · 1 comments

The following example in package manual, Appendix C was broken by commit 5239682, since the argument of \XSIMsetfilebegin, which is then stored in \l_xsim_file_begin_tl, was never expanded before written to a temp file.

xsim/doc/xsim-manual.tex

Lines 2368 to 2393 in 899c94c

\documentclass{article}
\usepackage{xsimverb,listings}
\makeatletter
\NewDocumentEnvironment{example}{o}
{%
\XSIMsetfilebegin{\@percentchar\space file `\jobname.tmp'}%
\XSIMsetfileend{\@percentchar\space bye bye}%
\IfNoValueTF{#1}
{\XSIMfilewritestart*{\jobname.tmp}}
{\XSIMfilewritestart{\jobname.tmp}}%
}
{%
\XSIMfilewritestop
\lstinputlisting[language={[LaTeX]TeX}]{\jobname.tmp}%
\input{\jobname.tmp}
}
\makeatother
\begin{document}
\begin{example}
bla bla \LaTeX
\end{example}
\end{document}

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} }

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