\startonderdeel co-nl-10

\projekt manual
\produkt cont-nl

\hoofdstuk[verwijzingen]{Verwijzingen}

\paragraaf[inhoudsopgave]{Inhoudsopgave}
\index{verwijzingen}
\index{inhoudsopgave}
\index{samengestelde lijsten}
\index{lijsten}
\macro[plaatssameng]{\tex{plaats<<samengesteldelijst>>}}
\macro[volledigesameng]{\tex{volledige<<samengesteldelijst>>}}
\macro{\tex{definieersamengesteldelijst}}
\macro{\tex{stelsamengesteldelijstin}}
\macro{\tex{definieerlijst}}
\macro{\tex{stellijstin}}
\macro{\tex{plaatslijst}}
\macro{\tex{schrijfnaarlijst}}
\macro{\tex{schrijftussenlijst}}
\macro{\tex{geenlijst}}

De wellicht meest voorkomende vorm van verwijzen is de
inhoudsopgave. Er kan dan ook automatisch een inhoudsopgave
worden gegenereerd met het commando:

\startvoorbeeld
\starttypen
\plaatsinhoud
\stoptypen
\stopvoorbeeld

De invulling van de inhoudsopgave wordt bepaald door de
plaats waar hij wordt opgeroepen. Als we de inhoudsopgave
v\`o\'or het eerste hoofdstuk oproepen, krijgen we een volledige
inhoudsopgave. Als we dit binnen een hoofdstuk doen, krijgen
we alleen het voor dat hoofdstuk relevante deel van de
inhoudsopgave. Hetzelfde geldt voor paragrafen en
subparagrafen.

\startvoorbeeld
\starttypen
\hoofdstuk{Gewervelde dieren}
\plaatsinhoud
\paragraaf{Paarden}
\stoptypen
\stopvoorbeeld

Een inhoudsopgave is een voorbeeld van een samengestelde
lijst. Voordat we wat nader op dit soort lijsten ingaan,
behandelen we eerst de deellijsten. Een deellijst wordt
gedefinieerd met:

\toonsetup{definieerlijst}

Een voorbeeld van een definitie is:

\startvoorbeeld
\starttypen
\definieerlijst[eersteniveau]
\stoptypen
\stopvoorbeeld

Zo'n lijst kan worden opgeroepen met:

\startvoorbeeld
\starttypen
\plaatslijst[eersteniveau]
\stoptypen
\stopvoorbeeld

Elke lijst kan eigen instellingen hebben:

\startvoorbeeld
\starttypen
\stellijstin[eersteniveau][breedte=2em]
\stoptypen
\stopvoorbeeld

Er kunnen meerdere lijsten tegelijk worden opgeroepen en
ingesteld, bijvoorbeeld:

\startvoorbeeld
\starttypen
\plaatslijst[eersteniveau,tweedeniveau]
\stoptypen
\stopvoorbeeld

Een lijst is dus op te roepen met

\toonsetup{plaatslijst}

\startuitstellen
\toonsetup{stellijstin}
\stopuitstellen

De vorm van een lijst wordt met name bepaald door de
instellingen van \type{marge}, \type{breedte} en
\type{afstand}. De varianten \type{a}, \type{b} en \type{c}
werken op regelbasis. Een regel is als volgt opgebouwd:

\startregelcorrectie
\hbox
  {\vbox to 3em{\omlijnd[breedte=.1\hsize,rechterkader=uit]{\strut marge}\vss}%
   \vbox to 3em{\omlijnd[breedte=.2\hsize,rechterkader=uit]{\strut breedte}\vss}%
   \vbox to 3em{\omlijnd[breedte=.1\hsize,rechterkader=uit]{\strut afstand}\vss}%
   \vbox to 3em{\omlijnd[breedte=.6\hsize,hoogte=3em]{}}}
\stopregelcorrectie

\startregelcorrectie
\hbox
  {\vbox to 3em{\omlijnd[breedte=.1\hsize,rechterkader=uit]{}\vss}%
   \vbox to 3em{\omlijnd[breedte=.2\hsize,rechterkader=uit]{kopnummer}\vss}%
   \vbox to 3em{\omlijnd[breedte=.1\hsize,rechterkader=uit]{}\vss}%
   \vbox to 3em{\omlijnd[breedte=.6\hsize,hoogte=3em]{kop en paginanummer}}}
\stopregelcorrectie

In een papieren document kunnen we in principe volstaan met
het opgeven van de breedte. In een interactief document
bepaalt de breedte echter het aanklikbare deel. \voetnoot 
{Het exacte gedrag hangt mede af van de waarde die aan \type 
{interactie} is toegekend.}

Bij variant \type{d} loopt de tekst door. In dat geval
hebben \type{voor} en \type{na} geen betekenis. De afstand,
die minimaal 1em is, heeft betrekking op de afstand tot het
volgende item. De volgende instellingen leveren een compacte
inhoudsopgave op:

\startbuffer
\stellijstin
  [hoofdstuk]
  [voor=\blanko,na=\blanko,letter=vet]
\stellijstin
  [paragraaf]
  [variant=d,links=(,rechts=),paginaletter=schuin,prefix=nee]
\stopbuffer

\startvoorbeeld
\typebuffer
\stopvoorbeeld

We hoeven hier de lijsten niet te defini\"eren, omdat dat al
is gebeurd tijdens het defini\"eren van de koppen. De
instelling \type{prefix} heeft betrekking op het al dan niet
opnemen van de voorafgaande nummers. Bij deze variant ligt
dat minder voor de hand dan bij de andere. Variant~d ziet er
uit als: 

\startsmaller
\haalbuffer\plaatslijst[paragraaf][criterium=hoofdstuk]
\stopsmaller

Een (deel|)|regel is als volgt opgebouwd:

\startregelcorrectie
\hbox
  {\omlijnd[rechterkader=uit]{links}%
   \omlijnd[rechterkader=uit]{kopnummer}%
   \omlijnd[rechterkader=uit]{rechts}%
   \omlijnd[rechterkader=uit,breedte=.3\hsize]{kop}%
   \omlijnd[rechterkader=uit]{pagina}%
   \omlijnd{afstand}}
\stopregelcorrectie

Tegelijk met het defini\"eren van een kop wordt ook een lijst
gedefinieerd. Dit betekent dat voor hoofdstukken, paragrafen
enz. aparte lijsten worden bijgehouden, die vervolgens
afzonderlijk kunnen worden opgeroepen.

Omdat dergelijke koppen bij elkaar horen, ligt het voor de
hand de lijsten te combineren. We noemen zo'n gecombineerde
lijst een samengestelde lijst. De inhoudsopgave is
een voorbeeld van een samengestelde lijst:

\startvoorbeeld
\starttypen
\definieersamengesteldelijst
   [inhoud]
   [deel,
    hoofdstuk,paragraaf,subparagraaf,subsubparagraaf,
    subsubsubparagraaf,subsubsubsubparagraaf]
   [niveau=subsubsubsubparagraaf,
    criterium=lokaal]
\stoptypen
\stopvoorbeeld

De mogelijke instellingen zijn dezelfde als die van
deellijsten.

\toonsetup{definieersamengesteldelijst}

\toonsetup{stelsamengesteldelijstin}

De lijsten zelf worden gegenereerd met de commando's:

\toonsetup{volledige<<samengesteldelijst>>}

\toonsetup{plaats<<samengesteldelijst>>}

Het eerste commando plaatst een kop boven de lijst. Omdat in
bijvoorbeeld een inhoudsopgave nooit de inhoudsopgave zelf
wordt vermeld, gebruikt dit commando \type{\titel} in plaats
van \type{\hoofdstuk}. Bij de in de volgende paragrafen
besproken lijsten wordt daarentegen \type{\hoofdstuk}
gebruikt.

\plaatstabel
  [hier][tab:stelsamengesteldelijstin]
  {Varianten in de vormgeving van lijsten.}
\starttabel[|c|l|]
\HL
\VL \bf variant                                  \VL
    \bf weergave                                 \VL\SR
\HL
\VL \type{a}                                     \VL
    nummer -- titel -- paginanummer              \VL\FR
\VL \type{b}                                     \VL
    nummer -- titel -- spaties -- paginanummer   \VL\MR
\VL \type{c}                                     \VL
    nummer -- titel -- punten  -- paginanummer   \VL\MR
\VL \type{d}                                     \VL
    nummer -- titel -- paginanummer (doorlopend) \VL\MR
\VL \type{e}                                     \VL
    titel (omlijnd)                              \VL\MR
\VL \type{f}                                     \VL
    titel (links, midden of rechts uitgelijnd)   \VL\MR
\VL \type{g}                                     \VL
    titel (gecentreerd)                          \VL\LR
\HL
\stoptabel

Mogelijke varianten in de vormgeving van lijsten zijn in
\in{tabel}[tab:stelsamengesteldelijstin] weergegeven. Binnen
bepaalde grenzen zijn op deze varianten weer variaties
mogelijk. Het best kan men hier eens wat mee experimenteren.
De drie instellingen \type{breedte}, \type{marge} en
\type{letter} worden •f voor alle niveaus tegelijk, •f voor
alle vijf niveaus afzonderlijk gespecificeerd.

\startvoorbeeld
\starttypen
\stelsamengesteldelijstin
  [inhoud]
  [variant=c,
   titeluitlijnen=nee,
   breedte=2.5em]
\stoptypen
\stellijstin
  [hoofdstuk]
  [letter=vet,
   voor=\blanko,
   na=\blanko]
\stopvoorbeeld

De instelling \type {titeluitlijnen} dwingt ingangen zonder 
sectienummer (zoals titels, onderwerpen enz) tegen de linker 
kantlijn; anders wordt een titel uitgelijnd met de genummerde
tegenhangers (zoals hoofdstukken, paragrafen enz). Vergelijk:

\startopelkaar
\hphantom{12\quad}titel \crlf 12\quad hoofdstuk
\stopopelkaar

met:

\startopelkaar
titel\crlf 12\quad hoofdstuk
\stopopelkaar

Eventueel kunnen achter de \type{\plaats...}||commando's
instellingen worden meegegeven, bijvoorbeeld:

\startvoorbeeld
\starttypen
\volledigeinhoud[niveau=deel]
\stoptypen
\stopvoorbeeld

In dit geval worden alleen de delen vermeld. In plaats van
een naam mag ook een nummer worden opgegeven. Dit
veronderstelt wel inzicht in de niveaus van de verschillende
secties (deel=1, hoofdstuk=2 enz.)

Vooral bij wat langere inhoudsopgaven kan de plaats waar
wordt overgegaan op een nieuwe bladzijde niet de gewenste
zijn. Een afdoende automatisch mechanisme is eigenlijk niet
te maken. Men kan daarom zelf, indien gewenst, de overgang
naar een nieuwe pagina afdwingen, zoals het volgende
voorbeeld laat zien.

\startvoorbeeld
\starttypen
\volledigeinhoud[paginaovergangen={2.2,8.5,12.3.3}]
\stoptypen
\stopvoorbeeld

Natuurlijk mag dergelijke \citeer {fine||tuning} pas aan het
eind van het produktieproces plaatsvinden. Bovendien dient
bij een revisie van de tekst een heroverweging plaats te
vinden. Als reminder wordt daarom tijdens het zetten op het
scherm gemeld, dat er overgangen worden afgedwongen.

Een tekst moet ten minste eenmaal zijn verwerkt, wil een
lijst kunnen worden geplaatst. Als geen samengestelde lijst
wordt geplaatst, terwijl de tekst toch minstens tweemaal is
verwerkt, dan is waarschijnlijk een lokale lijst opgevraagd.
Binnen een hoofdstuk of paragraaf wordt namelijk {\em
automatisch} een lokale samengestelde lijst gegenereerd.

Er zijn twee commando's om zelf direct iets naar een lijst
te schrijven. Het eerste commando kan worden gebruikt om een
ingang, het tweede om een commando tussen te voegen:

\toonsetup{schrijfnaarlijst}

\toonsetup{schrijftussenlijst}

We volstaan met een eenvoudig voorbeeld:

\startvoorbeeld
\starttypen
\schrijftussenlijst [paragraaf] {\blanko}
\schrijfnaarlijst   [paragraaf] {---} {vanaf hier voorlopig}
\schrijftussenlijst [paragraaf] {\blanko}
\stoptypen
\stopvoorbeeld

Het volgende commando heeft alleen zin als dat wat naar de 
lijst gaat ook elders wordt gebruikt, wat het geval is in 
bijvoorbeeld koppen:

\toonsetup{geenlijst}

Zo levert het volgende voorbeeld in een kop {\em manager
logistiek (vervalt)} op maar in een lijst het kortere {\em
manager logistiek \onbekend}. Vergeet niet dat elke kop een 
eigen lijst heeft. 

\startvoorbeeld
\starttypen
\definieerkop[functie][eigennummer=ja]
\functie{A-45}{manager logistiek \geenlijst{(vervalt)}}
\plaatslijst[functie][criterium=alles]
\stoptypen
\stopvoorbeeld

In een interactief document kan men wat kwistiger zijn met
lijsten, niet alleen omdat een scherm niets kost, maar ook
omdat bij gebrek aan een fysieke inhoudsopgave, men voor
navigatie volledig is aangewezen op wijzen en klikken. Bij
het vormgeven van een document kan men bijvoorbeeld het
volgende overwegen:

\starttypen
\stellayoutin[rechterrand=3cm]
\stelinteractiein[status=start,menu=aan]
\stelinteractiemenuin[rechts][status=start]
\startinteractiemenu[rechts]
  \plaatsinhoud
    [niveau=huidige, criterium=vorige,
     variant=f, uitlijnen=rechts,
     interactie=alles,
     voor=, na=]
\stopinteractiemenu
\stoptypen

Hier wordt op elke bladzijde een inhoud geplaatst van \'e\'en
niveau diep (namelijk \type{huidige}) en passend bij het
vorige niveau. Als er een paragraaf begint, dan krijgen we
de subparagrafen te zien en bij een nieuw hoofdstuk de
paragrafen.

Als men in een interactieve tekst op elk niveau een
inhoudsopgave oproept, kan men met behulp van de verwijzing
\type{[vorigeinhoud]} terugspringen naar de vorige
inhoudsopgave. 

Standaard wordt iets dat naar een lijst gaat niet
ge\"expandeerd, het gaat er letterlijk heen. Wil men wel
expanderen, dan kan dat worden ingesteld met
\type{expansie}. In dat geval wordt de betekenis van
commando's weggeschreven, iets wat alleen nodig is als er
dingen naar een lijst worden geschreven die steeds
veranderen, wat in \citeer {normaal} gebruik zelden of nooit
voorkomt. 

In een wat omvangrijker document, kan het voorkomen dat niet
op ieder niveau een inhoud beschikbaar is. Bij wat meer
geavanceerde vormgevingen zal daarom behoefte bestaan aan wat
meer informatie over een lijst.

\starttabulatie
\NC \type{\lijstlengte}  \NC het aantal gevonden elementen       \NC\NR
\NC \type{\lijstbreedte} \NC de maximale breedte van een element \NC\NR
\NC \type{\lijsthoogte}  \NC de totale hoogte van de ijst        \NC\NR
\stoptabulatie

De bovenstaande gegevens zijn van te voren te bepalen met:

\showsetup{bepaallijstkenmerken}

We geven hieronder een kort overzicht van de verschillende 
beschikbare varianten. De eerste drie varianten zijn vooral 
bedoeld voor papieren documenten. In het volgende voorbeeld 
geven we met criterium aan dat we de lijst van paragrafen per
hoofdstuk willen. 

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=a]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\stellabeltekstin[nl][paragraaf={oeps }]
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=a,
   label=ja,breedte=2cm]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=b]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=b,
   paginanummer=nee,breedte=passend,afstand=1em]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=c]
\stopbuffer 

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=c,
   hoofdstuknummer=ja,marge=1.5cm]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst % let op de spaties rond : 
  [paragraaf] 
  [criterium=hoofdstuk,variant=c,
   hoofdstuknummer=ja,scheider={ : },breedte=passend] 
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=d]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=d,
   afstand=2cm]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=d,
   links={(},rechts={)}]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=e]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=e,
   breedte=\tekstbreedte,achtergrond=raster]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=e,
   breedte=4cm]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=f]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=g]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

Vergeet bij gebruik van kleur niet het kleurmechanisme te
activeren. Bij alle lijsten kunnen de individuele
lijstelementen interactief zijn, hoewel in de regel bij
schermdocumenten de optie \type {alles} de meest voor de
hand liggende is. Variant~e is bij uitstek geschikt voor
schermopmaak en accepteert alle instellingen van \type
{\omlijnd}. In het volgende voorbeeld gebruiken we een
symbool in plaats van een paragraafnummer. De instelling
\type {diepte} heeft betrekking op dit specifieke symbool. 

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=a, 
   paginanummer=nee,afstand=1em,
   symbool=3,hoogte=1.75ex,diepte=.25ex,nummerkleur=grijs]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

Alle alternatieven bieden de mogelijkheid een eigen 
commando aan de sectieaanduiding, de tekst en het 
paginanummer te koppelen. Volledige vrijheid krijgt men 
echter pas met alternatief \type {geen}. 

\startbuffer 
\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=geen, 
   nummercommando=\omlijnd,
   tekstcommando=\omlijnd,paginacommando=\omlijnd]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

\startbuffer 
\def\LijstCommando#1#2#3%
  {op blz. {\bf #3} behandelen we {\bf #2}}

\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=geen,
   commando=\LijstCommando]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

Het kan nog kaler. Het alternatief \type {commando} laat 
vrijwel alles aan de gebruiker over. 

\startbuffer 
\def\LijstCommando#1#2#3%
  {Op p~#3 behandelen we {\em #2}; }

\plaatslijst
  [paragraaf]
  [criterium=hoofdstuk,variant=commando,
   commando=\LijstCommando]
\stopbuffer 

\typebuffer \blanko {\haalbuffer} \blanko

Als alternatief voor \type {geen} zijn er ook \type
{horizontaal} en \type {vertikaal}, die voor wat spatiering
betreft wat beter geschikt zijn voor het zetten van lijsten
in bijvoorbeeld menus. 

\paragraaf[synoniemen]{Synoniemen}
\index{afkortingen}
\index{synoniemen}
\macro{\tex{definieersynoniemen}}
\macro{\tex{stelsynoniemenin}}
\macro[volledigelijstmetsy]{\tex{volledigelijstmet<<synoniemen>>}}
\macro[plaatslijstmetsy]{\tex{plaatslijstmet<<synoniemen>>}}
\macro[synoniem]{\tex{<<synoniem>>}}
\macro[laadsynoniemen]{\tex{laad<<synoniemen>>}}
\macro{\tex{afkorting}}

In veel teksten komen afkortingen voor. Een afkorting staat
ergens voor. Zowel de afkorting zelf als de betekenis dienen
door de hele tekst heen consistent te worden vormgegeven. We
willen niet de ene keer ABC zien en vijf bladzijden verderop
\kap{abc}. Het is daarom mogelijk een lijst aan te maken van
afkortingen en hun betekenis. Hierdoor is consistent gebruik
van afkortingen gewaarborgd. Bovendien kunnen lijsten van
gebruikte afkortingen worden opgeroepen. 

Afkortingen zijn voorbeelden van synoniemen. Een categorie
synoniemen wordt gedefinieerd met het commando:

\toonsetup{definieersynoniemen}

De wijze waarop de lijst wordt weergegeven wordt ingesteld met:

\toonsetup{stelsynoniemenin}

Afkortingen zijn bijvoorbeeld gedefinieerd met het commando:

\startvoorbeeld
\starttypen
\definieersynoniemen[afkorting][afkortingen][\voluit]
\stoptypen
\stopvoorbeeld

Op het vierde, optionele, argument komen we later terug. Na
het geven van het bovenstaande commando is het commando
\type {\afkorting} beschikbaar. Een voorbeeld van het
gebruik van afkortingen is: 

\startvoorbeeld
\starttypen
\afkorting {ANWB} {Algemene Nederlandse Wielrijders Bond}
\afkorting {VVN}  {Veilig Verkeer Nederland}
\afkorting {NS}   {Nederlandse Spoorwegen}
\stoptypen
\stopvoorbeeld

Ook kan een betekenis worden opgeroepen, en wel met het
commando:

\startvoorbeeld
\starttypen
\voluit{afkorting}
\stoptypen
\stopvoorbeeld

Het is mogelijk in een afkorting commando's op te nemen. In
dat geval moet tussen \setchars\ de pure vorm worden
opgenomen:

\startvoorbeeld
\starttypen
\afkorting [TEX] {\TeX} {The \TeX\ Typesetting System}
\stoptypen
\stopvoorbeeld

De pure vorm bepaalt zowel de plaats in de gesorteerde lijst
met synoniemen als de naam van het commando. Oproepen vindt
in dit geval dus plaats met \type{\TEX} en
\type{\voluit{TEX}}. In een lopende tekst gebruiken we
overigens \type{\TEX} en voor interpunctie \type{\TEX}.

Een synoniem wordt pas in de lijst opgenomen als het ook
daadwerkelijk wordt gebruikt. Wil men in de lijst synoniemen
alle gedefinieerde synoniemen opnemen, dan dient het
\type{criterium} gelijk te zijn aan \type{alles}. Door
\type{status} gelijk te maken aan \type{stop}, voorkomt men
dat synoniemen in de lijst worden opgenomen, ook al zijn ze
gebruikt. Dit kan tijdelijk gebeuren:

\startvoorbeeld
\starttypen
\stelsynoniemenin[afkorting][status=stop]
\afkorting {NIL} {Niet In Lijst}
\stelsynoniemenin[afkorting][status=start]
\stoptypen
\stopvoorbeeld

In dit geval hebben we het eerste argument weggelaten, wat 
kan omdat de afkorting zelf geen commando is. We roepen deze 
afkorting dus op met \type {\NIL}. Beide volgende definities 
zijn dus equivalent. 

\starttypen
\afkorting [NIL] {NIL} {Niet In Lijst}
\afkorting {NIL} {Niet In Lijst}
\stoptypen

De formele definitie van een afkorting is: 

\toonsetup{<<synoniem>>}

Een lijst met synoniemen wordt gegenereerd met het commando:

\toonsetup{plaatslijstmet<<synoniemen>>}

Het volgende commando genereert een lijst met titel
(\type{\hoofdstuk}):

\toonsetup{volledigelijstmet<<synoniemen>>}

We zien hier het meervoud opduiken in de naam van het
commando. Dit meervoud vinden we ook terug in de geplaatste
kop, waar bovendien de eerste letter standaard een kapitaal
wordt gemaakt. Deze koptekst is aan te passen met
\type{\stelkoptekstin} (zie \in{paragraaf}[labels]).

Synoniemen zijn pas beschikbaar als ze worden opgeroepen.
Soms kan dit tot conflicten leiden; we besparen de lezer
de details. Mocht dit het geval zijn, dan kunnen
de betekenissen van de synoniemen worden geladen met het
commando:

\toonsetup{laad<<synoniemen>>}

De betekenissen van afkortingen kunnen dus worden geladen
met \type {\laadafkortingen}. De tekst moet natuurlijk wel
ten minste een maal zijn verwerkt.

Naast afkortingen zijn ook \SI||eenheden als synoniemen
gedefinieerd. Deze zijn niet standaard beschikbaar, maar
worden als aparte module geladen. We gaan hierop dieper in
in \in{paragraaf}[eenheden].

De oplettende lezer zal hebben gezien dat het commando
\type{\definieersynoniem} vier argumenten heeft. Als vierde
argument kan een commando worden meegegeven, waarmee het
synoniem kan worden opgeroepen. Op deze manier worden de
verschillende commando's zodanig afgeschermd van de rest van
\CONTEXT\ dat geen conflicten kunnen optreden in het gebruik
ervan.

\startvoorbeeld
\starttypen
\definieersynoniem[Functie][Functies][\FunctieNaam][\FunctieNummer]
\stoptypen
\stopvoorbeeld

Als we vervolgens enkele functies defini\"eren als:

\startvoorbeeld
\starttypen
\Functie [0001] {0001a} {Drukker}
\Functie [0002] {0002x} {Zetter}
\stoptypen
\stopvoorbeeld

Dan kunnen we het nummer en de naam oproepen met \type
{\FunctieNaam} (Drukker en Zetter) en op \type
{\FunctieNummer} (0001a en 0002x), zoals in: 

\starttypen
De \FunctieName{0001} heeft functienummer \FunctieNumber{0001}. 
\stoptypen 

\paragraaf[sorteren]{Sorteren}
\index{sorteren}
\index{overzichten+sorteren}
\index{logo's}
\macro{\tex{definieersorteren}}
\macro{\tex{stelsorterenin}}
\macro[volledigelijstmetso]{\tex{volledigelijstmet<<sorteren>>}}
\macro[plaatslijstmetso]{\tex{plaatslijstmet<<sorteren>>}}
\macro[sorteer]{\tex{<<sorteer>>}}
\macro[laadsorteren]{\tex{laad<<sorteren>>}}
\macro{\tex{logo}}

Een vereenvoudigde variant op lijsten met synoniemen zijn
gesorteerde lijsten. Een sorteerlijst wordt gedefinieerd met
het commando:

\toonsetup{definieersorteren}

De wijze waarop de lijst wordt weergegeven wordt ingesteld met:

\toonsetup{stelsorterenin}

Na het defini\"eren is het volgende commando beschikbaar.
Hierbij staat \type{<<sorteer>>} voor de naam van de lijst.

\toonsetup{<<sorteer>>}

Aansluitend op andere lijsten en overzichten zijn ook
de volgende twee commando's beschikbaar:

\toonsetup{plaatslijstmet<<sorteren>>}

en (ook hier is de koptekst in te stellen met
\type{\stelkoptekstenin}):

\toonsetup{volledigelijstmet<<sorteren>>}

Een voorbeeld van sorteren is:

\startbuffer
\definieersorteren[stad][steden]
\stelsorterenin[stad][criterium=alles]

\stad {Rotterdam}
\stad {Utrecht}
\stad {Amsterdam}
\stad {Den Haag}

\plaatslijstmetsteden
\stopbuffer

\startvoorbeeld
\typebuffer
\stopvoorbeeld

De definitie moet bovenaan de file of in de omgeving worden
opgenomen. De steden mogen op willekeurige plaatsen aan de
lijst worden toegevoegd en de lijst kan overal worden
opgeroepen.

\startrealiteit
\haalbuffer
\stoprealiteit

Er is een pure variant beschikbaar voor het geval commando's
worden gebruikt. Deze pure variant bepaalt de plaats in de
lijst en de vorm van het commando. Op deze wijze kunnen
lijsten met logo's worden aangelegd. Evenals \type
{\afkorting} is \type {\logo} een voorgedefinieerd commando.

\startvoorbeeld
\starttypen
\logo [TEX]   {\TeX}
\logo [TABLE] {\TaBlE}
\stoptypen
\stopvoorbeeld

Als gebruik wordt gemaakt van de \setchars||variant, dan
wordt analoog aan synoniemen een commando gedefinieerd. In
het voorbeeld hierboven zijn dus \type{\TEX} en
\type{\TABLE} beschikbaar; midden in de zin gebruiken we
\type{\TABLE} en voor interpunctie \type{\TABLE}. Het
verdient aanbeveling hoofdletters te gebruiken omdat anders
het gevaar bestaat dat reeds bestaande commando's opnieuw
worden gedefinieerd.

Evenals synoniemen, komen ook sorteringen pas beschikbaar als
ze worden opgeroepen. Mocht een van de sorteringen problemen
geven, gebruik dan:

\toonsetup{laad<<sorteren>>}

Wanneer we bij de definitie als derde argument een commando
opgeven, dan kunnen de sorteringen met dit commando worden
opgeroepen. Op deze manier kunnen ze nooit conflicteren met
bestaande commando's. (Zie ook \in{paragraaf}[synoniemen]).

\paragraaf[markeringen]{Markeringen}
\index{markeringen}
\index{hoofdteksten+markeringen}
\index{voetteksten+markeringen}
\macro{\tex{markeer}}
\macro{\tex{definieermarkering}}
\macro{\tex{koppelmarkering}}
\macro{\tex{ontkoppelmarkering}}
\macro{\tex{resetmarkering}}
\macro{\tex{haalmarkering}}
\macro{\tex{stelmarkeringin}}

Het is mogelijk in de tekst \citeer {onzichtbare}
markeringen aan te brengen, die later kunnen worden
opgeroepen. Markeringen kunnen bijvoorbeeld worden gebruikt
voor het automatisch laten meelopen van aanduidingen in een
hoofd of voet (zoals in een woordenboek). Binnen \CONTEXT\
worden markeringen gebruikt om in de hoofd- en voetregels de
titels van hoofdstukken en dergelijke te laten meelopen.

Een markering wordt gedefinieerd met:

\toonsetup{definieermarkering}

Op het tweede, optionele, argument komen we aan het eind van
deze paragraaf terug. Na dit commando kunnen markeringen
worden aangebracht met:

\toonsetup{markeer}

en opgeroepen met:

\toonsetup{haalmarkering}

Er worden, analoog met het \TEX||commando \type{\mark}, per
soort markering drie markeringen bijgehouden: (zie
\in{tabel}[tab:markeringen]).

\plaatstabel
  [hier][tab:markeringen]
  {Bijgehouden markeringen, aangevuld met enkele combinaties.}
\starttabel[|l|l|]
\HL
\VL \bf markering  \VL \bf plaats                          \VL\SR
\HL
\VL \type{vorige}  \VL de laatste van de vorige bladzijde  \VL\FR
\VL \type{eerste}  \VL de eerste van de huidige bladzijde  \VL\MR
\VL \type{laatste} \VL de laatste van de huidige bladzijde \VL\LR
\HL
\VL \type{beide}   \VL eerste --- laatste                  \VL\FR
\VL \type{alles}   \VL vorige --- eerste --- laatste       \VL\LR
\HL
\stoptabel

In geval van een combinatie van markeringen (\type {beide}
en \type {alles}) worden markeringen standaard gescheiden
door ---. Deze scheiding is in te stellen met \type {scheider}.

\toonsetup{stelmarkeringin}

\paginareferentie[expansie]Het zetten van een markering kan
worden geblokkeerd met \type {status}. De variabele
\type{expansie} heeft betrekking op het al dan niet
expanderen van het argument. Standaard wordt niet
ge\"expandeerd. Dat wil zeggen dat een commando als commando
wordt bewaard. Dit scheelt aanzienlijk in het gebruik van
het geheugen en is vaak ook wenselijk. Als we echter een
commando meegeven dat steeds wijzigt, bijvoorbeeld een
teller, dan moeten we wel expanderen. Immers, de meest
recente waarde van de teller is niet de waarde die we wilden
markeren. 

Markeringen kunnen worden ge‹nitialiseerd met het commando:

\toonsetup{resetmarkering}

Bij het begin van een hoofdstuk worden bijvoorbeeld
automatisch de markeringen van de paragrafen, subparagrafen
enz. gereset. Zouden we dit niet doen, dan zouden de
markeringen van het vorige hoofdstuk blijven gelden totdat
een nieuwe wordt aangebracht.

Stel dat een woordenlijst als volgt wordt aangemaakt (we
forceren hier bewust wat pagina||overgangen):

\startvoorbeeld
\starttypen
\definieermarkering[woorden]

\markeer[woorden]{eerste}eerste woord ...
\markeer[woorden]{tweede}tweede woord ...
\pagina
\markeer[woorden]{derde}derde woord ...
\markeer[woorden]{vierde}vierde woord ...
\pagina
\markeer[woorden]{vijfde}vijfde woord ...
\pagina
\stoptypen
\stopvoorbeeld

De uitkomsten staan in \in{tabel}[tab:voorbeeld markeringen]
vermeld.

\plaatstabel
  []
  [tab:voorbeeld markeringen]
  {Het opschuiven van markeringen.}
\starttabel[|c|c|c|c|]
\HL
\VL \bf pagina \VL \bf vorige \VL \bf eerste \VL \bf laatste \VL\SR
\HL
\VL  1         \VL ---        \VL eerste     \VL tweede      \VL\FR
\VL  2         \VL tweede     \VL derde      \VL vierde      \VL\MR
\VL  3         \VL vierde     \VL vijfde     \VL vijfde      \VL\LR
\HL
\stoptabel

Bij het plaatsen van de titels van hoofdstukken, paragrafen
enz. wordt \type{eerste} gebruikt. De waarden van
markeringen zijn eenvoudig te controleren door de markering
in de voet te plaatsen:

\startvoorbeeld
\starttypen
\stelvoettekstenin
  [{\haalmarkering[woorden][eerste]}]
  []
\stoptypen
\stopvoorbeeld

of allemaal tegelijk:

\startvoorbeeld
\starttypen
\stelvoettekstenin
  [{\haalmarkering[woorden][vorige]} --
   {\haalmarkering[woorden][eerste]} --
   {\haalmarkering[woorden][laatste]}]
  []
\stoptypen
\stopvoorbeeld

Hetzelfde resultaat kan ook eenvoudiger worden bereikt. De 
onderstaande methode heeft bovendien als voordeel dat lege 
markeringen worden afgevangen. 

\startvoorbeeld
\starttypen
\stelvoettekstenin[{\haalmarkering[woorden][alles]}][]
\stoptypen
\stopvoorbeeld

Commando's als \type {\hoofdstuk} maken automatisch
markeringen aan. Als de titel van een hoofdstuk te lang is
om in een hoofd- of voetregel te worden gebruikt, kan
gebruik worden gemaakt van het commando \type
{\geenmarkering} (zie \in {paragraaf} [onderverdeling]). Een
snelle manier om voetteksten van markeringen te voorzien: 

\startvoorbeeld
\starttypen
\stelvoettekstenin[hoofdstuk][paragraafnummer]
\stoptypen
\stopvoorbeeld

Wanneer we zelf een kop defini\"eren, erft de nieuwe kop de
markering van de bestaande. Stel dat we de kop
\type{\rubriek} als volgt defini\"eren:

\startvoorbeeld
\starttypen
\definieerkop[rubriek][subparagraaf]
\stoptypen
\stopvoorbeeld

Het is na dit commando om het even of we de markering
oproepen met de naam \type{rubriek} of \type{subparagraaf}.
Dit komt meestal overeen met wat we wensen. We kunnen nu dus
de voetregels ook als volgt instellen:

\startvoorbeeld
\starttypen
\stelvoettekstenin[hoofdstuk][rubriek]
\stoptypen
\stopvoorbeeld

Het kan echter voorkomen dat we wel degelijk \type{rubriek}
als aparte markering willen. We zouden in principe kunnen
volstaan met het opnieuw defini\"eren:

\startvoorbeeld
\starttypen
\definieermarkering[rubriek]
\stoptypen
\stopvoorbeeld

Omdat we echter graag zien dat een markering op het juiste
moment automatisch wordt gereset, zullen we toch moeten
aangeven op welk niveau de markering een rol speelt. De
volledige serie commando's ziet er dan ook als volgt uit.

\startvoorbeeld
\starttypen
\definieerkop[rubriek][subparagraaf]
\definieermarkering[rubriek]
\koppelmarkering[rubriek][subparagraaf]
\stoptypen
\stopvoorbeeld

Let wel: deze exercitie is alleen nodig als we rubriek apart
(naast subparagraaf) willen gebruiken! Meestal volstaat het
eerste commando. Na deze serie commando's is het volgende
mogelijk:

\startvoorbeeld
\starttypen
\stelvoettekstenin[subparagraaf][rubriek]
\stoptypen
\stopvoorbeeld

Het laatste van de drie commando's in de bovenstaande serie
is nieuw:

\toonsetup{koppelmarkering}

De tegenhanger van dit commando is:

\toonsetup{ontkoppelmarkering}

Het is trouwens ook mogelijk zelf, analoog aan de
standaardkoppeling in koppen, markeringen te koppelen. In
dat geval is de nieuwe markering synoniem aan de oude. 

\startvoorbeeld
\starttypen
\definieermarkering[zomaarwat][paragraaf]
\stoptypen
\stopvoorbeeld

Dergelijke manipulaties met markeringen veronderstellen van de
gebruiker een meer dan gemiddeld inzicht in de werking van
\CONTEXT.

\paragraaf[terugverwijzen]{Terugverwijzen (refereren)}
\index{verwijzingen}
\index{referenties}
\macro{\tex{in}}
\macro{\tex{op}}
\macro{\tex{over}}
\macro{\tex{ergens}}
\macro{\tex{oppagina}}
\macro{\tex{referentie}}
\macro{\tex{ref}}
\macro{\tex{paginareferentie}}
\macro{\tex{tekstreferentie}}
\macro{\tex{stelrefererenin}}

In de tekst kunnen referentiepunten worden vastgelegd,
bijvoorbeeld bij hoofdstuktitels, paragraaftitels, figuren
en tabellen. Referentiepunten worden in de tekst tussen
\setchars\ opgenomen. Er mogen meerdere referentiepunten,
gescheiden door een comma, worden opgegeven. De (elders) in
de tekst opgenomen referenties kunnen worden opgeroepen met
de commando's:

\toonsetup{in}

\toonsetup{op}

\toonsetup{over}

Een verwijzing naar een pagina, tekst (nummer) of beide kan
worden aangemaakt met:

\toonsetup{paginareferentie}

\toonsetup{tekstreferentie}

\toonsetup{referentie}

Het commando \type {\in} levert het nummer van het
hoofdstuk, de paragraaf, een figuur, een tabel enz. Het
commando \type {\op} levert een paginanummer en \type
{\over} levert een titel, bijvoorbeeld van een hoofdstuk. De 
eerste twee commando's hebben een optioneel tweede argument, 
dat achter het paginanummer of the titel wordt geplaatst. 

In het onderstaande voorbeeld wordt verwezen naar eerdere
paragrafen en bladzijden:

\startbuffer
In paragraaf~\in[terugverwijzen], getiteld \over[terugverwijzen],
wordt aangegeven hoe een referentie kan worden gedefinieerd. Deze
paragraaf begint op bladzijde~\op[terugverwijzen] en maakt deel
uit van hoofdstuk~\in[verwijzingen].
\stopbuffer

\startvoorbeeld
\typebuffer
\stopvoorbeeld

Dit wordt:

\startrealiteit
\haalbuffer
\stoprealiteit

Het bovenstaande voorbeeld had ook als volgt kunnen worden
gemaakt:

\startvoorbeeld
\starttypen
In \in{paragraaf}[terugverwijzen], getiteld \over[terugverwijzen],
wordt aangegeven hoe een referentie kan worden gedefinieerd. Deze
paragraaf begint op \op{bladzijde}[terugverwijzen] en maakt deel
uit van \in{hoofdstuk}[verwijzingen].
\stoptypen
\stopvoorbeeld

Deze manier van oproepen verdient de voorkeur, zeker bij het
zetten van interactieve teksten. In het laatste geval wordt
namelijk ook het woord aanklikbaar, terwijl in het eerste
geval een symbool\hoog {\symbool [vorigepagina]} verschijnt
waarop kan worden geklikt. Dit symbool geeft tevens de
richting van de verwijzing aan: terug\hoog {\symbool
[vorigepagina]} of vooruit\hoog {\symbool [volgendepagina]}.

\startbuffer
De richting kan men overigens ook in woorden oproepen met het commando
\type {\ergens}. Zo vinden we het hoofdstuk over tekstonderdelen
\ergens {hiervoor} {hierna} [tekstonderdelen] en gaan we \ergens {eerder}
{later} [beschrijvingen] in op beschrijvingen.
\stopbuffer

\haalbuffer

\toonsetup{ergens}

Dit commando krijgt twee teksten mee. Een eerdere alinea was
ingevoerd als:

\typebuffer

Het volgende commando krijgt geen tekst mee maar levert die
zelf. De gegenereerde teksten zijn in te stellen met \type
{\stellabeltekstin} (zie \op {bladzijde} [labels]).

\toonsetup{oppagina}

Op de plaats waar naar wordt verwezen kunnen meerdere
referenties worden aangemaakt, bijvoorbeeld:

\startvoorbeeld
\starttypen
\hoofdstuk[eerste,tweede,derde]{Eerste, tweede en derde}
\stoptypen
\stopvoorbeeld

Er kan naar dit hoofdstuk worden terugverwezen met
\type{\in[eerste]}, \type{\in[tweede]} of \type{\in[derde]}.
Bij een grote tekst bestaat echter het gevaar dat men
dezelfde verwijzing op verschillende plaatsen definieert.
Het verdient daarom aanbeveling bij grote teksten een
ordening aan te brengen, in het voorbeeld: \type{[fig:eerste]},
\type{[par:eerste]}, \type{[tab:eerste]} enz.

Naast een eigen ordening kan ook automatisch een ordening
worden aangebracht. Bij \type {\stelrefererenin} kan daartoe
een prefix worden ingesteld. Men kan zelf een prefix
defini\"eren, maar ook kan men \CONTEXT\ er zelf een laten
genereren. Als bijvoorbeeld \type {prefix=alfa}, dan wordt
vanaf dat moment achter de schermen voor iedere verwijzing
het woord \type {alfa} gezet. Een in termen van
geheugengebruik wat meer effici\"ente benadering is die
waarbij het systeem een prefix genereert. Iedere keer als
\type {prefix=+} wordt gegeven, wordt een nieuwe prefix
aangemaakt. Door \type {prefix=-} wordt het toevoegen van
prefixen stopgezet.

In veel gevallen levert het frequent instellen van een
prefix een slordig brondocument op. Het is daarom mogelijk
om \CONTEXT\ per sectie en nieuwe prefix te laten instellen.
Wanneer we bijvoorbeeld voor elk hoofdstuk een nieuwe prefix
willen hebben, dan kunnen we met \type {\stelkopin} een
\type {+} toekennen aan de parameter \type {prefix}. De
hoofdstuk verwijzing zelf wordt niet geprefixed en is dus
ondubbelzinnig beschikbaar. De verwijzingen binnen het
hoofdstuk worden echter automatisch van een prefix voorzien,
en krijgen dus een lokaal karakter. Wanneer het hoofdstuk
zelf een label heeft, dan wordt dat de nieuwe prefix, in
andere gevallen wordt een nummer gebruikt. Stel dat we het
volgende tegenkomen: 

\starttypen
\stelkopin[hoofdstuk][prefix=+] 

\chapter[texwereld]{De wereld van \TeX} 
\stoptypen

In dit hoofdstuk kunnen we nu veilig verwijzingen aanmaken
en gebruiken, zonder gevaar van conflicten met verwijzingen
inandere hoofdstukken. Neem bijvoorbeeld de volgende figuur: 

\starttypen
\plaatsfiguur[hier][fig:wereldkaart]{Een kaart van de \TeX\ wereld}{...}
\stoptypen

In dit hoofdstuk kunnen we naar deze figuur verwijzen met:

\starttypen
\in {figuur} [fig:wereldkaart]
\stoptypen

Buiten dit hoofdstuk is de verwijzing echter: 

\starttypen
\in {figuur} [texwereld:fig:wereldkaart]
\stoptypen

Bij het \citeer {opzoeken} van een verwijzing met \type
{\in}, \type {\op} enz., wordt eerst gekeken of er een
lokale verwijzing is (dus met prefix) en als deze niet wordt
gevonden of er sprake is van een globale verwijzing (dus
zonder prefix). Mocht men er onverhoopt niet uitkomen:
verwijzingen kunnen in de marge zichtbaar gemaakt worden met
het eerder beschreven commando \type {\versie[voorlopig]}. 

Het kan voorkomen dat men midden in een document een globale
verwijzing wil aanmaken, bijvoorbeeld naar een inhoudsopgave
of een index. In dat geval kan men met een \type {-:} in de
verwijzing aangeven dat de verwijzing {\em geen} prefix
heeft, bijvoorbeeld \type {[-:inhoud]}. Vooral bij
interactieve teksten heeft het prefix||mechanisme zijn nut. 
Het volgende voorbeeld (zie ook hierboven) krijgen we 
gegarandeerd een globale verwijzing: 

\starttypen
\plaatsfiguur[hier][-:fig:wereldkaart]{Een kaart van de \TeX\ wereld}{...}
\stoptypen

Het genereren van verwijzingen kan worden stopgezet en
gestart met het commando:

\toonsetup{stelrefererenin}

Hierbij hebben de instellingen \type {\<<sectie>>nummer}
betrekking op het weergeven van deze nummers bij een
verwijzing naar een bladzijde. 

In interactieve documenten kunnen we naar andere documenten
verwijzen. In dat geval worden, wanneer \type
{converteerfile} de waarde \type {yes} heeft, de namen van
externe files automatisch geconverteerd naar hoofdletters,
iets dat soms nodig is voor \CDROM\ producties. We komen daar
elders op terug. 

Referenties uit een andere file kunnen worden geladen met het
commando:

\toonsetup{gebruikreferenties}

Met \type {links} en \type {rechts} stelt men in wat rond
een met \type {\over} genenereerde verwijzing staat,
standaard zijn dat quotes. Met \type {interactie} kan men
aangeven of een verwijzing wordt gezet als {\em
paragraaf~1.2}, {\em paragraaf}, {\em 1.2} of een symbool,
zoals~\symbool [ergens]. 

Wat is precies een referentie. We zagen reeds dat wanneer we
bij een hoofdstuk een verwijzing defini\"eren, we op een
andere plaats het hoofdstuknummer, de hoofdstuktitel en het
paginanummer waarop het hoofdstuk begint kunnen oproepen.
Voor interne doeleinden is ook het echte paginanummer
beschikbaar; dit volgnummer speelt in interactieve
documenten achter de schermen een belangrijke rol. Er is ook
nog een extra verwijzing mogelijk, maar die wordt vooralsnog
niet gebruikt in de standaard||commando's. Hieronder wordt
gedemonstreerd hoe men de afzonderlijke elementen van een
referentie kan specificeren en oproepen. 

\startbuffer
\referentie[mijn verwijzing]{{Kijk}{eens}{aan}}
\stopbuffer

\typebuffer

\haalbuffer

De afzonderlijke elementen krijgt men met \type{\ref}:

\starttabulatie[|lT|l|l|l|]
\NC p \NC het gezette paginanummer \NC \type{\ref[p][mijn verwijzing]}
                                   \NC \ref[p][mijn verwijzing] \NC \NR
\NC t \NC de tekstreferentie       \NC \type{\ref[t][mijn verwijzing]}
                                   \NC \ref[t][mijn verwijzing] \NC \NR
\NC r \NC het pagina||volgnummer   \NC \type{\ref[r][mijn verwijzing]}
                                   \NC \ref[r][mijn verwijzing] \NC \NR
\NC s \NC de subtekstreferentie    \NC \type{\ref[s][mijn verwijzing]}
                                   \NC \ref[s][mijn verwijzing] \NC \NR
\NC e \NC de extra tekstreferentie \NC \type{\ref[e][mijn verwijzing]}
                                   \NC \ref[e][mijn verwijzing] \NC \NR
\stoptabulatie

In een papieren document is een verwijzing statisch: een
nummer of wat tekst. In een interactief document kan achter
een verwijzing echter iets verborgen zitten, bijvoorbeeld
een sprong naar de locatie waar naar wordt verwezen. In
aanvulling op de besproken commandos's \type {\in} en \type
{\op} is er het commando \type {\naar}, waarmee men naar
een bepaalde plaats kan springen. Dit commando geeft geen
nummer of tekst terug en heeft in die zin nauwelijks een
typografische of tekst||inhoudelijke betekenis.

Binnen \CONTEXT\ is een veelheid aan interatieve
mogelijkheden ge\"integreerd in het referentie mechanisme. De
belangrijkste reden hiervoor ligt in het feit dat op die
manier een besparing op het aantal commando's mogelijk is en
tegelijk een meer natuurlijke wijze van omgaan met dit soort
boven||papierlijke zaken. Er is dan ook geen wezenlijk
verschil tussen het gaan naar hoofdstuk~3, het activeren van
een \JAVASCRIPT, het gaan naar een ander document, of het
verzenden van een ingevuld formulier.

Een direct gevolg van deze verwevenheid is dat men niet
gebonden is aan een referentie, maar zonodig er meerdere kan
opgeven. De volgende verwijzing is dan ook volledig legaal:

\starttypen
... zie \in{paragraaf}[vliegwiel,StartVideo{vliegwiel 1}] ...
\stoptypen

Dit commando genereert zoals we verwachten het nummer van de
paragraaf. Bovendien kunnen we, wanneer het document als
interactief document wordt gezet, op de woorden {\em
paragraaf~nr} klikken en zo naar de aangegeven plaats gaan.
Daarnaast wordt, zodra die plek is bereikt, een video
gestart, getiteld {\em vliegwiel~1}. Willen we dit soort
dingen comfortabel realiseren, dan ontkomen we niet aan een
ge\"integreerd referentiemechanisme.

Stel dat men in een stijl voor algemeen gebruik iets wil
doen met een verwijzing, maar dat (de naam van) die
verwijzing zelf nog niet bekend is. In het volgende
voorbeeld willen we vanuit een menu een video opstarten:

\starttypen
\startinteractiemenu[rechts]
  \but [vorigepagina]   vorige   \\ 
  \but [volgendepagina] volgende \\
  \but [ToonEenVideo]   video    \\
  \but [SluitDocument]  stoppen  \\
\stopinteractiemenu
\stoptypen

We kunnen nu op elk moment vastleggen welke video we willen
activeren door \type {ToonEenVideo} te defini\"eren:

\starttypen
\definieerreferentie[ToonEenVideo][StartVideo{een hele leuke video}]
\stoptypen

Deze referentie is op elk moment opnieuw in te stellen, of
zelfs te wissen:

\starttypen
\definieerreferentie[ToonEenVideo][]
\stoptypen

\toonsetup{definieerreferentie}

\paragraaf[regelverwijzingen]{Regelnummers}
\index{regelnummers}
\macro{\tex{startregel}}
\macro{\tex{eenregel}}
\macro{\tex{inregel}}

\startbuffer
\startregelnummeren
Een speciaal geval van verwijzingen zijn die naar regelnummers. \startregel
[regel:a]Daarbij kunnen meerdere bereiken door elkaar lopen. \startregel
[regel:b] Dit kan een verwarrende invoer opleveren. \stopregel [regel:a]
\startregel [regel:c] Nietwaar? \stopregel [regel:c] \stopregel [regel:b] Een
verwijzing naar een regel kan resulteren in een enkel nummer of een bereik.
\eenregel [regel:d] {Een verwijzing wordt opgeroepen met \type {\inregel},
waarbij automatisch het woord {\em regel(s)} wordt toegevoegd.} Hier hebben
we drie verwijzingen: \inregel [regel:a], \inregel [regel:b], \inregel
[regel:c] en \inregel {als laatste verwijzing} [regel:d] 
\stopregelnummeren
\stopbuffer

\haalbuffer

Met \type {\startregel..\stopregel} krijgt men een bereik
als het meerdere regels betreft, in geval van \type
{\eenregel} krijgt men alleen het beginnummer. We zien hier
dat de automatisch gegenereerde tekst kan worden onderdrukt
door tussen accolades een eigen tekst mee te geven. 

\typebuffer 

\toonsetup{startregel}

\toonsetup{eenregel}

\toonsetup{inregel}

\paragraaf{Voorgedefinieerde verwijzingen}
\index{labels}
\macro{\tex{definieerreferentieformaat}}

Het kan saai en zelfs gevaarlijk voor de consistentie zijn
als we veel referenties met hetzelfde label moeten
verwerken, zoals bijvoorbeeld {\bf figuur} in \type
{\in{figuur}[fig]}. Het kan bijvoorbeeld wenselijk zijn,
naderhand elke {\bf figuur} te vervangen door {\bf Figuur}.
In dat geval kan het volgende commando uitkomst bieden: 

\toonsetup{definieerreferentieformaat}

\tekstreferentie[demo:b]{BB}\tekstreferentie[demo:c]{CC}Stel
dat we de volgende definities hebben: 

\startbuffer
\definieerreferentieformaat [indemo]  [links=(,rechts=),tekst=demo]
\definieerreferentieformaat [indemos] [links=(,rechts=),tekst=demos]
\definieerreferentieformaat [endemo]  [links=(,rechts=),tekst=en]
\stopbuffer

\haalbuffer 

\typebuffer 

We hebben nu de beschikking over drie nieuwe commando's:

\startbuffer
\indemo [demo:b] 
\indemo {wat tekst} [demo:b] 
\indemos {wat tekst} [demo:b] \indemo {en wat meer tekst} [demo:c] 
\indemos [demo:b] \endemo [demo:c] 
\stopbuffer

\typebuffer

Dit ziet er gezet uit als:

\startregels
\haalbuffer
\stopregels

In plaats van de parameter \type {tekst} kunnen we ook
\type {label} gebruiken om een voorgedefinieerd label op te
roepen. Aan \type {commando} kan men een commando toevoegen,
standaard is dat \type {\in}.  

% \paragraaf[lijsten]{Referentie--lijsten}
% \index{verwijzingen+overzichten}
% \index{overzichten+verwijzingen}
% \macro{\tex{reflijst}}
% \macro{\tex{stelreferentielijstin}}
%
% Het is mogelijk een met een index vergelijkbare lijst te
% genereren, bijvoorbeeld een lijst met onderwerpen en
% paginanummers. Het commando luidt:
%
% \toonsetup{reflijst}
%
% Referentielijsten worden vooralsnog niet gesorteerd. Mocht
% daar behoefte aan bestaan dan zal dan in de toekomst alsnog
% gebeuren.
%
% De referentie die wordt opgegeven verwijst naar een elders
% aangemaakte referentie, bijvoorbeeld een hoofdstuk of een
% paragraaf. Een voorbeeld van een lijst is:
%
% \startbuffer
% \startopelkaar
% \reflijst [startstop]  {Afsluiten}
% \reflijst [lijsten]    {Referentie||lijsten}
% \reflijst [definities] {Definities}
% \stopopelkaar
% \stopbuffer
%
% \startvoorbeeld
% \typebuffer
% \stopvoorbeeld
%
% Hierbij zorgt \type{\...opelkaar} ervoor dat tussen de
% verschillende elementen van de lijst geen witruimte wordt
% opgenomen. Dit wordt dus:
%
% \startrealiteit
% \haalbuffer
% \stoprealiteit
%
% Het lettertype waarin de tekst wordt gezet, kan worden
% ingesteld met:
%
% \toonsetup{stelreferentielijstin}

\paragraaf[registers]{Registers}
\index{index}
\index{registers}
\index{registers+interactie}
\index{interactie+registers}
\macro[register]{\tex{<<register>>}}
\macro{\tex{startregister}}
\macro{\tex{definieerregister}}
\macro{\tex{stelregistersin}}
\macro{\tex{koppelregister}}
\macro[schrijfnaarregister]{\tex{schrijfnaar<<register>>}}
\macro[plaatsregister]{\tex{plaats<<register>>}}
\macro[volledigeregister]{\tex{volledige<<register>>}}
\macro[zieregister]{\tex{zie<<register>>}}
\macro[volgenderegister]{\tex{volgende<<register>>}}

Een naslagwerk zonder register loopt grote kans niet serieus
te worden genomen. Het is daarom in \CONTEXT\ mogelijk een
of meer registers te genereren. De ingangen van de registers
worden naar een file geschreven. Deze file is voor \TEX\
niet zonder meer bruikbaar. Het \PERL\ script \TEXUTIL\ zet
deze file om in \TEX||commando's.

Een register wordt gedefinieerd met het commando:

\toonsetup{definieerregister}

Er is een aantal commando's beschikbaar om ingangen te
cre\"eren in een register en om een register op te roepen.
Er is standaard \'e\'en register gedefinieerd met:

\startvoorbeeld
\starttypen
\definieerregister[index][indices]
\stoptypen
\stopvoorbeeld

Een ingang wordt gecre\"eerd met het commando:

\toonsetup{<<register>>}

Een ingang kan uit maximaal drie niveaus zijn opgebouwd.
Dergelijke geneste ingangen worden gescheiden door een \type
{+} of \type {&}. Het onderstaande voorbeeld illustreert
dit. 

\startvoorbeeld
\starttypen
\index{leesplank}
\index{leesplank+aap}
\index{leesplank+noot}
\stoptypen
\stopvoorbeeld

Als een ingang op een bepaalde manier moet worden gezet,
kunnen problemen ontstaan met het ordenen. \TEX||commandos,
zoals \type{\sl} en \type{\kap} worden bij het sorteren
omzeild. Als in een ingang zetcommando's zijn opgenomen die
het woord genereren, dan kan beter het iets uitgebreidere
commando worden gebruikt. Tussen \setchars\ wordt dan een
\ASCII||string opgenomen die de alfabetische ordening
bepaalt.

Als we bijvoorbeeld de afkortingen of logo's \kap {VVN} en
\kap {ANWB} hebben gedefinieerd (zie \in {paragraaf}
[synoniemen]), dan dient een register||ingang er als volgt
uit te zien:

\startvoorbeeld
\starttypen
\index[VVN]{\VVN}
\index[ANWB]{\ANWB}
\stoptypen
\stopvoorbeeld

Doen we dit niet, dan zullen \kap{VVN} en \kap{ANWB} worden
gerangschikt onder \texescape.

Een verwijzing binnen een index wordt gecre\"eerd met:
\toonsetup{zie<<register>>}

Ook dit commando kent een \citeer {pure} variant waarbij de
commando||loze ingang tussen vierkante haken wordt
meegegeven.

Een register wordt opgeroepen met het commando:

\toonsetup{plaats<<register>>}

Het volgende commando genereert een register met titel:

\toonsetup{volledige<<register>>}

De wijze waarop een register wordt gezet wordt ingesteld met
\type {\stelregisterin}. Als bovenaan de tekst het commando
\type {\versie[voorlopig]} wordt gegeven, dan wordt in de
marge aangegeven waar een ingang is opgenomen (zie
\in{paragraaf}[versie]). 

\toonsetup{stelregisterin}

Standaard wordt een volledig register gegenereerd. Het is
echter mogelijk een deelregister op te vragen. In dat geval
dient het \type{criterium} een waarde te krijgen. Met \type
{aanduiding} legt men vast of een letteraanduiding wordt
geplaatst in de index zelf. Als \type {refereren=aan}, dan
wordt voor elk register een pagina verwijzing aangemaakt
voor iedere aanduiding. Voor indexen zijn dat verwijzingen
als: \type {index:a} of \type {index:w}. We kunnen deze 
automatisch aangemaakte verwijzingen bijvoorbeeld gebruiken 
om te verwijzen naar de pagina waar de a||ingangen beginnen. 

De genoemde commando's staan een ruime layout toe. Dit
betekent dat het volgende is toegestaan:

\startvoorbeeld
\starttypen
\hoofdstuk{Ziezo}

\paragraaf{Hoezo Ziezo}
\index{hoezo}
\index{ziezo}

Het gebruik van het achtervoegsel zo ...
\stoptypen
\stopvoorbeeld

Tussen \type{\hoofdstuk} en \type{\paragraaf} mogen we niets
plaatsen, omdat anders de vertikale spati\"ering wordt
verstoord. De lege regel na \type{\index} geeft echter geen
problemen en wordt netjes afgevangen. Mocht het
achterliggende mechanisme problemen geven, bijvoorbeeld
binnen zelf gedefinieerde macro's, dan kan ook het wat meer
directe commando worden gebruikt:

\toonsetup{schrijfnaar<<register>>}

Eventueel kan met \type{expansie} worden ingesteld of men het
argument wil expanderen; standaard gebeurt dit namelijk niet
(meer hierover op \op{pagina}[expansie]).

In deze handleiding is een register opgenomen met
commando's. Dit register is gedefinieerd en vervolgens
ge‹nitialiseerd met:

\startvoorbeeld
\starttypen
\definieerregister [macro] [macros]
\stelregisterin    [macro] [aanduiding=uit]
\stoptypen
\stopvoorbeeld

Waarna we ingangen tegenkomen als:

\startvoorbeeld
\starttypen
\macro{\tex{hoofdstuk}}
\macro{\tex{paragraaf}}
\stoptypen
\stopvoorbeeld

We kunnen het bij dit hoofdstuk behorende deel van dit
register oproepen met het volgende commando (het commando
\type{\tex} plaatst een \tex{} voor het woord, maar wordt
bij sorteren weggefilterd): \voetnoot {Natuurlijk zijn ook
\type {\plaatsmacro} en \type {\volledigemacros}
beschikbaar.} 

\startbuffer
\plaatsregister[macro]                 % of: \plaatsmacro
  [criterium=hoofdstuk,n=2,voor=,na=]
\stopbuffer

\startvoorbeeld
\typebuffer
\stopvoorbeeld

en krijgen dan:

\start % dit moet, anders krijgen we dubbele letter-referenties
\stelregisterin[macro][refereren=uit]
\haalbuffer
\stop  % register macro wordt immers ook aan het eind opgeroepen

Standaard worden de paginanummers geplaatst. Met
\type{symbool} is echter een alternatieve weergave in te
stellen. Met \type{afstand} wordt de spati\"ering tussen het
woord en het eerste nummer of symbool ingesteld.

\plaatstabel{Alternatieven voor paginanummers in registers.}
\starttabel[|c|c|]
\HL
\VL \bf symbool \VL \bf weergave                      \VL\SR
\HL
\VL \type{a} \VL a b c d                              \VL\FR
\VL \type{n} \VL 1 2 3 4                              \VL\MR
\VL \type{1} \VL $\bullet\ \bullet\ \bullet\ \bullet$ \VL\MR
\VL \type{2} \VL \setbox0=\hbox{\vrule width 1em height 1ex}%
                 \copy0\ \copy0\ \copy0\ \copy0       \VL\LR
\HL
\stoptabel

Een waarschuwing is hier op zijn plaats. Het aanmaken van
een goed register is een kunst apart. Het is bijvoorbeeld
maar de vraag of het register achterin deze handleiding zo'n
goed register is. 

% nog eens een apartt handleiding van maken 
%
% Een voorbeeld van een uitermate slecht register is de index
% bij de reeks \citeer {Opleiders in Organisaties}. Na een
% pretentieuze inleiding volgen ongeveer 50~bladzijden met
% verwijzingen. Het betreft een index bij 22~specials met
% meerdere artikelen over eenzelfde onderwerp. Achter ieder
% (sub)woord in de cumulatieve index staat (enkele
% uitzonderingen daargelaten) slechts \'e\'en bladzijdenummer,
% wat de suggestie wekt dat er nauwelijks overlap in de
% artikelen zit. Zo is er slechts ‚‚n nummer vermeld achter
% \citeer {opleidingsafdeling}, terwijl dit begrip in veel
% artikelen terugkomt. Verder staat ieder woord wat maar te
% bedenken valt in het register, en krijgen verschillende
% verschijningsvormen van een woord een eigen ingang. 
% 
% Bestudering van deze index leidt al snel tot een aantal
% aanbevelingen met betrekking tot registers. Vaak is controle
% op de volgende punten al voldoende. Het genoemde register is
% waarschijnlijk nooit gecontroleerd.
% 
% \startopsomming[n]
% 
% \som  Gebruik geen ingangen waar geen normaal denkend mens
%       op komt. Ruim de helft van de ingangen in de genoemde
%       index lijkt zinloos: {\em controle}, {\em consistent},
%       {\em getal}. Niemand zal hierop gaan zoeken.
% 
% \som  Gebruik geen subingangen als het hoofdwoord niet ook
%       voor de hand ligt. In iedere kolom van de beruchte
%       index staat wel zo'n onnodig dubbele ingang.
% 
% \som  Gebruik subingangen consistent, en dus niet {\em
%       assessment + model} naast {\em assessment||component},
%       om over het engelse woord maar niet te spreken.
% 
% \som  Controleer op enkelvoud en meervoud en gebruik dus niet
%       {\em assessment} naast {\em assessments}.
% 
% \som  Gebruik geen subingangen die naar dezelfde bladzijde
%       verwijzen, terwijl er geen andere subingangen zijn. De
%       genoemde index toont er vele, zoals: {\em
%       consistent + extern}, {\em consistent + intern} en verder
%       niets onder {\em consistent}.
% 
% \som  Ga na of sommige ingangen niet beter achterwege kunnen
%       blijven, bijvoorbeeld omdat de hele tekst er over
%       gaat. Het heeft geen zin om {\em docenten + instructie}
%       en {\em docenten + selectie} op te nemen (die bovendien
%       naar dezelfde bladzijde verwijzen), terwijl in veel
%       meer artikelen docenten aan de orde komen. Suggereer
%       niet ten onrechte volledigheid.
% 
% \som  Ga na of verschillende ingangen niet eigenlijk
%       hetzelfde verwoorden. In het genoemde register is het
%       onderwerp mentor bijzonder slecht geordend. We vinden
%       er {\em mentor en coach} naast (enkele ingangen
%       verderop) {\em mentor of coach}. Los van het vermeende
%       onderscheid is het beter om van {\em mentor} te
%       spreken en onder {\em coach} te verwijzen naar dit
%       woord.
% 
% \stopopsomming
% 
% Misschien wel de belangrijkste tip die we hier kunnen geven
% is de volgende:
% 
% \startopsomming[verder]
% \som  Laat slechts ‚‚n persoon de index samenstellen en
%       controleren. Iedere auteur zijn eigen ingangen laten
%       aanleveren leidt gegarandeerd tot de genoemde problemen.
% \stopopsomming

De tot nu toe besproken index ingangen geven aan op welke
bladzijde een onderwerp begint. Naast dergelijke ingangen
kunnen we ook een gebied markeren, met:

\toonsetup{<<start>>register}

Tussenliggende ingangen van dezelfde orde worden niet in het
register opgenomen.

\starttypen
\startregister[eindeloos]{eindeloos}
...... een eindeloos lang verhaal ......
\stopregister[eindeloos]
\stoptypen

In de meeste gevallen zal de vormgeving van een register
eenvoudig zijn. In een naslagwerk kan echter de behoefte
bestaan aan het differenti\"eren van ingangen. Hoewel het in
zo'n geval de moeite waard is meerdere registers te maken,
kan ook door gerichte vormgeving meer helderheid worden
bereikt. We zagen reeds de twee verschijningevormen: 

\starttypen
\index           {ingang}
\index [sleutel] {ingang}
\stoptypen

In beide gevallen vinden we {\em ingang} terug in de index,
maar in het tweede geval gesorteerd onder de~s van {\em
sleutel}. De vormgeving volgt in dit geval de broodtekst. 

Een afwijkende vormgeving is alleen zinvol als ze consistent 
wordt toegepast. Om die reden ondersteund \CONTEXT\ het de 
vormgevingsprefix. 

\starttypen
\index[vorm::]       {ingang}
\index[vorm::steutel]{ingang}
\index               {vorm::ingang}
\index[sleutel]      {vorm::ingang}
\index[vorm::]       {vorm::ingang}
\index[vorm::sleutel]{vorm::ingang}
\stoptypen

De \type {vorm::} aanduiding geeft aan op welke wijze een
paginanummer of het trefwoord zelf wordt vormgegeven.
Daarbij wordt de volgorde waarin de ingangen worden
gesorteerd geen geweld aangedaan. De specificatie tussen
\setchars\ heeft betrekking op het paginanummer, die voor de
ingang op de ingang zelf. 

\starttypen
\stelregisterin[index][vorm][paginaletter=vet,tekstletter=schuin]
\stoptypen

We kunnen zonder problemen meerdere verschijningsvormen
gebruiken, al dan niet hetzelfde voor paginanummer en ingang.

\starttypen
\stelregisterin[index][nb][paginaletter=vet]
\stelregisterin[index][hm][paginaletter=schuin]
\stoptypen

Neem bijvoorbeeld:

\starttypen
\index[nb::]{vierkantswortel}
\index[hm::wortel]{$\srqt{2}$}
\stoptypen

In het eerste geval wordt het paginanummer achter {\em
vierkantswortel} vet gedrukt, in het tweede geval schuin. 

Een beetje grote index, met meerdere verwijzingen per
ingang, kan erg oncomfortabel zijn, met name in een voor het
scherm ontworpen document. Je kunt daar immers niet je
vinger bij de indexbladzijde houden. Een bijzondere optie
bij registers is daarom het koppelen van ingangen. Het is op
deze manier mogelijk door de tekst te springen, van ingang
naar ingang. Een koppeling wordt geactiveerd met:

\startvoorbeeld
\starttypen
\stelregisterin[index][koppeling=ja]
\stoptypen
\stopvoorbeeld

Op deze manier wordt een mechanisme geactiveerd dat zowel in
het register (\hbox {\symbool [vorige]\ \symbool [ergens]\
\symbool [volgende]}) als in de tekst (\hbox {\symbool
[vorige]\ {\bf woord}\ \symbool [volgende]}) verwijzingen
plaatst, afhankelijk van de beschikbaarheid van
alternatieven. Vanuit het register wordt naar het eerste, de
middelste of de laatste voorkomen van de ingang gesprongen.

Dit mechanisme werkt alleen op het eerste niveau;
subingangen worden overgeslagen. Als op het woord zelf wordt
geklikt, gaan we terug naar het register. Omdat in de tekst
het woord moet voorkomen, gebruiken we het commando:

\toonsetup{gekoppelde<<register>>}

dus bijvoorbeeld \type {\gekoppeldeindex{ziezo}}. De
koppelingen moeten van te voren worden geladen met het
commando:

\toonsetup{koppelregister}

Dit commando wordt normaal gesproken automatisch uitgevoerd 
als nodig en is dus alleen nodig in uitzonderlijke situaties.

\stoponderdeel
