\startonderdeel co-nl-13

\projekt manual
\produkt cont-nl

\hoofdstuk[blokken]{Blokken}

\paragraaf{Inleiding}
\index{blokken}
\index{floats}
\index{plaatsen+blokken}

Onder blokken verstaan we delen van een tekst die als
afzonderlijk typografisch geheel worden beschouwd of die een
afzonderlijke behandeling behoeven. We onderscheiden daarbij
de volgende soorten blokken:

\startopsomming

\kop  plaatsblokken (engels: floats)

      Voorbeelden hiervan zijn figuren, tabellen, grafieken,
      intermezzo's enz. De plaats van deze blokken kan binnen
      zekere grenzen worden bepaald door \TEX\ en hangt
      af van de (nog) op een bladzijde beschikbare ruimte.

\kop  tekstblokken

      Voorbeelden hiervan zijn vragen en antwoorden in een
      studietekst, samenvattingen, definities en afleidingen.
      De plaats van dergelijke tekstblokken staat niet altijd
      vast. Bovendien is soms een herhaling in een apart
      hoofdstuk gewenst.

\kop  naastblokken

      Deze komen, in geval van een enkelzijdige layout, op de
      linkerbladzijde te staan. Dit kan van alles zijn. De
      layout van de rechterbladzijde hangt mede af van de
      plaats van de blokken links.

\kop  margeblokken

      Met name bij een brede bladspiegel kan de marge worden
      gebruikt voor meer dan alleen margewoorden. In dat
      geval kunnen stukken tekst of figuren in de marge
      worden geplaatst.

\stopopsomming

Ten behoeve van deze vier typen blokken zijn een aantal
commando's ontwikkeld die in dit hoofdstuk worden behandeld.
Daarnaast komen enkele andere manipulaties met (delen van) de
tekst aan de orde.

Formules zijn ook te beschouwen als blokken. Deze worden
echter door \TEX\ zelf afgehandeld, zodat hiervoor geen
commando's zijn ontwikkeld (behalve dan voor het plaatsen van
nummers).

Dit hoofdstuk is gezet met de optie \type
{\versie[voorlopig]}. Dit betekent dat in de marges
informatie betreffende het zetproces wordt weergegeven.

\start    % in verband met \versie[voorlopig]

\versie[voorlopig]

\overfullrule=0pt\relax

\paragraaf[plaatsblokken]{Plaatsblokken}
\index{figuren+plaatsen}
\index{tabellen+plaatsen}
\index{figuren+nummeren}
\index{tabellen+nummeren}
\index{figuren+overzichten}
\index{tabellen+overzichten}
\index{plaatsen+figuren}
\index{plaatsen+tabellen}
\index{nummeren+figuren}
\index{nummeren+tabellen}
\index{overzichten+figuren}
\index{overzichten+tabellen}
\macro{\tex{definieerplaatsblok}}
\macro[plaatsblok]{\tex{plaats<<blok>>}}
\macro[plaatslijstmetblokken]{\tex{plaatslijstmet<<blokken>>}}
\macro[volledigelijstmetblokken]{\tex{volledigelijstmet<<blokken>>}}
\macro[reserveerblok]{\tex{reserveer<<blok>>}}
\macro[stelblokkenin]{\tex{stel<<blokken>>in}}
\macro[startbloktest]{\tex{start<<blok>>tekst}}
\macro{\tex{stelplaatsblokkenin}}
\macro{\tex{stelblokkopjesin}}
\macro{\tex{stelblokkopjein}}

Plaatsblokken worden meestal samengesteld met speciale
commando's. Tabellen kunnen (bijvoorbeeld) worden aangemaakt
met \TABLE. Tekeningen en grafieken worden in de regel
buiten \TEX\ aangemaakt; \TEX\ beperkt zich daarbij tot het
reserveren van ruimte.

Plaatsblokken zijn meestal genummerd en hebben vaak een
onderschrift. De voor het plaatsen van een bepaald type
blokken noodzakelijke commando's worden gedefinieerd met het
commando:

\toonsetup{definieerplaatsblok}

Standaard zijn commando's ten behoeve van figuren,
grafieken, tabellen en intermezzo's gedefinieerd:

\startvoorbeeld
\starttypen
\definieerplaatsblok [figuur]     [figuren]
\definieerplaatsblok [tabel]      [tabellen]
\definieerplaatsblok [grafiek]    [grafieken]
\definieerplaatsblok [intermezzo] [intermezzos]
\stoptypen
\stopvoorbeeld

Een blok wordt geplaatst met het commando:

\toonsetup{plaats<<blok>>}

Als gevolg van de bovenstaande definities zijn dus de
commando's \type{\plaatsfiguur}, \type{\plaatstabel},
\type{\plaatsgrafiek} en \type{\plaatsintermezzo} beschikbaar.

Als een blok om typografische redenen niet op de aangegeven
plaats kan worden gezet, dan wordt gezocht naar het beste
alternatief. De voorkeuren zijn in
\in{tabel}[tab:plaatsblok] weergegeven.

\startbuffer
\starttabel[|l|l|]
\HL
\VL \bf voorkeur                             \VL
    \bf resultaat                            \VL\SR
\HL
\VL \type{links}                             \VL
    links van de tekst                       \VL\FR
\VL \type{rechts}                            \VL
    rechts van de tekst                      \VL\MR
\VL \type{hier}                              \VL
    bij voorkeur op deze plaats in de tekst  \VL\MR
\VL \type{boven}                             \VL
    bovenaan de huidige pagina               \VL\MR
\VL \type{onder}                             \VL
    onderaan de huidige pagina               \VL\MR
\VL \type{inlinker}                          \VL
    in de linkermarge                        \VL\MR
\VL \type{inrechter}                         \VL
    in de rechtermarge                       \VL\MR
\VL \type{inmarge}                           \VL
    in de marge (links of rechts)            \VL\MR
\VL \type{marge}                             \VL
    in de marge (margeblok)                  \VL\MR
\VL \type{pagina}                            \VL
    op een nieuwe (eventueel lege) pagina    \VL\MR
