An enhanced version of the [ALinkButton] macro (see §18.7.5.3 Building an ALink button object from an ALink keyword list) parses each $$AlinkKeys list item for multiple ALink keywords, allowing you to include several keywords (separated by semicolons) in each ALinkTarget paragraph or Subject marker.
This version of the [ALinkButton] macro uses two additional macro variables:
This button macro invokes the same [ALinkButtonStart], [ALinkButtonParam], and [ALinkButtonEnd] macros described in §18.7.5.3 Building an ALink button object from an ALink keyword list:
[ALinkButton]
<$_if (Nkeys > 0)>
<$ALinkButtonStart><$$ALinkKeyItem=1><$$ALinkParamNum=1>\
<$_repeat ($$Nkeys)>\
<$$ALinkParamText=$$ALinkKeys[$$ALinkKeyItem]>\
<$$ALinkKeyItem++><$$ItemContent=$$ALinkParamText>\
<$_while ($$ItemContent contains ";")>\
<$$ALinkParamText=($$ItemContent
before ";")>\
<$$ALinkParamNum++><$ALinkButtonParam>\
<$$ItemContent=($$ItemContent
after ";")>\
<$_endwhile>
<$$ALinkParamText=$$ItemContent><$ALinkButtonParam>\
<$_endrepeat><$ALinkButtonEnd><$$ALinkParamCount=0>\
<$_endif>
See §37.6.4.3 Using loop structures for an explanation of loop controls $_repeat and $_while.
See §37.6.5 Specifying substrings in expressions for an explanation of string operators contains, before, and after.