summaryrefslogtreecommitdiff
path: root/tex/context/base/core-sys.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/core-sys.mkiv')
-rw-r--r--tex/context/base/core-sys.mkiv107
1 files changed, 69 insertions, 38 deletions
diff --git a/tex/context/base/core-sys.mkiv b/tex/context/base/core-sys.mkiv
index f5bb45e35..cdca352bd 100644
--- a/tex/context/base/core-sys.mkiv
+++ b/tex/context/base/core-sys.mkiv
@@ -194,48 +194,79 @@
\definecomplexorsimple\start
\definecomplexorsimple\stop
-\def\dododefinestartstop[#1][#2]% todo: use indirect commands
- {\getparameters
- [\??be#1]
- [\c!before=,
- \c!after=,
- \c!inbetween=,
- \c!commands=,
- \c!style=,
- #2]%
- \setuvalue{#1}%
- {\groupedcommand
- {\getvalue{\??be#1\c!commands}%
- \dostarttagged\t!construct{#1}%
- \dostartattributes{\??be#1}\c!style\c!color}
- {\dostopattributes
- \dostoptagged
- \getvalue{\??be#1\c!inbetween}}}%
- \setvalue{\e!start#1}%
- {\getvalue{\??be#1\c!before}%
- \bgroup
- \getvalue{\??be#1\c!commands}%
- \dostarttagged\t!construct{#1}%
- \dostartattributes{\??be#1}\c!style\c!color\empty}%
- \setvalue{\e!stop#1}%
- {\dostopattributes
- \dostoptagged
- \egroup
- \getvalue{\??be#1\c!after}}}
+% \def\dododefinestartstop[#1][#2]% todo: use indirect commands
+% {\getparameters
+% [\??be#1]
+% [\c!before=,
+% \c!after=,
+% \c!inbetween=,
+% \c!commands=,
+% \c!style=,
+% #2]%
+% \setuvalue{#1}%
+% {\groupedcommand
+% {\getvalue{\??be#1\c!commands}%
+% \dostarttagged\t!construct{#1}%
+% \dostartattributes{\??be#1}\c!style\c!color}
+% {\dostopattributes
+% \dostoptagged
+% \getvalue{\??be#1\c!inbetween}}}%
+% \setuvalue{\e!start#1}%
+% {\getvalue{\??be#1\c!before}%
+% \bgroup
+% \getvalue{\??be#1\c!commands}%
+% \dostarttagged\t!construct{#1}%
+% \dostartattributes{\??be#1}\c!style\c!color\empty}%
+% \setuvalue{\e!stop#1}%
+% {\dostopattributes
+% \dostoptagged
+% \egroup
+% \getvalue{\??be#1\c!after}}}
+%
+% \def\dodefinestartstop[#1][#2]%
+% {\def\docommand##1{\dododefinestartstop[##1][#2]}%
+% \processcommalist[#1]\docommand}
+%
+% \unexpanded\def\definestartstop
+% {\dodoubleargument\dodefinestartstop}
+%
+% \def\dosetupstartstop[#1][#2]%
+% {\def\docommand##1{\getparameters[\??be##1][#2]}%
+% \processcommalist[#1]\docommand}
+%
+% \unexpanded\def\setupstartstop
+% {\dodoubleargument\dosetupstartstop}
+
-\def\dodefinestartstop[#1][#2]%
- {\def\docommand##1{\dododefinestartstop[##1][#2]}%
- \processcommalist[#1]\docommand}
+% \c!before \c!after \c!inbetween \c!commands \c!style \c!color
-\unexpanded\def\definestartstop
- {\dodoubleargument\dodefinestartstop}
+\installcommandhandler{\??be}{startstop}{\??be}
-\def\dosetupstartstop[#1][#2]%
- {\def\docommand##1{\getparameters[\??be##1][#2]}%
- \processcommalist[#1]\docommand}
+\appendtoks
+ \normalexpanded{\dodefinestartstop{\currentstartstop}}%
+\to \everydefinestartstop
-\unexpanded\def\setupstartstop
- {\dodoubleargument\dosetupstartstop}
+\unexpanded\def\dodefinestartstop#1%
+ {\setuvalue{#1}%
+ {\groupedcommand
+ {\def\currentstartstop{#1}%
+ \startstopparameter\c!commands
+ \dostarttagged\t!construct\currentstartstop
+ \dosetstartstopattributes\c!style\c!color}
+ {\def\currentstartstop{#1}%
+ \dostoptagged
+ \startstopparameter\c!inbetween}}%
+ \setuvalue{\e!start#1}%
+ {\namedstartstopparameter{#1}\c!before
+ \bgroup
+ \def\currentstartstop{#1}%
+ \startstopparameter\c!commands
+ \dostarttagged\t!construct\currentstartstop
+ \dosetstartstopattributes\c!style\c!color}%
+ \setuvalue{\e!stop#1}%
+ {\dostoptagged
+ \egroup
+ \namedstartstopparameter{#1}\c!after}}
% \docommand kan niet worden gebruikt omdat deze macro
% soms lokaal wordt gebruikt