\VL \type{naast}                             \VL
    op de linker bladzijde                   \VL\MR
\VL \type{altijd}                            \VL
    voorrang geven boven opgespaarde blokken \VL\MR
\VL \type{forceer}                           \VL
    per se op deze plaats in de tekst        \VL\LR
\HL
\stoptabel
\stopbuffer

\plaatstabel
  [hier][tab:plaatsblok]
  {Voorkeurplaatsen bij blok plaatsen.}
  {\haalbuffer}

Het commando kan ook gegeven worden zonder vierkante haken,
dus:

\startvoorbeeld
\starttypen
\plaats...{<<titel>>}{<<blok>>}
\stoptypen
\stopvoorbeeld

Als men geen titel meegeeft, wordt wel het nummer gezet. Wil
men dat ook het nummer achterwege blijft, dan kan men in
plaats van een titel \type{geen} meegeven. Het commando moet
worden afgesloten met een lege regel of \type{\par}.

Voorbeelden van blokken zijn figuren, tabellen enz. Als blok
kan een commando worden meegegeven, bijvoorbeeld de aanroep
van een figuur, of een door accolades of \type{\start} en
\type{\stop} omringd commando, bijvoorbeeld
\in{tabel}[tab:voorbeeld].

\startbuffer
\plaatstabel
  [hier][tab:voorbeeld]
  {Een eenvoudig voorbeeld van een tabel.}
  \starttabel[|c|c|]
  \HL
  \VL dit \VL is dus \VL\FR
  \VL een \VL tabel  \VL\LR
  \HL
  \stoptabel
\stopbuffer

\startvoorbeeld
\typebuffer
\stopvoorbeeld

\start
\steltabellenin[VL=middel,HL=middel]
\haalbuffer
\stop

Het is mogelijk ruimte voor een blok te reserveren met:

\toonsetup{reserveer<<blok>>}

Ook dit commando kan zonder vierkante haken worden
opgegeven. Een voorbeeld van een reservering is:

\startbuffer
\reserveerfiguur
  [hoogte=4cm,breedte=10cm,kader=aan][hier][fig:reservering]
  {Voorbeeld van een reservering.}
\stopbuffer

\startvoorbeeld
\typebuffer
\stopvoorbeeld

wat resulteert in \in{figuur}[fig:reservering].

\haalbuffer

Als de inhoud van een blok nog niet beschikbaar is, kan bij
\type{\plaats...} als blok \type{\lege...} worden
meegegeven. Ook dan wordt ruimte gereserveerd. Als niets
wordt meegegeven, dus \argchars, dan wordt standaard een
leeg blok geplaatst. Zolang bijvoorbeeld figuren nog niet
beschikbaar zijn, kan in de tekst al wel het commando worden
geplaatst:

\startvoorbeeld
\starttypen
\plaatsfiguur{Dit is de titel van het figuur.}{}
\stoptypen
\stopvoorbeeld

Er zijn twee optionele argumenten. Het eerste geeft de
gewenste plaats aan, het tweede een verwijzing, waarop later
kan worden teruggevallen, bijvoorbeeld \type {\op
{bladzijde} [fig:schematische weergave proces]}.

\startvoorbeeld
\starttypen
\plaatsfiguur[hier][fig:demo]{Dit is de titel van het figuur.}{}
\stoptypen
\stopvoorbeeld


\toonsetup{start<<blok>>tekst}

Mogelijke voorkeuren zijn \type{links}, \type{rechts} of
\type{midden}. Tevens kan een verschuiving van een regel
worden opgegeven: \type{offset}. Beide instellingen kunnen
worden gecombineerd: \type{[links,offset]}.

Er kan een lijst met figuren worden gegenereerd met het
commando:

\toonsetup{plaatslijstmet<<blokken>>}

Hier is \type {<<blokken>>} bijvoorbeeld \type {figuren}.
Het overzicht sluit aan bij de wijze van nummering zoals
opgegeven met het commando \type {\stelnummerenin}, dat
wordt beschreven op \op {bladzijde} [nummeren].

Het volgende commando genereert een lijst met titels, op een
aparte bladzijde.

\toonsetup{volledigelijstmet<<blokken>>}

Als pagina||overgangen op een niet gewenste plaats
plaatsvinden, dan kan een andere overgang worden afgedwongen
op een vergelijkbare manier als bij een inhoudsopgave (zie
\in{paragraaf}[inhoudsopgave]):

\startvoorbeeld
\starttypen
\volledigelijstmet<<blokken>>[paginaovergangen={8.2,20.4}]
\stoptypen
\stopvoorbeeld

Evenals bij een inhoudsopgave worden ook hier standaard
lokale lijsten gegenereerd. Het opvragen van een lijst binnen
een hoofdstuk levert dus een lijst voor dat hoofdstuk.

\plaatslijstmetfiguren[criterium=hoofdstuk]

De kenmerken van plaatsblokken kunnen worden ingesteld met
het commando:

\toonsetup{stelplaatsblokin}

Bij reeds gedefinieerde plaatsblokken kan men ook gebruik
maken van de wat betekenisvoller commando's
\type{\stelfigurenin}, \type{\steltabellenin} enz.

De hoogte en breedte hebben betrekking op de standaard te
reserveren ruimte. Met \type {kader} kan het plaatsen van
een kader om de figuur worden geblokkeerd.

De volgende twee commando's hebben betrekking op alle
plaatsblokken. Het eerste commando heeft betrekking op de
vorm en plaats van het blok inclusief de titel.

\toonsetup{stelplaatsblokkenin}

De breedte is alleen van belang als de kaders \type{aan}
staan. Met \type {offset} wordt de ruimte tussen het kader
en de figuur ingesteld.

Het tweede commando heeft betrekking op de genummerde kopjes
van figuren en tabellen.

\toonsetup{stelblokkopjesin}

Men kan ook per kopje instellen. In het volgende commando is
het eerste argument de naam van een klasse plaatsblokken,
zoals \type {figuur}.

\toonsetup{stelblokkopjein}

