summaryrefslogtreecommitdiff
path: root/tex/context/base/page-flw.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/page-flw.mkiv')
-rw-r--r--tex/context/base/page-flw.mkiv186
1 files changed, 76 insertions, 110 deletions
diff --git a/tex/context/base/page-flw.mkiv b/tex/context/base/page-flw.mkiv
index ec1fa636d..9afacf584 100644
--- a/tex/context/base/page-flw.mkiv
+++ b/tex/context/base/page-flw.mkiv
@@ -14,127 +14,93 @@
\writestatus{loading}{ConTeXt Page Macros / Text Flows}
%D This is high experimental and especially flushing may change (proper
-%D spacing is the driving force here). It's an old mechanism used for
-%D playing with stepping through document threads. As it's a simple and
-%D effective mechanism we keep it around. It's not to be confused with
-%D upcoming stream support.
-%D
-%D \starttyping
-%D \setuppapersize [S6]
-%D \setuptolerance [verytolerant,stretch]
-%D \setupfooter [strut=no]
-%D \setupwhitespace[big]
-%D
-%D \setuplayout
-%D [rightedge=5cm,width=fit,margin=0pt,edgedistance=1cm,
-%D footer=4cm,footerdistance=1cm,header=0cm]
-%D
-%D \setuptexttexts [edge][][\vbox{\flushtextflow{alpha}}]
-%D \setupfootertexts[edge][][\vbox{\flushtextflow{beta}}]
-%D \setupfootertexts [\vbox{\flushtextflow{gamma}}][]
-%D
-%D \definetextflow [alfa] [width=\rightedgewidth]
-%D \definetextflow [beta] [width=\rightedgewidth]
-%D \definetextflow [gamma] [width=\footerheight]
-%D
-%D \starttext
-%D
-%D \dorecurse{50}
-%D {\getrandomnumber{\funny}{0}{8}
-%D \ifcase\funny \starttextflow[alfa] \input tufte.tex \stoptextflow
-%D \or \starttextflow[beta] \input knuth.tex \stoptextflow
-%D \or \starttextflow[gamma] \input materie.tex \stoptextflow
-%D \or {\bf TUFTE}\quad \input tufte \par
-%D \or {\bf TUFTE}\quad \input tufte \par
-%D \or {\bf KNUTH}\quad \input knuth \par
-%D \or {\bf KNUTH}\quad \input knuth \par
-%D \or {\bf MATERIE}\quad \input materie \par
-%D \else {\bf MATERIE}\quad \input materie \par
-%D \fi}
-%D
-%D \stoptext
-%D \stoptyping
+%D spacing is the driving force here).
\unprotect
-\installcorenamespace{textflow}
-\installcorenamespace{textflowbox}
+\unexpanded\def\definetextflow
+ {\dodoubleempty\dodefinetextflow}
-\installcommandhandler \??textflow {textflow} \??textflow
-
-\setuptextflow
- [%c!style=,
- %c!color=,
- \c!width=\availablehsize]
-
-\appendtoks
- \ifcsname\??textflowbox\currenttextflow\endcsname
- \setbox\csname\??textflowbox\currenttextflow\endcsname\emptybox
- \else
- \expandafter\newbox\csname\??textflowbox\currenttextflow\endcsname
- \fi
-\to \everydefinetextflow
-
-\let\b_page_textflow_box\zerocount
+\def\dodefinetextflow[#1][#2]% flow settings
+ {\iffirstargument
+ \doiftextflowcollectorelse{#1}
+ {\setbox\textflowcollector{#1}\emptybox}
+ {\@EA\newbox\csname\??tx:c:#1\endcsname}%
+ \getparameters[\??tx:p:#1]
+ [\c!width=\hsize,\c!style=,#2]%
+ \fi}
-\def\textflowcollector#1%
- {\csname\??textflowbox#1\endcsname}
+\def\textflowparameter#1#2{\csname\??tx:p:#1#2\endcsname}
+\def\textflowcollector #1{\csname\??tx:c:#1\endcsname}
-\unexpanded\def\doiftextflowcollectorelse#1%
- {\ifcsname\??textflowbox#1\endcsname
- \expandafter\firstoftwoarguments
- \else
- \expandafter\secondoftwoarguments
- \fi}
+\def\doiftextflowcollectorelse#1{\doifdefinedelse{\??tx:c:#1}}
-\unexpanded\def\doiftextflowelse#1%
- {\ifcsname\??textflowbox#1\endcsname
- \ifvoid\csname\??textflowbox#1\endcsname
- \doubleexpandafter\secondoftwoarguments
- \else
- \doubleexpandafter\firstoftwoarguments
- \fi
- \else
- \expandafter\secondoftwoarguments
- \fi}
+\def\doiftextflowelse#1%
+ {\doiftextflowcollectorelse{#1}
+ {\ifvoid\textflowcollector{#1}%
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+ {\secondoftwoarguments}}
-% \unexpanded\def\doiftextflow#1%
-% {\doiftextflowelse{#1}\firstofoneargument\gobbleoneargument}
+\def\doiftextflow#1%
+ {\doiftextflowelse{#1}\firstofoneargument\gobbleoneargument}
\unexpanded\def\starttextflow[#1]%
- {\begingroup
- \edef\currenttextflow{#1}%
- \ifcsname\??textflowbox\currenttextflow\endcsname
- \b_page_textflow_box\csname\??textflowbox\currenttextflow\endcsname
- \global\setbox\b_page_textflow_box\vbox
- \bgroup
- \dontcomplain
- \ifvoid\b_page_textflow_box\else
- \unvbox\b_page_textflow_box
- \fi
- \hsize\textflowparameter\c!width\relax
- \usetextflowstyleandcolor\c!style\c!color
- \unexpanded\def\stoptextflow{\endgraf\egroup\endgroup}%
- \else
- \let\stoptextflow\endgroup
- \fi}
+ {\doiftextflowcollectorelse{#1}
+ {\global\setbox\textflowcollector{#1}\vbox
+ \bgroup
+ \unvbox\textflowcollector{#1}%
+ \hsize\textflowparameter{#1}\c!width
+ \dousestyleparameter{\textflowparameter{#1}\c!style}%
+ \unexpanded\def\stoptextflow{\endgraf\egroup}}
+ {\let\stoptextflow\relax}}
-\unexpanded\def\flushtextflow#1%
- {\begingroup
- \edef\currenttextflow{#1}%
- \ifcsname\??textflowbox\currenttextflow\endcsname
- \b_page_textflow_box\csname\??textflowbox\currenttextflow\endcsname
- \ifvoid\b_page_textflow_box
- % sorry
- \else\ifdim\ht\b_page_textflow_box>\vsize
- \setbox\scratchbox\vsplit\b_page_textflow_box to \vsize
- \ifvoid\scratchbox\else
- \unvbox\scratchbox
- \fi
+\def\flushtextflow#1%
+ {\doiftextflow{#1}
+ {\ifdim\ht\textflowcollector{#1}>\vsize
+ \setbox\scratchbox\vsplit\textflowcollector{#1} to \vsize
+ \unvbox\scratchbox
\else
- \unvbox\b_page_textflow_box
- \fi\fi
- \fi
- \endgroup}
+ \unvbox\textflowcollector{#1}%
+ \fi}}
\protect \endinput
+
+% Example (dutch)
+%
+% \stelpapierformaatin [S6]
+% \steltolerantiein [soepel,rek]
+% \stelkleurenin [status=start]
+% \stelvoetin [strut=nee]
+% \stelwitruimtein [groot]
+%
+% \stellayoutin
+% [rechterrand=5cm,breedte=passend,marge=0pt,randafstand=1cm,
+% voet=4cm,voetafstand=1cm,hoofd=0cm]
+%
+% \stelteksttekstenin[rand][][\vbox{\flushtextflow{alpha}}]
+% \stelvoettekstenin [rand][][\vbox{\flushtextflow{beta}}]
+% \stelvoettekstenin [\vbox{\flushtextflow{gamma}}][]
+%
+% \definetextflow [alfa] [breedte=\rechterrandbreedte]
+% \definetextflow [beta] [breedte=\rechterrandbreedte]
+% \definetextflow [gamma] [breedte=\voethoogte]
+%
+% \starttekst
+%
+% \dorecurse{50}
+% {\getrandomnumber{\funny}{0}{8}
+% \ifcase\funny \starttextflow[alfa] \input tufte.tex \stoptextflow
+% \or \starttextflow[beta] \input knuth.tex \stoptextflow
+% \or \starttextflow[gamma] \input materie.tex \stoptextflow
+% \or {\bf TUFTE}\quad \input tufte \par
+% \or {\bf TUFTE}\quad \input tufte \par
+% \or {\bf KNUTH}\quad \input knuth \par
+% \or {\bf KNUTH}\quad \input knuth \par
+% \or {\bf MATERIE}\quad \input materie \par
+% \else {\bf MATERIE}\quad \input materie \par
+% \fi}
+%
+% \stoptekst