% overlaybutton, verschil tussen teksten  en overlay, herhaal

\startonderdeel co-nl-18

\projekt manual
\produkt context

\hoofdstuk[interactie]{Interactie}

{\em nog niet herzien}

\stoponderdeel

\paragraaf{Inleiding}
\index{hypertext}
\index{interactie}
\index{verwijzingen+interactie}

Tot nu toe zijn we steeds uitgegaan van een papieren
document. Er zijn echter programma's op de markt waarmee
teksten op het beeldscherm kunnen worden bekeken. Deze
programma's ondersteunen interactieve teksten. Dit zijn
teksten die zo zijn opgezet dat snel naar de gewenste plaats
kan worden gesprongen, bijvoorbeeld door met de muis een
verwijzing aan te klikken.

Omdat standaard in een tekst al de nodige verwijzingen zijn
opgenomen, zijn met \CONTEXT\ aangemaakte teksten min of
meer automatisch interactief. Dat wil zeggen dat
bijvoorbeeld na het aanklikken van een paragraafnummer in de
inhoudsopgave naar de desbetreffende paragraaf wordt
gesprongen. De interactie heeft betrekking op:

\startopsomming[opelkaar,aansluitend]
\som  lijsten, zoals inhoudsopgaven en overzichten van figuren
\som  ingangen in indexen
\som  verwijzingen in de tekst naar figuren, tabellen enz.
\som  genummerde tekstonderdelen, zoals vragen en antwoorden
\som  verwijzingen naar andere teksten
\som  gemarkeerde woorden
\som  (delen van) figuren
\som  speciaal ontworpen interactie||elementen, zoals menu's
      en statusbalken
\som  leesprofielen en versies
\som  parallelle documenten
\stopopsomming

De ondersteuning van deze interactiemogelijkheden wordt mede
bepaald door het programma dat wordt gebruikt om de tekst te
raadplegen.

\paragraaf{De interactieve mode}
\macro{\tex{stelinteractiein}}
\macro{\tex{stelinteractieschermin}}

Overzichten en verwijzingen kunnen worden voorzien van voor
\kap{dviwindo} en \kap{acrobat} betekenisvolle codes. Het
genereren van codes wordt ingesteld met:

\toonsetup{stelinteractiein}

Hierbij hebben \type{letter} en \type{kleur} betrekking op
in de tekst gemarkeerde woorden 'waar een verwijzing achter
zit'.