De parameters \type{voor}, \type{na} en \type{tussen}
betreffen commando's die voor en na het blok worden
uitgevoerd en tussen de kop en het blok. De parameter
\type{letter} heeft betrekking op de nummering ({\bf
Figuur~x.y}) en \type{breedte} op de breedte van het kopje.
De instelling \type{marge} heeft betrekking op de ruimte
tussen een blok en de tekst in geval van blokken waar de
tekst omheen loopt. De macro's stemmen de breedte van het
kopje (bij \type{boven} of \type{onder} plaatsen) zo goed
mogelijk af op de breedte van de figuur.

\start
\stelblokkopjesin[plaats=hoog]
\stelplaatsblokkenin[plaats=links]
\plaatsfiguur[forceer]{}
\startkadertekst
\starttypen
\stelblokkopjesin[plaats=hoog]
\stelplaatsblokkenin[plaats=links]
\stoptypen
\stopkadertekst
\stop

Met de drie variabelen \type{nboven}, \type{nonder} en
\type{nregels} kan het mechanisme dat opgespaarde blokken
plaatst worden be�nvloed. De eerste twee variabelen bepalen
het maximum aantal opgespaarde blokken dat per bladzijde
onder of boven aan de pagina wordt geplaatst. Standaard
hebben deze variabelen de waarde~2 en~0. Stel dat er tien
figuren, tabellen en/of andere blokken zijn opgespaard, dan
worden er standaard steeds twee bovenaan de volgende
bladzijde geplaatst. Bij een gedwongen overgang,
bijvoorbeeld bij een nieuw hoofdstuk, worden alle
opgespaarde blokken geplaatst.

De derde variabele heeft standaard de waarde~4. Dat betekent
dat er nooit minder dan 4~regels op een bladzijde worden
gezet waarop opgespaarde figuren worden geplaatst.

We vervolgen deze beschrijving met enkele voorbeelden van
het plaatsen van figuren naast de tekst. We plaatsen geen
titel onder de figuur en de figuur zelf laten we leeg:

\startvoorbeeld
\starttypen
\plaatsfiguur[rechts]{geen}{}

... hier begint de tekst ....
\stoptypen
\stopvoorbeeld

Omdat we wat tekst nodig hebben om dit mechanisme te
illustreren geven we tussen de regels wat uitleg over het
plaatsen van blokken.

