diff options
author | Karl Berry <karl@freefriends.org> | 2013-04-08 00:43:40 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-04-08 00:43:40 +0000 |
commit | 824f7b0903de8ad7f6ee3d7656005e4c59155e06 (patch) | |
tree | abfc8673ef9916f3ab7074e811207384c301492b /Master/texmf-dist/tex/context/base/page-pst.mkiv | |
parent | 689aefb0727676ed3cddf331337b4be226495e72 (diff) |
context import for TL13, from www.pragma-ade.com/context/beta/cont-tmf.zip
git-svn-id: svn://tug.org/texlive/trunk@29731 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/page-pst.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/page-pst.mkiv | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/page-pst.mkiv b/Master/texmf-dist/tex/context/base/page-pst.mkiv new file mode 100644 index 00000000000..7f8a39ca6b4 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/page-pst.mkiv @@ -0,0 +1,102 @@ +%D \module +%D [ file=page-mis, +%D version=2008.11.17, % was part of page-flt.tex / 2000.10.20 +%D title=\CONTEXT\ Page Macros, +%D subtitle=Postponing, +%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 / Postponing} + +\registerctxluafile{page-pst}{1.001} + +\unprotect + +% postponing + +\newevery\everytopofpage\relax + +\appendtoks + \the\everytopofpage +\to \everystarttext + +\appendtoks + \global\everytopofpage\emptytoks +\to \everystoptext + +% \startpostponing [pagenumber] [+pageoffset] +% +% \startpostponing[2] +% PAGE 2 \blank +% \stoppostponing +% +% \startpostponing[+1] +% PAGE +1 \blank +% \stoppostponing +% +% \startpostponing[+2] +% PAGE +2 \blank +% \stoppostponing +% +% \starttext \dorecurse{4}{\input tufte \page} \stoptext + +%D There is no real need to use \LUA\ here but the bookkeeping +%D is somewhat easier and we also can erase buffers easier when +%D we keep a local cache, especially as we can flush per page. + +%newif \ifinpostponing % prevents nesting + +\newcount \c_page_postponed_blocks_next_page % set at the lua end +\newconditional\c_page_postponed_busy + +\unexpanded\setvalue{\e!start\v!postponing}% + {\bgroup + \obeylines + \doifnextoptionalelse{\egroup\page_postponed_blocks_start}{\egroup\page_postponed_blocks_start[0]}} + +\unexpanded\setvalue{\e!stop\v!postponing}% + {\ctxcommand{registerpostponedblock("\currentpostponedpage")}\relax} + +\def\page_postponed_blocks_start[#1]% + {\edef\currentpostponedpage{#1}% + \grabbufferdatadirect{postponedblock}{\e!start\v!postponing}{\e!stop\v!postponing}} + +% officially we should flush again after a flush as there can be new future pages +% but that will be looked into when we run into it + +\unexpanded\def\page_postponed_blocks_flush_indeed + {\begingroup + \setsystemmode\v!postponing + \settrue\c_page_postponed_busy + \pagetotal\zeropoint % here? still needed? (was after flush pagefloats) + \the\everytopofpage\relax + %\flushrestfloats + \page_floats_flush_page_floats + \setnormalcatcodes % postponing in verbatim + \restoreglobalbodyfont % otherwise problems inside split verbatim + \ctxcommand{flushpostponedblocks()}% + \relax + \page_otr_command_flush_floats % new but potential dangerous, maybe we need a classification + \endgroup} % of blocks: with and without flush + +\unexpanded\def\page_postponed_blocks_flush + {\ifconditional\c_page_postponed_busy + % probably a nested flush + \else\ifnum\c_page_postponed_blocks_next_page=\zerocount + % nothing in cache + \else\ifnum\c_page_postponed_blocks_next_page<\zerocount + % generic cache + \page_postponed_blocks_flush_indeed + \else\ifnum\c_page_postponed_blocks_next_page>\realpageno + % future content + \else + % pending content + \page_postponed_blocks_flush_indeed + \fi\fi\fi\fi} + +\protect \endinput |