\paragraaf{Menu's}
\index{menu's}
\index{interactie+menu's}
\macro{\tex{stelinteractiemenuin}}
\macro{\tex{definieerinteractiemenu}}
\macro{\tex{blokkeerinteractiemenu}}
\macro{\tex{menubutton}}

Er kunnen menu's worden gedefinieerd die links, rechts,
onder of boven de tekst worden gezet. In een menu kan
bijvoorbeeld een verkorte inhoudsopgave staan. Door op de
menu||items te 'klikken' gaat men naar het betreffende
onderwerp. De te gebruiken commando's zijn:

\toonsetup{definieerinteractiemenu}

\toonsetup{stelinteractiemenuin}

Het laatste commando heeft twee gedaantes: een waarbij
instellingen plaatsvinden, en een waarbij het menu wordt
gedefinieerd. Een voorbeeld van een voor deze handleiding
relevant menu is:

\startvoorbeeld
\starttypen
\definieerinteractiemenu
  [onder]
  [status=start]
\stelinteractiemenuin
  [onder]
  [{inhoud[inhoud]},
   {commando's[texcommando]},
   {index[index]},
   {macro's[macro]}]
\stoptypen
\stopvoorbeeld

Er kunnen meerdere menu's tegelijkertijd en op verschillende
plaatsen op het scherm worden gedefinieerd. De items in een
menu worden onderdrukt als een sprong geen zin heeft, dat
wil zeggen als men reeds op de gevraagde plek staat.

De accolades zijn essentieel. De verwijzingen dienen met de
daarvoor gebruikelijke commando's te worden aangemaakt
(\type{...[ref]...}). Een aantal verwijzingen, zoals
\type{inhoud} en \type{index}, zijn in de regel automatisch
beschikbaar.

Aan \type{voor}, \type{na} en \type{tussen} kunnen commando's
worden toegekend, zoals: \type{\hfill}, \type{\blanko} en
\type{\hskip1em}.

In plaats van een verwijzing kunnen ook commando's worden
opgenomen, bijvoorbeeld:

\startvoorbeeld
\starttypen
\stelinteractiemenuin
  [onder]
  [{inhoud[inhoud]},
   {\vfill},
   {commando's[texcommando]},
   {index[index]},
   {macro's[macro]}]
\stoptypen
\stopvoorbeeld

Hoewel het gebruik van extra \argchars\ niet altijd nodig
is, voorkomt het problemen en onduidelijkheden, zeker als
het commando \setchars\ gebruikt.

Standaard zijn vier menu's gedefinieerd: \type{onder},
\type{boven}, \type{links} en \type{rechts}. Er kunnen ook
meerdere menu's naast of boven elkaar worden gezet.

\startvoorbeeld
\starttypen
\definieerinteractiemenu [navigatie] [rechts] [status=start]
\stoptypen
\stopvoorbeeld

Het bovenstaande commando definieert een tweede menu rechts.
In hoeverre menu's ook daadwerkelijk worden geplaatst, hangt
mede af van de instelling van \type{status} en/of
\type{afstand}. Het is bijvoorbeeld mogelijk meerdere
menu's te defini\"eren die elkaar vervangen, met andere
woorden over elkaar liggen. Als \type{afstand=overlay}, dan
wordt een menu over het voorafgaande menu geplaatst. Als
\type{status=geen}, dan wordt het menu niet gezet en wordt
ook geen ruimte gereserveerd. Dit laatste gebeurt wel als
\type{status=stop}.

Het is mogelijk een menu te blokkeren. Dit gebeurt met
behulp van het referentie||mechanisme. Het commando luidt:

\toonsetup{blokkeerinteractiemenu}

Het menu wordt geblokkeerd op de bladzijden waar de in de
lijst opgenomen verwijzingen zijn gedefinieerd.

We laten op de volgende bladzijden enkele voorbeelden van
menu's zien.

\pagina

\plaatsfiguur{Interactieve menu's: pagina 1.}{\naam{cont-zz1}}
\plaatsfiguur{Interactieve menu's: pagina 2.}{\naam{cont-zz2}}
\plaatsfiguur{Interactieve menu's: pagina 3.}{\naam{cont-zz3}}

% De instellingen van een interactieve eps-file hebben
% gevolgen voor het gehele document, vandaar de noodsprong:

\stelinteractieschermin

% Als dit commando zonder argumenten wordt gegeven, worden de
% ingestelde waarden nogmaals weggeschreven.

\pagina

Naast \type{index}, \type{inhoud} enz. zijn standaard de
volgende verwijzingen beschikbaar: \type{eerstepagina},
\type{laatstepagina}, \type{volgendepagina} en
\type{vorigepagina}. Ook kan naar een vorige inhoudsopgave
worden gesprongen met \type{vorigeinhoud}. Overigens kloppen
deze, hopelijk voor zichzelf sprekende, verwijzingen alleen
als de file ten minste tweemaal is verwerkt.

\toonsetup{menubutton}

Het bovenstaande commando kan worden gebruikt om een button
te genereren die overeenkomt met die in een menu. Dit
commando kan men bijvoorbeeld gebruiken om button's in het
hoofd of de voet te plaatsen. Dergelijke buttons lijken in
dat geval op die in een menu.

\paragraaf{Schermen}
\index{interactie+schermformaat}
\index{zetspiegel}
\index{marges}
\macro{\tex{scherm}}
\macro{\tex{stelinteractieschermin}}

Voor de weergave op het beeldscherm passen we de zetspiegel
wat aan. Dit is nodig omdat de menu's buiten de marges
vallen. Een complicerende factor bij het vormgeven van een
interactieve tekst is namelijk dat op een beeldscherm de
verhouding tussen hoogte en breedte anders is dan op
papier.

\toonsetup{stelinteractieschermin}

Men moet er voor zorgen dat de breedte van het scherm niet
groter wordt dan die van het papier (21~cm), omdat anders in
Acrobat een deel van het scherm niet zichtbaar is. Het
instellen van de layout en het scherm is een nauwkeurig
werkje, zeker als men met achtergonden werkt of met een offset.
Een goed inzicht in de layout is daarbij onontbeerlijk.

Een overgang naar een ander scherm kan worden afgedwongen
met:

\toonsetup{scherm}

Als de interactie geblokkeerd is (\type{status=stop}), dan doet
dit commando niets.

\paragraaf{Figuren}
\index{figuren+interactie}
\index{interactie+figuren}
\macro{\tex{startfiguur}}
\macro{\tex{markeer}}
\macro{\tex{refereer}}
\macro{\tex{toelichting}}

Er kan zowel van uit een figuur worden geprongen naar een
plaats in de tekst, als van uit de tekst naar een onderdeel van
een figuur.\voetnoot{Helaas kan dit nog niet in
\kap{acrobat}.} Onderdelen van een figuur worden gemarkeerd
met behulp van een 12pt||rooster. Een figuur wordt
gedefinieerd met:

\toonsetup{startfiguur}

Tussen \type{\startfiguur} en \type{\stopfiguur} worden
delen van de figuur waarnaar gesprongen wordt, gemarkeerd
met:

\toonsetup{markeer\subsetup{figuur}}

Delen van de figuur van waaruit gesprongen wordt naar de tekst
worden gedefinieerd met:

\toonsetup{refereer\subsetup{figuur}}

Op de volgende bladzijden is een voorbeeld gegeven van zo'n
aanklikbaar figuur. Een overzicht van alle figuren op een
gebied kan (bijvoorbeeld) worden verkregen door de
commando's:

\startvoorbeeld
\starttypen
\starttekst
\stelexternefigurenin[optie=test]
\input figuren.tex
\stoptekst
\stoptypen
\stopvoorbeeld

Hierbij is ervan uitgegaan dat de definities van de figuren
in de file \type{figuren.tex} staan, zoals:

\startbuffer
\startfiguur[eerste][rb00007e][factor=100]
  \refereer(1,0.5)(8,2)[r:1 gangig normaal]
  \refereer(1,9.5)(8,2)[r:2 gangig progressief]
  \refereer(1,18.5)(8,2)[r:2 gangig normaal]
  \kleurenbalk[groen,rood,blauw]
\stopfiguur
\stopbuffer

\startvoorbeeld
\typebuffer
\stopvoorbeeld

Tussen de eerste \hbox{\type{( )}} wordt de positie
opgegeven (linkerbovenhoek) en tussen de tweede
\hbox{\type{( )}} de afmetingen in 'hokjes'.

De gebruiker van de interactieve tekst moet weten achter
welke onderdelen van een figuur meer informatie zit. Dit kan
door in de figuur aanwijzingen te geven. De tekst wordt in
dat geval minder geschikt om op papier weer te geven, immers
daar valt niets te 'klikken'. Een oplossing hiervoor is het
weergeven van een kleurenbalk met daarin de kleur van de
onderdelen waarachter 'meer steekt'. Elders in deze
handleiding wordt dieper ingegaan op kleurgebruik in
teksten.

\startuitstellen
\start
\stelexternefigurenin[optie=test]
\haalbuffer
\stop
\stopuitstellen

Het formaat van de figuur en de kleurenbalk past zich bij
gebruik van \type{bfactor} of \type{hfactor} aan het actuele
korps aan.

\start
\plaatsfiguur
  {De standaard afmetingen bij dit korps.}
  {\haalbuffer\externfiguur[eerste]}
\stop

\start

\switchnaarkorps[klein]

Als dus met het commando \type{\switchnaarkorps} wordt
overgegaan op een ander korps, dan zal de figuur kleiner
worden.

\plaatsfiguur
  {De standaard afmetingen bij een kleiner korps.}
  {\haalbuffer\externfiguur[eerste]}

We zien dat dit ook inderdaad gebeurt. In dit geval is
overgegaan op een \fontsize\ korps. Aan het onderschrift is
te zien dat dit iets anders is dan schalen.

\stop

Als men de voorkeur geeft aan een ander hokjespatroon, dan
kan men met het commando \type{\stelexternefigurenin} aan
\type{xmax} of \type{ymax} een getal tussen~10 en~100
toekennen. Standaard worden figuren in 24~hokjes in de
hoogte verdeeld. De in een figuur aanklikbare delen kunnen
zichtbaar worden gemaakt door \type{[hokjes=aan]} mee te
geven.

Er kan in de figuur toelichtende tekst worden opgenomen met
het commando:

\toonsetup{toelichting}

Bijvoorbeeld:

\startvoorbeeld
\starttypen
\startfiguur ........
  \........
  \toelichting(4,8)(12,5)[uitlijnen=midden]{regel 1\\regel 2}
  \........
  \toelichting(4,8)(12,5){nog een regel}
  \........
\stopfiguur
\stoptypen
\stopvoorbeeld

De instellingen tussen \setchars\ komen overeen met die van
het commando \type{\omlijnd}.

\paragraaf{Woorden}
\index{interactie+woorden}
\macro{\tex{naar}}
\macro{\tex{op}}
\macro{\tex{in}}

Het is mogelijk vanaf een woord in de tekst naar een andere
plaats in de tekst te springen. Zo'n woord wordt gemarkeerd
met:

\toonsetup{naar}

In de interactieve versie van deze handleiding kan door op
het nu volgende woord \naar{index}[index] te klikken naar de
index worden gesprongen. Het woord wordt, als dit is
ingesteld, in de opgegeven kleur en letter gezet. Hetzelfde
geldt voor:

\repeatsetup{in}

en

\repeatsetup{op}

Een verwijzing wordt zonodig over meerdere regels verdeeld.
Het achterliggende mechanisme is niet erg rubuust. In geval
van een foutmelding moeten extra accolades worden gebruikt.

\startvoorbeeld
\starttypen
\naar{eerste {\tweede} derde}[ziezo]
\stoptypen
\stopvoorbeeld

of:

\startvoorbeeld
\starttypen
\naar{{\omlijnd[breedte=3cm]{ziezo}}}[ziezo]
\stoptypen
\stopvoorbeeld

Een en ander hangt af van het commando dat wordt meegegeven.
De meeste commando's, waaronder \type{\omlijnd}, zijn
overigens robuust genoeg.

\paragraaf[buttons]{Buttons}
\index{buttons}
\macro{\tex{button}}
\macro{\tex{stelbuttonsin}}

Bij wijze van experiment is het commando \type{\button}
beschikbaar. Buttons hebben eigenlijk alleen zin in een tekst
die enkel voor interactief gebruik is geschreven.

\toonsetup{button}

Hieronder zijn wat buttons gezet:

\startbuffer
\stelbuttonsin
  [letter=kap,kleur=donkerrood,
   achtergrond=raster,kader=uit,hoek=rond]

\startregelcorrectie
\hbox to \hsize
  {\button{Inhoud}[inhoud]\hss
   \button{Index}[index]\hss
   \button{Commando's}[macro]}
\stopregelcorrectie
\stopbuffer

\startrealiteit
\haalbuffer
\stoprealiteit

Buttons zijn eigenlijk omlijnde teksten. De bovenstaande
zijn dan ook als volgt gedefinieerd:

\startvoorbeeld
\typebuffer
\stopvoorbeeld

Hierbij zorgt het commando \type{....regelcorrectie} ervoor
dat de spati\"ering boven en onder de buttons in orde komt.

Buttons kunnen worden ingesteld met \type{\stelbuttonsin},
een commando dat dezelfde instellingen heeft als
\type{\button}.

\toonsetup{stelbuttonsin}

\paragraaf[externe documenten]{Externe documenten}
\index{documenten+extern}
\index{externe documenten}
\macro{\tex{gebruikexterndocument}}
\macro{\tex{uit}}

Er kan, als het interactieprogramma dat tenminste
ondersteunt, naar een ander document worden gesprongen.
Evenals bij andere verwijzingen is het commando een
voorzetsel:

\toonsetup{uit}

Uit de onderstaande voorbeelden blijkt hoe dat in zijn werk
gaat:

\startvoorbeeld
\starttypen
Een foto van Knuth is te vinden in \uit[texboek].
Een foto van Knuth is te vinden in \uit[texboek::foto].
Een foto van \naar{Knuth}[texboek::foto] is te vinden in \uit.
Een foto is te vinden \op{bladzijde}[texboek::foto] in \uit.
Zie voor een foto van Knuth \in{afbeelding}[texboek::foto] in \uit.
Staat in het \naar{\TeX book}[texbook::]  wel foto van Knuth?
\stoptypen
\stopvoorbeeld

In het eerste voorbeeld gaan we met \type{\uit[texboek]}
naar de eerste bladzijde van het texboek. Het tweede
voorbeeld brengt ons naar de gevraagde plaats in het
texboek. De laatste vier voorbeelden zijn reeds aan de orde
gekomen, zij het dat met \type{\uit} zonder \setchars\ de
titel van het boek wordt opgeroepen. We zien bij het laatste
voorbeeld dat de exacte verwijzing (na \type{::}) achterwege
kan blijven.

Een document moet eerst worden gedefinieerd en wel met het
commando:

\toonsetup{gebruikexterndocument}

bijvoorbeeld:

\startvoorbeeld
\starttypen
\gebruikexterndocument [texboek] [texbook] [The \TeX book]
\stoptypen
\stopvoorbeeld

Het zal inmiddels duidelijk zijn dat \type{::} de scheiding
vormt tussen de logische naam van het document en de
verwijzing.

De in andere documenten aangebrachte verwijzingen worden
automatisch geladen. Het andere document moet dus ten minste
een maal zijn verwerkt. Vooralsnog kan bij verwijzingen
over documenten heen geen gebruik worden gemaakt van een
prefix.

\paragraaf[parallelle documenten]{Parallelle documenten}
\index{documenten+varianten}
\index{parallelle documenten}
\macro{\tex{startsynchronisatie}}
\macro{\tex{stelsynchronisatiein}}
\macro{\tex{synchronisatiebalk}}
\macro{\tex{stelsynchronisatiebalkin}}
\macro{\tex{synchroniseer}}

Wanneer we de layout van een document aanpassen aan de
kenmerken van het scherm, krijgen we vrijwel altijd een
document dat er op papier niet al te fraai uitziet. Het ligt
dan ook voor de hand om, kijkend naar effici\"ency en
esthetica, een speciale papieren versie te genereren.

Al lezend in een electronisch document ---~voor zover
althans daadwerkelijk sprake is van lezen~--- kan de
behoefte ontstaan aan een print van een bepaalde bladzijde.
Dit is in Acrobat mogelijk. Er zijn in \CONTEXT\ daarom
enkele commando's beschikbaar die het mogelijk maken vanuit
de interactieve versie naar een 'papieren versie' te
springen. We spreken in dat geval van parallelle documenten.

Het (op dit moment nog niet helemaal waterdichte en
kwetsbare) mechanisme is opgezet conform markeringen. Er
zijn daarom twee varianten beschikbaar.

Synchronisatie vindt plaats met behulp van de onderstaande
commando's:

\toonsetup{startsynchronisatie}

\toonsetup{synchroniseer}

Met (een van) deze commando's brengt men in de tekst
zogenaamde synchronisatiepunten aan. Het
\type{\start}||commando kan worden gebruikt rond
constructies waarvan nog niet duidelijk is op welke
bladzijde ze belanden. Koppen zijn hiervan een voorbeeld.

Standaard zijn koppen gesynchroniseerd, zodat men in de
praktijk alleen maar het mechanisme hoeft te activeren en
de balken hoeft op te roepen.

\toonsetup{stelsynchronisatiein}

Er zijn zoals gezegd twee varianten. De eerste variant gaat
uit van aanklikbare punten in de tekst die naar de exacte
posities in het parallel document springen. Er is trouwens
geen beperking gesteld aan het aantal parallelle documenten.

\pushinteraction

In het verlengde van de vorige paragraaf, defini\"eren we eerst
de externe documenten:

\startbuffer[voorb-1]
\gebruikexterndocument [fraai]   [doc-1] [fraai]
\gebruikexterndocument [compact] [doc-2] [compact]
\gebruikexterndocument [groot]   [doc-3] [groot]

\stelsynchronisatiein [status=start]
\stopbuffer

\startvoorbeeld
\typebuffer[voorb-1]
\stopvoorbeeld

We kunnen naar exacte lokaties springen als de variant
\type{lokaal} kiezen. De onderstaande blokjes hebben
betrekking op de actuele sectie en moeten dan ook zo dicht
mogelijk in de buurt van een kop worden geplaatst:

\startbuffer[voorb-2]
\hbox
  {\synchronisatiebalk[fraai][variant=lokaal]%
   \hskip1em%
   \synchronisatiebalk[compact][variant=lokaal]%
   \hskip1em%
   \synchronisatiebalk[groot][variant=lokaal]}
\stopbuffer

\startvoorbeeld
\typebuffer[voorb-1]
\stopvoorbeeld

Dit ziet er als volgt uit:

\startregelcorrectie
\haalbuffer[voorb-1]
\haalbuffer[voorb-2]
\stopregelcorrectie

Men ontkomt niet aan een eigen kopdefinitie. Een eenvoudige
oplossing is bijvoorbeeld:

\startvoorbeeld
\starttypen
\def\gesynchroniseerdekoptekst#1%
  {#1~\hbox
    {\synchronisatiebalk[fraai][variant=lokaal]%
     \hskip1em%
     \synchronisatiebalk[compact][variant=lokaal]}}

\stelkopin
  [hoofdstuk]
  [tekstcommando=\gesynchroniseerdekoptekst]
\stoptypen
\stopvoorbeeld

Hierbij zorgen de \type{~} en de \type{\hbox} er voor dat de
balkjes niet op een aparte regel komen te staan.

De tweede variant werkt analoog aan markeringen. Er zijn
onder de naam van de tekst een, twee of drie blokjes te zien,
die overeenkomen met \type{eerste}, \type{laatste} of
{vorige} (zie \in{paragraaf}[markeringen]).

\startbuffer[voorb-3]
\hbox
  {\synchronisatiebalk[fraai][variant=pagina]%
   \hskip1em%
   \synchronisatiebalk[compact][variant=pagina]%
   \hskip1em%
   \synchronisatiebalk[groot][variant=pagina]}
\stopbuffer

\startregelcorrectie
\haalbuffer[voorb-1]
\haalbuffer[voorb-3]
\stopregelcorrectie

\popinteraction

Synchronisatiebalken worden dus opgeroepen met het commando:

\toonsetup{synchronisatiebalk}

De hier getoonde balken hebben betrekking op deze tekst en
deze paragraaf. Wil men een wat andere layout, dan kan men
die instellen met:

\toonsetup{stelsynchronisatiebalkin}

Dit mechanisme zou pas echt compleet zijn als automatisch de
range van de te printen bladzijden zou kunnen worden
ingesteld.

\paragraaf[externe programmas]{Externe programma's}
\index{programma's+extern}
\index{externe programma's}
\macro{\tex{definieerprogramma}}
\macro{\tex{stelprogrammasin}}
\macro{\tex{programma}}

Analoog aan het springen naar externe documenten, is het
mogelijk een programma op te starten. Dit gebeurt met behulp
van de commando's:

\toonsetup{definieerprogramma}

\toonsetup{stelprogrammasin}

\toonsetup{programma}

Het werken met externe programma's maakt een interactieve
tekst erg kwetsbaar. Zo is het de vraag of en hoe het
programma beschikbaar is. Zolang het besturingssysteem dit
soort zaken nog niet goed afhandelt, moeten we een gebied
opgeven:

\startvoorbeeld
\starttypen
\stelprogrammasin[gebied=s:/pragma/programs]
\stoptypen
\stopvoorbeeld

Voordat we een programma kunnen activeren, moet het eerst zijn
gedefinieerd:

\startvoorbeeld
\starttypen
\definieerprogramma [editor] [texedit] [De \TeX verwerker \TeX Edit]
\stoptypen
\stopvoorbeeld

Het laatste argument is de naam die verschijnt als we het
commando \type{\programma} gebruiken:

\startvoorbeeld
\starttypen
\programma[editor]
\stoptypen
\stopvoorbeeld

Het programma \TEXEDIT\ wordt in dit geval geactiveerd door
op gezette woord te klikken.

\paragraaf{Interactiebalken}
\index{interactiebalk}
\index{interactie+status}
\macro{\tex{interactiebalk}}
\macro{\tex{stelinteractiebalkin}}

\pushinteraction

Als we gebruikers de mogelijkheid willen geven door de tekst
te springen, kunnen we gebruik maken van interactiebalken:

\toonsetup{interactiebalk}

Er zijn verschillende varianten beschikbaar. De eerste
variant (\type{a}) is de, in termen van omvang van de
resulterende file, minst effici\"ente:

\startbuffer[voorb-1]
\interactiebalk[variant=a,breedte=\hsize]
\stopbuffer

\startvoorbeeld
\typebuffer[voorb-1]
\stopvoorbeeld

levert de balk

\interactiebalk[reset]
\startregelcorrectie
\haalbuffer[voorb-1]
\stopregelcorrectie

Het gedrag van deze variant past zich aan de omvang van
de tekst aan. Zo is er bijvoorbeeld altijd comfortabel te
klikken naast het centrale punt (de actuele positie).

Variant \type{b} ligt echter meer voor de hand:

\startbuffer[voorb-2]
\interactiebalk[variant=b,breedte=10em]
\stopbuffer

\startvoorbeeld
\typebuffer[voorb-2]
\stopvoorbeeld

levert:

\interactiebalk[reset]
\startregelcorrectie
\haalbuffer[voorb-2]
\stopregelcorrectie

De karakters die in de tweede balk worden gebruikt hangen af
van het al dan niet geladen zijn van de \type{ams}||fonts.

Een gedeelte van de balk wordt een keer berekend en
onthouden. Wil men de balk aanpassen, dan moet zonodig eerst
het commando \type{\interactiebalk[reset]} worden gegeven.

Ook hier kan weer een en ander worden ingesteld. De betekenis
van de instellingen hangt af van het type balk.

\toonsetup{stelinteractiebalkin}

Zo levert:

\startbuffer[voorb-3]
\stelinteractiebalkin
  [variant=b,breedte=10em,
   kleur=donkergroen,achtergrond=raster,kader=uit]
\stopbuffer

\startvoorbeeld
\typebuffer[voorb-3]
\stopvoorbeeld

als balk op:

\interactiebalk[reset]
\startregelcorrectie
\haalbuffer[voorb-3]
\haalbuffer[voorb-2]
\stopregelcorrectie

Als gebruik wordt gemaakt van sub||paginanummers, kan
variant~\type{d} (vaste maten) of~\type{e} (flexibele maten)
worden opgeroepen. Deze varianten verdienen zowel om
praktische als om esthetische redenen de voorkeur boven
variant~\type{a}.

\startbuffer
\interactiebalk[variant=e,breedte=\hsize]
\stopbuffer

\startvoorbeeld
\typebuffer
\stopvoorbeeld

Bij variant \type{e} passen de maten zich aan aan de
opgegeven breedte. Meer bladzijden leidt tot kleinere
blokjes. Het blokje dat betrekking heeft op de huidige
pagina heeft een afwijkende kleur.

\interactiebalk[reset]
\startregelcorrectie
\haalbuffer
\stopregelcorrectie

Balk~\type{f} is een variatie op~\type{e}. Deze balk kan
worden gebruikt bij grote aantallen subpagina's. Er worden
minder blokjes gebruikt, waarbij de gevoeligheid evenredig
minder is. Overigens wordt bij variant~\type{e} automatisch
overgegaan op~\type{f} als de breedte van de blokjes onder de
ingestelde afstand komt.

Overigens zijn de laatst genoemde balken alleen te
realiseren wanneer het subnummermechanisme actief is:

\startvoorbeeld
\starttypen
\stelsubpaginanummerin[wijze=perhoofdstuk,status=start]
\stoptypen
\stopvoorbeeld

\popinteraction

\paragraaf{Profielen en versies}
\index{lezersprofielen}
\index{profielen}
\index{versies}
\macro{\tex{definieerprofiel}}
\macro{\tex{definieerversie}}
\macro{\tex{startversie}}
\macro{\tex{startprofiel}}
\macro{\tex{stelversiein}}
\macro{\tex{stelprofielenin}}
\macro{\tex{volgversie}}
\macro{\tex{volgprofiel}}
\macro{\tex{volgprofielversie}}

Veel (eerste) voorbeelden van electronische teksten
betreffen bestaande publicaties. Nadeel van een ‚‚n||op||‚‚n
vertaling naar het beeldscherm is dat het lezen van
dergelijke teksten niet eenvoudig is. Een krant maakt
bijvoorbeeld gebruik van kolommen. Om die reden is in
\ACROBAT\ de mogelijkheid opgenomen artikelen te markeren en
zo de lezer te helpen zijn of haar weg door de tekst te
vinden.

Dit mechanisme kan, zij het dat de huidige implementatie in
\ACROBAT\ daartoe nog ontoereikend is, worden gebruikt om
lezersprofielen te cre\"eren. Bovendien maakt het een vorm van
versiebeheer mogelijk. Het hier beschreven mechanisme is nog
verre van perfect, dit als gevolg van de beperkingen van
\ACROBAT. Dit gegeven noodzaakt tot terughoudend gebruik,
vandaar dat de onderstaande toelichting kort is.

We maken onderscheid tussen profielen, dat wil zeggen delen
van de tekst die voor een bepaalde doelgroep zijn bedoeld,
en versie, dat wil zeggen belangrijke wijzigingen in de
tekst. Een deel van de tekst kan worden gemarkeerd met de
onderstaande commando's:

\toonsetup{startprofiel}

\toonsetup{startversie}

Beiden krijgen een label mee dat aangeeft welk profiel cq.
welke versie het betreft.

\startvoorbeeld
\starttypen
\startprofiel[a]
Dit deel van de tekst is niet voor iedereen even relevant. Als men
bijvoorbeeld geen interactieve tekst maakt hebben profielen ook
geen zin.
\stopprofiel
\stoptypen
\stopvoorbeeld

\startvoorbeeld
\starttypen
\startversie[2,4]
Wel, helemaal waar is dit niet. Omdat we versie's apart kunnen
verwerken en vormgeven, kan dit deel van het mechanisme ook in
papieren documenten worden gebruikt.
\stopversie
\stoptypen
\stopvoorbeeld

Voordat we iets kunnen doen met op deze manier gemarkeerde
delen van de tekst dienen we eerst een en ander te
defini\"eren:

\toonsetup{definieerprofiel}

\toonsetup{definieerversie}

Aansluitend bij het voorbeeld ziet zo'n definitie er als
volgt uit:

\startvoorbeeld
\starttypen
\definieerprofiel [hans]        [a,b,c]
\definieerprofiel [ton,hester]  [a,c]
\definieerprofiel [johan]       [a,b]

\definieerversie  [alfa]        [2,3]
\definieerversie  [beta]        [3]
\stoptypen
\stopvoorbeeld

We kunnen nu een profiel, versie of doorsnede van beide
doorlopen. De onderstaande commando's gedragen zich analoog
aan het commando \type{\naar}.

\toonsetup{volgversie}

\toonsetup{volgprofiel}

\toonsetup{volgprofielversie}

Bijvoorbeeld:

\startvoorbeeld
\starttypen
\volgprofiel{Hans: a b c}[hans]
\volgprofiel{Ton: a c}[ton]
\volgprofiel{Hester: a c}[hester]
\volgprofiel{Johan: a b}[johan]

\volgversie{Alfa: 2 3}[alfa]
\volgversie{Beta: 3}[beta]

\volgprofielversie{Hans Alfa: a b c / 2 3}[hans][alfa]
\volgprofielversie{Hans Beta: a b c / 3}[hans][beta]
\stoptypen
\stopvoorbeeld

Natuurlijk kunnen we ook hier wat instellen:

\toonsetup{stelprofielenin}

\toonsetup{stelversiesin}

De optie \type{test} is handig bij het opstellen van de
tekst. In dat geval wordt namelijk boven en onder de
gemarkeerde delen van de tekst aangegeven wat er is
gedefinieerd. Het versienummer geeft aan vanaf welke versie
het mechanisme werkt.

We zien dat bij versies ook een lettertype kan worden
ingesteld. Dit heeft betrekking op de weergave in de tekst.
De alternatieve letter is vooral bedoeld voor
niet||interactieve situaties. Naast het visueel markeren van
een nieuwe versie, kan ook gewijzigde tekst separaat worden
verwerkt en uitgedraaid. Dit gebeurt in twee slagen met
behulp van de onderstaande commando's:

\toonsetup{markeerversie}

\toonsetup{selecteerversie}

De eerste slag gaat na welke bladzijden moeten worden
uitgedraaid, tijdens de tweede slag worden de bladzijden
daadwerkelijk geselecteerd. Handig is anders.

Tot slot nog een tweetal korte commando's. Met \type{@+} en
\type{@-} kan men in de tekst een deel van de tekst
markeren. Deze commando's komen overeen met
\type{\startversie} en \type{\stopversie}. Het commando
\type{@+} kan worden gevolgd door een lijst met nummers,
gevolgd door een spatie:

\startvoorbeeld
\starttypen
Het bijna jaarlijkse ritueel van nieuwe versies van programma's zal
@+2,3 wellicht @- ooit leiden tot hoge versienummers. Helaas bekken
sommige nummers niet zo lekker. @+ We zullen zien. @-
\stoptypen
\stopvoorbeeld

\paragraaf{Eigen gezicht}

\CONTEXT\ is inmiddels een vrij flexibel macropakket.
Beginnende gebruikers zullen echter meestal gebruik maken van
de standaardinstellingen. Bijgevolg zullen teksten dan ook
hetzelfde uiterlijk hebben als de teksten die \PRAGMA\
produceert.

Met name bij bijvoorbeeld interactieve teksten kan dit
problemen geven. Wat is immers de ideale interface? De
breedte van het scherm heeft ons min of meer gedwongen het
in de breedte te zoeken. De onderstaande layout wordt dan
ook ondersteund door \CONTEXT\ en wordt door \PRAGMA\ veel
gebruikt.

\startbuffer
\startregelcorrectie
\regelmidden
  {\switchnaarkorps[9pt]%
   \omlijnd[breedte=240pt,hoogte=180pt,uitlijnen=normaal]%
     {\haalbuffer[voorb-1]
      \blanko
      \haalbuffer[voorb-2]}%
   \hskip6pt%
   \vbox to 180pt
     {\offinterlineskip
      \stelomlijndin[breedte=36pt,hoogte=12pt]{}
      \hbox{\omlijnd{}\hskip6pt\omlijnd{}}%
      \vskip6pt%
      \hbox{\omlijnd{}\hskip6pt\omlijnd{}}%
      \vskip6pt%
      \hbox{\omlijnd{}\hskip6pt\omlijnd{}}%
      \vskip6pt%
      \hbox{\omlijnd{}\hskip6pt\omlijnd{}}%
      \vskip6pt%
      \hbox{\omlijnd{}\hskip6pt\omlijnd{}}%
      \vfill
      \stelomlijndin[breedte=78pt,hoogte=12pt]{}
      \omlijnd{}
      \vskip6pt%
      \omlijnd{}}}
\stopregelcorrectie
\stopbuffer

\startbuffer[voorb-1]
De onderwijskunde, het oorspronkelijke vakgebied van
ondergetekende, zag een decennium geleden zijn werkterrein
vooral in het reguliere onderwijs. Jonge kinderen
inspireerden tot een systematisch en creatief denken over
leren en lesgeven en het inzetten van media daarbij.
\stopbuffer

\startbuffer[voorb-2]
Hoe treurig is het dan ook te zien dat de huidige
onderwijskunde, in haar streven zich te richten op
bedrijfsopleidingen, niet veel verder lijkt te komen dan het
overnemen van ide\"een uit andere disciplines: taakgericht
opleiden, de mens als resource en systeembenaderingen. Ook de
lerende organisatie, job||aids, nieuwe media en andere hypes
doen het in deze wereld goed. In plaats van te sturen volgt
men, vaak op een moment dat men er elders al weer overheen is.
\stopbuffer

\haalbuffer

Hoewel het vanuit het oogpunt van de gebruikers van
dergelijke documenten handig is als teksten een zekere
herkenbaarheid hebben, raden we toch een ieder aan rond deze
herkenbare elementen een eigen stijl te ontwikkelen. Op
termijn hopen we daarvan wat voorbeelden te kunnen
verspreiden.

\startbuffer[voorb-1]
Kijkend naar het individu en zijn plaats in het geheel, zou
de onderwijskunde veel meer sturend moeten optreden. De inzet
van nieuwe media moet niet het onderwijs bepalen, het
onderwijs moet de media bepalen. Een interface moet niet
bepalen wat kan en wat niet, het doel moet de interface
bepalen. De mens staat centraal en  niet het middel. De
onderwijskundige dient daarin een neutrale rol te spelen,
waarbij zijn eigenbelang van ondergeschikt belang is.
\stopbuffer

\startbuffer[voorb-2]
Het lijkt er echter op dat jatten van en (het in cirkeltjes)
verwijzen naar andere disciplines een belangrijker criterium
is geworden dan originaliteit. Het is misschien maar goed ook
dat daar andere naamkaartjes aan hangen: bedrijfsopleidingen
en opleidingskunde.
\stopbuffer

\start
\stelomlijndin[kader=uit,hoek=rond,achtergrond=raster]
\haalbuffer
\stop

\stoponderdeel
