summaryrefslogtreecommitdiff
path: root/tex/context/base/scrn-int.mkiv
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2010-07-04 15:32:09 +0300
committerMarius <mariausol@gmail.com>2010-07-04 15:32:09 +0300
commit85b7bc695629926641c7cb752fd478adfdf374f3 (patch)
tree80293f5aaa7b95a500a78392c39688d8ee7a32fc /tex/context/base/scrn-int.mkiv
downloadcontext-85b7bc695629926641c7cb752fd478adfdf374f3.tar.gz
stable 2010-05-24 13:10
Diffstat (limited to 'tex/context/base/scrn-int.mkiv')
-rw-r--r--tex/context/base/scrn-int.mkiv610
1 files changed, 610 insertions, 0 deletions
diff --git a/tex/context/base/scrn-int.mkiv b/tex/context/base/scrn-int.mkiv
new file mode 100644
index 000000000..11734e0d7
--- /dev/null
+++ b/tex/context/base/scrn-int.mkiv
@@ -0,0 +1,610 @@
+%D \module
+%D [ file=scrn-int,
+%D version=1995.01.01,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Interaction,
+%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.
+
+\writestatus{loading}{ConTeXt Screen Macros / Interaction}
+
+\registerctxluafile{scrn-int}{1.001}
+
+\unprotect
+
+%D This is an update of \MKII\ code. In the process profiles and versions
+%D were removed as I never used them (although they were kind of cool at
+%D that time).
+
+% a bit complex due to papercomment (see imposition code)
+
+\newtoks\everysetupinteractionscreen
+
+\unexpanded\def\setupinteractionscreen
+ {\dosingleempty\dosetupinteractionscreen}
+
+\def\dosetupinteractionscreen[#1]%
+ {\getparameters[\??sc][#1]%
+ \the\everysetupinteractionscreen}
+
+\def\synchronizepaperdimensionssimple % simple version
+ {\bgroup
+ \ifx\@@ppleft \empty
+ \ifx\@@ppright \empty
+ \ifx\@@pptop \empty
+ \ifx\@@ppbottom \empty
+ \ifx\@@pcstate\v!start
+ \locationfalse\fi\else
+ \locationfalse\fi\else
+ \locationfalse\fi\else
+ \locationfalse\fi\else
+ \locationfalse\fi
+ \iflocation % without screen settings
+ \ctxlua{backends.codeinjections.setupcanvas {
+ paperwidth = \number\paperwidth,
+ paperheight = \number\paperheight
+ }}%
+ \else
+ \ctxlua{backends.codeinjections.setupcanvas {
+ paperwidth = \number\printpaperwidth,
+ paperheight = \number\printpaperheight
+ }}%
+ \fi
+ \egroup}
+
+\def\synchronizepaperdimensionscomplex % complex version
+ {\bgroup
+ \edef\@@scwidth {\@@scwidth}%
+ \edef\@@scheight{\@@scheight}%
+ \ifx\@@scwidth\v!fit
+ \!!widtha\leftcombitotal
+ \ifdim\backspace>\!!widtha\ifdim\backspace>\zeropoint\relax
+ \advance\backspace -\!!widtha
+ \fi\fi
+ \advance\!!widtha\dimexpr\rightcombitotal+2\dimexpr\@@scbackspace+\@@schoroffset\relax\relax
+ \else\ifx\@@scwidth\v!max
+ \!!widtha\printpaperwidth
+ \else
+ \!!widtha\@@scwidth
+ \fi\fi
+ \ifx\@@scheight\v!fit
+ \!!heighta\dimexpr\topheight+\topdistance\relax
+ \ifdim\topspace>\!!heighta\ifdim\topspace>\zeropoint\relax
+ \advance\topspace -\!!heighta
+ \fi\fi
+ \advance\!!heighta\dimexpr\makeupheight+\bottomdistance+\bottomheight+2\dimexpr\@@sctopspace+\@@scveroffset\relax\relax
+ \else\ifx\@@scheight\v!max
+ \!!heighta\printpaperheight
+ \else
+ \!!heighta\@@scheight
+ \fi\fi
+ \doif\@@scdelay\v!none{\let\@@scdelay\zerocountervalue}%
+ \ifdim\!!widtha>\paperwidth\ifdim\!!widtha>\zeropoint
+ \paperwidth\!!widtha
+ \fi\fi
+ \ifdim\!!heighta>\paperheight\ifdim\!!heighta>\zeropoint
+ \paperheight\!!heighta
+ \fi\fi
+ \ctxlua{backends.codeinjections.setupcanvas {
+ mode = "\@@scoption",
+ % doublesided = \ifsinglesided false\else\ifdoublesided true\else false\fi\fi,
+ singlesided = \ifsinglesided true\else false\fi,
+ doublesided = \ifdoublesided true\else false\fi,
+ leftoffset = \number\dimexpr\backoffset\relax,
+ topoffset = \number\dimexpr\topoffset \relax,
+ width = \number\dimexpr\!!widtha \relax,
+ height = \number\dimexpr\!!heighta \relax,
+ paperwidth = \number\paperwidth,
+ paperheight = \number\paperheight
+ }}%
+ \egroup}
+
+\let\synchronizepaperdimensions \synchronizepaperdimensionscomplex
+
+\appendtoks
+ \ifproductionrun
+ \doifelse\@@pcstate\v!start
+ {\let\synchronizepaperdimensions\synchronizepaperdimensionssimple}
+ {\let\synchronizepaperdimensions\synchronizepaperdimensionscomplex}%
+ \fi
+\to \everysetupinteractionscreen
+
+\appendtoks \synchronizepaperdimensions \to \everyshipout
+
+%D The next mechanism, linked lists, is quite old and
+%D is \MKIV'd for completeness. I will finish the
+%D confuguration part when I need it.
+
+% todo: a kind of button that gets a tag passed (\??tk)
+
+% \starttext
+% \setupinteraction[state=start]
+% \definelinkedlist[demo]
+% \dorecurse{10}{\linkedlistelement[demo]{link \recurselevel} \page}
+% \stoptext
+
+\def\linkedlistparameter #1{\csname\dolinkedlistparameter{\??lk\currentlinkedlist}#1\endcsname}
+\def\dolinkedlistparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\dolinkedlistparentparameter\csname#1\s!parent\endcsname#2\fi}
+\def\dolinkedlistparentparameter#1#2{\ifx#1\relax\s!empty\else\dolinkedlistparameter#1#2\fi}
+
+\unexpanded\def\definelinkedlist{\dodoubleargument\dodefinelinkedlist}
+\unexpanded\def\setuplinkedlist {\dodoubleargument\dosetuplinkedlist }
+\unexpanded\def\setuplinkedlists{\dosingleargument\dosetuplinkedlists}
+
+\def\dodefinelinkedlist[#1][#2]%
+ {\ctxlua{interactions.definelinkedlist("#1")}%
+ \getparameters[\??lk#1][\s!parent=\??lk,#2]}
+
+\def\dosetuplinkedlist[#1][#2]%
+ {\getparameters[\??lk#1][#2]}
+
+\def\dosetuplinkedlists[#1]%
+ {\getparameters[\??lk][#1]}
+
+\def\setlinkproperties#1#2#3#4#5#6%
+ {\def\currentlink {#1}%
+ \def\noflinks {#2}%
+ \def\firstlink {#3}%
+ \def\previouslink{#4}%
+ \def\nextlink {#5}%
+ \def\lastlink {#6}}
+
+\def\linkedlistelement[#1]#2% currently no view support
+ {\dontleavehmode\hbox\bgroup
+ #2%
+ \iflocation
+ \edef\currentlinkedlist{#1}%
+ \ifcsname\??lk\currentlinkedlist\s!parent\endcsname
+ \hskip\linkedlistparameter\c!distance
+ \ctxlua{interactions.addlinktolist("\currentlinkedlist")}%
+ \expanded{\ctxlatelua{interactions.enhancelinkoflist("\currentlinkedlist",\currentlink)}}%
+ \dogotosomepage {\??lk\currentlinkedlist}\gotobegincharacter \firstlink
+ \ifnum\noflinks>\plustwo
+ \dogotosomepage{\??lk\currentlinkedlist}\gobackwardcharacter\previouslink
+ \dogotosomepage{\??lk\currentlinkedlist}\goforwardcharacter \nextlink
+ \fi
+ \dogotosomepage {\??lk\currentlinkedlist}\gotoendcharacter \lastlink
+ \else
+ \writestatus\m!interactions{no such linked list: \currentlinkedlist}%
+ \fi
+ \fi
+ \egroup}
+
+\setuplinkedlists
+ [\c!distance=.25em,
+ \c!width=\v!fit,
+ \c!location=\v!low,
+ \c!color=\@@iacolor,
+ \c!frame=\v!off,
+ \c!background=,
+ \c!backgroundcolor=]
+
+\def\koppeling {\linkedlistelement}
+\def\stelkoppelingenin {\setuplinkedlists}
+\def\definieerkoppeling{\definelinkedlist}
+
+%D Conditional page breaks:
+
+\def\screen
+ {\dosingleempty\doscreen}
+
+\def\doscreen[#1]%
+ {\iflocation\page[#1]\fi}
+
+%D Page transitions:
+
+\let\askedpagetransitions\empty
+
+\unexpanded\def\setuppagetransitions
+ {\dosingleempty\dosetuppagetransitions}
+
+\def\dosetuppagetransitions[#1]%
+ {\edef\askedpagetransitions{#1}}
+
+\def\setpagetransition
+ {\iflocation \ifx\askedpagetransitions\empty \else
+ \ctxlua{backends.codeinjections.setpagetransition{ n = "\askedpagetransitions", delay = "\@@scdelay" }}%
+ \fi \fi}
+
+\prependtoks \setpagetransition \to \everyshipout
+
+\setuppagetransitions
+ [\v!reset]
+
+%D Comments:
+
+\newbox\commentcollection
+\newbox\commentbox
+\newbox\commentboxone
+\newbox\commentboxtwo
+
+\def\raisedcommentanchors#1#2{#1{\hbox{\raise\strutht#2}}}
+
+\setvalue{\??cc:\c!location:\v!inmargin }{\raisedcommentanchors\inmargin }
+\setvalue{\??cc:\c!location:\v!leftedge }{\raisedcommentanchors\inleftedge }
+\setvalue{\??cc:\c!location:\v!rightedge }{\raisedcommentanchors\inrightedge }
+\setvalue{\??cc:\c!location:\v!leftmargin }{\raisedcommentanchors\inleftmargin }
+\setvalue{\??cc:\c!location:\v!rightmargin}{\raisedcommentanchors\inrightmargin}
+
+\let\flushcommentanchors\relax
+
+\def\doflushcommentanchors
+ {\global\let\flushcommentanchors\relax
+ \ifvoid\commentbox\else\dodoflushcommentanchors\fi} % in everypar so indirect
+
+\def\dodoflushcommentanchors
+ {\executeifdefined{\??cc:\c!location:\@@cclocation}\hbox{\box\commentbox}}
+
+\unexpanded\def\setupcomment
+ {\dodoubleargument\getparameters[\??cc]}
+
+\unexpanded\def\placecomments{\box\commentcollection} % when option=buffer
+
+\def\doinsertcomment#1%
+ {\begingroup
+ \ctxlua{backends.codeinjections.presetsymbollist("\@@ccsymbol")}%
+ % in between predefined symbols are dealt with
+ \ctxlua{backends.codeinjections.registercomment {
+ title = "\@@cctitle",
+ width = \number\dimexpr\@@ccwidth \relax,
+ height = \number\dimexpr\@@ccheight\relax,
+ colormodel = \number\currentcolormodel,
+ colorvalue = \thecolorattribute{\@@cccolor},
+ open = \@@ccopen,
+ symbol = "\@@ccsymbol",
+ buffer = "#1",
+ layer = "\@@cctextlayer"
+ }}%
+ \box\commentboxone
+ \doif\@@ccoption\v!buffer
+ {\setbox\scratchbox\vbox to \@@ccheight{\forgetall\vss\box\commentboxtwo}%
+ \wd\scratchbox\@@ccwidth
+ \global\setbox\commentcollection\vbox
+ {\startoverlay{\box\commentcollection}{\box\scratchbox}\stopoverlay}}%
+ \endgroup}
+
+\setvalue{\e!start\v!comment}{\dotripleempty\dostartcomment}% the dummy triple gobbles trailing spaces
+
+\def\dostartcomment[#1][#2][#3]%
+ {\bgroup
+ \doifassignmentelse{#1}{\getparameters[\??cc][#1]}{\getparameters[\??cc][\c!title=#1,#2]}%
+ \doifelse\@@ccoption\v!max{\let\@@ccopen\s!true}{\let\@@ccopen\s!false}%
+ \setcurrentbuffer{\v!comment\v!buffer}%
+ \dostartbuffer[\v!comment\v!buffer][\v!comment\v!buffer][\e!start\v!comment][\e!stop\v!comment]}
+
+\unexpanded\def\stopcomment
+ {\doif\@@ccstate\v!start
+ {\global\let\flushcommentanchors\doflushcommentanchors
+ \global\setbox\commentbox\frozenhbox
+ {\hbox to \zeropoint{\struttedbox{\tbox{\doinsertcomment{\v!comment\v!buffer}}}\hss}%
+ \hskip\ifvoid\commentbox\@@ccmargin\else\@@ccdistance\fi
+ \box\commentbox}}%
+ \egroup}
+
+\def\comment
+ {\dodoubleempty\docomment}
+
+\def\docomment[#1][#2]#3%
+ {\doif\@@ccstate\v!start
+ {\hbox to \zeropoint
+ {\doifassignmentelse{#1}{\getparameters[\??cc][#1]}{\getparameters[\??cc][\c!title=#1,#2]}%
+ \hskip-\@@ccmargin
+ \ctxlua{buffers.set("\v!comment\v!buffer", \!!bs\detokenize{#3}\!!es)}%
+ \struttedbox{\tbox{\doinsertcomment{\v!comment\v!buffer}}\hss}}}%
+ \ignorespaces}
+
+% test
+%
+% \startcomment
+% hello beautiful\\world
+% \stopcomment
+%
+% test
+%
+% \startcomment[hello]
+% hello << eerste >>
+% beautiful
+% world
+% \stopcomment
+%
+% test
+%
+% \startcomment[hello][color=green,width=10cm,height=3cm]
+% hello \leftguillemot\ \'e\'erste \rightguillemot\
+% beautiful
+% world
+% \stopcomment
+%
+% test
+%
+% \startcomment[hello][color=red,width=4cm,height=3cm]
+% hello \leftguillemot\ \'e\'erste \rightguillemot\ test
+%
+% beautiful
+%
+% world
+% \stopcomment
+%
+% test
+%
+% \startcomment[symbol=Balloon]
+% Do we want this kind of rubish? And, why isn't this and
+% some more features related to text annotations so poorly
+% (actually not) documented? Anyhow, by providing this
+% functionality we demonstrate that \pdfTeX\ can do it. By
+% the way, it's funny that when in Acrobat we scale up the
+% text, the symbols scale down.
+% \stopcomment
+%
+% test
+%
+% \definesymbol [comment-normal][{\externalfigure[cow.pdf]}]
+% \definesymbol [comment-down] [{\externalfigure[cow.pdf]}]
+%
+% \def\CowSymbol#1#2%
+% {\scale
+% [\c!height=#1]
+% {\startMPcode
+% loadfigure "koe.mp" number 1 ;
+% refill currentpicture withcolor #2 ;
+% \stopMPcode}}
+%
+% \definesymbol [comment-normal]
+% [\CowSymbol{4ex}{red}]
+%
+% \definesymbol [comment-down]
+% [\CowSymbol{4ex}{green}]
+%
+% \setupcomment
+% [\c!symbol={comment-normal,comment-down},
+% \c!option=\v!buffer]
+%
+% \startcomment[hello]
+% oeps
+% \stopcomment
+%
+% test
+%
+% \setupcomment
+% [\c!symbol=normal,
+% \c!option=max,width=10cm]
+%
+% \startcomment[hello]
+% oeps
+% \stopcomment
+%
+% test
+
+\setupcomment
+ [\c!state=\v!start,
+ \c!margin=2.5em,
+ \c!distance=1em,
+ \c!width=.3\textwidth,
+ \c!height=.2\textheight,
+ \c!color=\@@iacolor,
+ \c!title=,
+ \c!space=\v!no,
+ \c!symbol=\v!normal,
+ \c!location=\v!inmargin,
+ \c!option=,
+ \c!textlayer=]
+
+%D Attachments:
+
+% \setupinteraction[state=start]
+%
+% \useattachment[test.tex]
+% \useattachment[whatever][test.tex]
+% \useattachment[whatever][newname][test.tex]
+% \useattachment[whatever][title][newname][test.tex]
+%
+% % \setupattachments[\c!symbol={symbol-normal,symbol-down}]
+%
+% \starttext \attachment[whatever] \stoptext
+
+\def\useattachment
+ {\doquadrupleempty\douseattachment}
+
+\def\douseattachment[#1][#2][#3][#4]% tag title newname filename
+ {\iffourthargument
+ \ctxlua{interactions.registerattachment{ label="#1", title="#2", newname="#3", filename="#4" }}%
+ \else\ifthirdargument
+ \ctxlua{interactions.registerattachment{ label="#1", title="#2", newname="#2", filename="#3" }}%
+ \else\ifsecondargument
+ \ctxlua{interactions.registerattachment{ label="#1", title="#2", newname="#2", filename="#2" }}%
+ \else
+ \ctxlua{interactions.registerattachment{ label="#1", title="#1", newname="#1", filename="#1" }}%
+ \fi\fi\fi}
+
+\def\attachment
+ {\dodoubleempty\doattachment}
+
+\def\doattachment[#1][#2]% [tag] [settings]
+ {\iflocation
+ \doif\@@atstate\v!start
+ {\bgroup
+ \setupattachments[#2]%
+ \ctxlua{backends.codeinjections.presetsymbollist("\@@atsymbol")}%
+ % we cannot yet ask for the wd/ht/dp of an xform else we could use those
+ \setbox\scratchbox\hbox{\symbol[\lastpredefinedsymbol]}%
+ \doif\@@atwidth \v!fit{\edef\@@atwidth {\the\wd\scratchbox}}%
+ \doif\@@atheight\v!fit{\edef\@@atheight{\the\ht\scratchbox}}%
+ \doif\@@atdepth \v!fit{\edef\@@atdepth {\the\dp\scratchbox}}%
+ %
+ \setbox\scratchbox\hbox
+ {\getvalue{\??at:\@@atalternative}{\ctxlua{backends.codeinjections.attachfile{
+ label = "#1",
+ width = \number\dimexpr\@@atwidth \relax,
+ height = \number\dimexpr\@@atheight\relax,
+ depth = \number\dimexpr\@@atdepth \relax,
+ color = "\@@atcolor",
+ symbol = "\@@atsymbol",
+ layer = "\@@attextlayer",
+ }}}}%
+ \wd\scratchbox\@@atwidth
+ \ht\scratchbox\@@atheight
+ \dp\scratchbox\@@atdepth
+ \box\scratchbox
+ \egroup}%
+ \fi}
+
+\setvalue{\??at:\v!high}#1{\struttedbox{\tbox{#1}}}
+
+\unexpanded\def\setupattachments
+ {\dodoubleempty\getparameters[\??at]}
+
+\setupattachments
+ [\c!state=\v!start,
+ \c!color=\@@iacolor,
+ \c!textlayer=,
+ \c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!depth=\v!fit,
+ \c!alternative=\v!high,
+ \c!symbol=]
+
+%D Defining sound tracks:
+%D
+%D \starttyping
+%D \useexternalsoundtrack[label][file]
+%D \stoptyping
+%D
+%D associated actions: StartSound StopSound PauseSound ResumeSound
+%D
+%D Todo: like external figures, also search on path,
+%D although, they need to be present ar viewing time, so ...
+
+\def\useexternalsoundtrack
+ {\dodoubleargument\douseexternalsoundtrack}
+
+\def\douseexternalsoundtrack[#1][#2]%
+ {\ctxlua{interactions.registersound{ label="#1", filename="#2" }}}
+
+\def\checksoundtrack#1% yet untested in mkiv (also move management to lua)
+ {\iflocation
+ \ctxlua{codeinjections.insertsound{
+ label = "#1",
+ repeat = "\@@sdoption", % not entirely ok but works
+ }}%
+ \fi}
+
+\unexpanded\def\setupexternalsoundtracks
+ {\dodoubleargument\getparameters[\??sd]}
+
+\setupexternalsoundtracks
+ [\c!option=]
+
+%D Multi Media:
+
+% todo: multiple instances, dus indirect
+
+\let\currentrendering\empty
+
+\definereference[StartCurrentRendering] [\v!StartRendering {\currentrendering}]
+\definereference[StopCurrentRendering] [\v!StopRendering {\currentrendering}]
+\definereference[PauseCurrentRendering] [\v!PauseRendering {\currentrendering}]
+\definereference[ResumeCurrentRendering][\v!ResumeRendering{\currentrendering}]
+
+\newcounter\nofexternalrenderings
+
+\def\useexternalrendering{\doquadrupleempty\douseexternalrendering}
+\def\setinternalrendering{\dodoubleempty \dosetinternalrendering}
+
+\def\douseexternalrendering[#1][#2][#3][#4]% tag mime file options
+ {\ctxlua{interactions.registerrendering {
+ kind = "external",
+ label = "#1",
+ mime = "#2",
+ filename = "#3",
+ options = "#4",
+ }}}
+
+\def\dosetinternalrendering[#1][#2]% tag options {content}
+ {\bgroup
+ \dowithnextbox
+ {\ctxlua{interactions.registerrendering {
+ kind = "internal",
+ label = "#1",
+ mime = "IRO",
+ filename = "#1",
+ options = "#2",
+ }}%
+ \let\objectoffset\zeropoint
+ \setobject{IRO}{#1}\hbox{\box\nextbox}%
+ \egroup}%
+ \hbox}
+
+\def\renderingtype #1{\ctxlua{interactions.renderingvar("#1","kind")}}
+\def\renderingoptions#1{\ctxlua{interactions.renderingvar("#1","options")}}
+
+\def\renderingwidth {8cm}
+\def\renderingheight {6cm}
+
+\unexpanded\def\definerenderingwindow
+ {\dodoubleempty\dodefinerenderingwindow}
+
+\def\dodefinerenderingwindow[#1][#2]%
+ {\presetlocalframed[\??rw#1]%
+ \getparameters
+ [\??rw#1]%
+ [\c!openpageaction=,\c!closepageaction=,%
+ \c!width=\renderingwidth,\c!height=\renderingheight,%
+ #2]}
+
+\unexpanded\def\setuprenderingwindow
+ {\dodoubleargument\dosetuprenderingwindow}
+
+\def\dosetuprenderingwindow[#1]%
+ {\getparameters[\??rw#1]}
+
+\unexpanded\def\placerenderingwindow
+ {\dodoubleempty\doplacerenderingwindow}
+
+\def\doplacerenderingwindow[#1][#2]%
+ {\bgroup
+ \edef\currentrendering{\ifsecondargument#2\else#1\fi}%
+ \doifelse{\renderingtype\currentrendering}{internal} % an object
+ {\getobjectdimensions{IRO}\currentrendering
+ \edef\renderingheight{\the\dimexpr\objectheight+\objectdepth\relax}%
+ \edef\renderingwidth{\objectwidth}%
+ \dogetobjectreferencepage{IRO}\currentrendering\renderingpage}%
+ {\def\renderingheight{\vsize}%
+ \def\renderingwidth{\hsize}%
+ \def\renderingpage{\realpageno}}%
+ % create fall back if needed
+ \ifcsname\??rw#1\c!width\endcsname
+ \def\currentrenderingwindow{#1}%
+ \else
+ \let\currentrenderingwindow\s!default
+ \definerenderingwindow[\currentrenderingwindow]%
+ \fi
+% todo
+% \handlereferenceactions{\getvalue{\??rw\currentrenderingwindow\c!openpageaction }}\dosetuprenderingopenpageaction
+% \handlereferenceactions{\getvalue{\??rw\currentrenderingwindow\c!closepageaction}}\dosetuprenderingclosepageaction
+ \localframed
+ [\??rw\currentrenderingwindow][\c!offset=\v!overlay]%
+ {\ctxlua{backends.codeinjections.insertrenderingwindow {
+ label = "\currentrendering",
+ width = \number\dimexpr\renderingwidth\relax,
+ height = \number\dimexpr\renderingheight\relax,
+ options = "\renderingoptions\currentrendering",
+ page = \number\renderingpage,
+ }}}%
+ \egroup}
+
+\setupinteractionscreen
+ [\c!width=\printpaperwidth,
+ \c!height=\printpaperheight,
+ \c!horoffset=\!!zeropoint,
+ \c!veroffset=\!!zeropoint,
+ \c!backspace=\backspace,
+ \c!topspace=\topspace,
+ \c!option=\v!auto,
+ \c!delay=\v!none]
+
+\protect \endinput