[log in to unmask]" type="cite">On 26/08/2015 12:34, Bruno Le Floch wrote:Thank you for the responses. I was remiss. I didn't make it clear that looking inside braced groups was not the concern, rather to replace (or remove) a list of tokens that might include braced groups. I've been reworking the code of a package that turns latex expressions into expressions that can be digested by l3fp. In fact, this particular issue has now been reworked away, but the problem had been to remove a varying expression, e.g. \sqrt{123} or \frac{1-x}{1+x}, from the initial segment of a formula. Rescanning { and } to "other" allowed me to use \tl_remove:Nn successfully. Although I can think of other means of doing this, they seem cumbersome by comparison. Andrew\tl_set:No \l_result_tl { \use_none:nn \sqrt{123} + 123 } could be a better approach in many cases, no? Bruno
[log in to unmask]" type="cite">OK, at first glance I was a bit overwhelmed but having had a little time to see what you are doing, this is helpful.I'm not quite clear if the outcome needs to be that the calculation remains the same :-) For the simple case of 'drop the \sqrt', presumably some wrapper is needed \cs_new_protected:Npn \my_calc:n #1 { \tl_set:Nn \l__my_tl {#1} \tl_replace_all:Nnn \l__my_tl { \sqrt } { \use_none:n } % Further replacements \tl_set:Nx \l__my_tl { \l__my_tl } } I'd though probably go for something like \cs_new_protected:Npn \my_calc:n #1 { \group_begin: \cs_set:Npn \sqrt ##1 { sqrt( ##1 ) } % Further replacements \fp_set:Nn \l__my_fp {#1} \exp_args:NNNV \group_end: \fp_set:Nn \l__my_fp \l__my_fp } i.e. set up the various TeX commands to convert expandably into their fp equivalents, then set an fp before 'smuggling' the result out the group. Depending on the exact spec these approaches could be combined: for example \frac{1-x}{1+x} clearly has to go, which might be done with \cs_set_eq:NN \frac \use_none:nn in the second approach or \tl_replace_all:Nnn \l__my_tl { \frace} { \use_none:nn } in the first. The key point is none of this needs rescanning :-) Joseph
This email has been checked for viruses by Avast antivirus software.
|