<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DE-CH" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Ok, in lua it’s indeed simple:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">\startluacode<o:p></o:p></p>
<p class="MsoNormal">list = {"foo", "bar", "baz"}<o:p></o:p></p>
<p class="MsoNormal">\stopluacode<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">\starttext<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">\startluacode<o:p></o:p></p>
<p class="MsoNormal">for i, v in ipairs(list) do<o:p></o:p></p>
<p class="MsoNormal">    if i == #list then<o:p></o:p></p>
<p class="MsoNormal">        tex.print("last:")<o:p></o:p></p>
<p class="MsoNormal">        tex.print(v)<o:p></o:p></p>
<p class="MsoNormal">    elseif i == 1 then<o:p></o:p></p>
<p class="MsoNormal">        tex.print("first:")<o:p></o:p></p>
<p class="MsoNormal">        tex.print(v)<o:p></o:p></p>
<p class="MsoNormal">    else<o:p></o:p></p>
<p class="MsoNormal">        tex.print("in between:")<o:p></o:p></p>
<p class="MsoNormal">        tex.print(v)<o:p></o:p></p>
<p class="MsoNormal">    end<o:p></o:p></p>
<p class="MsoNormal">end<o:p></o:p></p>
<p class="MsoNormal">\stopluacode<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">\stoptext<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="FR-CH">But, it’d still love to hear whether there is a solution on the tex side.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">Denis<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="DE" style="mso-fareast-language:DE-CH">Von:</span></b><span lang="DE" style="mso-fareast-language:DE-CH"> Maier, Denis Christian (UB)
<br>
<b>Gesendet:</b> Montag, 2. Mai 2022 09:15<br>
<b>An:</b> 'mailing list for ConTeXt users' <ntg-context@ntg.nl><br>
<b>Betreff:</b> process list items differently depending on position in list<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I need to process a comma separated list, and adapt the formatting according to the position of an item in the list (example below). Expected output would be:<o:p></o:p></p>
<p class="MsoNormal"><span lang="FR-CH">{\bf foo<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">}, {\em bar} and baz.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">Is that possible? </span>Can I somehow get the position of an item in the list? (My understanding is that \processcommalist and \processcommacommand apply a command to each list item, but there is no such thing as «position
 in the list»... I hope I’m wrong here.)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Or is that something where using Lua would be a better choice?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best,<o:p></o:p></p>
<p class="MsoNormal">Denis<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></p>
<p class="MsoNormal">\define[1]\command<o:p></o:p></p>
<p class="MsoNormal">  {#1}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">\define\somelist<o:p></o:p></p>
<p class="MsoNormal">  {foo, bar, baz}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">\starttext<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">  \processcommacommand<o:p></o:p></p>
<p class="MsoNormal">    [\somelist]<o:p></o:p></p>
<p class="MsoNormal">    \command<o:p></o:p></p>
<p class="MsoNormal">                <o:p></o:p></p>
<p class="MsoNormal">\stoptext<o:p></o:p></p>
<p class="MsoNormal">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>