diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/scrn-pag.mkvi')
-rw-r--r-- | Master/texmf-dist/tex/context/base/scrn-pag.mkvi | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/scrn-pag.mkvi b/Master/texmf-dist/tex/context/base/scrn-pag.mkvi new file mode 100644 index 00000000000..8e1dbde8e9c --- /dev/null +++ b/Master/texmf-dist/tex/context/base/scrn-pag.mkvi @@ -0,0 +1,249 @@ +%D \module +%D [ file=scrn-pag, +%D version=1998.01.15, +%D title=\CONTEXT\ Screen Macros, +%D subtitle=Pages, % moved code +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +% pagecomments will be done differently + +\writestatus{loading}{ConTeXt Screen Macros / Pages} + +\registerctxluafile{scrn-pag}{1.001} + +\unprotect + +\installparameterhandler \??sc {interactionscreen} +\installsetuphandler \??sc {interactionscreen} + +\newdimen\canvaswidth +\newdimen\canvasheight +\newdimen\canvasbackoffset +\newdimen\canvastopoffset +\newdimen\canvasmaxwidth +\newdimen\canvasmaxheight + +\newconditional\scrn_canvas_tight_page + +% \def\scrn_canvas_calculate +% {\begingroup +% \edef\currentinteractionscreenwidth {\interactionscreenparameter\c!width }% +% \edef\currentinteractionscreenheight{\interactionscreenparameter\c!height}% +% \canvasbackoffset\backspace +% \canvastopoffset\topspace +% \ifx\currentinteractionscreenwidth\v!fit +% \global\canvaswidth\leftcombitotal +% \ifdim\backspace>\canvaswidth +% \ifdim\backspace>\zeropoint\relax +% \global\advance\canvasbackoffset -\canvaswidth +% \fi +% \fi +% \global\advance\canvaswidth\dimexpr +% \rightcombitotal +% + 2\dimexpr +% \interactionscreenparameter\c!backspace +% + \interactionscreenparameter\c!horoffset +% \relax +% \relax +% \donetrue +% \else\ifx\currentinteractionscreenwidth\v!max +% \global\canvaswidth\printpaperwidth +% \donetrue +% \else +% \global\canvaswidth\currentinteractionscreenwidth +% \donefalse +% \fi\fi +% \ifdone +% \ifdim\canvaswidth>\paperwidth\ifdim\canvaswidth>\zeropoint +% \global\paperwidth\canvaswidth % kills location=middle +% \fi\fi +% \fi +% \ifx\currentinteractionscreenheight\v!fit +% \global\canvasheight\dimexpr\topheight+\topdistance\relax +% \ifdim\topspace>\canvasheight +% \ifdim\topspace>\zeropoint\relax +% \global\advance\canvastopoffset -\canvasheight +% \fi +% \fi +% \global\advance\canvasheight\dimexpr +% \makeupheight +% + \bottomdistance +% + \bottomheight +% + 2\dimexpr +% \interactionscreenparameter\c!topspace +% + \interactionscreenparameter\c!veroffset +% \relax +% \relax +% \else\ifx\currentinteractionscreenheight\v!max +% \global\canvasheight\printpaperheight +% \else +% \global\canvasheight\currentinteractionscreenheight +% \fi\fi +% \ifdone +% \ifdim\canvasheight>\paperheight\ifdim\canvasheight>\zeropoint +% \global\paperheight\canvasheight % kills location=middle +% \fi\fi +% \fi +% \endgroup} + +\def\scrn_canvas_calculate + {\begingroup + \edef\currentinteractionscreenwidth {\interactionscreenparameter\c!width }% + \edef\currentinteractionscreenheight{\interactionscreenparameter\c!height}% + \canvasbackoffset\backspace + \canvastopoffset\topspace + \ifx\currentinteractionscreenwidth\v!fit + \global\canvaswidth\leftcombitotal + \ifdim\backspace>\canvaswidth + \ifdim\backspace>\zeropoint\relax + \global\advance\canvasbackoffset -\canvaswidth + \fi + \fi + \global\advance\canvaswidth\dimexpr + \rightcombitotal + + 2\dimexpr + \interactionscreenparameter\c!backspace + + \interactionscreenparameter\c!horoffset + \relax + \relax + \else\ifx\currentinteractionscreenwidth\v!max + \global\canvaswidth\printpaperwidth + \else + \global\canvaswidth\currentinteractionscreenwidth + \fi\fi + \ifx\currentinteractionscreenheight\v!fit + \global\canvasheight\dimexpr\topheight+\topdistance\relax + \ifdim\topspace>\canvasheight + \ifdim\topspace>\zeropoint\relax + \global\advance\canvastopoffset -\canvasheight + \fi + \fi + \global\advance\canvasheight\dimexpr + \makeupheight + + \bottomdistance + + \bottomheight + + 2\dimexpr + \interactionscreenparameter\c!topspace + + \interactionscreenparameter\c!veroffset + \relax + \relax + \else\ifx\currentinteractionscreenheight\v!max + \global\canvasheight\printpaperheight + \else + \global\canvasheight\currentinteractionscreenheight + \fi\fi + \ifconditional\page_location_is_set + \global\setfalse\scrn_canvas_tight_page + \fi + \ifconditional\scrn_canvas_tight_page + \global\canvasmaxwidth \paperwidth + \global\canvasmaxheight\paperheight + \else + \global\canvasmaxwidth \printpaperwidth + \global\canvasmaxheight\printpaperheight + \fi + \endgroup} + +% test the next when something is changed here: +% +% \setuppapersize[A5][A3] \showframe +% +% % \setuplayout[location=middle] \setupinteractionscreen[option=fit] +% % \setuplayout[location=middle] \setupinteractionscreen[option=auto] +% % \setupinteractionscreen[option=fit] +% % \setupinteractionscreen[option=auto] +% +% \starttext \input ward \stoptext + +\def\scrn_canvas_synchronize_simple + {\ctxcommand{setupcanvas{ + paperwidth = \number\printpaperwidth, + paperheight = \number\printpaperheight + }}} + +\def\scrn_canvas_synchronize_complex + {\scrn_canvas_calculate % otherwise we need to hook it into setuppage etc + \ctxcommand{setupcanvas{ + mode = "\interactionscreenparameter\c!option", + singlesided = \ifsinglesided true\else false\fi, + doublesided = \ifdoublesided true\else false\fi, + leftoffset = \number\canvasbackoffset, + topoffset = \number\canvastopoffset, + width = \number\canvaswidth, + height = \number\canvasheight, + paperwidth = \number\canvasmaxwidth, + paperheight = \number\canvasmaxheight + }}} + +\appendtoks + \doifcommonelse{\interactionscreenparameter\c!option}{\v!max,\v!fit}% + {\global\settrue \scrn_canvas_tight_page}% + {\global\setfalse\scrn_canvas_tight_page}% +\to \everysetupinteractionscreen + +\appendtoks + \doifelse\@@pcstate\v!start + \scrn_canvas_synchronize_simple + \scrn_canvas_synchronize_complex +\to \everyshipout + +\setupinteractionscreen + [\c!width=\printpaperwidth, + \c!height=\printpaperheight, + \c!horoffset=\zeropoint, + \c!veroffset=\zeropoint, + \c!backspace=\backspace, + \c!topspace=\topspace, + \c!option=\v!auto] + +%D Conditional page breaks: + +\unexpanded\def\screen + {\dosingleempty\scrn_screen} + +\def\scrn_screen[#list]% + {\iflocation + \page[#list]% + \fi} + +%D Page transitions: + +\let\scrn_transitions_list\empty + +\unexpanded\def\setuppagetransitions + {\dosingleempty\scrn_transitions_setup} + +\def\scrn_transitions_setup[#list]% + {\edef\scrn_transitions_list{#list}} + +\def\scrn_transitions_set + {\iflocation \ifx\scrn_transitions_list\empty \else + \scrn_transitions_set_indeed + \fi \fi} + +\def\scrn_transitions_set_indeed + {\begingroup + \edef\currentinteractionscreendelay{\interactionscreenparameter\c!delay}% + \ctxcommand{setpagetransition{ + n = "\scrn_transitions_list", + delay = "\ifx\currentinteractionscreendelay\v!none 0\else\currentinteractionscreendelay\fi" + }}% + \endgroup} + +\prependtoks + \scrn_transitions_set +\to \everyshipout + +\setupinteractionscreen + [\c!delay=\v!none] + +\setuppagetransitions + [\v!reset] + +\protect \endinput |