1%D \module 2%D [ file=page-str, 3%D version=2010.03.13, % 2006.03.21, 4%D title=\CONTEXT\ Page Macros, 5%D subtitle=Page Streams, 6%D author=Hans Hagen, 7%D date=\currentdate, 8%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] 9%C 10%C This module is part of the \CONTEXT\ macro||package and is 11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for 12%C details. 13 14\writestatus{loading}{ConTeXt Page Macros / Page Streams} 15 16%D The first version of this component of \CONTEXT\ was written 17%D for Thomas Schmitz who asked for parallel page streams. While 18%D playing with the code, I decided to make it into a component 19%D that can be used to construct all kind of stream related 20%D mechanisms. Because I could apply this feature in a project, 21%D there is some additional code here (related to graphics). 22%D 23%D These macros were written while listening to and watching the DVD 24%D \quotation {Rush In Rio}. 25%D 26%D The reimplementation (or rather experimenting with the complete 27%D rewrite) was done while looping over \quotation {Wende Snijders 28%D No.9}. 29%D 30%D Remark: marknotes are gone, at least for a while. 31 32\registerctxluafile{page-str}{} 33 34\unprotect 35 36\let \currentoutputstream \empty 37\newif \ifinoutputstream % will become a conditional or mode 38\newtoks \everyenableoutputstream 39 40\appendtoks 41 \page_otr_command_flush_side_floats 42\to \everyenableoutputstream 43 44\unexpanded\def\initializeoutputstreams 45 { 46 \glet\initializeoutputstreams\relax} 47 48\unexpanded\def\enableoutputstream[#1]% could be \startoutputsubstream 49 {\initializeoutputstreams 50 \the\everyenableoutputstream 51 \inoutputstreamtrue 52 \xdef\currentoutputstream{#1}% 53 {#1} 54 \prevdepth\zeropoint % maybe more is needed i.e. we need to get rid of leading glue 55 } 56 57\unexpanded\def\disableoutputstream 58 {\inoutputstreamfalse 59 \glet\currentoutputstream\s!default 60 } 61 62\unexpanded\def\startoutputstream[#1]% 63 {\begingroup 64 \initializeoutputstreams 65 \the\everyenableoutputstream 66 \inoutputstreamtrue 67 \xdef\currentoutputstream{#1}% 68 {#1}} 69 70\unexpanded\def\stopoutputstream 71 { 72 \endgroup} 73 74\unexpanded\def\startoutputsubstream[#1]% just push/pop instead 75 {\globalpushmacro\currentoutputstream 76 \enableoutputstream[#1]} 77 78\unexpanded\def\stopoutputsubstream 79 {\globalpopmacro\currentoutputstream 80 \enableoutputstream[\currentoutputstream]} 81 82\def\flushoutputstream [#1]{{#1}} 83\def\outputstreambox [#1]{\vbox{{#1}}} 84\def\outputstreamcopy [#1]{\vbox{{#1}}} 85\def\outputstreamunvbox [#1]{{#1}} 86\def\outputstreamunvcopy[#1]{{#1}} 87\def\synchronizestreams [#1]{{#1}} 88\def\dopushoutputstream [#1]{{#1}} 89 90\unexpanded\def\pushoutputstream 91 {\dosingleempty\dopushoutputstream} 92 93% \unexpanded\def\defineoutputstream[#1]% 94% {\doifundefined{otrs:#1}{\expandafter\newbox\csname otrs:#1\endcsname}} 95% 96% \def\useoutputstream[#1]% 97% {\writestatus{otr}{using output stream #1}% 98% \xdef\currentoutputstream{#1}} 99% 100% \directsetup{stream:\firstoutputstream:set} 101% \directsetup{stream:\firstoutputstream:top} 102% \directsetup{stream:\firstoutputstream:bottom} 103% \directsetup{stream:\firstoutputstream:reset} 104 105% Obsolete in \MKIV: 106% 107% \unexpanded\def\definemarknote 108% {\dodoubleempty\dodefinemarknote} 109% 110% \def\dodefinemarknote[#1][#2]{} 111% \def\setmarknote [#1]{\gobbleoneargument} 112% \def\flushmarknotes [#1]{} 113% \def\erasemarknotes [#1]{} 114 115\protect \endinput 116 117% \enabletrackers[streams.flushing] 118% 119% \setuplayout[grid=yes] \showgrid 120% 121% \starttext 122% 123% \input tufte 124% 125% \startoutputstream[nl] 126% 127% Wat doen we hier? 128% 129% \enableoutputstream[en] 130% 131% Are you sleeping, brother John?\footnote{xxx} 132% 133% \dorecurse{4}{x \footnote{note \recurselevel}\input tufte \par \pushoutputstream} 134% 135% \enableoutputstream[de] 136% 137% Bruder Jakob, schläfst du noch?\footnote{yyy} 138% 139% \dorecurse{4}{x \footnote{note \recurselevel}\input ward \par \pushoutputstream} 140% 141% \disableoutputstream 142% 143% \stopoutputstream 144% 145% Vader Jacob, slaap je nog?\footnote{zzz} 146% 147% \input tufte 148% 149% \synchronizestreams[en,de,nl] 150% 151% \page \flushoutputstream[en] \input knuth 152% \page \flushoutputstream[de] \input knuth 153% \page \flushoutputstream[nl] \input knuth 154% 155% \stoptext 156 |