summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/strc-num.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/strc-num.mkxl')
-rw-r--r--tex/context/base/mkiv/strc-num.mkxl687
1 files changed, 0 insertions, 687 deletions
diff --git a/tex/context/base/mkiv/strc-num.mkxl b/tex/context/base/mkiv/strc-num.mkxl
deleted file mode 100644
index 1ddbd511d..000000000
--- a/tex/context/base/mkiv/strc-num.mkxl
+++ /dev/null
@@ -1,687 +0,0 @@
-%D \module
-%D [ file=strc-num,
-%D version=2008.10.20,
-%D title=\CONTEXT\ Structure Macros,
-%D subtitle=Basic Numbering,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-\writestatus{loading}{ConTeXt Structure Macros / Basic Numbering}
-
-\registerctxluafile{strc-num}{}
-
-\unprotect
-
-\startcontextdefinitioncode
-
-% work in progress
-% to be checked: can we use the command handler code here?
-% all settings will move to lua
-
-\installcorenamespace{counter}
-
-\installcommandhandler \??counter {counter} \??counter
-
-\aliased\let\setupcounters \setupcounter
-\aliased\let\setupstructurecounting\setupcounter % will disappear
-
-\setupcounter
- [\c!way=\v!by\v!chapter,
-% \c!blockway=,
-% \c!prefixstarter=,
-% \c!prefixstopper=,
- \c!prefixconnector=.,
- \c!prefixsegments=\autostructureprefixsegments\rootcounterparameter,
- \c!start=\zerocount,
- \c!prefix=\v!yes,
- \c!state=\v!start]
-
-\permanent\def\autostructureprefixsegments#1% todo: \c!prefixsegments=\v!auto
- {2:\thenamedheadlevel{\clf_way{#1\c!way}}}
-
-\appendtoks
- \resetcounterparameter\s!counter
-\to \everypresetcounter
-
-\appendtoks
- \ifempty\currentcounterparent
- \edef\p_start{\counterparameter\c!start}%
- \clf_definecounter
- name {\currentcounter}%
- start \ifempty\p_start\zerocount\else\numexpr\p_start\relax\fi
- counter {\counterparameter\s!counter}%
- method {\counterparameter\c!method}%
- \relax
- \letcounterparameter\s!name\currentcounter
- \else
- % \letcounterparameter\s!name\currentcounterparent % we need a chained clone
- \setexpandedcounterparameter\s!name{\namedcounterparameter\currentcounterparent\s!name}%
- \fi
- \strc_counters_check_setup
-\to \everydefinecounter
-
-\appendtoks
- \ifempty\currentcounter \else
- \edef\p_number{\counterparameter\c!number}%
- \ifempty\p_number \else
- \clf_setcounter{\counterparameter\s!name}\numexpr\p_number\relax
- \letcounterparameter\c!number\empty
- \fi
- \edef\p_start{\counterparameter\c!start}%
- \setexpandedcounterparameter\c!start{\ifempty\p_start0\else\number\p_start\fi}%
- \strc_counters_check_setup
- \fi
-\to \everysetupcounter
-
-% % % %
-
-\permanent\def\strc_counters_way #1{\clf_way{\namedcounterparameter{#1}\c!way}}
-\permanent\def\thenamedcounterlevel#1{\xthenamedheadlevel{\clf_way{\namedcounterparameter{#1}\c!way}}}
-
-\protected\def\strc_counters_check_setup
- {\edef\p_name{\directcounterparameter\s!name}%
- \ifx\currentcounter\p_name
- \edef\currentcounterlevel{\thenamedcounterlevel\currentcounter}%
- \edef\p_start{\counterparameter\c!start}%
- \clf_checkcountersetup
- {\currentcounter}%
- \numexpr\currentcounterlevel\relax
- \numexpr\ifempty\p_start\zerocount\else\p_start\fi\relax % bug in scanner
- {\counterparameter\c!state}%
- \fi}
-
-\permanent\protected\def\doifelsecounter #1{\clf_doifelsecounter{\namedcounterparameter{#1}\s!name}}
-\permanent\protected\def\doifcounter #1{\clf_doifcounter {\namedcounterparameter{#1}\s!name}}
-\permanent\protected\def\doifnotcounter #1{\clf_doifnotcounter {\namedcounterparameter{#1}\s!name}}
-
-\aliased\let\doifcounterelse\doifelsecounter
-
-\permanent\tolerant\protected\def\setcounter[#1]#*[#2]#*[#3]%
- {\ifarguments\or\or
- \clf_setcounter {\namedcounterparameter{#1}\s!name}\numexpr#2\relax\or
- \else
- \clf_setsubcounter{\namedcounterparameter{#1}\s!name}\numexpr#2\relax\numexpr#3\relax
- \fi}
-
-\permanent\tolerant\protected\def\setcounterown[#1]#*[#2]#*[#3]%
- {\ifarguments\or\or
- \clf_setowncounter {\namedcounterparameter{#1}\s!name}{#2}\or
- \else
- \clf_setownsubcounter{\namedcounterparameter{#1}\s!name}\numexpr#2\relax{#3}%
- \fi}
-
-\permanent\tolerant\protected\def\restartcounter[#1]#*[#2]#*[#3]%
- {\ifarguments\or\or
- \clf_restartcounter {\namedcounterparameter{#1}\s!name}\numexpr#2\relax\or
- \else
- \clf_restartsubcounter{\namedcounterparameter{#1}\s!name}\numexpr#2\relax\numexpr#3\relax
- \fi}
-
-\permanent\tolerant\protected\def\resetcounter[#1]#*[#2]%
- {\ifarguments\or
- \clf_resetcounter {\namedcounterparameter{#1}\s!name}\or
- \else
- \clf_resetsubcounter{\namedcounterparameter{#1}\s!name}\numexpr#2\relax
- \fi}
-
-\permanent\tolerant\protected\def\incrementcounter[#1]#*[#2]%
- {\ifarguments\or
- \strc_counters_increment_sub{#1}\plusone\or
- \else
- \strc_counters_increment_sub{#1}{#2}%
- \fi}
-
-\permanent\tolerant\protected\def\decrementcounter[#1]#*[#2]%
- {\ifarguments\or
- \clf_decrementcounter {\namedcounterparameter{#1}\s!name}\or
- \else
- \clf_decrementsubcounter{\namedcounterparameter{#1}\s!name}\numexpr#2\relax
- \fi}
-
-\permanent\tolerant\protected\def\rawcounter[#1]#*[#2]%
- {\ifarguments\or\or
- \clf_countervalue {\namedcounterparameter{#1}\s!name}%
- \else
- \clf_subcountervalue{\namedcounterparameter{#1}\s!name}\numexpr#2\relax\or
- \fi}
-
-\permanent\tolerant\protected\def\lastcounter[#1]#*[#2]%
- {\ifarguments\or\or
- \clf_lastcountervalue {\namedcounterparameter{#1}\s!name}%
- \else
- \clf_lastsubcountervalue{\namedcounterparameter{#1}\s!name}\numexpr#2\relax\or
- \fi}
-
-\permanent\tolerant\protected\def\firstcounter[#1]#*[#2]%
- {\ifarguments\or\or
- \clf_firstcountervalue {\namedcounterparameter{#1}\s!name}%
- \else
- \clf_firstsubcountervalue{\namedcounterparameter{#1}\s!name}\numexpr#2\relax\or
- \fi}
-
-\permanent\tolerant\protected\def\prevcounter[#1]#*[#2]%
- {\ifarguments\or\or
- \clf_previouscountervalue {\namedcounterparameter{#1}\s!name}%}
- \else
- \clf_previoussubcountervalue{\namedcounterparameter{#1}\s!name}\numexpr#2\relax\or
- \fi}
-
-\permanent\tolerant\protected\def\nextcounter[#1]#*[#2]%
- {\ifarguments\or\or
- \clf_nextcountervalue {\namedcounterparameter{#1}\s!name}%
- \else
- \clf_nextsubcountervalue{\namedcounterparameter{#1}\s!name}\numexpr#2\relax\or
- \fi}
-
-\permanent\tolerant\protected\def\countersubs[#1]#*[#2]%
- {\ifarguments\or\or
- \clf_subcountervalues {\namedcounterparameter{#1}\s!name}%
- \else
- \clf_subsubcountervalues{\namedcounterparameter{#1}\s!name}\numexpr#2\relax\or
- \fi}
-
-\permanent\tolerant\protected\def\savecounter[#1]%
- {\ifarguments\or
- \clf_savecounter{\namedcounterparameter{#1}\s!name}%
- \fi}
-
-\permanent\tolerant\protected\def\restorecounter[#1]%
- {\ifarguments\or
- \clf_restorecounter{\namedcounterparameter{#1}\s!name}%
- \fi}
-
-\protected\def\strc_counters_set #1#2{\clf_setcounter {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-\protected\def\strc_counters_setown #1#2{\clf_setowncounter {\namedcounterparameter{#1}\s!name}{#2}}
-\protected\def\strc_counters_restart #1#2{\clf_restartcounter {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-\protected\def\strc_counters_reset #1{\clf_resetcounter {\namedcounterparameter{#1}\s!name}}
-\protected\def\strc_counters_decrement #1{\clf_decrementcounter {\namedcounterparameter{#1}\s!name}}
-
- \def\strc_counters_raw #1{\clf_countervalue {\namedcounterparameter{#1}\s!name}}
- \def\strc_counters_last #1{\clf_lastcountervalue {\namedcounterparameter{#1}\s!name}}
- \def\strc_counters_first #1{\clf_firstcountervalue {\namedcounterparameter{#1}\s!name}}
- \def\strc_counters_next #1{\clf_nextcountervalue {\namedcounterparameter{#1}\s!name}}
- \def\strc_counters_prev #1{\clf_previouscountervalue {\namedcounterparameter{#1}\s!name}}
- \def\strc_counters_subs #1{\clf_subcountervalues {\namedcounterparameter{#1}\s!name}}
-
-\protected\def\strc_counters_set_sub #1#2#3{\clf_setsubcounter {\namedcounterparameter{#1}\s!name}\numexpr#2\relax\numexpr#3\relax}
-\protected\def\strc_counters_setown_sub #1#2#3{\clf_setownsubcounter {\namedcounterparameter{#1}\s!name}\numexpr#2\relax{#3}}
-\protected\def\strc_counters_restart_sub #1#2#3{\clf_restartsubcounter {\namedcounterparameter{#1}\s!name}\numexpr#2\relax\numexpr#3\relax}
-\protected\def\strc_counters_reset_sub #1#2{\clf_resetsubcounter {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-\protected\def\strc_counters_decrement_sub #1#2{\clf_decrementsubcounter {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-
- \def\strc_counters_raw_sub #1#2{\clf_subcountervalue {\namedcounterparameter{#1}\s!name}\numexpr#2\relax} % maybe raw
- \def\strc_counters_last_sub #1#2{\clf_lastsubcountervalue {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
- \def\strc_counters_first_sub #1#2{\clf_firstsubcountervalue {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
- \def\strc_counters_next_sub #1#2{\clf_nextsubcountervalue {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
- \def\strc_counters_prev_sub #1#2{\clf_previoussubcountervalue{\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
- \def\strc_counters_subs_sub #1#2{\clf_subsubcountervalues {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-
-\protected\def\strc_counters_save #1{\clf_savecounter {\namedcounterparameter{#1}\s!name}}
-\protected\def\strc_counters_restore #1{\clf_restorecounter {\namedcounterparameter{#1}\s!name}}
-
-\protected\def\strc_counters_incremented #1{\clf_incrementedcounter {\namedcounterparameter{#1}\s!name}}
-\protected\def\strc_counters_decremented #1{\clf_decrementedcounter {\namedcounterparameter{#1}\s!name}}
-
-\protected\def\showcounter [#1]{\clf_showcounter {\namedcounterparameter{#1}\s!name}}
-\protected\def\incrementedcounter[#1]{\clf_incrementedcounter{\namedcounterparameter{#1}\s!name}} % no \dosingleargument
-\protected\def\decrementedcounter[#1]{\clf_decrementedcounter{\namedcounterparameter{#1}\s!name}} % no \dosingleargument
-
-% public variants ... beware, for old cases, from now on the value variants are the
-% ones that are expandable
-
-\permanent\def\rawcountervalue [#1]{\clf_countervalue {\namedcounterparameter{#1}\s!name}}
-\permanent\def\lastcountervalue [#1]{\clf_lastcountervalue {\namedcounterparameter{#1}\s!name}}
-\permanent\def\firstcountervalue[#1]{\clf_firstcountervalue {\namedcounterparameter{#1}\s!name}}
-\permanent\def\nextcountervalue [#1]{\clf_nextcountervalue {\namedcounterparameter{#1}\s!name}}
-\permanent\def\prevcountervalue [#1]{\clf_previouscountervalue{\namedcounterparameter{#1}\s!name}}
-
-\permanent\def\rawsubcountervalue [#1]#*[#2]{\clf_subcountervalue {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-\permanent\def\lastsubcountervalue [#1]#*[#2]{\clf_lastsubcountervalue {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-\permanent\def\firstsubcountervalue[#1]#*[#2]{\clf_firstsubcountervalue {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-\permanent\def\nextsubcountervalue [#1]#*[#2]{\clf_nextsubcountervalue {\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-\permanent\def\prevsubcountervalue [#1]#*[#2]{\clf_previoussubcountervalue{\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-
-% The bypage check needs a multipass reference and therefore we only check for it when we increment
-% and know that some content will be placed. We could also check for spreads.
-
-\protected\def\strc_counters_increment_sub#1#2%
- {% this will be combined into one lua call
- \edef\m_strc_counters_way{\strc_counters_way{#1}}%
- \ifx\m_strc_counters_way\v!page
- \checkpagechange{#1}%
- \ifpagechanged
- \strc_counters_reset{#1}%
- \fi
- \fi
- \clf_incrementsubcounter{\namedcounterparameter{#1}\s!name}\numexpr#2\relax}
-
-\protected\def\strc_counters_increment#1%
- {\strc_counters_increment_sub{#1}\plusone}
-
-% so far for the hack
-
-\permanent\tolerant\protected\def\convertedcounter[#1]#*[#2]%
- {\begingroup
- \edef\currentcounter{#1}%
- \ifparameter#2\or\setupcurrentcounter[#2]\fi
- \clf_prefixedconverted
- {\counterparameter\s!name}
- {
- prefix {\counterparameter\c!prefix}
- separatorset {\counterparameter\c!prefixseparatorset}
- conversion {\counterparameter\c!prefixconversion}
- conversionset {\counterparameter\c!prefixconversionset}
- starter {\counterparameter\c!prefixstarter}
- stopper {\counterparameter\c!prefixstopper}
- set {\counterparameter\c!prefixset}
- segments {\counterparameter\c!prefixsegments}
- connector {\counterparameter\c!prefixconnector}
- }
- {
- order {\counterparameter\c!numberorder}
- separatorset {\counterparameter\c!numberseparatorset}
- conversion {\counterparameter\c!numberconversion}
- conversionset {\counterparameter\c!numberconversionset}
- starter {\counterparameter\c!numberstarter}
- stopper {\counterparameter\c!numberstopper}
- segments {\counterparameter\c!numbersegments}
- type {\counterparameter\c!type}
- criterium {\counterparameter\c!criterium}
- }
- \relax
- \endgroup}
-
-\permanent\def\directconvertedcounter#1#2% name, type
- {\clf_prefixedconverted
- {\namedcounterparameter{#1}\s!name}
- {
- prefix {\namedcounterparameter{#1}\c!prefix}
- separatorset {\namedcounterparameter{#1}\c!prefixseparatorset}
- conversion {\namedcounterparameter{#1}\c!prefixconversion}
- conversionset {\namedcounterparameter{#1}\c!prefixconversionset}
- % starter {\namedcounterparameter{#1}\c!prefixstarter}
- % stopper {\namedcounterparameter{#1}\c!prefixstopper}
- set {\namedcounterparameter{#1}\c!prefixset}
- segments {\namedcounterparameter{#1}\c!prefixsegments}
- connector {\namedcounterparameter{#1}\c!prefixconnector}
- }
- {
- order {\namedcounterparameter{#1}\c!numberorder}
- separatorset {\namedcounterparameter{#1}\c!numberseparatorset}
- conversion {\namedcounterparameter{#1}\c!numberconversion}
- conversionset {\namedcounterparameter{#1}\c!numberconversionset}
- starter {\namedcounterparameter{#1}\c!numberstarter}
- stopper {\namedcounterparameter{#1}\c!numberstopper}
- segments {\namedcounterparameter{#1}\c!numbersegments}
- type {#2}
- }
- \relax}
-
-\permanent\tolerant\protected\def\convertedsubcounter[#1]#*[#2]#*[#3]% #2 can be n or n:m
- {\ifarguments\or
- \convertedcounter[#1][]%
- \else
- \convertedcounter[#1][\c!numbersegments=#2,#3]%
- \fi}
-
-\permanent\protected\def\doifdefinedcounter {\doifcommandhandler \??counter}
-\permanent\protected\def\doifundefinedcounter {\doifnotcommandhandler \??counter}
-\permanent\protected\def\doifelsedefinedcounter{\doifelsecommandhandler\??counter}
-
-\aliased\let\doifdefinedcounterelse\doifelsedefinedcounter
-
-%D What follows is a compatibility layer. Do we need this?
-
-\aliased\let \numberparameter \namedcounterparameter % {name}\c!key
-
-\aliased\let \definenumber \definecounter % [name]
-\aliased\let \setupnumber \setupcounter % [name][setups]
-
-\aliased\let \setnumber \setcounter % [name]{value}
-\aliased\let \resetnumber \resetcounter % [name]
-\aliased\let \savenumber \savecounter % [name]
-\aliased\let \restorenumber \restorecounter % [name]
-\aliased\let \incrementnumber \incrementcounter % [name]
-\aliased\let \decrementnumber \decrementcounter % [name]
-\aliased\let \rawnumber \rawcounter % [name]
-\aliased\let \getnumber \convertedcounter % [name]
-\aliased\let \convertednumber \convertedcounter % [name]
-
-\aliased\let \doifdefinednumber \doifdefinedcounter % {number}{true}
-\aliased\let \doifundefinednumber \doifnotdefinedcounter % {number}{true}
-\aliased\let \doifelsedefinednumber \doifelsedefinedcounter % {number}{true}{false}
-\aliased\let \doifdefinednumberelse \doifelsedefinedcounter % {number}{true}{false}
-
-\aliased\let \setupnumbering \setupcounter
-
-%D Helpers:
-
-% call:
-%
-% \strc_counters_register_component
-% \currentfloat
-% \getfloatparameters \floatparameter \detokenizedfloatparameter
-% \hascaption \hastitle \hasnumber
-% [settings][userdata]
-%
-% sets:
-%
-% \m_strc_counters_last_registered_index
-% \m_strc_counters_last_registered_attribute
-% \m_strc_counters_last_registered_synchronize
-
-% currentstructurecomponent => \strc_current_ or just \m_strc_
-
-\protected\def\strc_counters_register_component#1#2#3#4#5#6#7[#8][#9]% maybe also nolist
- {\begingroup
- %
- #2[\s!haslevel=1,#8]%
- \edef\p_haslevel {#3\s!haslevel}%
- \edef\p_hascaption{#3\s!hascaption}%
- \edef\p_hastitle {#3\s!hastitle}%
- \edef\p_hasnumber {#3\s!hasnumber}%
- %
- \edef\p_prefixsegments{#3\c!prefixsegments}%
- \ifx\p_prefixsegments\v!auto
- \edef\p_prefixsegments{\autostructureprefixsegments#3}%
- \fi
- %
- \edef\currentname{#3\s!name}%
- \ifempty\currentname
- \edef\currentname{#1}%
- \fi
- \edef\currentcounter{#3\s!counter}%
- \ifempty\currentcounter
- \let\currentcounter\currentname
- \fi
- %
- \ifx\p_hascaption\v!yes
- \strc_counters_register_component_list{#1}{#3}{#4}{#9}%
- \orelse\ifempty\currentstructurecomponentreference
- \strc_counters_register_component_none
- \else
- \strc_counters_register_component_page{#3}%
- \fi
- \endgroup}
-
-\def\strc_counters_register_component_none
- {\glet\m_strc_counters_last_registered_index \relax
- \glet\m_strc_counters_last_registered_attribute \attributeunsetvalue
- \glet\m_strc_counters_last_registered_synchronize\relax}
-
-\def\strc_counters_register_component_check_prefix
- {\ifempty\currentstructurecomponentreferenceprefix
- \let\currentstructurecomponentreferenceprefix\currentstructurereferenceprefix
- \fi
- \ifempty\currentstructurecomponentreferenceprefix
- \let\currentstructurecomponentreferenceprefix\referenceprefix
- \fi
- \ifdefined\currentstructurecomponentreferenceprefix\else
- \let\currentstructurecomponentreferenceprefix\empty
- \fi}
-
-\def\strc_counters_register_component_page#1%
- {\xdef\currentstructurecomponentreference {#1\c!reference}%
- \xdef\currentstructurecomponentreferenceprefix{#1\c!referenceprefix}%
- \strc_counters_register_component_check_prefix
- \setnextinternalreference
- \clf_setdestinationattribute
- {%
- references {%
- internal \locationcount
- % block {\currentsectionblock}% move to lua
- view {\interactionparameter\c!focus}%
- prefix {\currentstructurecomponentreferenceprefix}%
- reference {\currentstructurecomponentreference}%
- }%
- metadata {%
- kind {\s!page}%
- }%
- }%
- \relax
- \xdef\m_strc_counters_last_registered_attribute {\the\lastdestinationattribute}%
- \glet\m_strc_counters_last_registered_index \relax
- \glet\m_strc_counters_last_registered_synchronize\relax}
-
-\def\strc_counters_register_component_list#1#2#3#4%
- {\xdef\currentstructurecomponentname {#2\s!name}%
- \xdef\currentstructurecomponentlevel {#2\c!level}%
- \edef\currentstructurecomponentexpansion {#2\c!expansion}%
- \xdef\currentstructurecomponentxmlsetup {#2\c!xmlsetup}%
- \xdef\currentstructurecomponentcatcodes {#2\s!catcodes}%
- \xdef\currentstructurecomponentlabel {#2\c!label}%
- \xdef\currentstructurecomponentreference {#2\c!reference}%
- \xdef\currentstructurecomponentreferenceprefix{#2\c!referenceprefix}%
- \strc_counters_register_component_check_prefix
- \ifx\currentstructurecomponentexpansion\s!xml
- \xmlstartraw
- \xdef\currentstructurecomponenttitle {#2\c!title}%
- \xdef\currentstructurecomponentbookmark{#2\c!bookmark}%
- \xdef\currentstructurecomponentmarking {#2\c!marking}%
- \xdef\currentstructurecomponentlist {#2\c!list}%
- \xmlstopraw
- \ifempty\currentstructurecomponentlist
- \glet\currentstructurecomponentlist\currentstructurecomponenttitle
- \fi
- \glet\currentstructurecomponentcoding\s!xml
- \else
- \ifx\currentstructurecomponentexpansion\v!yes
- \xdef\currentstructurecomponenttitle {#2\c!title}%
- \xdef\currentstructurecomponentbookmark{#2\c!bookmark}%
- \xdef\currentstructurecomponentmarking {#2\c!marking}%
- \xdef\currentstructurecomponentlist {#2\c!list}%
- \else
- \xdef\currentstructurecomponenttitle {#3\c!title}%
- \xdef\currentstructurecomponentbookmark{#3\c!bookmark}%
- \xdef\currentstructurecomponentmarking {#3\c!marking}%
- \xdef\currentstructurecomponentlist {#3\c!list}%
- \iflocation \ifempty\currentstructurecomponentbookmark
- \begingroup
- \simplifycommands
- \xdef\currentstructurecomponentbookmark{\detokenize\expandafter{\normalexpanded{#2\c!title}}}%
- \endgroup
- \fi \fi
- \fi
- \ifempty\currentstructurecomponentlist
- \glet\currentstructurecomponentlist\currentstructurecomponenttitle
- \fi
- \glet\currentstructurecomponentcoding\s!tex
- \fi
- %
- \setnextinternalreference
- \scratchcounter\clf_addtolist %{
- metadata {
- kind {#1}
- name {\currentname}
- % level structures.sections.currentlevel()
- catcodes \ifempty\currentstructurecomponentcatcodes\catcodetable\else\csname\currentstructurecomponentcatcodes\endcsname\fi
- coding {\currentstructurecomponentcoding}
- \ifx\currentstructurecomponentcoding\s!xml
- xmlroot {\xmldocument}
- \fi
- \ifempty\currentstructurecomponentxmlsetup \else
- xmlsetup {\currentstructurexmlsetup}
- \fi
- }
- references {
- internal \locationcount
- % block {\currentsectionblock}
- reference {\currentstructurecomponentreference}
- prefix {\currentstructurecomponentreferenceprefix}
- % section structures.sections.currentid()
- view {\interactionparameter\c!focus}%
- }
- titledata {
- label {\detokenize\expandafter{\currentstructurecomponentlabel}}
- title {\detokenize\expandafter{\currentstructurecomponenttitle}}
- \ifx\currentstructurecomponentbookmark\currentstructurecomponenttitle \else
- bookmark {\detokenize\expandafter{\currentstructurecomponentbookmark}}
- \fi
- \ifx\currentstructurecomponentmarking\currentstructurecomponenttitle \else
- marking {\detokenize\expandafter{\currentstructurecomponentmarking}}
- \fi
- \ifx\currentstructurecomponentlist\currentstructurecomponenttitle \else
- list {\detokenize\expandafter{\currentstructurecomponentlist}}
- \fi
- }
- \ifx\p_hasnumber\v!yes
- prefixdata {
- prefix {#2\c!prefix}
- separatorset {#2\c!prefixseparatorset}
- conversion {#2\c!prefixconversion}
- conversionset {#2\c!prefixconversionset}
- set {#2\c!prefixset}
- % segments {#2\c!prefixsegments}
- segments {\p_prefixsegments}
- connector {#2\c!prefixconnector}
- }
- numberdata { % more helpers here, like compact elsewhere
- numbers {\currentcounter}
- group {#2\c!group}
- groupsuffix {#2\c!groupsuffix}
- counter {\currentcounter}
- separatorset {#2\c!numberseparatorset}
- conversion {#2\c!numberconversion}
- conversionset {#2\c!numberconversionset}
- starter {#2\c!numberstarter}
- stopper {#2\c!numberstopper}
- segments {#2\c!numbersegments}
- }
- \fi
- userdata {\detokenize{#4}}
- %}
- \relax
- \xdef\m_strc_counters_last_registered_index{\the\scratchcounter}%
- \setstructurecomponentsynchronization\m_strc_counters_last_registered_index
- \glet\m_strc_counters_last_registered_attribute \currentstructurecomponentattribute
- \glet\m_strc_counters_last_registered_synchronize\currentstructurecomponentsynchronize}
-
-\let\m_strc_counters_last_registered_index \relax
-\let\m_strc_counters_last_registered_attribute \relax
-\let\m_strc_counters_last_registered_synchronize\relax
-
-% This can be improved as we don't need to pas all these variables
-% each time (we can set them up once).
-
-\protected\def\strc_counter_preset_using_parameter#1#2% \setupcommand \someparameter
- {#1%
- [\c!way =#2\c!way,
- \c!prefix =#2\c!prefix,
- \c!prefixseparatorset =#2\c!prefixseparatorset,
- \c!prefixconversion =#2\c!prefixconversion,
- \c!prefixconversionset=#2\c!prefixconversionset,
- \c!prefixstarter =#2\c!prefixstarter,
- \c!prefixstopper =#2\c!prefixstopper,
- \c!prefixsegments =#2\c!prefixsegments,
- \c!prefixset =#2\c!prefixset,
- \c!prefixconnector =#2\c!prefixconnector,
- \c!numberseparatorset =#2\c!numberseparatorset,
- \c!numberconversion =#2\c!numberconversion,
- \c!numberconversionset=#2\c!numberconversionset,
- \c!numberstarter =#2\c!numberstarter,
- \c!numberstopper =#2\c!numberstopper,
- \c!numbersegments =#2\c!numbersegments]}
-
-\protected\def\strc_counter_setup_using_parameter#1#2% name \someparameter
- {\edef\currentcounter{#1}%
- %
- \setcounterparameter \c!start{#2\c!start}%
- \setcounterparameter \c!state{#2\c!state}% % beware, "" == start
- \setcounterparameter \c!way{#2\c!way}%
- %
- \setcounterparameter \c!prefix{#2\c!prefix}%
- \setcounterparameter \c!prefixseparatorset{#2\c!prefixseparatorset}%
- \setcounterparameter \c!prefixconversion{#2\c!prefixconversion}%
- \setcounterparameter\c!prefixconversionset{#2\c!prefixconversionset}%
- \setcounterparameter \c!prefixstarter{#2\c!prefixstarter}%
- \setcounterparameter \c!prefixstopper{#2\c!prefixstopper}%
- \setcounterparameter \c!prefixset{#2\c!prefixset}%
- \setcounterparameter \c!prefixsegments{#2\c!prefixsegments}%
- \setcounterparameter \c!prefixset{#2\c!prefixset}%
- \setcounterparameter \c!prefixconnector{#2\c!prefixconnector}%
- %
- \setcounterparameter \c!numberseparatorset{#2\c!numberseparatorset}%
- \setcounterparameter \c!numberconversion{#2\c!numberconversion}%
- \setcounterparameter\c!numberconversionset{#2\c!numberconversionset}%
- \setcounterparameter \c!numberstarter{#2\c!numberstarter}%
- \setcounterparameter \c!numberstopper{#2\c!numberstopper}%
- \setcounterparameter \c!numbersegments{#2\c!numbersegments}%
- %
- \the\everysetupcounter}
-
-\protected\def\mult_interfaces_counter_association#1#2#3#4#5#6#7% tag current setup parameter list sync register
- {\strc_counter_preset_using_parameter#3\rootcounterparameter
- \newtoks#5%
- \permanent\protected\def #6{\ifx#2\empty\the#5\else\strc_counter_setup_using_parameter#2#4\fi}% sync
- \permanent\protected\def#7##1{\normalexpanded{#5{\the#5\strc_counter_setup_using_parameter{##1}\noexpand#4}}}} % register
-
-\permanent\protected\def\installcounterassociation#1% => synchronize#1counters register#1counter
- {\normalexpanded
- {\mult_interfaces_counter_association
- {#1}% not \??xx but xx
- \expandafter\noexpand\csname current#1\endcsname
- \expandafter\noexpand\csname setup#1\endcsname
- \expandafter\noexpand\csname #1parameter\endcsname
- \expandafter\noexpand\csname counter_association_list_#1\endcsname
- \expandafter\noexpand\csname synchronize#1counters\endcsname
- \expandafter\noexpand\csname register#1counter\endcsname}}
-
-% needs testing:
-%
-% \protected\def\strc_counter_setup_push#1#2#3% \someparameter \directsomeparameter \setexpandedsomeparameter
-% {\let\savedcounterparameter \counterparameter
-% \let\saveddirectcounterparameter \directcounterparameter
-% \let\savedsetexpandedcounterparameter\setexpandedcounterparameter
-% % remap
-% \let\counterparameter #1%
-% \let\directcounterparameter #2%
-% \let\setexpandedcounterparameter #3}
-%
-% \protected\def\strc_counter_setup_pop
-% {\let\counterparameter \savedcounterparameter
-% \let\directcounterparameter \saveddirectcounterparameter
-% \let\setexpandedcounterparameter \savedsetexpandedcounterparameter}
-%
-% \protected\def\mult_interfaces_counter_association#1#2#3#4#5#6#7% tag current setup parameter list sync register
-% {\strc_counter_preset_using_parameter#3\rootcounterparameter
-% \newtoks#5%
-% \protected\def#6% sync
-% {\strc_counter_setup_push
-% \ifx#2\empty
-% \the#5%
-% \else
-% \let\currentcounter\empty
-% \the\everysetupcounter
-% \fi
-% \strc_counter_setup_pop}%
-% \protected\def#7##1% register
-% {\normalexpanded{#5{\the#5\edef\noexpand\currentcounter{##1}\noexpand\the\everysetupcounter}}}}
-
-%D For good old times (easier to explain in manuals):
-%D
-%D \starttyping
-%D \setcounter[userpage][9]
-%D \setupcounter[userpage][number=9]
-%D \setupuserpagenumber[number=9]
-%D \stoptyping
-
-% needs testing: we might have conflicts with mixins
-%
-% \appendtoks
-% \ifempty\currentcounter \else
-% \edef\p_number{\counterparameter\c!number}%
-% \ifempty\p_number \else
-% \strc_counters_set\currentcounter\p_number
-% \letcounterparameter\c!number\empty
-% \fi
-% \fi
-% \to \everysetupcounter
-
-\stopcontextdefinitioncode
-
-\protect \endinput