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/scrn-ini.mkvi | |
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/scrn-ini.mkvi')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/scrn-ini.mkvi | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/scrn-ini.mkvi b/Master/texmf-dist/tex/context/base/mkiv/scrn-ini.mkvi new file mode 100644 index 00000000000..0e00fb456b4 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/mkiv/scrn-ini.mkvi @@ -0,0 +1,210 @@ +%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}{1.001} + +%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 + \ifx\previousinteraction\empty + \checkinteractionstate + \else\ifx\currentinteraction\previousinteraction + \checkinteractionstate + \fi\fi +\to \everysetupinteraction + +\unexpanded\def\checkinteractionstate + {\doifelse{\interactionparameter\c!state}\v!start + {\locationtrue \setsystemmode \v!interaction}% + {\locationfalse \resetsystemmode\v!interaction}} + +\def\doifelselocation % expandable + {\iflocation + \expandafter\firstoftwoarguments + \else + \expandafter\secondoftwoarguments + \fi} + +\let\doiflocationelse\doifelselocation + +\setupinteraction + [\c!state=\v!stop] + +\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 +% interactionso 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 +% +% \unexpanded\def\scrn_interaction_direct#1% +% {\edef\currentinteraction{#1}} +% +% \unexpanded\def\scrn_interaction_start#1% +% {\pushmacro\currentinteraction +% \edef\currentinteraction{#1}} +% +% \unexpanded\def\scrn_interaction_stop +% {\popmacro\currentinteraction} +% +% \unexpanded\def\setinteraction[#1]% +% {\def\currentinteraction{#1}} +% +% \defineinteraction[\v!interaction] + +\unexpanded\def\startinteraction[#1]% + {\pushmacro\currentinteraction + \edef\currentinteraction{#1}} + +\unexpanded\def\stopinteraction + {\popmacro\currentinteraction} + +\unexpanded\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. + +\unexpanded\def\setlocationcolorspecified#1% not grouped ! + {\ifnum#1=\plusone + \edef\askedcontrastcolor{\interactionparameter\c!contrastcolor}% + \ifx\askedcontrastcolor\empty + \useinteractioncolorparameter\c!color + \else + \useinteractioncolorparameter\c!contrastcolor + \fi + \else % we could just set and if > 0 set again + \useinteractioncolorparameter\c!color + \fi} + +\unexpanded\def\setlocationattributesspecified#1% not grouped ! + {\ifnum#1=\plusone + \edef\askedcontrastcolor{\interactionparameter\c!contrastcolor}% + \ifx\askedcontrastcolor\empty + \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} + +\unexpanded\def\setlocationcolorspecspecified#1#2% \resolver + {\ifnum#1=\plusone + \edef\askedcontrastcolor{#2\c!contrastcolor}% + \ifx\askedcontrastcolor\empty + \colo_helpers_activate{#2\c!color}% + \else + \colo_helpers_activate\askedcontrastcolor + \fi + \else + \colo_helpers_activate{#2\c!color}% + \fi} + +\unexpanded\def\setlocationcolor {\setlocationcolorspecified \referencepagestate} +\unexpanded\def\setlocationattributes{\setlocationattributesspecified\referencepagestate} +\unexpanded\def\setlocationcolorspec {\setlocationcolorspecspecified \referencepagestate} + +\unexpanded\def\setlocationfont % not grouped ! + {\useinteractionstyleparameter\c!style} + +\setupinteraction + [\c!style=\v!bold, + \c!color=interactioncolor, + \c!contrastcolor=interactioncontrastcolor] + +%D Identity + +\def\scrn_identity_synchronize + {\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} + +\appendtoks + \scrn_identity_synchronize +\to \everysetupinteraction + +% this comes before starttext + +\appendtoks % not interfaced i.e. english + \doifvariable{document}{metadata:author} {\setupinteraction [\c!author=\documentvariable{metadata:author}]}% + \doifvariable{document}{metadata:title} {\setupinteraction [\c!title=\documentvariable{metadata:title}]}% + \doifvariable{document}{metadata:subject} {\setupinteraction[\c!subject=\documentvariable{metadata:subject}]}% + \doifvariable{document}{metadata:keywords}{\setupinteraction[\c!keyword=\documentvariable{metadata:keywords}]}% +\to \everysetupdocument + +\setupinteraction + [\c!title=, + \c!subtitle=, + \c!author=, + \c!keyword=, + \c!date=] + +\protect \endinput |