I struggled a while to understand how to use \prg_whiledo:nT.
I think I figured it out, but it seems to be rather clumsy:
\RequirePackage{l3prg}
\ExplSyntaxOn
\tlp_new:N \a_tlp
\int_new:N \a_int
\int_zero:N \a_int
\prg_whiledo:nT {
\tlp_set:Nx \a_tlp {
\predicate_p:n {
\int_compare_p:nNn \a_int < 4 &&
\c_true % some complex tests here
}
}
\exp_after:NN \tlp_if_eq:NNT \a_tlp
}{
\io_put_term:x{Loop~ \int_use:N \a_int}
\int_incr:N \a_int
}
\stop
Is this the way how to use it? Or did I miss something?
In xtheorem.sty it is used as:
\prg_whiledo:nT{
\int_compare:nNnT \etex_lastnodetype:D = \c_eleven
}{\tex_unskip:D}
And actually, this was the way it expected it to work? But
it doesn't work, does it? I didn't run xtheorem.sty, though.
Ciao
Andreas