Aby uzyskać numerowaną listę elementów należy użyć tzw. rekurencji, czyli wywoływać szablon tyle razy, ile elementów jest na liście aż do opróżnienia listy. Przy każdym wywołaniu należy zwiększać numer pozycji, korzystając z makr dostępnych w programie. W tym celu będą potrzebne dwa szablony podręczne: pierwszy "rozruchowy" (niech nazywa się on atn) i drugi wywoływany rekurencyjnie (niech ma nazwę atn2).
Szablon atn wstawia listę załączników do zmiennej %_Att i następnie, jeśli ta lista nie jest pusta, dopisuje do niej numer początkowy (tutaj 1) i wywołuje szablon rekurencyjny atn2. Szablon atn ma następującą zawartość:
%_Att(%ATTACHMENTS)%-
%_Any_Att="%SETPATTREGEXP='^\s*<(brak|none)>\s*\Z'%-
%REGEXPMATCH(%_Att)"%-
%-
%IF:"%_Any_Att"==""%-
:%-
"%_Att_Items='1:%_Att'%-
Lista załączników:
%QINCLUDE(atn2)"%-
Szablon rekurencyjny atn2 wywołuje sam siebie tyle razy, ile załączników jest na liście, zwiększając przy każdym wywołaniu numer porządkowy i usuwając z listy użytą nazwę załącznika. Działanie kończy się, gdy na liście nie będzie żadnego załącznika. Szablon rekurencyjny atn2 jest następujący:
%IF:"%-
%SETPATTREGEXP='(?i)(,|;)'%REGEXPMATCH(%_Att_Items)"<>""%-
:"%-
%SETPATTREGEXP='(?i)^(\d+):\s*(.*?)\s*(,|;)'%-
%REGEXPBLINDMATCH(%_Att_Items)%-
%SUBPATT(1)) %SUBPATT(2) -
%-
%_Curr_No='%SETPATTREGEXP=""^(\d+):""%REGEXPMATCH(%_Att_Items)'%-
%_Next_No(%CALC='1+%_Curr_No')%-
%SETPATTREGEXP='(?i)^\d+:.*?(;|,)\s*(.*)\s*\Z'%-
%REGEXPBLINDMATCH(%_Att_Items)%-
%_Att_Items(%_Next_No:%SUBPATT(2))%-
%-
%QINCLUDE(atn2)"%-
:"%-
%SETPATTREGEXP='(?i)^(\d+):\s*(.*?)\s*\Z'%-
%REGEXPBLINDMATCH(%_Att_Items)%-
%SUBPATT(1)) %SUBPATT(2) -"%-
Wstawienie listy na żądane miejsce jest bardzo proste: wystarczy w tym miejscu wpisać wywołanie pierwszego szablonu, używając makra %QINCLUDE(atn). Można to także robić ad hoc, wpisując nazwę szablonu i naciskając kombinację klawiszy CTRL+SPACJA.