On 11/09/2015 11:17, Alexander Grahn wrote:
> On Fri, Sep 11, 2015 at 11:06:08AM +0100, Joseph Wright wrote:
>> On 11/09/2015 10:46, Alexander Grahn wrote:
>>> consider the following example:
>>>
>>> \documentclass{article}
>>> \usepackage{expl3}
>>>
>>> \begin{document}
>>> \ExplSyntaxOn
>>> \clist_set:Nn\l_tmpa_clist{,,foo,bar,}
>>> \typeout{\clist_count:N\l_tmpa_clist} %expected: 5, I get 2.
>>> \typeout{\clist_item:Nn\l_tmpa_clist{3}} %expected: `foo`, I get `'.
>>> \typeout{\clist_item:Nn\l_tmpa_clist{4}} %expected: `bar`, I get `'.
>>> \ExplSyntaxOff
>>> \end{document}
>>>
>>> Why does \clist_set:Nn ignore empty items when initialising a clist
>>> variable from a token list? Is this intended behaviour? Is there a
>>> work-around?
>
>> This is by-design. Comma lists can't contain empty items, commas, etc.:
>> sequences can. The reason is comma lists are 'close' to the user level,
>> and there stray empty entries are normally best ignored.
>
> This is very unfortunate, because I want to be able to correctly process
> user input of comma sparated items which /may/ contain empty items.
>
> With \@for from LaTeX2e I can easily process such input properly:
>
> \documentclass{article}
>
> \begin{document}
> \makeatletter
> \@for\listitem:=,,foo,bar,\do{
> \typeout{item:\listitem}
> }
> \makeatother
> \end{document}
>
> Now I am looking for an L3 equivalent of \@for.
>
> Alexander
What's the real-world use case?
Joseph
|