Het plaatsen van blokken gebeurt in principe automatisch.
Daarbij wordt de in de tekst gehanteerde volgorde
gerespecteerd. Dit betekent dat bij veel (grote) blokken een
figuur, tabel of ander blok verderop in de tekst wordt
geplaatst als op het moment van \citeer {defini\"eren} de
bladzijde vol is. Als \type{\versie[voorlopig]} is
ingesteld, zoals op deze en de voorafgaande pagina's, dan
wordt in de marge informatie gegeven over het plaatsen.
\voetnoot {Als gevolg van de wijze waarop \TEX\ bladzijden
afbreekt, lopen de meldingen niet geheel synchroon met de
werkelijkheid.} Men krijgt op deze manier een beeld van het
proces achter de schermen.

\plaatsfiguur[rechts]{geen}{\externfiguur[rb00006]}

Blokken kunnen \type{links} of \type{rechts} van de tekst
staan. In dit geval plaatsen we de figuur rechts.

Als er geen ruimte is om het blok te plaatsen, dan wordt
overgegaan op een nieuwe bladzijde. Als dientengevolge
de bladzijde wat leeg blijft, kan men overwegen de tekst wat
aan te passen.

Als er nog figuren in de wachtrij staan, dan worden deze
(automatisch) eerst geplaatst. Dit doen we omdat we de
volgorde waarin de blokken in de tekst voorkomen willen
handhaven. Het kan echter voorkomen dat de vorm van de tekst
hier onder lijdt. In dat geval kan met het trefwoord
\type{altijd} het plaatsen van de opgespaarde blokken worden
voorkomen. Met \type{forceer} kan men plaatsing afdwingen.
Dit ligt bijvoorbeeld voor de hand als een figuur (of tabel)
wordt voorafgegaan door een zinsnede als: \citeer {zoals we
hieronder zien}.

\plaatsfiguur[links]{geen}{\externfiguur[rb00008]}

In handboeken en opleidingsteksten komen vaak veel
illustraties voor. Men ontkomt er in dat geval vaak niet
aan de plaats van deze illustraties zelf wat te be�nvloeden,
bijvoorbeeld door de afbeelding een alinea eerder of later
in de ruwe tekst op te nemen. Overigens zijn de hier
beschreven commando's inmiddels zover uitontwikkeld dat ook
grote teksten (honderden pagina's) met veel illustraties
(vele tientallen) geen problemen geven. In het meest
ongunstige geval worden bij gebrek aan ruimte de
illustraties opgespaard. Het elders beschreven commando
\type{\startuitstellen} kan hier uitkomst bieden.

Dit afdwingen van de plaats met \type{altijd} kan worden
gecombineerd met het opgeven van de plaats, bijvoorbeeld
\type{[links,altijd]} of \type{[hier,altijd]} . Omdat de
volgorde van de blokken verandert, zullen ook de nummers
moeten worden veranderd. Dit gebeurt automatisch, zij het
dat er een tweede verwerkingsslag voor nodig is. Dit proces
is via de meldingen op het scherm te volgen.

We zijn inmiddels aangeland bij een figuur die \type{links}
staat. Het mechanisme om figuren links en rechts te plaatsen
is ge�nspireerd op een serie macro's van D.~Comenetz.
Eigenlijk zijn er drie mechanismen werkzaam. Een mechanisme
om figuren boven, tussen en onder de tekst te plaatsen, een
ander mechanisme om figuren links en rechts te plaatsen en
een derde mechanisme om tekst naast figuren te plaatsen.

\startfiguurtekst[rechts]{geen}{\externfiguur[rb00015]}

We zien hier een voorbeeld van het laatste mechanisme. Deze
tekst staat tussen de commando's:

\starttypen
\startfiguurtekst
   [rechts]{geen}{\externfiguur[rb00015]}
....
\stopfiguurtekst
\stoptypen

\stopfiguurtekst

\startfiguurtekst[links,offset]{geen}{\externfiguur[vos1082]}

Natuurlijk kunnen we de figuur ook aan de linkerkant
plaatsen. Bij \type {\start...tekst} kan men het trefwoord
\type {offset} meegeven. Hier is dus \type {[links,offset]}
gebruikt.

Als de tekst onverhoopt langer is, dan loopt deze {\em niet}
rond de figuur. Standaard wordt de volgorde waarin de
figuren zijn opgegeven gehandhaafd. Dit betekent dat de
reeds opgespaarde figuren eerst (geforceerd) worden
geplaatst. Als men dit niet wil, dan kan men het trefwoord
\type{altijd} opgeven. In dat geval krijgt deze figuur
voorrang.

\stopfiguurtekst

\startfiguurtekst[rechts,midden]{geen}{\externfiguur[vos1083]}

Er is nog meer mogelijk. In dit geval is de instelling
\type{[rechts,midden]} meegegeven. Zo kunnen we de tekst ook
\type{hoog} en \type{laag} plaatsen.

Als het trefwoord \type{lang} wordt opgegeven, dan wordt de
rest van de bladzijde uitgevuld.

\stopfiguurtekst

Als meerdere figuren onder elkaar worden gezet, met
daarnaast een tekst, dan verdient het aanbeveling de figuren
even breed te maken. Dit oogt fraaier.

\plaatsfiguur
  [links]
  {\ttx[links]}
  {\omlijnd[breedte=.6\hsize,hoogte=passend]{links van de tekst}}

Zoals al is gedemonstreerd, kunnen we een tekst links of
rechts om een blok laten lopen. We zullen wat nader
stilstaan bij de wijze van plaatsen. Voorafgaand aan deze
alinea hebben we met \type {\plaatsfiguur} een figuur
geplaatst met als plaatsaanduiding \type {[links]}. In het
volgende voorbeeld plaatsen we een figuur rechts. Dit keer
laten we de tekst langs de figuur lopen en gebruiken daartoe
\type {\startfiguurtekst}. Daarbij geven we ook het
trefwoord \type {midden} mee.

\startfiguurtekst
  [rechts,midden]
  {\ttx[rechts,midden]}
  {\omlijnd[breedte=.4\hsize,hoogte=passend]{rechts en gecentreerd }}

De aanduiding \type {midden} heeft daarbij betrekking op de
tekst. Als het tekstblok hoger is dan een figuur, dan
wordt de figuur toch bovenaan geplaatst. Wil men \type
{hoog}, \type {midden} en \type {laag} ook op de figuur
betrekken, dan kan men het trefwoord \type {beide} meegeven.

\stopfiguurtekst

\startfiguurtekst
  [rechts,midden,beide]
  {\ttx[rechts,midden,beide]}
  {\omlijnd[breedte=.4\hsize]{een van beiden in het midden}}

In dit geval is de tekst wederom hoger dan de figuur. Omdat
we hier \type {beide} hebben gespecificeerd, zal \CONTEXT\
ofwel de figuur, ofwel de tekst vertikaal centreren. Of dit
mooi zetwerk oplevert, zal afhangen van de omstandigheden.
Soms zal consistent plaatsen minder storend ogen, vandaar dat
de standaardinstelling \type {hoog} is.

\stopfiguurtekst

\paragraaf{Combineren}
\index{figuren+combineren}
\index{combineren}
\macro{\tex{startcombinatie}}
\macro{\tex{stelcombinatiesin}}
\macro{\tex{plaatsnaastelkaar}}
\macro{\tex{plaatsonderelkaar}}

Hoewel dit misschien niet de juiste plaats is, behandelen we
hier nog een commando:

\toonsetup{startcombinatie}

Dit commando kan men gebruiken om een aantal figuren naast
elkaar te plaatsen.

\startbuffer
\plaatsfiguur
  [hier]
  [fig:combinaties]
  {Een voorbeeld van \type{\startcombinatie...}.}
  {\startcombinatie[3*2]
     {\externfiguur[lb00220]} {a} {\externfiguur[lb00221]} {b}
     {\externfiguur[lb00222]} {c} {\externfiguur[lb00223]} {d}
     {\externfiguur[lb00225]} {e} {\externfiguur[lb00226]} {f}
   \stopcombinatie}
\stopbuffer

\haalbuffer

Het voorbeeld in \in{figuur}[fig:combinaties] is bijvoorbeeld
gezet met de commando's:

\startvoorbeeld
\typebuffer
\stopvoorbeeld

Tussen \setchars\ geven we aan hoe gecombineerd wordt:
\type{[3*2]}, \type{[4*2]} enz. Als we alleen blokken naast
elkaar zetten, dan kunnen we volstaan met: \type{[2]},
\type{[4]} enz.

Vervolgens volgen de blokken zelf. Per blok worden twee
argumenten meegegeven: \type{{xxx}{yyy}}. Het eerste
argument komt boven, het tweede onder te staan. Alle tweede
argumenten mogen leeg zijn, dus: \type{{xxx}{}}. De
algemene vorm is dus:

\startvoorbeeld
\starttypen
\startcombinatie[n*m]
  {tekst 1} {ondertitel 1}
  {tekst 2} {ondertitel 2}
  ......... ..............
\stopcombinatie
\stoptypen
\stopvoorbeeld

Met betrekking tot het combineren kan een en ander worden
ingesteld met:

\toonsetup{stelcombinatiesin}

Met \type{afstand} stelt men de afstand tussen de blokken in
(horizontaal). De instelling \type{uitlijnen} heeft
betrekking op de ondertitel. Standaard wordt gecentreerd. De
breedte heeft betrekking op de totale breedte.

De drie instellingen \type{voor}, \type{na} en \type{tussen}
worden uitgevoerd in de volgorde zoals aangegeven in
\in{figuur}[fig:volgorde combinaties]. In
\in{figuur}[fig:spatiering combinaties] zijn enkele
voorbeelden van instellingen gegeven. Als, zoals in
\in{figuur}[fig:geen ondertitels] te zien is, de titel, het
tweede (!) argument van ieder paar, leeg is, wordt de
spati\"ering aangepast.

\startbuffer
\startcombinatie[4]
  {\omlijnd{test}} {\omlijnd{a}}
  {\omlijnd{test}} {\omlijnd{b}}
  {\omlijnd{test}} {\omlijnd{c}}
  {\omlijnd{test}} {\omlijnd{d}}
\stopcombinatie
\stopbuffer

\setbox4=\vbox
  {\stelcombinatiesin[tussen={\blanko[groot]}]\haalbuffer}

\setbox6=\vbox
  {\stelcombinatiesin[tussen={\blanko[middel]}]\haalbuffer}

\setbox8=\vbox
  {\stelcombinatiesin[tussen={\blanko[klein]}]\haalbuffer}

\plaatsfiguur
  [hier][fig:spatiering combinaties]
  {De spati\"ering binnen combinaties (1).}
\startcombinatie[3]
   {\box4} {\type{{\blanko[groot]}}}
   {\box6} {\type{{\blanko[middel]}}}
   {\box8} {\type{{\blanko[klein]}}}
\stopcombinatie

\plaatsfiguur
  [hier][fig:volgorde combinaties]
  {De spati\"ering binnen combinaties (2).}
  {\forgetall
   \stelomlijndin[breedte=4cm]
   \omlijnd[hoogte=3cm,kader=aan]{figuur}%
   \omlijnd[kader=uit]{\type{<tussen>}}%
   \omlijnd[hoogte=1cm,kader=aan]{ondertitel}%
   \omlijnd[kader=uit]{\type{<na>}}%
   \omlijnd[kader=uit]{\type{<voor>}}}

\plaatsfiguur
  [hier][fig:geen ondertitels]
  {Combinaties zonder ondertitels.}
\startcombinatie[3]
  {\externfiguur[vew1095]} {}
  {\externfiguur[vew1096]} {}
  {\externfiguur[vew1097]} {}
\stopcombinatie

Er zijn ook twee eenvoudige varianten:

\toonsetup{plaatsnaastelkaar}

\toonsetup{plaatsonderelkaar}

Deze gebruiken we als volgt:

\starttypen
\plaatsnaastelkaar {\omlijnd{Hans}} {\omlijnd{Ton}}
\plaatsonderelkaar {\omlijnd{Hans}} {\omlijnd{Ton}}
\stoptypen

\paragraaf[tekstblokken]{Tekstblokken}
\index{verplaatsen}
\index{blokken+verplaatsen}
\index{blokken+nummering}
\index{nummeren+blokken}
\macro{\tex{definieerblokken}}
\macro[beginvanblok]{\tex{beginvan<<blok>>}}
\macro{\tex{verbergblokken}}
\macro{\tex{selecteerblokken}}
\macro{\tex{gebruikblokken}}
\macro{\tex{handhaafblokken}}
\macro{\tex{verwerkblokken}}
\macro{\tex{stelblokin}}
\macro{\tex{reset}}

Om praktische redenen kan een tekst wel eens op een andere
plaats in de brontekst staan dan in de gezette tekst.
Bovendien kan de wens bestaan bepaalde delen van de tekst
niet of meerdere malen op te nemen. Het hier beschreven
mechanisme is een van de oudste in \CONTEXT. Het was
bovendien een van de redenen om een eigen systeem te
schrijven.

\stop  \message{[check i.v.m. versie voorlopig]}

Het is mogelijk delen van de tekst te markeren voor
verbergen en verplaatsen. Eerst wordt vastgelegd wat men
verplaatst:

\toonsetup{definieerblok}

Eventueel mogen meerdere namen worden opgegeven, gescheiden
door een comma. Na het geven van dit commando kan men blokken
markeren met:

\startvoorbeeld
\starttypen
\beginvan<<naam>>
....................
....................
\eindvan<<naam>>
\stoptypen
\stopvoorbeeld

Tussen het \type{begin}|| en \type{eind}||commando kunnen in
principe alle (soorten) commando's worden opgenomen.

Met de volgende commando's kunnen blokken worden
verborgen en opgeroepen:

\toonsetup{verbergblokken}

\toonsetup{gebruikblokken}

\toonsetup{handhaafblokken}

\toonsetup{selecteerblokken}

\toonsetup{verwerkblokken}

Een tekst moet eenmaal door \TEX\ zijn gehaald om de
commando's effect te laten hebben. Er mogen meerdere namen
tegelijk worden opgegeven, bijvoorbeeld
\type{[vraag,antwoord]}.

In verborgen en opgehaalde blokken kunnen commando's zijn
opgenomen die automatisch nummeren. Hiermee moet bij het
ophalen van blokken rekening worden gehouden. Stel dat in een
tekst vragen en antwoorden voorkomen. Door deze vragen en
antwoorden als blokken in de tekst op te nemen, heeft men de
mogelijkheid om:

\startopsomming[n,opelkaar,afsluiter]
\som  op dezelfde plaats vragen en antwoorden op te nemen
\som  alleen de vragen op te nemen en de antwoorden in een
      apart hoofdstuk te plaatsen
\som  zowel vragen als antwoorden in aparte hoofdstukken op
      te nemen
\som  de antwoorden niet op te nemen
\som  enz.
\stopopsomming

Als we voor optie 2 kiezen, zien de verschillende definities
er als volgt uit:

\startvoorbeeld
\starttypen
\doordefinieren[vraag][plaats=boven,tekst=Vraag]
\doordefinieren[antwoord][plaats=boven,tekst=Antwoord]

\definieerblokken[vraag,antwoord]

\verbergblokken[antwoord]
\stoptypen
\stopvoorbeeld

Een vraag en antwoord zien er in de brontekst nu als volgt
uit:

\startvoorbeeld
\starttypen
\beginvanvraag
\vraag Waarom gebruiken we blokken? \par
\eindvanvraag

\beginvanantwoord
\antwoord Dat weet ik niet. \par
\eindvanantwoord
\stoptypen
\stopvoorbeeld

In de tekst worden nu alleen de vragen gezet. De vragen en
antwoorden worden beide genummerd. De antwoorden kunnen
worden opgeroepen door:

\startvoorbeeld
\starttypen
\hoofdstuk{Antwoorden}

\reset[antwoord]
\gebruikblokken[antwoord]
\stoptypen
\stopvoorbeeld

Het commando \type{\reset...} is nodig om te voorkomen dat er
wordt doorgenummerd en de antwoorden synchroon lopen met de
vragen. Als de antwoorden aan het eind van het betreffende
hoofdstuk moeten staan, dan gebruikt men bijvoorbeeld de
commando's:

\startvoorbeeld
\starttypen
\paragraaf{Antwoorden}

\reset[antwoord]
\selecteerblokken[antwoord][criterium=hoofdstuk]
\stoptypen
\stopvoorbeeld

Het kan ook nodig zijn het referentiemechanisme stop te
zetten:

\startvoorbeeld
\starttypen
\stelrefererenin[status=stop]
\stoptypen
\stopvoorbeeld

Een wat gecompliceerder situatie is de volgende. Stel dat men
in een tekst (bijvoorbeeld) formules opneemt en in een apart
hoofdstuk alleen de belangrijkste formules nog eens wil
herhalen. De niet te herhalen formules dienen in dat geval te
worden gemarkeerd met \type{[-]}.

\startvoorbeeld
\starttypen
\definieerblokken[formule]

\beginvanformule
\plaatsformule[newton 1]$$f=ma$$
\eindvanformule

Dit kunnen we ook schrijven als:

\beginvanformule[-]
\plaatsformule[newton 2]$$m=f/a$$
\eindvanformule
\stoptypen
\stopvoorbeeld

Bij het oproepen van de formules wordt alleen de eerste
formule gezet. De rest wordt wel uitgevoerd, zodat nummers en
dergelijke kloppen.

Het omgekeerde kan ook. Standaard worden bij verborgen
blokken de globale toekenningen ongedaan gemaakt. Dit
betekent bijvoorbeeld dat bij commando's die zijn
gedefinieerd met behulp van \type{\doornummeren} zoals
vragen, antwoorden of definities het nummeren tijdelijk
wordt stilgezet. Wil men toch doornummeren, dan kan men
\type{[+]} toevoegen.\voetnoot{Bij gebruik van
\type{\doornummeren} binnen blokken kan beter de
\type{\start}\type{...}\type{\stop}||variant worden gebruikt
(zie~\op{bladzijde}[doornummeren]).}

Bij de instellingen van de commando's die gebruik maken van
het nummermechanisme zien we (in een aantal gevallen) de
parameter \type{blokwijze}. Deze parameter heeft betrekking
op het nummeren binnen blokken, bijvoorbeeld per hoofdstuk.

Stel dat we bijvoorbeeld in een studietekst de vragen en
antwoorden in tekstblokken zetten. De vragen plaatsen we in
de studietekst en de antwoorden in een bijlage. Beide staan
in dezelfde \ASCII||tekst echter vlak na elkaar. Rekening
houdend met wat hierboven reeds is gezegd, loopt de
nummering van de antwoorden synchroon met die van de vragen.
Als we de vragen en antwoorden \type{perhoofdstuk} nummeren,
dan komt automatisch het nummer van het betreffende
hoofdstuk voor de nummers van de antwoorden. Antwoord~4.5
hoort dus bij vraag~4.5 in hoofdstuk~4. Bij het plaatsen van
een blok gelden dus de hoofdstuk- en paragraafnummers van de
oorspronkelijke plaats van het blok.

Als we in het antwoord andere genummerde elementen opnemen,
bijvoorbeeld formules, dan zal ook daar standaard het nummer
van het hoofdstuk waar het antwoord vandaan komt voor het
nummer van de formule worden gezet, bijvoorbeeld (4.1). Het
kan echter de voorkeur verdienen de formules nummers te
geven die passen bij dat van de bijlage, dus niet (4.1) maar
(A.1). Dit kunnen we afdwingen door met
\type{\stelformulesin} de parameter \type{blokwijze} de
waarde \type{nee} te geven.

Dit lijkt een ingewikkeld verhaal en het is dat misschien ook
wel. In de praktijk zal men echter niet snel tegen deze
situatie aanlopen.

Hierboven is reeds stilgestaan bij het initialiseren
(resetten) van tellers. In het kader van uniformiteit is ook
het volgende commando te gebruiken:

\toonsetup{reset}

Vooruitlopend op een mogelijkheid blokken te sorteren, is
een aanvullend selectiemechanisme beschikbaar. Bij \type
{\gebruikblokken} en \type {\selecteerblokken} is de tweede
set \setchars\ optioneel. Als we een blok \citeer {tags}
meegeven, kunnen we later met behulp van deze tweede set
haakjes blokken op \citeer {tag} oproepen.

\startvoorbeeld
\starttypen
\beginvanopmerking[belangrijk]
Dit is een heel belangrijke opmerking!
\eindvanopmerking
\stoptypen
\stopvoorbeeld

We kunnen nu de \citeer {belangrijke} opmerkingen oproepen
met:

\startvoorbeeld
\starttypen
\gebruikblokken[opmerking][belangrijk]
\stoptypen
\stopvoorbeeld

of

\startvoorbeeld
\starttypen
\selecteerblokken[opmerking][belangrijk][criterium=hoofdstuk]
\stoptypen
\stopvoorbeeld

Er mogen meerdere blokken en \citeer {tags} worden opgegeven,
gescheiden door een comma. Ook mogen blokken worden genest:

\startvoorbeeld
\starttypen
\beginvanoefening
\beginvanvraag
\vraag Is dit duidelijk? \par
\eindvanvraag
\beginvanantwoord
\antwoord Jazeker! \par
\eindvanantwoord
\eindvanoefening
\stoptypen
\stopvoorbeeld

In dit geval worden dus drie blokken gebruikt. Genummerde
vragen en antwoorden zijn op te roepen met
\type{\doornummeren} (zie \in{paragraaf}[doornummeren]).

Blokken worden weggeschreven in een file. Als blokken worden
opgehaald, moet deze file beschikbaar zijn. Dit betekent dat
men de tekst (ten minste) twee maal moet verwerken. Als men
echter blokken aan het eind van een file oproept, dan kan
met ��n verwerkingsslag worden volstaan, mits voordat de
blokken worden opgeroepen het volgende commando is gegeven:

\toonsetup{geenblokkenmeer}

Na dit commando mogen dus geen blokken meer worden
gedefinieerd, maar wel worden opgeroepen. Als we
bijvoorbeeld vragen en antwoorden in de tekst als blok
hebben opgenomen, dan kunnen we dit commando wel gebruiken
als we de antwoorden aan het eind van de tekst plaatsen,
maar niet als we ze aan het eind van een hoofdstuk opnemen.

Er zullen nog, in de pas met de wensen, commando's worden
ontwikkeld die lokale aanpassingen in de layout
ondersteunen.\voetnoot{Doordenker: wat doet het commando
\type{\pagina} in een blok.} Voorlopig dient men zich te
behelpen met het commando:

\toonsetup{stelblokin}

Een blok wordt binnen een groep uitgevoerd, met andere
woorden: binnen \argchars. De aan \type{voor} en
\type{na} toegekende commando's worden buiten deze groep
uitgevoerd, \type{binnen} wordt binnen het blok uitgevoerd.
We kunnen bijvoorbeeld een opgeroepen blok markeren
met een tekst in de marge door voor het oproepen de volgende
instelling te doen:

\startvoorbeeld
\starttypen
\definieerblok[stukjetekst]

\beginvanstukjetekst
Een stukje tekst.
\eindvanstukjetekst

\stelblokin[stukjetekst][binnen=\margetitel{opgeroepen}]
\gebruikblokken[stukjetekst]
\stoptypen
\stopvoorbeeld

Het eerste stukje tekst wordt nu gezet zonder aanduiding in
de marge, het tweede met aanduiding.

Als we \type{voor} in plaats van \type{binnen} hadden
gebruikt, waren we in de problemen gekomen met het
groeperen.

Het is mogelijk blokken uit een andere tekst te importeren.
Men kan bijvoorbeeld delen in een cursisthandleiding als blok
defini\"eren en in de docenthandleiding oproepen.

\startvoorbeeld
\starttypen
\stelblokin
  [huiswerk]
  [file=cursist,
   voor=\startachtergrond,
   na=\stopachtergrond]
\stoptypen
\stopvoorbeeld

In dit geval worden de blokken opgehaald die in de file
\type{cursist.tex} zijn gedefinieerd. Deze blokken worden in
dit voorbeeld netjes van een achtergrond voorzien (kleur of
raster). Als we met het hierboven beschreven mechanisme in
het cursistmateriaal de blokken van tags hebben voorzien,
bijvoorbeeld:

\startvoorbeeld
\starttypen
\beginvanhuiswerk[bijeenkomst 1]
..........
\eindvanhuiswerk
\stoptypen
\stopvoorbeeld

dan kunnen we in de docenthandleiding de blokken op naam
oproepen:

\startvoorbeeld
\starttypen
\gebruikblokken[huiswerk][bijeenkomst 1]
\stoptypen
\stopvoorbeeld

Bij grote files kost dit wel wat tijd, maar daar staat
tegenover dat we gegarandeerd de goede huiswerkopdrachten in
de docenthandleiding opnemen. Bovendien scheelt het typewerk.

Vragen en antwoorden lenen zich goed voor het (ver)plaatsen
in blokken. Het onderstaande voorbeeld illustreert dit. Omdat
commando's als \type{\vraag} een alinea als argument hebben,
zijn de \type{\par}'s en/of lege regels essentieel.

Bij de instellingen zien we dat vragen en antwoorden aan
elkaar zijn gekoppeld. Zo'n koppeling heeft alleen betekenis
bij interactieve teksten.

\startvoorbeeld
\starttypen
\definieerblok[vraag]
\definieerblok[antwoord]

\doornummeren[vraag][plaats=inmarge,koppeling=antwoord]
\doornummeren[antwoord][plaats=boven,koppeling=vraag]

\verbergblokken[antwoord]

\starttekst

\hoofdstuk{Blokken}

Het woord blokken komen we in het nederlands in verschillende
betekenissen tegen. Enkele hiervan zijn we in de bovenstaande
tekst reeds tegengekomen.

\beginvanvraag
  \startvraag
  Als we zeggen dat iemand \citeer {zit te blokken} bedoelen we dat iemand
  vrij hard zit te studeren.

  Waar komt de uitdrukking \citeer {zitten te blokken} eigenlijk vandaan?
  \stopvraag
\eindvanvraag

\beginvanantwoord
  \antwoord Ik zou niet weten waar deze uitdrukking vandaan komt. Ik word
  met deze vraag voor het blok gesteld. \par
\eindvanantwoord

\beginvanvraag
  \vraag Iemand kan zich voor het blok gesteld vinden. Wat wordt hiermee
  bedoeld? \par
\eindvanvraag

\beginvanantwoord
  \antwoord Ook op deze vraag moet ik het antwoord schuldig blijven.
  Misschien dat de lezer het weet? \par
\eindvanantwoord

Een blok doet ons meestal aan iets massiefs denken, iets
drie||dimensionaals. De termen {\em tekstblok} en {\em plaatsblok}
hebben daarentegen betrekking op twee||dimensionale karakters en
afbeeldingen.

\hoofdstuk{Antwoorden}

\gebruikblokken[vraag,antwoord]

\stoptekst
\stoptypen
\stopvoorbeeld

Met \type {\verwerkblokken} worden blokken wel verwerkt, maar
niet geplaatst. Stel dat we twee soorten vragen hebben:

\starttypen
\definieerblok[eenvoudigevraag,moeilijkevraag]
\stoptypen

Als beide soorten vragen gebruik maken van dezelfde
nummering, dan kunnen we bij het oproepen van de moeilijke
vragen, de nummering synchroon laten lopen met de
oorspronkelijke volgorde, door de eenvoudige vragen wel te
verwerken, maar niet te plaatsen.

\starttypen
\verwerkblokken[eenvoudigevraag]
\gebruikblokken[moeilijkevraag]
\stoptypen

\paragraaf[naastblokken]{Naastblokken}
\index{spiegelen}
\index{blokken+verplaatsen}
\index{verplaatsen}

Als aanloop tot een meer geavanceerd mechanisme voor het op
de spiegelpagina plaatsen van materiaal, is het volgende
commando beschikbaar:

\toonsetup{startnaast}

Dit commando heeft alleen zin bij een enkelzijdige layout.
Alles tussen \type{start} en \type{stop} wordt op de
linkerbladzijde gezet en wel zo dat het uitlijnt met de
volgende paragraaf.

\toonsetup{stelnaastplaatsenin}

\paragraaf[margeblokken]{Margeblokken}
\index{marges+blokken}
\macro{\tex{startmargeblok}}
\macro{\tex{stelmargeblokkenin}}

Er kunnen, vooralsnog binnen grenzen, figuren en tekst in de
marge worden geplaatst. De marge wordt in dat geval beschouwd
als een soort pagina naast de lopende tekst.

\toonsetup{startmargeblok}

Een en ander is instelbaar met:

\toonsetup{stelmargeblokkenin}

{\em Het mechanisme om blokken in de marge te plaatsen is nog
in ontwikkeling. Het zou daarom prematuur zijn er hier al te
diep op in te gaan.}

\paragraaf[verbergen]{Tekst verbergen}
\index{verbergen}
\macro{\tex{startverbergen}}

Het is mogelijk een deel van een tekst te verbergen (over te
slaan) door het te omringen met:

\toonsetup{startverbergen}

\paragraaf[uitstellen]{Tekst uitstellen}
\index{uitstellen}
\macro{\tex{startuitstellen}}

Het plaatsen van tekst kan worden uitgesteld tot een
volgende bladzijde. Dit kan bijvoorbeeld nodig zijn bij het
plaatsen van (wat grotere) figuren en tabellen. De
uitgestelde tekst wordt direkt geplaatst na de volgende door
\TEX\ vastgestelde of door de gebruiker geforceerde
pagina||overgang.

\toonsetup{startuitstellen}

Er kunnen meerdere stukken tekst worden opgespaard. Het
proces van opsparen en oproepen wordt op het scherm gemeld.

\startvoorbeeld
\starttypen
\startuitstellen
\plaatsfiguur{Een vrij groot figuur.}{...}
\stopuitstellen
\stoptypen
\stopvoorbeeld

Als er veel is opgespaard, of als het opgespaarde figuur een
hele bladzijde in beslag neemt, dan is het aan te bevelen
aan het (laatste) opsparen het commando \type{\pagina} toe
te voegen. Doet men dit niet, dan bestaat de kans dat
figuren (en andere plaatsblokken) nog een bladzijde later
worden opgenomen. Dit is een gevolg van het feit dat het
plaatsen van figuren en dergelijke via een ander mechanisme
verloopt.

\startvoorbeeld
\starttypen
\startuitstellen
\plaatsfiguur{Een heel erg groot figuur.}{...}
\pagina
\stopuitstellen
\stoptypen
\stopvoorbeeld

\paragraaf[buffers]{Buffer}
\index{buffers}
\index{verplaatsen}
\macro{\tex{startbuffer}}
\macro{\tex{stelbufferin}}
\macro{\tex{haalbuffer}}
\macro{\tex{typebuffer}}

Een eenvoudige variant op het verplaatsen van blokken is het
werken met buffers. Buffers worden in een file met de
extensie \type{tmp} opgeslagen. Buffers kunnen worden
gebruikt om macro's wat overzichtelijker te maken. Bovendien
kan een tekst meerdere malen worden gezet, zonder dat ze
opnieuw hoeft te worden ingetypt.

\toonsetup{startbuffer}

\toonsetup{haalbuffer}

\toonsetup{typebuffer}

Het onderstaande voorbeeld toont het gebruik van deze
commando's.

\startbuffer
\startbuffer
We zien hier dat {\em uitstel} niet altijd tot {\em afstel} leidt.
\stopbuffer

\startregels
{\tf \haalbuffer}
{\bf \haalbuffer}
{\sl \haalbuffer}
\stopregels
\stopbuffer

\startvoorbeeld
\typebuffer
\stopvoorbeeld

Dit levert:

\startrealiteit
\haalbuffer
\stoprealiteit

De hier meegegeven naam mag worden weggelaten. Een naam
heeft eigenlijk alleen zin als er meerdere buffers door
elkaar worden aangeroepen. In de regel kan men volstaan met
de standaard buffer. De meeste voorbeelden in deze
handleiding zijn met behulp van buffers gezet.

Zoals we in \in{hoofdstuk}[tabellen] kunnen zien, kan het
laatste argument van \type{\plaats<<blok>>} vrij omvangrijk
zijn. Om het overzicht te behouden kan men een tabel in een
buffer plaatsen en vervolgens oproepen.

\startvoorbeeld
\steltypenin[optie=commandos]
\starttypen
\startbuffer
... <</rm veel regels>> ...
\stopbuffer

\plaatstabel{Een tabel}{\haalbuffer}
\stoptypen
\stopvoorbeeld

Instellingen met betrekking tot de buffer vinden plaats met:

\toonsetup{stelbufferin}

Het eerste argument is optioneel en heeft betrekking op zelf
gedefinieerde bufferen. Men kan namelijk zelf een buffer
defini\"eren met:

\toonsetup{definieerbuffer}

Pas echter op voor conflicterende namen en gebruik als het
even kan hoofdletters. Na dit commando zijn \type
{haal<<buffer>>} en \type {type<<buffer>>} beschikbaar
waarbij \type{<<buffer>>} de naam is van de buffer.

\stoponderdeel

