Subject: | |
From: | |
Reply To: | |
Date: | Tue, 1 Jan 2008 17:01:02 +0100 |
Content-Type: | text/plain |
Parts/Attachments: |
|
|
On Mon, 31 Dec 2007 16:44:35 +0100, Andreas Matthias wrote:
Hi Andreas,
> 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
This last line should just be
\bool_if:NT \a_tlp
and I can see we left out \bool_set:Nn functions which evaluate such
predicate expressions. It would make sense for such a function to work
that way, wouldn't it?
The entire test could be simplified to
\prg_whiledo:nT {
\predicate:nT{
\int_compare_p:nNn \a_int < 4 &&
\c_true % some complex tests here
}
}{
\io_put_term:x{Loop~ \int_use:N \a_int}
\int_incr:N \a_int
}
> 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.
The idea behind these generic constructs is to have input as
\prg_whiledo:nT {% or F
<various stuff>
\some_test_function:..T % or :..F
}
{ <true code> }
So the construction in xtheorem.sty ought to work. (It should be replaced
by a simpler \int_whiledo:nNnT but that is not important.)
--
Morten
|
|
|