summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-sbe.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/strc-sbe.mkiv')
-rw-r--r--tex/context/base/strc-sbe.mkiv102
1 files changed, 47 insertions, 55 deletions
diff --git a/tex/context/base/strc-sbe.mkiv b/tex/context/base/strc-sbe.mkiv
index 4ea08b30c..a98b67885 100644
--- a/tex/context/base/strc-sbe.mkiv
+++ b/tex/context/base/strc-sbe.mkiv
@@ -27,76 +27,78 @@
% \chapter{second} \section{alpha} test \section{beta} test \page
% \stopbodymatter % optional
-\installcorenamespace{sectionblock}
-
-\installcommandhandler \??sectionblock {sectionblock} \??sectionblock
-
-\setupsectionblock
- [\c!number=\v!yes,
- \c!page=\v!right] % otherwise marks are reset too soon
-
-\newtoks\everybeforesectionblock
-\newtoks\everyaftersectionblock
-
-\let\strc_sectionblock_define_normal\definesectionblock
-
-\unexpanded\def\definesectionblock
- {\dotripleargument\strc_sectionblock_define}
-
-\def\strc_sectionblock_define[#1][#2][#3]% singular plural settings
- {\strc_sectionblock_define_normal[#1][#3]%
- \expandafter\newif\csname if#2\endcsname % obsolete
- \strc_sectionblock_set_environment{#1}\empty
- \setuvalue{\e!start#2}{\startsectionblock[#1]}%
- \setuvalue{\e!stop #2}{\stopsectionblock}}
+\unexpanded\def\definesectionblock{\dotripleargument\dodefinesectionblock}
+\unexpanded\def\setupsectionblock {\dodoubleargument\dosetupsectionblock}
+\def\setsectionblock {\dosingleargument\dosetsectionblock}
+
+\def\sectionblockparameter#1%
+ {\csname
+ \ifcsname\??sb\currentsectionblock#1\endcsname\??sb\currentsectionblock#1\else\s!empty\fi
+ \endcsname}
+
+\newtoks \everybeforesectionblock
+\newtoks \everyaftersectionblock
+
+\def\dodefinesectionblock[#1][#2][#3]% singular plural settings
+ {\getparameters
+ [\??sb#1]
+ [\c!number=\v!yes,
+ \c!page=\v!right, % anders worden marks te vroeg gereset !
+ #3]%
+ \expandafter\newif\csname if#2\endcsname % better a mode
+ \setsectionblockenvironment{#1}\empty
+ \setvalue {\e!start#2}{\startsectionblock[#1]}%
+ \setvalue {\e!stop #2}{\stopsectionblock}}
\ifdefined \resetallstructuremarks \else
\let\resetallstructuremarks\relax
\fi
-\def\strc_sectionblock_handle_page
- {\edef\p_strc_sectionblock_page{\sectionblockparameter\c!page}%
- \ifx\p_strc_sectionblock_page\empty \else
- \page[\p_strc_sectionblock_page]%
- \fi}
-
\appendtoks
- \strc_sectionblock_handle_page
+ \doifsomething{\sectionblockparameter\c!page}{\page[\sectionblockparameter\c!page]}%
\resetallstructuremarks
- \strc_sectionblock_get_environment\currentsectionblock
+ \getsectionblockenvironment\currentsectionblock
\sectionblockparameter\c!before % don't move
\dostarttagged\t!division\currentsectionblock
\to \everybeforesectionblock
\appendtoks
\sectionblockparameter\c!after % don't move
- \strc_sectionblock_handle_page
+ \doifsomething{\sectionblockparameter\c!page}{\page[\sectionblockparameter\c!page]}%
\dostoptagged
\resetallstructuremarks
\to \everyaftersectionblock
-\unexpanded\def\setsectionblock
- {\dosingleargument\strc_sectionblock_set}
+\def\dosetupsectionblock[#1]%
+ {\getparameters[\??sb#1]}% [#2]
-\def\strc_sectionblock_set[#1]% used to set the default
- {\edef\currentsectionblock{\ctxcommand{setsectionblock("#1")}}}
+\def\dosetsectionblock[#1]% used to set the default
+ {\edef\currentsectionblock{\ctxlua{structures.sections.setblock("#1")}}}
\let\currentsectionblock\empty % was \s!unknown
\unexpanded\def\startsectionblock[#1]%
{%\ctxlua{structures.counters.check(0)}% we assume sane usage of \page, as this is the only workable place (in push)
\begingroup
- \edef\currentsectionblock{\ctxcommand{pushsectionblock("#1")}}%
- \csname #1true\endcsname % obsolete
+ \edef\currentsectionblock{\ctxlua{structures.sections.pushblock("#1")}}%
+ \csname #1true\endcsname % for old times sake
\setsystemmode\currentsectionblock
\the\everybeforesectionblock\relax
\showmessage\m!structures1\currentsectionblock}
\unexpanded\def\stopsectionblock
- {\showmessage\m!structures2\currentsectionblock
- \the\everyaftersectionblock\relax
- \edef\currentsectionblock{\ctxcommand{popsectionblock()}}%
- \endgroup}
+ {\showmessage\m!structures2\currentsectionblock
+ \the\everyaftersectionblock\relax
+ \edef\currentsectionblock{\ctxlua{structures.sections.popblock()}}%
+ \endgroup}
+
+\long\def\setsectionblockenvironment#1#2%
+ {\long\setvalue{\??sb\s!do#1}{\do{#2}}}
+
+\def\getsectionblockenvironment#1%
+ {\let\do\firstofoneargument
+ %\sectionblockparameter{\s!do#1}}
+ \csname\??sb\s!do#1\endcsname}
%D \starttyping
%D \startsectionblockenvironment[frontpart]
@@ -118,20 +120,10 @@
%D \stoptext
%D \stoptyping
-\installcorenamespace{sectionblockenvironment}
-
-\unexpanded\def\strc_sectionblock_set_environment#1#2%
- {\setvalue{\??sectionblockenvironment#1}{#2}}
-
-\unexpanded\def\strc_sectionblock_get_environment#1%
- {\csname\??sectionblockenvironment#1\endcsname}
-
-\unexpanded\setvalue{\e!start\v!sectionblockenvironment}%
- {\dosingleargument\strc_sectionblock_environment_start}
-
-\letvalue{\e!stop\v!sectionblockenvironment}\relax
+\setvalue{\e!start\v!sectionblockenvironment}%
+ {\dosingleargument\dostartsectionblockenvironment}
-\def\strc_sectionblock_environment_start[#1]% evt \pushendofline \popendofline
- {\grabuntil{\e!stop\v!sectionblockenvironment}{\strc_sectionblock_set_environment{#1}}}
+\def\dostartsectionblockenvironment[#1]% evt \pushendofline \popendofline
+ {\grabuntil{\e!stop\v!sectionblockenvironment}{\setsectionblockenvironment{#1}}}
\protect \endinput