% language=us

\environment interaction-style

\startcomponent interaction-enabling

\startchapter[title=Enabling]

Interaction is turned off by default. Of course cross referencing
work without interaction but there are no hyperlinks. You turn on
interaction with the \type {\setupinteraction} command:

\showsetup {setupinteraction}

The \type {state} key is the switch you need to use. In addition you might want
to setup the style and color.

\starttyping
\setupinteraction
  [state=start,
   style=,
   color=,
   contrastcolor=]
\stoptyping

This is the least intrusive way to get interaction in your document. By default
the style is bold and the \type {color} defaults to green. The \type
{contrastcolor} is used when a hyperlink refers to the same page and defaults to
red. A neutral setup makes sense because nowadays the reader kind of knows what
can be clicked on.

The \type {title}, \type {subtitle}, \type {author}, \type {date} and \type
{keyword} parameters are passed to the document and will show up when you request
document information.

The \type {openaction} parameter can for instance be used to start at a specific
page, while the \type {closeaction} can be used to trigger a \JAVASCRIPT\ cleanup
script. The \type {openpageaction} and \type {closepageaction} can for instance
initialize and reset states, something we do in some presentation styles.

The \type {click} parameter controls how a viewer responds to pressing a mouse
button on an annotation: highlight or not. The \type {display} parameter
determines if a cross document link opens in the current window.

The \type {menu} parameter is a quick way to disable menus, of which there can be
many: at each side of the page, stacked or not, etc. The \type {symbolset}
determines the look and feel of symbols used in for instance menus, buttons and
status bars.

The \type {page} parameters is a bit special, and it function is an inheritance
from the early days. Some \DVI\ and \PDF\ viewers supported named destinations,
others only page references. This parameter can be used to force one or the
other. There was a time that there was a limit on the number of named references,
so going page was the only option \footnote {We're talking of 1995 when we made
documents of many thousands of pages with tens of thousands of hyperlinks, cross
linked tables of contents, registers, active graphics, etc.\ Think of
dictionaries used in very specific projects, or quality assurance manuals.}

Personally I consider an electronic document an entity to be seen full screen on
a dedicated device. However some users prefer the target of a link to fit the
width of the screen and alike. The \type {focus} parameter can (within)
reasonable bounds provide this. The \type {focusoffset} is then used to keep
things a bit visual convenient.

The \type {height} and \type{depth} parameters are sort of special and probably never
used. When we go back in time, to when we started adding interactivity, there were
a few issues that needed to be dealt with:

\startitemize[packed]
\startitem
    We need to make sure that we have something to click on, so we need to add
    some offset if needed.
\stopitem
\startitem
    We need to handle nested hyperlinks, which is why \CONTEXT\ didn't use the
    link features of for instance \PDFTEX\ but built its own.
\stopitem
\startitem
    Hyperlinks should break properly across lines without side effects, again a
    reason for bypassing some of the \TEX\ engine's behaviour.
\stopitem
\startitem
    We have to make sure that there is at least a consistent height and depth
    of hyperlinks. These tight links with viewer supplied bounding boxes to
    click on just look real bad! So, we had to do better.
\stopitem
\stopitemize

Normally the two mentioned parameters are not used. However, their value will
kick in when we say \type {\setfalse \locationstrut}, in which case the given
height and depth will be used. Some advice: don't mess with this. We only have
this because it permits special effects.

If you want to see what the target (destinations) and sources (references) of
links are, you can say:

\starttyping
\enabletrackers[nodes.references,nodes.destinations]
\stoptyping

The \type {fieldlayer} parameter can be used to set a so called viewer layer, so
that you can hide them (given that a viewer supports that). The \type {calculate}
parameter can associate a calculator (initializer) with the fields.

You can create an interaction environment with:

\showsetup {defineinteraction}

which then can be used with:

\showsetup {startinteraction}

\stopchapter

\stopcomponent


