summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-itm.mkvi
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/strc-itm.mkvi')
-rw-r--r--tex/context/base/strc-itm.mkvi191
1 files changed, 104 insertions, 87 deletions
diff --git a/tex/context/base/strc-itm.mkvi b/tex/context/base/strc-itm.mkvi
index 0dc06b105..f4fb779fd 100644
--- a/tex/context/base/strc-itm.mkvi
+++ b/tex/context/base/strc-itm.mkvi
@@ -15,6 +15,11 @@
\registerctxluafile{strc-itm}{1.001}
+%D Cleaning up this module happened around the time when Kate Bush came up
+%D with the nicest numbered list of words: 50 Words For Snow. It's therefore
+%D no surprise that I had that cd running several times when updating this
+%D code. One of the highlights of 2011.
+
% todo: check breaks
% todo: check grouping
@@ -277,7 +282,19 @@
%D Defining and setup:
-\installcommandhandler \??op {itemgroup} \??op
+\installcorenamespace{itemgroup}
+\installcorenamespace{itemgroupoption}
+\installcorenamespace{itemgroupsetting}
+\installcorenamespace{itemgroupkeyword}
+\installcorenamespace{itemgroupalign}
+\installcorenamespace{itemgrouplocal}
+\installcorenamespace{itemgroupglobal}
+\installcorenamespace{itemgroupdistance}
+\installcorenamespace{itemgroupstack}
+\installcorenamespace{itemgroupfirst}
+\installcorenamespace{itemgroupstart}
+
+\installcommandhandler \??itemgroup {itemgroup} \??itemgroup
\let\setupitemgroups\setupitemgroup
@@ -294,16 +311,16 @@
%D Global states
\def\itemgroups_store_continue_state#options#settings%
- {\setxvalue{\??op:o:\currentitemgroup}{\itemgroups_process_options{#options}}%
- \setgvalue{\??op:s:\currentitemgroup}{\setupcurrentitemgroup [#settings]}}
+ {\setxvalue{\??itemgroupoption \currentitemgroup}{\itemgroups_process_options{#options}}%
+ \setgvalue{\??itemgroupsetting\currentitemgroup}{\setupcurrentitemgroup [#settings]}}
\def\itemgroups_fetch_continue_state
- {\getvalue{\??op:o:\currentitemgroup}%
- \getvalue{\??op:s:\currentitemgroup}}
+ {\getvalue{\??itemgroupoption \currentitemgroup}%
+ \getvalue{\??itemgroupsetting\currentitemgroup}}
\def\itemgroups_reset_continue_state
- {\letgvalue{\??op:o:\currentitemgroup}\relax
- \letgvalue{\??op:s:\currentitemgroup}\relax}
+ {\letgvalue{\??itemgroupoption \currentitemgroup}\relax
+ \letgvalue{\??itemgroupsetting\currentitemgroup}\relax}
\definevspacing[\v!item @0] [penalty:0] % allow
\definevspacing[\v!item @10000] [penalty:10000] % no
@@ -345,8 +362,8 @@
\let\itemgroupsecond\itemgroupfirst
\let\itemgroupfirst\!!plusone
\fi
- \ifcsname\??op:k:\itemgroupsecond\endcsname
- \csname\??op:k:\itemgroupsecond\endcsname
+ \ifcsname\??itemgroupkeyword\itemgroupsecond\endcsname
+ \csname\??itemgroupkeyword\itemgroupsecond\endcsname
\else
\itemgroups_set_symbol\itemgroupconstantvalue
\fi
@@ -357,51 +374,51 @@
\settrue\c_itemgroups_pack
\fi}
-\setvalue{\??op:k:\!!zerocount}{} % ignore 0
-\setvalue{\??op:k:\v!packed }{\itemgroups_process_set_option_pack}
-\setvalue{\??op:k:\v!intro }{\settrue\c_itemgroups_intro} % here? not set to false
-\setvalue{\??op:k:\v!autointro}{\settrue\c_itemgroups_auto_intro}
-\setvalue{\??op:k:\v!broad }{\ifx\itemgroupfirst\empty
- \let\itemgroupfirst\!!plusone
- \fi
- \letitemgroupparameter\c!factor\itemgroupfirst}
-\setvalue{\??op:k:\v!text }{\settrue\c_itemgroups_text
- \settrue\c_itemgroups_inline
- \settrue\c_itemgroups_joined
- \itemgroups_process_set_option_pack}
-\setvalue{\??op:k:\v!columns }{\itemgroups_process_set_option_pack}
-\setvalue{\??op:k:\v!before }{\settrue\c_itemgroups_before}
-\setvalue{\??op:k:\v!after }{\settrue\c_itemgroups_after}
-\setvalue{\??op:k:\v!nowhite }{\settrue\c_itemgroups_nowhite}
-\setvalue{\??op:k:\v!margin }{\setitemgroupparameter\c!width{-2em}} % signal
-\setvalue{\??op:k:\v!inmargin }{\setitemgroupparameter\c!width{-2em}} % signal
-\setvalue{\??op:k:\v!atmargin }{\ifnum\c_itemgroups_nesting>\plusone
- \setitemgroupparameter\c!width{0em}%
- \fi} % signal
-\setvalue{\??op:k:\v!intext }{\settrue\c_itemgroups_inline}
-\setvalue{\??op:k:\v!loose }{\setfalse\c_itemgroups_optimize}
-\setvalue{\??op:k:\v!fit }{\settrue\c_itemgroups_fitting}
-\setvalue{\??op:k:\v!nofit }{\setfalse\c_itemgroups_fitting}
-\setvalue{\??op:k:\v!paragraph}{\settrue\c_itemgroups_paragraph
- \itemgroups_process_set_option_pack}
-\setvalue{\??op:k:\v!joinedup }{\settrue\c_itemgroups_joined
- \itemgroups_process_set_option_pack}
-\setvalue{\??op:k:\v!serried }{\edef\itemgroupfirst{-\ifx\itemgroupfirst\empty1\else\itemgroupfirst\fi}%
- \letitemgroupparameter\c!factor\itemgroupfirst}
-\setvalue{\??op:k:\v!stopper }{\letitemgroupparameter\c!placestopper\v!yes} % keep {}
-\setvalue{\??op:k:\v!unpacked }{\setfalse\c_itemgroups_pack}
-\setvalue{\??op:k:\v!repeat }{\settrue\c_itemgroups_repeat}
-\setvalue{\??op:k:\v!reverse }{\settrue\c_itemgroups_reverse}
-\setvalue{\??op:k:\v!columns }{\settrue\c_itemgroups_columns}
-\setvalue{\??op:k:\v!one }{\letitemgroupparameter\c!n\plusone}
-\setvalue{\??op:k:\v!two }{\letitemgroupparameter\c!n\plustwo}
-\setvalue{\??op:k:\v!three }{\letitemgroupparameter\c!n\plusthree}
-\setvalue{\??op:k:\v!four }{\letitemgroupparameter\c!n\plusfour}
-\setvalue{\??op:k:\v!five }{\letitemgroupparameter\c!n\plusfive}
-\setvalue{\??op:k:\v!standard }{\setupcurrentitemgroup
- [\c!width=1.5em,\c!factor=0,\c!distance=.5em,\c!inner=,\c!factor=0,%
- \c!beforehead=,\c!afterhead=\blank,%
- \c!before=\blank,\c!inbetween=\blank,\c!after=\blank]}
+\setvalue{\??itemgroupkeyword\!!zerocount}{} % ignore 0
+\setvalue{\??itemgroupkeyword\v!packed }{\itemgroups_process_set_option_pack}
+\setvalue{\??itemgroupkeyword\v!intro }{\settrue\c_itemgroups_intro} % here? not set to false
+\setvalue{\??itemgroupkeyword\v!autointro}{\settrue\c_itemgroups_auto_intro}
+\setvalue{\??itemgroupkeyword\v!broad }{\ifx\itemgroupfirst\empty
+ \let\itemgroupfirst\!!plusone
+ \fi
+ \letitemgroupparameter\c!factor\itemgroupfirst}
+\setvalue{\??itemgroupkeyword\v!text }{\settrue\c_itemgroups_text
+ \settrue\c_itemgroups_inline
+ \settrue\c_itemgroups_joined
+ \itemgroups_process_set_option_pack}
+\setvalue{\??itemgroupkeyword\v!columns }{\itemgroups_process_set_option_pack}
+\setvalue{\??itemgroupkeyword\v!before }{\settrue\c_itemgroups_before}
+\setvalue{\??itemgroupkeyword\v!after }{\settrue\c_itemgroups_after}
+\setvalue{\??itemgroupkeyword\v!nowhite }{\settrue\c_itemgroups_nowhite}
+\setvalue{\??itemgroupkeyword\v!margin }{\setitemgroupparameter\c!width{-2em}} % signal
+\setvalue{\??itemgroupkeyword\v!inmargin }{\setitemgroupparameter\c!width{-2em}} % signal
+\setvalue{\??itemgroupkeyword\v!atmargin }{\ifnum\c_itemgroups_nesting>\plusone
+ \setitemgroupparameter\c!width{0em}%
+ \fi} % signal
+\setvalue{\??itemgroupkeyword\v!intext }{\settrue\c_itemgroups_inline}
+\setvalue{\??itemgroupkeyword\v!loose }{\setfalse\c_itemgroups_optimize}
+\setvalue{\??itemgroupkeyword\v!fit }{\settrue\c_itemgroups_fitting}
+\setvalue{\??itemgroupkeyword\v!nofit }{\setfalse\c_itemgroups_fitting}
+\setvalue{\??itemgroupkeyword\v!paragraph}{\settrue\c_itemgroups_paragraph
+ \itemgroups_process_set_option_pack}
+\setvalue{\??itemgroupkeyword\v!joinedup }{\settrue\c_itemgroups_joined
+ \itemgroups_process_set_option_pack}
+\setvalue{\??itemgroupkeyword\v!serried }{\edef\itemgroupfirst{-\ifx\itemgroupfirst\empty1\else\itemgroupfirst\fi}%
+ \letitemgroupparameter\c!factor\itemgroupfirst}
+\setvalue{\??itemgroupkeyword\v!stopper }{\letitemgroupparameter\c!placestopper\v!yes} % keep {}
+\setvalue{\??itemgroupkeyword\v!unpacked }{\setfalse\c_itemgroups_pack}
+\setvalue{\??itemgroupkeyword\v!repeat }{\settrue\c_itemgroups_repeat}
+\setvalue{\??itemgroupkeyword\v!reverse }{\settrue\c_itemgroups_reverse}
+\setvalue{\??itemgroupkeyword\v!columns }{\settrue\c_itemgroups_columns}
+\setvalue{\??itemgroupkeyword\v!one }{\letitemgroupparameter\c!n\plusone}
+\setvalue{\??itemgroupkeyword\v!two }{\letitemgroupparameter\c!n\plustwo}
+\setvalue{\??itemgroupkeyword\v!three }{\letitemgroupparameter\c!n\plusthree}
+\setvalue{\??itemgroupkeyword\v!four }{\letitemgroupparameter\c!n\plusfour}
+\setvalue{\??itemgroupkeyword\v!five }{\letitemgroupparameter\c!n\plusfive}
+\setvalue{\??itemgroupkeyword\v!standard }{\setupcurrentitemgroup
+ [\c!width=1.5em,\c!factor=0,\c!distance=.5em,\c!inner=,\c!factor=0,%
+ \c!beforehead=,\c!afterhead=\blank,%
+ \c!before=\blank,\c!inbetween=\blank,\c!after=\blank]}
\def\itemgroups_initialize_local
{\setfalse\c_itemgroups_inline
@@ -430,16 +447,16 @@
\global\letitemgroupparameter\c!maxwidth\!!zerocount
}
-\setvalue{\??op:1:\v!intro }{\settrue\c_itemgroups_intro }
-\setvalue{\??op:1:\v!random }{\settrue\c_itemgroups_randomize}
-\setvalue{\??op:1:\v!continue}{\settrue\c_itemgroups_continue }
+\setvalue{\??itemgroupfirst\v!intro }{\settrue\c_itemgroups_intro }
+\setvalue{\??itemgroupfirst\v!random }{\settrue\c_itemgroups_randomize}
+\setvalue{\??itemgroupfirst\v!continue}{\settrue\c_itemgroups_continue }
\def\itemgroups_preset_stage_one#options%
{\processcommacommand[#options]\itemgroups_preset_stage_one_indeed}
\def\itemgroups_preset_stage_one_indeed#option%
- {\ifcsname\??op:1:#option\endcsname
- \csname\??op:1:#option\endcsname
+ {\ifcsname\??itemgroupfirst#option\endcsname
+ \csname\??itemgroupfirst#option\endcsname
\fi}
\ifdefined\dotagsetitemgroup \else \let\dotagsetitemgroup\relax \fi
@@ -688,36 +705,36 @@
\ifdefined\startcolumns \else \unexpanded\def\startcolumns[#settings]{} \fi
\ifdefined\stopcolumns \else \unexpanded\def\stopcolumns {} \fi
-\letvalue{\??op:a:\v!flushleft }\relax
-\letvalue{\??op:a:\v!right }\relax
-\letvalue{\??op:a:\v!flushright}\hfill
-\letvalue{\??op:a:\v!left }\hfill
-\letvalue{\??op:a:\v!middle }\hfil
-\letvalue{\??op:a:\v!center }\hfil
+\letvalue{\??itemgroupalign\v!flushleft }\relax
+\letvalue{\??itemgroupalign\v!right }\relax
+\letvalue{\??itemgroupalign\v!flushright}\hfill
+\letvalue{\??itemgroupalign\v!left }\hfill
+\letvalue{\??itemgroupalign\v!middle }\hfil
+\letvalue{\??itemgroupalign\v!center }\hfil
\def\itemgroups_left_sym_filler
- {\csname\??op:a:\itemgroupparameter\c!symalign\endcsname}
+ {\csname\??itemgroupalign\itemgroupparameter\c!symalign\endcsname}
% symbols + states
\def\itemgroups_store_global_symbol#symbol%
- {\letgvalue{\??op:g:\currentitemlevel}#symbol}
+ {\letgvalue{\??itemgroupglobal\currentitemlevel}#symbol}
\def\itemgroups_store_local_symbol#symbol%
- {\letgvalue{\??op:l:\currentitemlevel}#symbol}
+ {\letgvalue{\??itemgrouplocal\currentitemlevel}#symbol}
\def\itemgroups_fetch_global_symbol
- {\getvalue{\??op:g:\currentitemlevel}}
+ {\getvalue{\??itemgroupglobal\currentitemlevel}}
\def\itemgroups_fetch_local_symbol
- {\getvalue{\??op:l:\currentitemlevel}}
+ {\getvalue{\??itemgrouplocal\currentitemlevel}}
\def\itemgroups_setup_symbol_default
{\edef\itemgroups_asked_symbol{\itemgroupparameter\c!symbol}%
\itemgroups_store_global_symbol\empty}
\def\itemgroups_setup_symbol_continue
- {\ifcsname\??op:g:\currentitemlevel\endcsname
+ {\ifcsname\??itemgroupglobal\currentitemlevel\endcsname
\let\itemgroups_asked_symbol\itemgroups_fetch_global_symbol
\else
\let\itemgroups_asked_symbol\currentitemlevel
@@ -1071,25 +1088,25 @@
\startitemgrouphead}
\unexpanded\def\itemgroups_start_items
- {\dosingleempty\itemgroups_start_items}
+ {\dosingleempty\itemgroups_start_items_indeed}
-\unexpanded\def\itemgroups_start_items[#whatever]% something got lost
+\unexpanded\def\itemgroups_start_items_indeed[#whatever]% something got lost
{\itemgroups_start_edge
{\dorecurse{0\itemgroupparameter\c!items}{\itemgroups_used_symbol\hss}%
\unskip}}
\unexpanded\def\startspecialitemgroupitem[#name]%
- {\csname\??op:\e!start:\ifcsname#name\endcsname#name\else\v!item\fi\endcsname}
+ {\csname\??itemgroupstart\ifcsname\??itemgroupstart#name\endcsname#name\else\v!item\fi\endcsname}
\unexpanded\def\stopspecialitemgroupitem
{\stopitemgroupitem}
-\letvalue{\??op:\e!start:\v!item}\itemgroups_start_do_item
-\letvalue{\??op:\e!start:\v!sub }\itemgroups_start_subitem
-\letvalue{\??op:\e!start:\v!sym }\itemgroups_start_symbol
-\letvalue{\??op:\e!start:\v!ran }\itemgroups_start_edge
-\letvalue{\??op:\e!start:\v!its }\itemgroups_start_items
-\letvalue{\??op:\e!start:\v!mar }\itemgroups_start_margin
+\letvalue{\??itemgroupstart\v!item}\itemgroups_start_do_item
+\letvalue{\??itemgroupstart\v!sub }\itemgroups_start_subitem
+\letvalue{\??itemgroupstart\v!sym }\itemgroups_start_symbol
+\letvalue{\??itemgroupstart\v!ran }\itemgroups_start_edge
+\letvalue{\??itemgroupstart\v!its }\itemgroups_start_items
+\letvalue{\??itemgroupstart\v!mar }\itemgroups_start_margin
\def\optimizelistitemsbreak
{\ifcase\c_itemgroups_column_depth \ifconditional\c_itemgroups_optimize
@@ -1292,15 +1309,15 @@
\itemgroups_check_for_repeated
\ignorespaces}
-\setvalue{\??op:d:\c!textdistance:\v!none}%
+\setvalue{\??itemgroupdistance\c!textdistance:\v!none}%
{\let\m_itemgroups_text_distance\zeropoint}
\unexpanded\def\itemgroups_set_text_item_distance
{\edef\m_itemgroups_text_distance{\itemgroupparameter\c!textdistance}%
\ifx\m_itemgroups_text_distance\empty
%
- \else\ifcsname\??op:d:\c!textdistance:\m_itemgroups_text_distance\endcsname
- \csname\??op:d:\c!textdistance:\m_itemgroups_text_distance\endcsname
+ \else\ifcsname\??itemgroupdistance\c!textdistance:\m_itemgroups_text_distance\endcsname
+ \csname\??itemgroupdistance\c!textdistance:\m_itemgroups_text_distance\endcsname
\else
\itemgroups_set_text_item_distance_indeed
\fi\fi}
@@ -1390,7 +1407,7 @@
\@EA\def\@EA\itemgroups_collected_store\@EA#\@EA1\csname\e!stop\v!item\endcsname % use grabuntil
{\advance\c_itemgroups_collected_stored\plusone
- \setvalue{\??op:x:\number\c_itemgroups_collected_stored}{\startitemgroupitem#1\stopitemgroupitem}}
+ \setvalue{\??itemgroupstack\number\c_itemgroups_collected_stored}{\startitemgroupitem#1\stopitemgroupitem}}
\def\itemgroups_collected_flush
{\ifconditional\c_itemgroups_randomize
@@ -1398,9 +1415,9 @@
\else
\advance\c_itemgroups_collected_current\plusone
\fi
- \doifdefined{\??op:x:\number\c_itemgroups_collected_current}
- {\getvalue{\??op:x:\number\c_itemgroups_collected_current}%
- \letbeundefined{\??op:x:\number\c_itemgroups_collected_current}%
+ \doifdefined{\??itemgroupstack\number\c_itemgroups_collected_current}
+ {\getvalue{\??itemgroupstack\number\c_itemgroups_collected_current}%
+ \letbeundefined{\??itemgroupstack\number\c_itemgroups_collected_current}%
\advance\c_itemgroups_collected_done\plusone}%
\ifnum\c_itemgroups_collected_done<\c_itemgroups_collected_stored
\expandafter\itemgroups_collected_flush