diff options
author | Karl Berry <karl@freefriends.org> | 2016-04-22 22:14:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-04-22 22:14:39 +0000 |
commit | fc4466b32ed330a956ac603b00fd145524cff49a (patch) | |
tree | 2c50e2b8de13aa9233b2c76dffe201558f169e86 /Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv | |
parent | 50e2368597d5f6fe2057195d0ae6a9f2044923e4 (diff) |
context (22apr16)
git-svn-id: svn://tug.org/texlive/trunk@40691 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv | 624 |
1 files changed, 624 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv b/Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv new file mode 100644 index 00000000000..a4178713394 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv @@ -0,0 +1,624 @@ + %D \module +%D [ file=page-one, +%D version=2000.10.20, +%D title=\CONTEXT\ Page Macros, +%D subtitle=Default Routine, +%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 / Default Routine} + +%D This is just the good old \CONTEXT\ output routine, which +%D has been there right from the start. + +\unprotect + +% OTRONE: basic single column + +\newconstant \c_page_one_float_method + +\unexpanded\def\page_one_command_next_page + {\page_otr_eject_page} + +\unexpanded\def\page_one_command_next_page_and_inserts + {\page_otr_eject_page_and_flush_inserts} + +\unexpanded\def\page_one_command_set_hsize + {\global\hsize\textwidth} + +\unexpanded\def\page_one_command_set_float_hsize + {\global\hsize\textwidth} + +% \newdimen\d_page_one_saved_vsize +% +% \unexpanded\def\page_one_command_set_vsize +% {\ifgridsnapping +% \ifcase\layoutlines +% \getrawnoflines\textheight +% \else +% \noflines\layoutlines +% \fi +% \global\vsize\noflines\openlineheight +% \else +% \global\vsize\textheight +% \fi +% \ifdim\pagegoal<\maxdimen +% \ifdim\d_page_one_saved_vsize=\vsize +% % let's assume that the layout didn't change +% \else +% \global\d_page_one_saved_vsize\vsize +% \pagegoal\dimexpr\vsize-\d_page_floats_inserted_top-\d_page_floats_inserted_bottom\relax +% % \bgroup +% % \global\d_page_one_saved_vsize\vsize +% % \advance\vsize-\d_page_floats_inserted_top +% % \advance\vsize-\d_page_floats_inserted_bottom +% % \pagegoal\vsize +% % \egroup +% \fi +% \fi} + +\unexpanded\def\page_one_command_set_vsize + {\ifgridsnapping + \ifcase\layoutlines + \getrawnoflines\textheight + \else + \noflines\layoutlines + \fi + \global\vsize\noflines\openlineheight + \else + \global\vsize\textheight + \fi + % alternatively we could set it in builders.buildpage_filter + % \ifdim\pagegoal<\maxdimen .. \fi + \global\pagegoal\dimexpr\vsize-\d_page_floats_inserted_top-\d_page_floats_inserted_bottom\relax} + + +% 1 = partial page, 2 = whole page, 3 = partial page + +\setnewconstant\kindofpagetextareas\plustwo % \plusone can become default some day + +\def\page_one_registered_text_area_a % two arguments: (un)vbox n + {\ifconditional\c_page_areas_enabled + \expandafter\page_one_registered_text_area_a_indeed + \else + \expandafter\firstofoneargument + \fi} + +\def\page_one_registered_text_area_b % one arguments: content + {\ifconditional\c_page_areas_enabled + \expandafter\page_one_registered_text_area_b_indeed + \else + \expandafter\firstofoneargument + \fi} + +\def\page_one_registered_text_area_a_indeed % two arguments: (un)vbox n + {\ifcase\kindofpagetextareas + \expandafter\firstofoneargument + \or % partial page (experimental) + \expandafter\page_areas_register_direct + \or % whole page (default) + \expandafter\firstofoneargument + \else + \expandafter\firstofoneargument + \fi} + +\def\page_one_registered_text_area_b_indeed % one arguments: content + {\ifcase\kindofpagetextareas + % \expandafter\firstofoneargument + \or % partial page (experimental) + % \expandafter\firstofoneargument + \or % whole page (default) + \expandafter\page_areas_register_boxed + \else + % \expandafter\firstofoneargument + \fi} + +\newdimen\d_page_one_natural_depth +\newbox \b_page_one_bottom_notes +\newbox \b_page_one_contents + +\let\page_one_command_package_show_state\relax + +% \fakepagenotes ... needs checking +% +% we can also have bottom notes on top of bottom insertions + +\unexpanded\def\page_one_command_package_contents#1#2% \box<n> \unvbox<n> % this one will be redone (checked) + {\bgroup + \strc_notes_check_if_bottom_present + \d_page_one_natural_depth\dp#2\relax + % we need to set the height as otherwise the shrink will not kick in so the following + % no longer applies: + % + % \setbox\b_page_one_contents\vbox \ifconditional\c_notes_bottom_present to \textheight \fi + % + \setbox\b_page_one_contents\vbox to \textheight % probably no pack + {\page_otr_command_flush_top_insertions + % this is messy ... we will provide a more tight area (no big deal as we can + % do that at the lua end) + \page_one_registered_text_area_a#1#2% \unvbox <box> + % + \ifgridsnapping + \vskip\dimexpr\openstrutdepth-\d_page_one_natural_depth\relax + \prevdepth\openstrutdepth + \page_otr_command_flush_bottom_insertions + \vfil + \else\ifcase\bottomraggednessmode + % ragged (default) + \vskip\dimexpr\openstrutdepth-\d_page_one_natural_depth\relax + \prevdepth\openstrutdepth + \page_otr_command_flush_bottom_insertions + \vfil + \or + % align (normal) + \page_otr_command_flush_bottom_insertions + \or + % baseline + \kern\dimexpr\maxdepth-\d_page_one_natural_depth\relax + \page_otr_command_flush_bottom_insertions + \fi\fi + \fakepagenotes}% + \page_one_command_package_show_state + \ifconditional\c_notes_bottom_present + \ifgridsnapping + \ifcase\layoutlines + \getrawnoflines\textheight + \else + \noflines\layoutlines + \fi + \scratchoffset\dimexpr\numexpr\noflines-\plusone\relax\lineheight+\topskip\relax + \else + \scratchoffset\ht\b_page_one_contents + \fi + \setbox\b_page_one_bottom_notes\hpack + {\checksinglecolumnfootnotes % why this check? *** + \lower\scratchoffset\vbox{\placebottomnotes\par\kern\zeropoint}}% kerns makes notes sit on bottom % pack ? + \smashbox\b_page_one_bottom_notes + \ht\b_page_one_contents\zeropoint + \page_one_registered_text_area_b + {\vpack to \textheight + {\box\b_page_one_contents + \box\b_page_one_bottom_notes}}% + \else + \ht\b_page_one_contents\textheight + \page_one_registered_text_area_b + {\box\b_page_one_contents}% + \fi + \egroup} + +\unexpanded\def\page_one_command_side_float_output + {\page_otr_construct_and_shipout\unvbox\normalpagebox} + +\unexpanded\def\page_one_command_routine + {\page_sides_output_routine} + +%D Insertions + +\newconditional\c_page_one_top_of_insert +\newconditional\c_page_one_correct_top_insert \settrue\c_page_one_correct_top_insert % false moves up (tight) +\newskip \s_page_one_between_top_insert + +\def\page_one_prepare_top_float + {\ifdim\d_page_floats_inserted_top=\zeropoint + \settrue\c_page_one_top_of_insert + \else + \setfalse\c_page_one_top_of_insert + \fi + \s_page_one_between_top_insert\ifdim\d_strc_floats_top>\d_strc_floats_bottom\d_strc_floats_top\else\d_strc_floats_bottom\fi\relax + \global\advance\d_page_floats_inserted_top\dimexpr\ht\floatbox+\dp\floatbox+\s_page_one_between_top_insert\relax} + +\def\page_one_insert_top_float % maybe remember last beforeskip + {\insert\namedinsertionnumber\s!topfloat\bgroup + \forgetall + \ifconditional\c_page_one_top_of_insert + \ifconditional\c_page_one_correct_top_insert + \topskipcorrection % [xx] new: see icare topbleed + \kern-\lineskip + \par + \prevdepth\maxdimen + \fi + \fi + \page_otr_command_flush_float_box + \vskip\s_page_one_between_top_insert + \egroup} + +\unexpanded\def\page_one_command_set_top_insertions + {\bgroup + \ifconditional\c_page_floats_some_waiting + \noffloatinserts\zerocount + \let\totaltopinserted\!!zeropoint + \page_one_command_set_top_insertions_indeed + \ifnum\rootfloatparameter\c!nbottom=\zerocount + \ifnum\rootfloatparameter\c!nlines>\zerocount + \ifdim\totaltopinserted>\zeropoint\relax + \ifdim\dimexpr\rootfloatparameter\c!nlines\lineheight+\totaltopinserted\relax>\textheight + \showmessage\m!floatblocks8{\rootfloatparameter\c!nlines}% + \page_otr_fill_and_eject_page % was tripple: vfilll + \fi + \fi + \fi + \fi + \fi + \egroup} + +\def\page_one_command_set_top_insertions_indeed + {\ifnum\noffloatinserts<\c_page_floats_n_of_top + \page_floats_get + \page_one_prepare_top_float + \ifdim\d_page_floats_inserted_top<\textheight\relax + \xdef\totaltopinserted{\the\d_page_floats_inserted_top}% + \page_one_insert_top_float + \ifconditional\c_page_floats_some_waiting + \advance\noffloatinserts \plusone + \else + \noffloatinserts\c_page_floats_n_of_top\relax + \fi + \page_floats_report_flushed + \else + \page_floats_resave\s!text + \noffloatinserts\c_page_floats_n_of_top\relax + \fi + \else + \ifconditional\c_page_floats_some_waiting + \showmessage\m!floatblocks6{\the\c_page_floats_n_of_top}% + \fi + \let\page_one_command_set_top_insertions_indeed\relax + \fi + \page_one_command_set_top_insertions_indeed} + +\unexpanded\def\page_one_command_set_bottom_insertions + {\bgroup + \ifconditional\c_page_floats_some_waiting + \noffloatinserts\zerocount + \page_one_command_set_bottom_insertions_indeed + \fi + \egroup} + +\def\page_one_command_set_bottom_insertions_indeed + {\ifnum\noffloatinserts<\c_page_floats_n_of_bottom\relax + \page_floats_get + \global\advance\d_page_floats_inserted_bottom\dimexpr\ht\floatbox+\dp\floatbox+\d_strc_floats_top\relax + \ifdim\d_page_floats_inserted_bottom<\pagegoal\relax + \insert\namedinsertionnumber\s!bottomfloat\bgroup + \forgetall + \blank[\rootfloatparameter\c!spacebefore]% + \page_otr_command_flush_float_box + \egroup + \ifconditional\c_page_floats_some_waiting + \advance\noffloatinserts \plusone + \else + \noffloatinserts\c_page_floats_n_of_bottom + \fi + \page_floats_report_flushed + \else + \page_floats_resave\s!text + \noffloatinserts\c_page_floats_n_of_bottom\relax + \fi + \global\settrue\c_page_floats_not_permitted % vgl topfloats s! + \else + \ifconditional\c_page_floats_some_waiting + \showmessage\m!floatblocks7{\the\c_page_floats_n_of_bottom}% + \fi + \let\page_one_command_set_bottom_insertions_indeed\relax + \fi + \page_one_command_set_bottom_insertions_indeed} + +\unexpanded\def\page_one_command_flush_top_insertions + {\ifvoid\namedinsertionnumber\s!topfloat\else + \ifgridsnapping + \box\namedinsertionnumber\s!topfloat + \vskip-\topskip + \vskip\strutheight % [xx] new: see icare topbleed + \else + \ifcase\c_page_floats_insertions_topskip_mode + % 0: default, do nothing + \or + % 1: no topskip (crossed fingers) + \vskip-\topskip + \vskip\strutheight + \fi + \unvbox\namedinsertionnumber\s!topfloat + \fi + \fi + \global\d_page_floats_inserted_top\zeropoint} + +\unexpanded\def\page_one_command_flush_bottom_insertions + {\ifvoid\namedinsertionnumber\s!bottomfloat\else + \ifgridsnapping + % \floatparameter\c!bottombefore + \snaptogrid\hbox{\box\namedinsertionnumber\s!bottomfloat}% + % \floatparameter\c!bottomafter + \else + \floatparameter\c!bottombefore + \unvbox\namedinsertionnumber\s!bottomfloat + \floatparameter\c!bottomafter + \fi + \fi + \global\d_page_floats_inserted_bottom\zeropoint + \global\setfalse\c_page_floats_not_permitted} + +\unexpanded\def\page_one_command_flush_floats + {\global\settrue\c_page_floats_flushing + \ifconditional\c_page_floats_some_waiting + \par + % if kept, then option and definitely off in gridmode ! ! ! ! + % \ifvmode \prevdepth\maxdimen \fi % prevents whitespace; problematic in icare tests + \page_one_command_flush_floats_indeed + \fi + \global\savednoffloats\zerocount + \global\setfalse\c_page_floats_some_waiting + \global\setfalse\c_page_floats_flushing} + +\unexpanded\def\page_one_command_flush_float_box + {\ifconditional\c_page_floats_center_box \ifdim\wd\floatbox<\hsize + \global\setbox\floatbox\hpack to \hsize{\hss\box\floatbox\hss}% + \fi \fi + \snaptogrid\hpack{\box\floatbox}} % was copy + +\def\page_one_command_flush_floats_indeed % much in common with OTRSET + {\ifconditional\c_page_floats_some_waiting + \ifconditional\c_page_floats_pack_flushed + \setfalse\c_page_floats_center_box % not needed as we do call directly + \page_floats_collect\s!text\hsize\emwidth + %% no longer (interferes with footnotes): + %% + %% \page_one_command_set_vsize % test 2011.06.24.001 + %% + \global\setbox\floatbox\hbox to \hsize + {\hfil + \dorecurse\nofcollectedfloats + {\ifcase\columndirection % nog document wide + \page_floats_flush\s!text\plusone + \else + \page_floats_flush\s!text{\the\numexpr\nofcollectedfloats-\recurselevel+1\relax}% + \fi + \ifdim\wd\floatbox>\makeupwidth % \hsize + \hbox to \makeupwidth{\hss\box\floatbox\hss}% + \else + \box\floatbox + \fi + \ifnum\recurselevel<\nofcollectedfloats + \hfil + \fi}% + \hfil}% + \else + \page_floats_get + \fi + % there is a chance that due to rounding errors, the float + % fits on a page where it was first rejected, in which case + % the prevdepth is -maxdimen and we cannot obey the grid + \doplacefloatbox + \expandafter\page_one_command_flush_floats_indeed + \fi} + +\unexpanded\def\page_one_command_flush_margin_blocks + {\ifconditional\c_page_margin_blocks_present % \ifvoid\b_page_margin_blocks \else + \ifdim\pagetotal=\zeropoint + \null % \fixedspace + \fi + \page_otr_command_next_page % \page + \ifvoid\b_page_margin_blocks + \global\setfalse\c_page_margin_blocks_present + \else + \doubleexpandafter\page_one_command_flush_margin_blocks + \fi + \fi} + +\unexpanded\def\page_one_command_check_if_float_fits + {\ifconditional\c_page_floats_not_permitted + \global\setfalse\c_page_floats_room + \else + % new per 31/5/2004, should be an option, only one column mode + \begingroup + \scratchdimen\dimexpr\pagetotal+\lineheight\relax + \ifdim\scratchdimen>\pagegoal + \goodbreak % hack ? + \fi + % should be an option + \endgroup + \dimen0\dimexpr\pagetotal+\floatheight+\d_strc_floats_top-\pageshrink\relax + \dimen2\pagegoal + \relax % needed + \ifcase\c_page_one_float_method + % method 0 : raw + \or + % method 1 : safe + \dimen2 .99\pagegoal + \or + % method 2 : tight + \advance\dimen0 -\onepoint + \fi + \relax % really needed ! ! ! ! + \ifdim\dimen0>\dimen2 + \global\setfalse\c_page_floats_room + \else + \global\settrue\c_page_floats_room + \fi + \fi} + +\unexpanded\def\page_one_command_flush_saved_floats + {\global\d_page_floats_inserted_top\zeropoint + \global\d_page_floats_inserted_bottom\zeropoint + \ifconditional\c_page_floats_flushing \else + \page_one_command_set_top_insertions + \page_one_command_set_bottom_insertions + \ifconditional\c_page_floats_some_waiting + \doif{\rootfloatparameter\c!cache}\v!no\page_one_command_flush_floats % could be _otr_ + \else\ifconditional\c_page_margin_blocks_present + \page_one_command_flush_floats + \fi\fi + \fi} + + +\def\page_one_place_float_here_indeed + {\ifgridsnapping + % otherwise real bad outcome + \else + \baselinecorrection % this has to be done better (and definitely not in column mode) + \fi + \doplacefloatbox + \page_floats_report_total + \dohandlenextfloatindent} + +\def\page_one_place_float_force + {\showmessage\m!floatblocks9\empty + \page_one_place_float_here_indeed} + +\def\page_one_place_float_side_indeed#1% + {\setbox\floatbox\vpack{\box\floatbox}% ? can go + \wd\floatbox\floatwidth + #1{\box\floatbox}% + \doifinset\v!tall\floatlocationmethod\page_sides_flush_floats_after_par} + +\def\page_one_place_float_left {\page_one_place_float_side_indeed\page_sides_process_float_left\presetindentation} +\def\page_one_place_float_right {\page_one_place_float_side_indeed\page_sides_process_float_right} +\def\page_one_place_float_leftmargin {\page_one_place_float_side_indeed\page_sides_process_float_leftmargin} +\def\page_one_place_float_rightmargin{\page_one_place_float_side_indeed\page_sides_process_float_rightmargin} +\def\page_one_place_float_leftedge {\page_one_place_float_side_indeed\page_sides_process_float_leftedge} +\def\page_one_place_float_rightedge {\page_one_place_float_side_indeed\page_sides_process_float_rightedge} +\def\page_one_place_float_inmargin {\page_one_place_float_side_indeed\page_sides_process_float_cutspace} +\def\page_one_place_float_backspace {\page_one_place_float_side_indeed\page_sides_process_float_backspace} +\def\page_one_place_float_cutspace {\page_one_place_float_side_indeed\page_sides_process_float_cutspace} + +%def\page_one_place_float_margin {\page_one_place_float_side_indeed\page_sides_process_float_margin\nonoindentation} % wil be overloaded +\def\page_one_place_float_margin {\page_margin_blocks_process_float} + +\def\page_one_place_float_page {\page_floats_save_page_float \s!page \floatlocationmethod} +\def\page_one_place_float_leftpage {\page_floats_save_page_float \s!leftpage \floatlocationmethod} +\def\page_one_place_float_rightpage {\page_floats_save_page_float \s!rightpage\floatlocationmethod} +\def\page_one_place_float_somewhere {\page_floats_save_somewhere_float\s!somewhere\floatlocationmethod} + +\def\page_one_place_float_here {\page_one_place_float_otherwise_here} +\def\page_one_place_float_auto {\page_one_place_float_otherwise} +\def\page_one_place_float_top {\page_one_place_float_otherwise\nonoindentation} +\def\page_one_place_float_bottom {\page_one_place_float_otherwise} + +\def\page_one_place_float_otherwise + {\doifelseinset\v!here\floatlocationmethod + \page_one_place_float_otherwise_here + \page_one_place_float_otherwise_else} + +\def\page_one_place_float_otherwise_here + {\doifelseinset\v!always\floatlocationmethod + {\page[\v!preference]% + \page_otr_command_check_if_float_fits + \ifconditional\c_page_floats_room + \page_one_place_float_here_indeed + \else + \showmessage\m!floatblocks9\empty + \page_floats_resave\s!text + \fi} + {\ifconditional\c_page_floats_some_waiting + \page_floats_save\s!text + \nonoindentation + \else + \page[\v!preference]% + \page_otr_command_check_if_float_fits + \ifconditional\c_page_floats_room + \page_one_place_float_here_indeed + \else + \page_floats_save\s!text + \nonoindentation + \fi + \fi}} + +\def\page_one_place_float_otherwise_else + {\doifelseinset\v!always\floatlocationmethod + {\page_otr_command_check_if_float_fits + \ifconditional\c_page_floats_room + \page_one_place_float_auto_top_bottom + \else + \showmessage\m!floatblocks9\empty + \page_floats_resave\s!text + \fi} + {\page_otr_command_check_if_float_fits + \ifconditional\c_page_floats_room + \page_one_place_float_auto_top_bottom + \else + \page_floats_save\s!text + \nonoindentation + \fi}} + +\def\floatautofactor{.5} + +\def\page_one_place_float_auto_top_bottom + {\ifx\floatmethod\v!auto + \ifdim\pagetotal<\floatautofactor\pagegoal % when empty page, maxdimen + \page_one_place_float_top_indeed + \else + \page_one_place_float_bottom_indeed + \fi + \else + \ifx\floatmethod\v!top + \page_one_place_float_top_indeed + \else\ifx\floatmethod\v!bottom + \page_one_place_float_bottom_indeed + \else + \page_one_place_float_here_indeed + \fi\fi + \fi} + +\def\page_one_place_float_top_indeed % maybe remember last beforeskip + {\page_one_prepare_top_float + \page_one_insert_top_float + \page_floats_report_total} + +\def\page_one_place_float_bottom_indeed + {\global\advance\d_page_floats_inserted_bottom\dimexpr\ht\floatbox+\dp\floatbox+\d_strc_floats_top\relax + \insert\namedinsertionnumber\s!bottomfloat\bgroup + \forgetall + \blank[\rootfloatparameter\c!spacebefore]% + \page_otr_command_flush_float_box + \egroup + \page_floats_report_total} + +\def\page_one_place_float_face % links, rechts, midden, hoog, midden, laag + {%\checkwaitingfloats{#1}% + \startopposite + \page_otr_command_flush_float_box + \stopopposite + }%\page_floats_report_total} + +\unexpanded\def\page_one_command_flush_side_floats + {\page_sides_flush_floats} + +\unexpanded\def\page_one_command_synchronize_side_floats + {\page_sides_synchronize_floats} + +\unexpanded\def\page_one_command_test_page + {\testpage} + +\defineoutputroutine + [\s!singlecolumn] + [\s!page_otr_command_routine =\page_one_command_routine, + \s!page_otr_command_package_contents =\page_one_command_package_contents, + \s!page_otr_command_set_vsize =\page_one_command_set_vsize, + \s!page_otr_command_set_hsize =\page_one_command_set_hsize, + \s!page_otr_command_next_page =\page_one_command_next_page, + \s!page_otr_command_next_page_and_inserts =\page_one_command_next_page_and_inserts, + % \s!page_otr_command_synchronize_hsize =\page_one_command_synchronize_hsize, + \s!page_otr_command_set_top_insertions =\page_one_command_set_top_insertions, + \s!page_otr_command_set_bottom_insertions =\page_one_command_set_bottom_insertions, + \s!page_otr_command_flush_top_insertions =\page_one_command_flush_top_insertions, + \s!page_otr_command_flush_bottom_insertions=\page_one_command_flush_bottom_insertions, + % \s!page_otr_command_set_float_hsize =\page_one_command_set_float_hsize, + \s!page_otr_command_check_if_float_fits =\page_one_command_check_if_float_fits, + \s!page_otr_command_flush_float_box =\page_one_command_flush_float_box, + \s!page_otr_command_synchronize_side_floats=\page_one_command_synchronize_side_floats, + \s!page_otr_command_side_float_output =\page_one_command_side_float_output, + \s!page_otr_command_flush_floats =\page_one_command_flush_floats, + \s!page_otr_command_flush_side_floats =\page_one_command_flush_side_floats, + \s!page_otr_command_flush_saved_floats =\page_one_command_flush_saved_floats, + \s!page_otr_command_flush_margin_blocks =\page_one_command_flush_margin_blocks, + \s!page_otr_command_test_column =\page_one_command_test_page + ] + +% \setupoutputroutine +% [\s!singlecolumn] + +\protect \endinput |