%D \module %D [ file=buff-par, %D version=2010.12.05, %D title=\CONTEXT\ Buffer Macros, %D subtitle=Parallel, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA / Hans Hagen \& Ton Otten}] %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 Buffer Macros / Parallel} \registerctxluafile{buff-par}{1.001} %D This module is developped for Thomas Schmitz as part of %D a project. \unprotect \letvalue{\??px:}\empty \def\parallelparameter#1% {\csname\??px:% \ifcsname\??px:\currentparallel:\currentparallelinstance:#1\endcsname \currentparallel:\currentparallelinstance:#1% \else\ifcsname\??px:\currentparallel:#1\endcsname \currentparallel:#1% \else\ifcsname\??px:#1\endcsname #1% \fi\fi\fi \endcsname} \unexpanded\def\defineparallel {\dodoubleargument\dodefineparallel} \def\dodefineparallel[#1][#2]% {\ctxcommand{defineparallel("#1","#2")}% \processcommalist[#2]\dododefineparallel \setuvalue{\e!start#1}{\dostartparallelset{#1}}% \setuvalue{\e!stop #1}{\dostopparallelset}} \def\dododefineparallel#1% {\definebuffer[#1]%% \setuvalue{\e!stop#1}{\dowithparallel{#1}}} \def\dostartparallelset#1% {\def\currentparallel{#1}% \ctxcommand{nextparallel("\currentparallel")}} \def\dostopparallelset#1% {} \def\dowithparallel#1% defined moet ook aan de lua kant kunnen {\ctxcommand{saveparallel("\currentparallel","#1",buffers.raw("\thedefinedbuffer{#1}"))}} \unexpanded\def\placeparallel {\dotripleempty\doplaceparallel} \def\doplaceparallel[#1][#2][#3]% {\begingroup \def\currentparallel{#1}% \ctxcommand{placeparallel("\currentparallel","#2","#3")}% \endgroup} % was: \parallelparameter\c!command} \def\doflushparallel#1#2#3#4#5% {instance}{status}{line}{label}{content} {\begingroup \def\currentparallelinstance{#1}% \def\currentparallelnumber {#2}% \def\currentparallelline {#3}% \def\currentparallellabel {#4}% \def\currentparallelcontent {#5}% \ifcase#2\relax \expandafter\noflushparalleldefault \or \expandafter\doflushparalleldefault \fi \endgroup} \def\noflushparalleldefault{} \def\doflushparalleldefault{\directsetup{\parallelparameter\c!setups}} \startsetups parallel:place:default \hangafter1 \hangindent4em \dontleavehmode \hbox to 3em \bgroup \hss \bf \doifsomething \currentparallellabel { \textreference[\currentparallellabel]{\currentparallelline} } \currentparallelline \quad \egroup \currentparallelcontent \par \stopsetups \unexpanded\def\setupparallel {\dotripleempty\dosetupparallel} \def\dosetupparallel[#1][#2][#3]% {\ifthirdargument \getparameters[\??px:#1:#2:][#3]% \else\ifsecondargument \getparameters[\??px:#1:][#2]% \else \getparameters[\??px:][#1]% maybe no : here \fi\fi} \setupparallel % [\c!command=\doflushparalleldefault] [\c!setups=parallel:place:default] \def\doifelseparallel#1#2% {\cldcontext{commands.doifelseparallel("#1","#2")}} \def\resetparallel {\dodoubleempty\doresetparallel} \def\resetparallel[#1][#2]% {\ctxcommand{resetparallel("#1","#2"))}} % default % \def\doflushparalleldefault#1#2#3#4% todo: setups instead % {\ifcase#1\or % \begingroup % \hangafter1 % \hangindent4em % \dontleavehmode % \hbox to 3em{\hss\bf\doifsomething{#3}{\textreference[#3]{#2}}#2\quad}#4\par % \endgroup % \fi} \protect \endinput % \def\dododefineparallel#1% % {\setuvalue{\e!stop #1}{}% % \setuvalue{\e!start#1}{\dostartparallel{#1}}} % % \def\dostartparallel#1% % {\grabuntil{\e!stop#1}{\dododostartparallel{#1}}} % % \def\dododostartparallel#1#2% % {\ctxcommand{saveparallel("\currentparallel","#1",\!!bs\detokenize{#2}\!!es)}}