diff options
author | Karl Berry <karl@freefriends.org> | 2015-04-18 22:52:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-04-18 22:52:45 +0000 |
commit | 16aa5a7c87f18a2483d0d61795899f886781b51c (patch) | |
tree | 1d72f00b2a4185425393598402fe055c61d1de58 /Master/texmf-dist/tex/context/base/strc-lst.mkvi | |
parent | e68dc4d5506d46bf72823234f902bc76d1f70352 (diff) |
context, from www.pragma-ade.com/context/beta/cont-tmf.zip (18apr15)
git-svn-id: svn://tug.org/texlive/trunk@36923 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/strc-lst.mkvi')
-rw-r--r-- | Master/texmf-dist/tex/context/base/strc-lst.mkvi | 379 |
1 files changed, 261 insertions, 118 deletions
diff --git a/Master/texmf-dist/tex/context/base/strc-lst.mkvi b/Master/texmf-dist/tex/context/base/strc-lst.mkvi index 0008f060231..556d2ab4895 100644 --- a/Master/texmf-dist/tex/context/base/strc-lst.mkvi +++ b/Master/texmf-dist/tex/context/base/strc-lst.mkvi @@ -47,7 +47,7 @@ \c!state=\v!start, \c!coupling=\v!off, \c!criterium=\v!local, - \c!number=\zerocount, + \c!reference=,% was number which was sort of obsolete \c!width=3\emwidth, %\c!maxwidth=, \c!distance=\zeropoint, @@ -94,6 +94,8 @@ \expandafter\secondoftwoarguments \fi} +\let\doiflistelse\doifelselist + %D Regular list entries are bound to a specific location in order to %D get the right pagenumber etc.\ associated. When pushing something %D inbetween (in mkiv) it ends up directtly in the list. This is the @@ -125,37 +127,48 @@ \def\strc_lists_inject_nop[#dummya][#dummyb]% {\endgroup} -\def\strc_lists_inject_yes[#settings][#userdata]% +\unexpanded\def\strc_lists_inject_enhance#listindex#internal% + {\normalexpanded{\ctxlatecommand{enhancelist(#listindex)}}} + +\unexpanded\def\strc_lists_inject_yes[#settings][#userdata]% can be used directly {\setupcurrentlist[\c!type=userdata,\c!location=\v!none,#settings]% grouped (use \let... \edef\p_location{\listparameter\c!location}% \setnextinternalreference - \edef\currentlistnumber{\ctxcommand{addtolist{ - references = { - internal = \nextinternalreference, - block = "\currentsectionblock", % handy for lists, like bibl - section = structures.sections.currentid(), - % location = "\p_location", - }, - metadata = { - kind = "\listparameter\c!type", - name = "\currentlist", - level = structures.sections.currentlevel(), - catcodes = \the\catcodetable, - }, - userdata = \!!bs\detokenize{#userdata}\!!es % will be converted to table at the lua end - }}}% + \scratchcounter\clf_addtolist + references { + internal \nextinternalreference + % block {\currentsectionblock} + % section structures.sections.currentid() + % location {\p_location} + } + metadata { + kind {\listparameter\c!type} + name {\currentlist} + % level structures.sections.currentlevel() + catcodes \catcodetable + } + userdata {\detokenize\expandafter{\normalexpanded{#userdata}}} + \relax + \edef\currentlistnumber{\the\scratchcounter}% \ifx\p_location\v!here % this branch injects nodes ! - \expanded{\ctxlatecommand{enhancelist(\currentlistnumber)}}% - \ctxcommand{setinternalreference(nil,nil,\nextinternalreference)}% will change + \strc_lists_inject_enhance{\currentlistnumber}{\nextinternalreference}% + \clf_setinternalreference internal \nextinternalreference\relax % this will change \xdef\currentstructurelistattribute{\the\lastdestinationattribute}% \dontleavehmode\hbox attr \destinationattribute \lastdestinationattribute{}% todo \else % and this one doesn't - \ctxcommand{enhancelist(\currentlistnumber)}% + \clf_enhancelist\currentlistnumber\relax \fi \endgroup} +% todo: make like \strc_references_direct_full_user ... with {}{}{} + +\unexpanded\def\strc_lists_inject_direct[#tag]% [#settings][#userdata] + {\begingroup + \edef\currentlist{#tag}% + \strc_lists_inject_yes} % [#settings][#userdata] + \unexpanded\def\writebetweenlist{\dodoubleempty \strc_lists_write_between} \unexpanded\def\writedatatolist {\dotripleargument\strc_lists_write_data_to} \unexpanded\def\writetolist {\dodoubleempty \strc_lists_write_to} @@ -244,7 +257,7 @@ \strc_lists_place_current % maybe inline {#list}% {\listparameter\c!criterium}% - {\listparameter\c!number}% + {\listparameter\c!reference}% {\listparameter\c!extras}% {\listparameter\c!order}% % \stoplistreferences @@ -288,7 +301,7 @@ {\dotripleempty\strc_lists_combined_define} \def\strc_lists_combined_define[#tag][#list][#settings]% - {\definelist[#tag][\c!criterium=\v!local,\c!number=0,\c!alternative=,\c!list={#list},#settings]% inherits from root + {\definelist[#tag][\c!criterium=\v!local,\c!reference=,\c!alternative=,\c!list={#list},#settings]% inherits from root \setvalue{\e!setup #tag\e!endsetup}{\dodoubleempty\strc_lists_combined_setup [#tag]}% \setvalue{\e!place #tag}{\dodoubleempty\strc_lists_combined_place [#tag]}% \setvalue{\e!complete #tag}{\dodoubleempty\strc_lists_combined_complete[#tag]}} @@ -324,42 +337,42 @@ \def\currentstructurelistnumber{0} % injection \def\currentlistmethod {entry} % typesetting -\def\currentlistindex {0} % typesetting +\def\currentlistindex {0} % typesetting (maybe also a real counter) \def\structurelistlocation - {\ctxcommand{listlocation(\currentlistindex)}} + {\clf_listlocation\numexpr\currentlistindex\relax} \def\structurelistrealpagenumber - {\ctxcommand{listrealpage("\currentlist",\currentlistindex)}} + {\clf_listrealpage{\currentlist}\numexpr\currentlistindex\relax} \unexpanded\def\structurelistpagenumber {\dostarttagged\t!listpage\empty - \ctxcommand{listprefixedpage( - "\currentlist", - \currentlistindex, - { - separatorset = "\listparameter\c!pageprefixseparatorset", - conversionset = "\listparameter\c!pageprefixconversionset", - set = "\listparameter\c!pageprefixset", - segments = "\listparameter\c!pageprefixsegments", - connector = \!!bs\listparameter\c!pageprefixconnector\!!es, - }, - { - prefix = "\listparameter\c!pageprefix", - conversionset = "\listparameter\c!pageconversionset", - starter = \!!bs\listparameter\c!pagestarter\!!es, - stopper = \!!bs\listparameter\c!pagestopper\!!es, + \clf_listprefixedpage + {\currentlist} + \currentlistindex + { + separatorset {\listparameter\c!pageprefixseparatorset} + conversionset {\listparameter\c!pageprefixconversionset} + set {\listparameter\c!pageprefixset} + segments {\listparameter\c!pageprefixsegments} + connector {\listparameter\c!pageprefixconnector} } - )}% + { + prefix {\listparameter\c!pageprefix} + conversionset {\listparameter\c!pageconversionset} + starter {\listparameter\c!pagestarter} + stopper {\listparameter\c!pagestopper} + } + \relax \dostoptagged} \unexpanded\def\structurelistuservariable#name% {\dostarttagged\t!listdata{#name}% - \ctxcommand{listuserdata("\currentlist",\currentlistindex,"#name")}% + \clf_listuserdata{\currentlist}\currentlistindex{#name}% \dostoptagged} \def\rawstructurelistuservariable#name% - {\ctxcommand{listuserdata("\currentlist",\currentlistindex,"#name")}} + {\clf_listuserdata{\currentlist}\currentlistindex{#name}} \unexpanded\def\structurelistfirst {\structurelistuservariable\s!first } % s! \unexpanded\def\structurelistsecond{\structurelistuservariable\s!second} % s! @@ -367,63 +380,70 @@ \def\rawstructurelistfirst {\rawstructurelistuservariable\s!first } % s! % was \unexpanded \def\rawstructurelistsecond{\rawstructurelistuservariable\s!second} % s! % was \unexpanded -\unexpanded\def\doifstructurelisthaspageelse - {\ctxcommand{doiflisthaspageelse("\currentlist",\currentlistindex)}} +\unexpanded\def\doifelsestructurelisthaspage + {\clf_doifelselisthaspage{\currentlist}\numexpr\currentlistindex\relax} + +\unexpanded\def\doifelsestructurelisthasnumber + {\clf_doifelselisthasnumber{\currentlist}\numexpr\currentlistindex\relax} -\unexpanded\def\doifstructurelisthasnumberelse - {\ctxcommand{doiflisthasnumberelse("\currentlist",\currentlistindex)}} +\let\doifstructurelisthaspageelse \doifelsestructurelisthaspage +\let\doifstructurelisthasnumberelse\doifelsestructurelisthasnumber \unexpanded\def\structurelistgenerictitle {\dostarttagged\t!listcontent\empty - \ctxcommand{listtitle("\currentlist",\currentlistindex)}% + \clf_listtitle{\currentlist}\currentlistindex\relax \dostoptagged} \unexpanded\def\structurelistgenericnumber % tricky, we need to delay tagging as we have nested lua calls {\dostarttagged\t!listtag\empty - \ctxcommand{listprefixednumber("\currentlist",\currentlistindex, { - prefix = "\listparameter\c!prefix", - separatorset = "\listparameter\c!prefixseparatorset", - conversionset = "\listparameter\c!prefixconversionset", - starter = \!!bs\listparameter\c!prefixstarter\!!es, - stopper = \!!bs\listparameter\c!prefixstopper\!!es, - set = "\listparameter\c!prefixset", - segments = "\listparameter\c!prefixsegments", - connector = \!!bs\listparameter\c!prefixconnector\!!es, - }, - { - separatorset = "\listparameter\c!numberseparatorset", - conversionset = "\listparameter\c!numberconversionset", - starter = \!!bs\listparameter\c!numberstarter\!!es, - stopper = \!!bs\listparameter\c!numberstopper\!!es, - segments = "\listparameter\c!numbersegments", - } )}% + \clf_listprefixednumber + {\currentlist}% + \currentlistindex + {% + prefix {\listparameter\c!prefix}% + separatorset {\listparameter\c!prefixseparatorset}% + conversionset {\listparameter\c!prefixconversionset}% + starter {\listparameter\c!prefixstarter}% + stopper {\listparameter\c!prefixstopper}% + set {\listparameter\c!prefixset}% + segments {\listparameter\c!prefixsegments}% + connector {\listparameter\c!prefixconnector}% + }% + {% + separatorset {\listparameter\c!numberseparatorset}% + conversionset {\listparameter\c!numberconversionset}% + starter {\listparameter\c!numberstarter}% + stopper {\listparameter\c!numberstopper}% + segments {\listparameter\c!numbersegments}% + }% + \relax \dostoptagged} % TODO: pass extra tag name (contents, figures, bibliography ...) -\unexpanded\def\strc_lists_place_current#list#criterium#number#extras#order% beware, not a user command - {\dostarttagged\t!list\empty - \ctxcommand{processlist{ - names = "#list", - criterium = "#criterium", - number = "#number", - extras = "#extras", - order = "#order" - }}% +\unexpanded\def\strc_lists_place_current#list#criterium#reference#extras#order% beware, not a user command + {\dostarttaggedchained\t!list\empty\??list + \clf_processlist + names {#list} + criterium {#criterium} + reference {#reference} + extras {#extras} + order {#order} + \relax \dostoptagged} -\unexpanded\def\strc_lists_analyze#list#criterium#number% - {\ctxcommand{analyzelist{ - names = "#list", - criterium = "#criterium", - number = "#number" - }}} +\unexpanded\def\strc_lists_analyze#list#criterium#reference% + {\clf_analyzelist + names {#list} + criterium {#criterium} + reference {#reference} + \relax} -\def\firststructureelementinlist#list% - {\ctxcommand{firstinset("#list")}} +\def\firststructureelementinlist#list% expandable + {\clf_firstinset{#list}} \def\structurelistsize - {\ctxcommand{listsize()}} + {\clf_listsize} %D Depending on what kind of list we have (e.g.\ a section related one) %D processors can be defined. @@ -451,14 +471,12 @@ \def\usestructurelistprocessor#tag% {\csname\??structurelistprocessor#tag\endcsname} -\unexpanded\def\strclistsentryprocess#tag#method#index#extra% This one is called at the lua end! - {\ctxcommand{pushlist(#index)}% - \edef\currentlist {#tag}% - \edef\currentlistmethod{#method}% - \edef\currentlistindex {#index}% - \edef\currentlistextra {#extra}% - \listextraparameter\c!before +\let\dotaglistlocation\relax + +\def\strc_lists_entry_process % assume things to be set up + {\listextraparameter\c!before \dostarttagged\t!listitem\currentlist + \dotaglistlocation \csname\??structurelistprocessor \ifcsname\??structurelistprocessor\currentlist:\currentlistmethod\endcsname\currentlist:\currentlistmethod\else \ifcsname\??structurelistprocessor\currentlistmethod \endcsname\currentlistmethod \else @@ -466,8 +484,16 @@ \s!default \fi\fi\fi \endcsname \dostoptagged - \listextraparameter\c!after - \ctxcommand{poplist()}} + \listextraparameter\c!after} + +\unexpanded\def\strclistsentryprocess#tag#method#index#extra% This one is called at the lua end! + {\clf_pushlist#index\relax + \edef\currentlist {#tag}% + \edef\currentlistmethod{#method}% + \edef\currentlistindex {#index}% + \edef\currentlistextra {#extra}% + \strc_lists_entry_process + \clf_poplist} % lists that have a number/title are kind of generic and can share code @@ -481,7 +507,7 @@ \strc_lists_apply_renderingsetup} \installstructurelistprocessor\s!command - {\ctxcommand{listuserdata("\currentlist",\currentlistindex,"\s!command")}} + {\clf_listuserdata{\currentlist}\currentlistindex{\s!command}} \installstructurelistprocessor{section} {\let\currentlistentrynumber \structurelistgenericnumber @@ -498,7 +524,7 @@ % example of usage elsewhere: % % \installstructcurelistprocessor{pubs:userdata} -% {\ctxcommand{listuserdata("\currentlist",\currentlistindex,"bibref")}} +% {\clf_listuserdata{\currentlist}\currentlistindex{bibref}} %D List symbols are used in interactive documents where no numbers %D are used but nevertheless structure is present. Beware, the list @@ -520,7 +546,7 @@ \def\strc_lists_assign_dimen#dimension#key#default% {\edef\m_strc_list_dimen{\listparameter#key}% - \doifinsetelse\m_strc_list_dimen{\v!fit,\v!broad}{#dimension#default}{#dimension\m_strc_list_dimen}\relax} + \doifelseinset\m_strc_list_dimen{\v!fit,\v!broad}{#dimension#default}{#dimension\m_strc_list_dimen}\relax} \definesymbol[\v!list][\v!none ][\strc_lists_symbol_none] \definesymbol[\v!list][\v!one ][\strc_lists_symbol_one] @@ -531,7 +557,7 @@ \unexpanded\def\currentlistsymbol {\edef\p_symbol{\listparameter\c!symbol}% - \doifinsymbolsetelse\v!list\p_symbol + \doifelseinsymbolset\v!list\p_symbol {\directsymbol\v!list\p_symbol} {\directsymbol\v!list\s!default}} @@ -589,7 +615,7 @@ {\currentlistentrynumber} \setvalue{\??listsymbollabels\v!yes}% auto (use value stored in tuc file) - {\edef\currentlistlabel{\ctxcommand{listlabel(\currentlistindex,"\currentlistlabel")}}% + {\edef\currentlistlabel{\clf_listlabel\currentlistindex{\currentlistlabel}}% \leftlabeltext\currentlistlabel \listparameter\c!starter \currentlistentrynumber @@ -700,7 +726,7 @@ \let\p_method\v!command \fi \normalexpanded{\definelistalternative[#tag][\p_method]}[\c!command=\strc_lists_placement_command]% - \doifnextbgroupelse + \doifelsenextbgroup {\strc_lists_define_placement_yes{#tag}} {\strc_lists_define_placement_nop{#tag}}} @@ -764,7 +790,7 @@ \settrue\c_lists_has_page \settrue\c_lists_show_page \else - \doifstructurelisthaspageelse\settrue\setfalse\c_lists_has_page + \doifelsestructurelisthaspage\settrue\setfalse\c_lists_has_page \ifx\p_pagenumber\v!yes \settrue\c_lists_show_page \else @@ -777,7 +803,7 @@ \settrue\c_lists_has_number \settrue\c_lists_show_number \else - \doifstructurelisthasnumberelse\settrue\setfalse\c_lists_has_number + \doifelsestructurelisthasnumber\settrue\setfalse\c_lists_has_number \ifx\p_headnumber\v!yes \settrue\c_lists_show_number \else @@ -818,6 +844,8 @@ % todo: provide packager via attributes +\doinstallinjector\s!list + \installcorenamespace{listalternativemethods} % the general wrapper of a rendering \startsetups[\??listrenderings:none] @@ -845,12 +873,15 @@ % \stopsetups \startsetups[\??listrenderings:generic] + \typo_injectors_check_list \listparameter\c!before % can be \hskip \edef\p_command{\listalternativeparameter\c!command} \ifx\p_command\empty \listalternativeparameter\c!before \vbox { \forgetall + \noindent % otherwise annotations are mirrored up + \typo_injectors_mark_list \hbox \strc_lists_get_reference_attribute\v!all { \ifconditional\c_lists_show_number % \ifconditional\c_lists_has_page @@ -878,6 +909,8 @@ } \listalternativeparameter\c!after \else + \noindent % otherwise annotations are mirrored up +\typo_injectors_mark_list \hbox \strc_lists_get_reference_attribute\v!all \strc_lists_get_destination_attribute { \p_command\currentlistentrynumber\currentlistentrytitle\currentlistentrypagenumber } @@ -889,7 +922,8 @@ \startsetups[\??listrenderings:abc] \endgraf % are we grouped? -% \advance % yes or no ... \rightskip is also honored + \typo_injectors_check_list + % \advance % yes or no ... \rightskip is also honored \leftskip\listparameter\c!margin % after \endgraf ! \listparameter\c!before \endgraf @@ -908,7 +942,8 @@ \scratchwidth\p_width \fi \fi\fi - \noindent + \noindent % otherwise annotations are mirrored up + \typo_injectors_mark_list \hbox \strc_lists_get_reference_attribute\v!all \strc_lists_get_destination_attribute { \setlocalhsize \hsize\localhsize @@ -952,6 +987,8 @@ \hsize\scratchhsize \usealignparameter\listparameter \ifdim\scratchwidth<\hsize + % we have leftskip so we'd better just skip back instead of messing + % with hang* \edef\p_hang{\listparameter\c!hang} \hangindent\dimexpr\wd\b_strc_lists_number+\scratchdistance\relax \hangafter\ifx\p_hang\v!no\zerocount\else\plusone\fi @@ -964,7 +1001,7 @@ \scratchdistance\zeropoint \fi \parindent\zeropoint - \dontleavehmode + \dontleavehmode % this nils hang: i need to figure out why % % topaligned % % \scratchdimen\wd\b_strc_lists_number @@ -1089,7 +1126,9 @@ \stopsetups \startsetups[\??listrenderings:e] - \noindent + \typo_injectors_check_list + \noindent % otherwise annotations are mirrored up + \typo_injectors_mark_list \hbox \strc_lists_get_reference_attribute\v!all \strc_lists_get_destination_attribute { \letlistparameter\c!depth\zeropoint \letlistparameter\c!color\empty @@ -1109,7 +1148,9 @@ \stopsetups \startsetups[\??listrenderings:f] - \noindent + \typo_injectors_check_list + \noindent % otherwise annotations are mirrored up + \typo_injectors_mark_list \hbox \strc_lists_get_reference_attribute\v!all \strc_lists_get_destination_attribute { \dosetraggedhbox{\listparameter\c!align}% \raggedbox { @@ -1127,7 +1168,9 @@ \stopsetups \startsetups[\??listrenderings:g] - \noindent + \typo_injectors_check_list + \noindent % otherwise annotations are mirrored up + \typo_injectors_mark_list \hbox \strc_lists_get_reference_attribute\v!all \strc_lists_get_destination_attribute { \midaligned { \strc_lists_set_style_color\c!style\c!color\v!all @@ -1148,19 +1191,119 @@ \definelistalternative [\v!interactive] - [\c!renderingsetup=\??listrenderings:interactive] + [\c!renderingsetup=\??listrenderings:interactive, + \c!before=\endgraf, % new per 2014-11-08 + \c!after=\endgraf] % new per 2014-11-08 \startsetups[\??listrenderings:interactive] - \edef\p_command{\listalternativeparameter\c!command}% - \ifx\p_command\empty - [\currentlist: \currentlistentrynumber\space -- \currentlistentrytitle\space -- \currentlistentrypagenumber]% - \else - \listparameter\c!before - \hbox \strc_lists_get_reference_attribute\v!all \strc_lists_get_destination_attribute { - \p_command\currentlistentrynumber\currentlistentrytitle\currentlistentrypagenumber - } - \listparameter\c!after - \fi + \edef\p_command{\listalternativeparameter\c!command}% + \typo_injectors_check_list + \listparameter\c!before + \noindent % otherwise annotations are mirrored up + \typo_injectors_mark_list + \hbox \strc_lists_get_reference_attribute\v!all \strc_lists_get_destination_attribute { + \ifx\p_command\empty + [ + \currentlist:\space + \currentlistentrynumber + \space\emdash\space + \currentlistentrytitle + \space\emdash\space + \currentlistentrypagenumber + ] + \else + \p_command\currentlistentrynumber\currentlistentrytitle\currentlistentrypagenumber + \fi + } + \listparameter\c!after +\stopsetups + +%D One special for publications (as Alan loves to hangindent). No fonts and +%D such (for now). No interaction either as that is dealt with elsewhere. +%D +%D \currentlistsymbol +%D \currentlistentry +%D \currentlistentrypagenumber % not really used + +\definelistalternative + [\v!paragraph] + [\c!filler=\hskip.25\emwidth, + \c!renderingsetup=\??listrenderings:\v!paragraph] + +\startsetups[\??listrenderings:\v!paragraph] + \endgraf % are we grouped? + \typo_injectors_check_list % ? + \listparameter\c!before + \endgraf + \begingroup + \forgetall + \noindent + \parindent\zeropoint + \edef\p_width{\listparameter\c!width}% + \edef\p_distance{\listparameter\c!distance}% we are nice for bib users + \edef\p_margin{\listparameter\c!margin}% we are nice for bib users + \ifx\p_distance\v!none + \scratchdistance\zeropoint + \else + \scratchdistance\p_distance + \fi + \ifx\p_margin\v!none + \scratchoffset\zeropoint + \else + \scratchoffset\p_margin + \fi + \ifx\p_width\v!fit + \scratchwidth\zeropoint + \leftskip\scratchoffset + \else + \scratchwidth\p_width + \ifdim\scratchoffset=\zeropoint + \leftskip\dimexpr\scratchwidth+\scratchdistance\relax + \else + \leftskip\scratchoffset + \fi + \fi + \usealignparameter\listparameter + \hskip-\leftskip + \ifconditional\c_lists_has_number + \ifconditional\c_lists_show_number + \setbox\scratchbox + \ifzeropt\scratchwidth + \hbox + \else + \simplealignedbox\scratchwidth{\listparameter\c!numberalign} + \fi + \bgroup + \useliststyleandcolor\c!numberstyle\c!numbercolor + \currentlistsymbol + \egroup + \ifdim\wd\scratchbox>\zeropoint + \box\scratchbox + \hskip\scratchdistance\relax + \fi + \fi + \fi + \begingroup + \useliststyleandcolor\c!textstyle\c!textcolor + \setstrut + \begstrut + \currentlistentrytitle + \endstrut + \endgroup + \ifconditional\c_lists_has_page + \ifconditional\c_lists_show_page + \nobreak + \listalternativeparameter\c!filler\relax + \begingroup + \useliststyleandcolor\c!pagestyle\c!pagecolor + \currentlistentrypagenumber + \endgroup + \fi + \fi + \endgraf + \endgroup + \allowbreak + \listparameter\c!after \stopsetups %D List elements are packaged in such a way that we can click on them @@ -1303,7 +1446,7 @@ \let\listlength\!!zerocount \else \setupcurrentlist[#settings]% - \strc_lists_analyze{#list}{\listparameter\c!criterium}{\listparameter\c!number}% + \strc_lists_analyze{#list}{\listparameter\c!criterium}{\listparameter\c!reference}% \normalexpanded{\endgroup\noexpand\edef\noexpand\listlength{\structurelistsize}}% \fi \strc_lists_set_mode} |