%D \module %D [ file=page-str, %D version=2010.03.13, % 2006.03.21, %D title=\CONTEXT\ Page Macros, %D subtitle=Page Streams, %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 Page Macros / Page Streams} %D The first version of this component of \CONTEXT\ was written %D for Thomas Schmitz who asked for parallel page streams. While %D playing with the code, I decided to make it into a component %D that can be used to construct all kind of stream related %D mechanisms. Because I could apply this feature in a project, %D there is some additional code here (related to graphics). %D %D These macros were written while listening to and watching the DVD %D \quotation {Rush In Rio}. %D %D The reimplementation (or rather experimenting with the complete %D rewrite) was done while looping over \quotation {Wende Snijders %D No.9}. %D %D Remark: marknotes are gone, at least for a while. \registerctxluafile{page-str}{} \unprotect \let \currentoutputstream \empty \newif \ifinoutputstream % will become a conditional or mode \newtoks \everyenableoutputstream \appendtoks \page_otr_command_flush_side_floats \to \everyenableoutputstream \unexpanded\def\initializeoutputstreams {\clf_initializestream \glet\initializeoutputstreams\relax} \unexpanded\def\enableoutputstream[#1]% could be \startoutputsubstream {\initializeoutputstreams \the\everyenableoutputstream \inoutputstreamtrue \xdef\currentoutputstream{#1}% \clf_enablestream{#1} \prevdepth\zeropoint % maybe more is needed i.e. we need to get rid of leading glue } \unexpanded\def\disableoutputstream {\inoutputstreamfalse \glet\currentoutputstream\s!default \clf_disablestream} \unexpanded\def\startoutputstream[#1]% {\begingroup \initializeoutputstreams \the\everyenableoutputstream \inoutputstreamtrue \xdef\currentoutputstream{#1}% \clf_startstream{#1}} \unexpanded\def\stopoutputstream {\clf_stopstream \endgroup} \unexpanded\def\startoutputsubstream[#1]% just push/pop instead {\globalpushmacro\currentoutputstream \enableoutputstream[#1]} \unexpanded\def\stopoutputsubstream {\globalpopmacro\currentoutputstream \enableoutputstream[\currentoutputstream]} \def\flushoutputstream [#1]{\clf_flushstream{#1}} \def\outputstreambox [#1]{\vbox{\clf_flushstream{#1}}} \def\outputstreamcopy [#1]{\vbox{\clf_flushstreamcopy{#1}}} \def\outputstreamunvbox [#1]{\clf_flushstream{#1}} \def\outputstreamunvcopy[#1]{\clf_flushstreamcopy{#1}} \def\synchronizestreams [#1]{\clf_synchronizestream{#1}} \def\dopushoutputstream [#1]{\clf_pushstream{#1}} \unexpanded\def\pushoutputstream {\dosingleempty\dopushoutputstream} % \unexpanded\def\defineoutputstream[#1]% % {\doifundefined{otrs:#1}{\expandafter\newbox\csname otrs:#1\endcsname}} % % \def\useoutputstream[#1]% % {\writestatus{otr}{using output stream #1}% % \xdef\currentoutputstream{#1}} % % \directsetup{stream:\firstoutputstream:set} % \directsetup{stream:\firstoutputstream:top} % \directsetup{stream:\firstoutputstream:bottom} % \directsetup{stream:\firstoutputstream:reset} % Obsolete in \MKIV: % % \unexpanded\def\definemarknote % {\dodoubleempty\dodefinemarknote} % % \def\dodefinemarknote[#1][#2]{} % \def\setmarknote [#1]{\gobbleoneargument} % \def\flushmarknotes [#1]{} % \def\erasemarknotes [#1]{} \protect \endinput % \enabletrackers[streams.flushing] % % \setuplayout[grid=yes] \showgrid % % \starttext % % \input tufte % % \startoutputstream[nl] % % Wat doen we hier? % % \enableoutputstream[en] % % Are you sleeping, brother John?\footnote{xxx} % % \dorecurse{4}{x \footnote{note \recurselevel}\input tufte \par \pushoutputstream} % % \enableoutputstream[de] % % Bruder Jakob, schläfst du noch?\footnote{yyy} % % \dorecurse{4}{x \footnote{note \recurselevel}\input ward \par \pushoutputstream} % % \disableoutputstream % % \stopoutputstream % % Vader Jacob, slaap je nog?\footnote{zzz} % % \input tufte % % \synchronizestreams[en,de,nl] % % \page \flushoutputstream[en] \input knuth % \page \flushoutputstream[de] \input knuth % \page \flushoutputstream[nl] \input knuth % % \stoptext