summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mkxl/scrn-ini.mklx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkxl/scrn-ini.mklx')
-rw-r--r--Master/texmf-dist/tex/context/base/mkxl/scrn-ini.mklx254
1 files changed, 254 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkxl/scrn-ini.mklx b/Master/texmf-dist/tex/context/base/mkxl/scrn-ini.mklx
new file mode 100644
index 00000000000..c0246bc8328
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/mkxl/scrn-ini.mklx
@@ -0,0 +1,254 @@
+%D \module
+%D [ file=scrn-ini,
+%D version=2011.02.27,
+%D title=\CONTEXT\ Interaction Macros,
+%D subtitle=Initialization,
+%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 Interaction Macros / Initialization}
+
+\unprotect
+
+\registerctxluafile{scrn-ini}{}
+
+%D There is no interaction at all unless enabled by saying:
+%D
+%D \starttyping
+%D \setupinteraction[state=start]
+%D \stoptyping
+%D
+%D The other settings are:
+%D
+%D \showsetup{setupinteraction}
+
+\installcorenamespace{interaction}
+
+\installswitchcommandhandler \??interaction {interaction} \??interaction
+
+\appendtoks
+ \ifempty\previousinteraction
+ \checkinteractionstate
+ \orelse\ifx\currentinteraction\previousinteraction
+ \checkinteractionstate
+ \fi
+\to \everysetupinteraction
+
+\permanent\protected\def\checkinteractionstate
+ {\doifelse{\interactionparameter\c!state}\v!start
+ {\locationtrue \setsystemmode \v!interaction}%
+ {\locationfalse \resetsystemmode\v!interaction}}
+
+\permanent\def\doifelselocation % expandable
+ {\iflocation
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\aliased\let\doiflocationelse\doifelselocation
+
+\setupinteraction
+ [\c!state=\v!stop]
+
+\setupinteraction
+ [\c!title=,
+ \c!subtitle=,
+ \c!author=,
+ \c!keyword=,
+ \c!date=]
+
+\appendtoks
+ \setupinteraction % todo: remember info at the lua end (already possible)
+\to \everyjob
+
+% it makes no sense to create an environment as we will seldom have structured
+% interactions so a general start-stop will do
+%
+% \appendtoks
+% \setuevalue \currentinteraction {\scrn_interaction_direct{\currentinteraction}}%
+% \setuevalue{\e!start\currentinteraction}{\scrn_interaction_start {\currentinteraction}}%
+% \setuevalue{\e!stop \currentinteraction}{\scrn_interaction_stop }%
+% \to \everydefineinteraction
+%
+% \protected\def\scrn_interaction_direct#1%
+% {\edef\currentinteraction{#1}}
+%
+% \protected\def\scrn_interaction_start#1%
+% {\pushmacro\currentinteraction
+% \edef\currentinteraction{#1}}
+%
+% \protected\def\scrn_interaction_stop
+% {\popmacro\currentinteraction}
+%
+% \protected\def\setinteraction[#1]%
+% {\def\currentinteraction{#1}}
+%
+% \defineinteraction[\v!interaction]
+
+\permanent\protected\def\startinteraction[#1]%
+ {\pushmacro\currentinteraction
+ \edef\currentinteraction{#1}}
+
+\permanent\protected\def\stopinteraction
+ {\popmacro\currentinteraction}
+
+\permanent\protected\def\setinteraction[#1]%
+ {\def\currentinteraction{#1}}
+
+\defineinteraction % keep it simple
+ [\v!hidden]
+
+\setupinteraction
+ [\v!hidden]
+ [\c!state=\v!start,
+ \c!color=,
+ \c!contrastcolor=,
+ \c!style=,
+ \c!click=\v!off]
+
+%D As long as there a natural feeling of what can be considered
+%D hyper active or not, we have to tell users where they can
+%D possibly click. We've already seen a few macros that deal
+%D with this visualization, something we definitely do not let
+%D up to the viewer. One way of telling is using a distinctive
+%D typeface, another way is using color.
+%D
+%D There are two colors involved: one for normal hyperlinks,
+%D and one for those that point to the currentpage, the
+%D contrast color.
+
+\definecolor [interactioncolor] [r=0, g=.6, b=0]
+\definecolor [interactioncontrastcolor] [r=.8, g=0, b=0]
+
+%D The next few macros are responsible for highlighting hyper
+%D links. The first one, \type{\showlocation}, is used in those
+%D situations where the typeface is handled by the calling
+%D macro.
+
+%D When we're dealing with pure page references, contrast
+%D colors are used when we are already at the page mentioned.
+
+\permanent\protected\def\setlocationcolorspecified#1% not grouped !
+ {\ifnum#1=\plusone
+ \edef\p_contrastcolor{\interactionparameter\c!contrastcolor}%
+ \ifempty\p_contrastcolor
+ \useinteractioncolorparameter\c!color
+ \else
+ \useinteractioncolorparameter\c!contrastcolor
+ \fi
+ \else % we could just set and if > 0 set again
+ \useinteractioncolorparameter\c!color
+ \fi}
+
+\permanent\protected\def\setlocationattributesspecified#1% not grouped !
+ {\ifnum#1=\plusone
+ \edef\p_contrastcolor{\interactionparameter\c!contrastcolor}%
+ \ifempty\p_contrastcolor
+ \useinteractionstyleandcolor\c!style\c!color
+ \else
+ \useinteractionstyleandcolor\c!style\c!contrastcolor
+ \fi
+ \else % we could just set and if > 0 set again
+ \useinteractionstyleandcolor\c!style\c!color
+ \fi}
+
+\permanent\protected\def\setlocationcolorspecspecified#1#2% \resolver
+ {\ifnum#1=\plusone
+ \edef\p_contrastcolor{#2\c!contrastcolor}%
+ \ifempty\p_contrastcolor
+ \colo_helpers_activate{#2\c!color}%
+ \else
+ \colo_helpers_activate\p_contrastcolor
+ \fi
+ \else
+ \colo_helpers_activate{#2\c!color}%
+ \fi}
+
+\permanent\protected\def\setlocationcolor {\setlocationcolorspecified \referencepagestate}
+\permanent\protected\def\setlocationattributes{\setlocationattributesspecified\referencepagestate}
+\permanent\protected\def\setlocationcolorspec {\setlocationcolorspecspecified \referencepagestate}
+
+\permanent\protected\def\setlocationfont % not grouped !
+ {\useinteractionstyleparameter\c!style}
+
+\setupinteraction
+ [\c!style=\v!bold,
+ \c!color=interactioncolor,
+ \c!contrastcolor=interactioncontrastcolor]
+
+%D Identity
+
+% \newconditional\c_scrn_identity_preroll
+%
+% \installtexdirective
+% {interaction.identity.preroll}
+% {\settrue \c_scrn_identity_preroll}
+% {\setfalse\c_scrn_identity_preroll}
+%
+% \def\scrn_identity_prerolled#1%
+% {\begingroup
+% \edef\tempstring{\interactionparameter#1}%
+% \ifempty\tempstring
+% \endgroup
+% \else
+% \the\everypreroll
+% \nodestostring\tempstring{\tempstring}%
+% \normalexpanded{\endgroup\setexpandedinteractionparameter{#1}{\tempstring}}%
+% \fi}
+%
+% \def\scrn_identity_synchronize
+% {\begingroup
+% \ifconditional\c_scrn_identity_preroll
+% \scrn_identity_prerolled\c!title
+% \scrn_identity_prerolled\c!subtitle
+% \scrn_identity_prerolled\c!author
+% \scrn_identity_prerolled\c!date
+% \scrn_identity_prerolled\c!keyword
+% \fi
+% \clf_setupidentity
+% title {\interactionparameter\c!title}%
+% subtitle {\interactionparameter\c!subtitle}%
+% author {\interactionparameter\c!author}%
+% % creator {ConTeXt - \contextversion}%
+% date {\interactionparameter\c!date}%
+% keywords {\interactionparameter\c!keyword}%
+% \relax
+% \endgroup}
+
+\def\scrn_identity_synchronize
+ {\clf_setupidentity
+ title {\prerolltostring{\interactionparameter\c!title}}%
+ subtitle {\prerolltostring{\interactionparameter\c!subtitle}}%
+ author {\prerolltostring{\interactionparameter\c!author}}%
+ % creator {ConTeXt - \contextversion}% fixed
+ date {\prerolltostring{\interactionparameter\c!date}}%
+ keywords {\prerolltostring{\interactionparameter\c!keyword}}%
+ \relax}
+
+\appendtoks
+ \scrn_identity_synchronize
+\to \everysetupinteraction
+
+% this comes before starttext
+
+\def\scrn_identity_document#1#2%
+ {\doifdocumentvariable{metadata:#1}{\setupinteraction[#2=\documentvariable{metadata:#1}]}}
+
+\appendtoks % not interfaced i.e. english
+ \scrn_identity_document {title}\c!title
+ \scrn_identity_document {subject}\c!subtitle
+ \scrn_identity_document{subtitle}\c!subtitle
+ \scrn_identity_document {author}\c!author
+ \scrn_identity_document {authors}\c!author
+ \scrn_identity_document {keyword}\c!keyword
+ \scrn_identity_document{keywords}\c!keyword
+ \scrn_identity_document {date}\c!date
+\to \everystartdocument % or stop
+
+\protect \endinput