summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ntgclass/artdoc.tex
blob: 346688d39c8c9712103d0e641ff7ed1b09979c5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
\documentclass[a4paper]{artikel1} %ja,ja, onze eigen documentstijl!
\usepackage[dutch]{babel}

\begin{document}
\date{3 september 1989 / 3 juni 1994}
\title{Documentstijlen Artikel$x$\\
  Verantwoording}
\author{Victor Eijkhout}
\maketitle
 
\begin{abstract}
  Dit is de verantwoording voor de documentstijlen `Artikel1',
  `Artikel2', en~`Artikel3'.  Deze stijlen zijn bedoeld als een
  \emph{mogelijke} vervanging van de stijl `article'. In dit verhaal
  zijn beschreven
\begin{enumerate}
\item de redenen waarom bepaalde veranderingen zijn aangebracht;
\item de parameters en commando's die op de veranderingen betrekking
  hebben; en
\item de wijze waarop de veranderingen zijn ge"implementeerd.
\end{enumerate}
Tegelijk is dit document een uitprobeerobject voor de nieuwe
stijlen\footnote{De hoeveelheid gebruikte \LaTeX-constructies is
  derhalve aan de ruime kant. De lezer wordt vriendelijk gevraagd zich
  hieraan niet te ergeren.}.
\end{abstract}
 
 
\part{Algemeen}
 
\section{Verantwoording}
 
De documentstijlen `Artikel$x$' zijn bedoeld als verbetering van de
standaard \LaTeX-document\-stijl `Article'. De meeste macros zijn
derhalve modificaties van constructies uit `article.sty' of
`latex.tex'.
 
Bij het ontwerpen van de opmaak heb ik advies gehad van Inge
Eijkhout~\cite{Inge}.  Het boek `Tekstwijzer'~\cite{Karel} van Karel
Treebus was verder een hulp (de opmaak van de inhoudsopgave in
`Artikel1' is daar zelfs compleet uit overgenomen).  Ook erken ik de
invloed van John Miles' `Ontwerpen voor Desktop
Publishing'~\cite{Miles}.  Nico Poppelier heeft met raad en daad ter
zijde gestaan.  Wat er fout is aan deze stijlen blijft natuurlijk voor
mijn rekening komen.
 
\section{Overzicht}\label{overzicht:sectie}
 
De documentstijlen `Artikel$x$' zijn geheel compatibel met `Article':
er zijn geen commando's toegevoegd of weggelaten.  De veranderingen
ten opzichte van `Article' betreffen enkel de opmaak.  In het
bijzonder is er gesleuteld aan:
\begin{enumerate}
\item witregels rond koppen van secties, subsecties en subsubsecties
  (van nu af aan `sectiekoppen' genoemd),
\item verdere veranderingen aan de opmaak van deze koppen,
\item de hoeveelheid inspringing bij lijststructuren (gegenereerd met
  het \LaTeX\ \verb.\@list. commando), in het bijzonder `itemize',
  `enumerate', en (specifiek voor `article') `description', en
\item verdere opmaak van lijststructuren,
\item verdere opmaak van sectiekoppen, en
\item de inhoudsopgave.
\end{enumerate}
Over het algemeen is het de bedoeling geweest een strakke opmaak te
krijgen (de standaard stijlen van \LaTeX\ `zwemmen' over de pagina).
 
\section{Exportkwaliteit documentstijlen}
 
De documentstijlen `Artikel$x$' kunnen zowel gebruik maken van de
stijloptie `Dutch' (auteur: Johannes Braams) als van `German' (auteur:
Hubert Partl), als van elke andere optie die de door Partl in `German'
gesuggereerde parametrisaties doorvoert.  Deze opties zijn een
reparatie voor het euvel dat de meeste taalspecifieke termen in de
stijlen van de heer Lamport niet geparametriseerd zijn.
 
In `Dutch' worden definities uit `Article' en dergelijke overreden
door geparametriseerde versies\footnote{Een listige truc laat `Dutch'
  achterhalen door welke stijl hij aangeroepen is; de `Artikel'
  stijlen zijn een onbekende stijl voor `Dutch'}, die op verschillende
talen ingesteld kunnen worden.  Deze definities hadden natuurlijk al
in de stijlen van heer Lamport geparametriseerd moeten zijn.
 
De optie `German' is minder drastisch dan `Dutch': deze gaat ervan uit
dat hij door geparametriseerde stijlbestanden opgeroepen wordt, en zet
zelf alleen de parameters.  De `Artikel' stijlen zijn geparametriseerd
volgens de suggestie van Partl.
 
\subsection{Kanttekening}De stijl `Dutch' parametriseert
onder andere het commando `abstract'. Aangezien ik dit commando om
opmaaktechnische redenen al herdefinieer, kan `Dutch' niet op
`Artikel' losgelaten worden alsof het gewoon `Article' was. Momenteel
is `Artikel' dus een `onbekende documentstijl' waar het `Dutch'
betreft, en wordt er geen gebruik gemaakt van het feit dat een aantal
definities zich ook in `Dutch' bevinden.
 
\subsection{Een steek onder water}
Hoewel het mij tegen de borst stuit het Engels een voorkeurspositie te
geven onder de wereldtalen --~zeker in een voor het Nederlands
bedoelde stijl~-- heb ik besloten de Engelse parameterwaarden uit
`Dutch' als verstekwaarde in de `Artikel'-stijlen op te nemen. Een
belangrijk argument hiervoor is dat dit de stijlen geheel gelijk maakt
aan `Article' op commando\-nivo: zonder extra opties worden er Engelse
teksten geleverd, en voor Nederlands of Duits in een optiebestand
nodig.
 
Een minstens zo belangrijk argument\footnote{mij door Nico Poppelier
  aan de hand gedaan} hiervoor is dat de `Artikel'-stijlen zo een
steek onder water naar Leslie Lamport vormen. Ze zeggen als het ware
`\emph{Look here buster,} zo had het van begin af aan moeten zijn'.
 
\part{Mechanismen; veranderingen in Artikel1}
 
In de nu volgende subsecties worden de veranderingen ten opzichte van
de oude artikelstijl besproken in volgorde van oplopende
moeilijkheidsgraad van implementatie. De algemene mechanismen worden
besproken, alsmede hun concrete realisatie in~`Artikel1'.
 
\section{Trivialiteiten}
 
In de `article'-stijl staat `raggedbottom' aan voor enkelzijdige
documenten. Dit moet uit. `Frenchspacing' dient altijd aan te staan.
 
\subsection{Paginanummers}
De gebruiker kan met \verb.\pagestyle{STIJL}. een stijl van kop- en
voetregels opgeven. De `Article' stijl definieert `plain'
(gecentreerde voetregels), en `headings' en `myheadings'
(asymmetrische kopregels).  Als een gebruiker een stijl specificeert,
resulteert dat in de aanroep van een commando \verb.\ps@STIJL..
 
Omdat ik paginanummers wil hebben die rechts staan voor enkelzijdige
documenten, en links/rechts voor tweezijdige documenten heb ik het
commando \verb.\ps@plain., de verstekwaarde, omgebouwd.
 
\subsection{De samenvatting in `Artikel1'}
In `Artikel1' heb ik de samenvatting tegen de linker kantlijn aan
getrokken. Het is nu enkel een groep waarbinnen de korpsgrootte
`small' gebruikt wordt.
 
\section{Makkelijke veranderingen: witregels}
 
De \LaTeX\ artikelstijl wordt gekenmerkt door een overmaat aan
witregels. Hierin is stevig gesnoeid.
 
\subsection{Witregels rond koppen}
 
De `article'-stijl maak zowel het wit boven als onder koppen rekbaar.
Gevoegd bij het feit dat de `natuurlijke lengte' van dit wit al aan de
ruime kant is, maakt dit het paginabeeld erg los. Witregels moeten
kleiner worden, en mogen tussen kop en de eerste regel van de tekst
niet rekbaar zijn.  Verder verdient het aanbeveling de witruimte in
termen van het regeltransport aan te geven.
 
\subsubsection{Relevante concepten}
Het wit onder en boven koppen wordt bepaald door parameters 4~en~5 van
\verb.\@start.\-\verb.section., hetwelk commando in `art1$x$.sty'
gebruikt wordt om de sectiekopcommando's te defini"eren. Parameter~4
dient (in ons geval) het negatieve van de gewenste skip te
specificeren.
 
\newpage
\subsubsection{Implementatie van de veranderingen}
De volgende waarden voor de verticale witruimte zijn gebruikt
\begin{table}[ht]
  \begin{center}
    \begin{tabular}{|l|r|r|} \hline
      \emph{kop}   & \emph{wit boven kop}&\emph{wit onder kop}\\ \hline
      section      & -2-1+.5   & .5\\
      subsection   & -1-.5+.25 & .25\\
      subsubsection& -1-.5+.25 & .25\\ \hline
    \end{tabular}
  \end{center}
  \caption{Hoeveelheid vertikaal wit in termen van
    `normalbaselineskip'}
\end{table}
(in eerste instantie waren mij hogere waarden gesuggereerd, na
inspectie bleken deze waarden beter te voldoen).
 
De hoeveelheid wit boven koppen steekt niet zo nauw.  Die eronder wel.
In het bijzonder is het een merkwaardig idee het wit onder koppen
rekbaar te hebben.  De grootte van dit wit draagt aanzienlijk bij aan
het ritme van de pagina.
 
 
Opmerking: Aangezien alle skips in termen van de `baselineskip'
gegeven worden, kunnen deze definities opgetild worden van het
optiebestand naar het stijlbestand.
 
 
\subsection{Witregels rond lijststructuren}
 
Witregels rond de items van een lijststructuur maken het paginabeeld
onrustiger, en zijn vaak niet functioneel: een `itemize'-structuur is
meestal \'e\'en doorlopend betoog waarin witregels ongewenst zijn.  Er
valt iets voor te zeggen rondom `description'-structuren wel witregels
toe te staan, aangezien de beschrijvende termen in feite een kopje
vormen.
 
De eerste tekstregel na een lijststructuur dient niet ingesprongen te
worden, ongeacht of de gebruiker een regel open gelaten heeft achter
de lijst (bij voorbeeld om zijn invoer overzichtelijker te maken).
 
 
\subsubsection{Inventaris van relevante concepten}
\LaTeX\ bestuurt witregels rond en in lijststructuren met de
parameters `topsep', `partopsep', `itemsep', `parsep'.
\begin{figure}[hb]
  \begin{center}
    \begin{tabular}{ll}
      topsep      &  ruimte boven een lijst\\
      partopsep   &  extra als de lijst een nieuwe paragraaf opent\\
      itemsep     &  ruimte  tussen items\\
      parsep      &  ruimte tussen paragrafen.\\
    \end{tabular}
  \end{center}
  \caption{Parameters in tabel-omgeving}
\end{figure}
Deze parameters worden gezet in `art1$x$.sty' in het commando
\begin{verbatim}
@list\romannumeral\the\@listdepth
\end{verbatim}
hetgeen ge`eval'd wordt in \verb.\@list..
 
Spaties na een lijststructuur kunnen onderdrukt worden door
\verb.\if@ignoretrue. toe te voegen aan `enditemize'
en~`endenumerate'. Het is nog niet duidelijk of voorkomen kan worden
dat er ingesprongen wordt als de gebruiker een lege regel ingeeft.
 
 
\subsubsection{Implementatie van de veranderingen}
Voor de gebruikte lijststructuren (met mogelijke uitzondering van
`description') dienen al deze parameters nul te zijn.
 
Opmerking: als voor de `labelwidth' en de `labelsep' een oplossing in
termen van fontparameters gevonden wordt, kunnen de `listi' en
dergelijke commando's opgetild worden van het stijloptiebestand naar
het stijlbestand zelf.
 
 
\subsection{Verdere witregels}
Het wit rond lijststructuren wordt bestuurd door de locale `topsep',
die we boven nul gemaakt hebben, en door de globale `topsep'.  Voor
een strakke opmaak is het wenselijk die nul te maken, echter hiermee
verdwijnt ook het wit op een plaats waar dat wel wenselijk is: rond
`verbatim' delen van het document. De oplossing zou kunnen zijn het
invoegen van een `topsep' in het \verb.\verbatim.  commando.
 
De witregel tussen voetnoten wordt bestuurd door de `footnotesep'. Ik
zou niet weten waarom die anders dan nul zou moeten zijn.
 
 
\section{Ook niet moeilijk: fonts}
 
Er moet wat met fonts gerommeld worden. Voornamelijk moeten ze
kleiner, en het cursief moet vervangen worden door wat in Nederlandse
terminologie `gecursiveerd' heet; wij \TeX ies kennen dit als
`slanted'.
 
\subsection{Fonts in sectiekoppen}
 
De fonts gebruikt in tussenkopjes zijn proefondervindelijk tot stand
gekomen, en waarschijnlijk nog aan mutatie onderhevig. De
oorspronkelijk idee"en komen uit de `Sober'-stijl van Nico Poppelier.
Daarna is het `italic' vervangen door `slanted'. Kwestie van smaak.
Ik hou niet van de~\mbox{\emph{cmti}}.  Verder is het klein kapitalen
font als `\dots~en hopeloos ouderwets'~\cite{Inge} de laan
uitgestuurd.
 
\subsection{Theorems en het `emphasize' font}
 
Om tekst te beklemtonen gebruikt \LaTeX\ het cursieve font
\texttt{cmti}.  Dit vin' ik niet mooi. Binnen de Nederlandse stijlen
wordt er dus beklemtoond met \texttt{cmsl}.  Ook in de `theorem'
omgevingen is deze vervanging doorgevoerd.
 
 
\section{Moeilijke veranderingen: eenheidsinspringing}
 
Ten einde een strakke paginaopmaak te verkrijgen, verdient het
aanbeveling het aantal (impliciete) kantlijnen tot een minimum te
beperken.  De radicaalste oplossing voor dit probleem bestaat uit
 
\begin{enumerate}
\item alle labels in lijststructuren tegen de linkerkantlijn aan te
  plaatsen (dit is niet zo mooi als er ver ingesprongen wordt),
\item voetnoten niet te laten inspringen (ingesprongen voetnoten zien
  er alleen goed uit als ze meer dan \'e\'en regel lang zijn), en
\item een eenheidsinspringing in te voeren voor
 \begin{itemize}
 \item alinea's,
 \item teksten van koppen op alle nivo's, en
 \item de ingesprongen tekst in lijststructuren.
 \end{itemize}
\end{enumerate}
Laten we er voorlopig dus vanuit gaan dat er een parameter
`unitindent' is. De berekening van deze grootheid komt verderop aan de
orde.
 
\subsection{Inspring bij lijststructuren}
 
Labels voor items in een lijst defini"eren gemakkelijk een tweede
kantlijn. Het kan dus gewenst zijn ze tegen de linkerkantlijn van de
omringende tekst aan te plaatsen.
 
\subsubsection{Inventaris van relevante concepten}
Een lijst op het eerste nivo springt in over `leftmargini'.  Het label
wordt van de tekst gescheiden door `labelsep', en heeft breedte
`labelwidth', tenzij de natuurlijke breedte groter is.  De linkerkant
van het label staat echter altijd op `labelwidth' plus `labelsep' van
de ingesprongen kantlijn.  De inhoud van het label wordt in de
omringende box geplaatst door het commando `makelabel'.
 
Al deze begrippen worden ingevuld in de commando's `list$x$'.
 
\subsubsection{Implementatie van de veranderingen}
Het zetten van parameters kan mooi in de `list$x$' commando's
gebeuren:
\begin{verbatim}
\def\@listi{\leftmargin=\unitindent
            \labelsep=\enspace
            \labelwidth=\leftmargin
            \advance\labelwidth by -\labelsep}}
\end{verbatim}
Als de `unitindent' door fontparameters bepaald wordt, hoeft deze
definitie niet meer in het optiebestand te staan, maar kan naar de
stijldefinitie opgetild worden.
 
Het veranderen van de definitie van `makelabel' is lastiger: dit moet
in het tweede argument van `list' gebeuren. We zullen dus `itemize' en
`enumerate' moeten herdefini"eren met een nieuwe definitie van
`makelabel'.
 
\subsubsection{Speciale behandeling eerste nivo}
 
Omdat de `unitindent' tamelijk groot uitvalt, heb ik ervoor gekozen
labels op het eerste nivo rechts aan te lijnen (waardoor ze dus in
bescheiden mate een nieuwe kantlijn definieren), andere labels lijnen
links.
 
Dit is ge"implementeerd door in het `commands' argument van
\verb.\@list. de definitie van `makelabel' afhankelijk te maken van de
\verb.\@listdepth..
 
 
 
\subsection{Inspring bij koppen}
 
De plaatsing van de tekst van koppen (achter het sectienummer) is in
\LaTeX\ ogenschijnlijk willekeurig, en draagt hiermee (zeker als twee
koppen onder elkaar staan) bij tot een onrustig paginabeeld. Dit kan
aanmerkelijk verbeterd worden door voor het sectienummer en de erop
volgende spatie een eenheidsbreedte te nemen.
 
\subsubsection{Inventaris van relevante concepten}
In het commando \verb.\@sect. wordt een commando \verb.\@svsec.
ge`edef't dat het sectie nummer afdrukt, gevolgd door
`1~em'\footnote{Ter herinnering:
 \begin{itemize}
 \item Er zijn 5 nivo's van sectiekoppen: `section', `subsection',
   `subsubsection', `paragraph', en `subparagraph'.
 \item De eerste 3 nivo's zijn genummerd.
 \item De laatste twee nivo's geven een kop die in de tekst is
 ingebed.
 \end{itemize}}\footnote{Aangezien de definitie van 'em' met het
 gebruikte font meeverandert, geeft het gebruik van twee of drie
 koppen onder elkaar een merkwaardig visueel effect.}.
 
\subsubsection{Implementatie van de veranderingen}
Er moet een nieuwe versie van \verb.\@sect. komen die een verbeterde
\verb.\@svsec. bevat:
\begin{verbatim}
\edef\@svsec{\hbox to \unitindent
                {\csname the#1\endcsname\hfil}}
\end{verbatim}
In plaats van `unitindent' kan als breedte ook een verdere
parametrisatie met
\begin{verbatim}\csname #1labelwidth\endcsname
\end{verbatim}
gekozen worden.  De `unitindent' kan als volgt gegenereerd worden:
\begin{verbatim}
\newdimen\unitindent
{\setbox0\hbox{\normalsize\bf 2.2.2\ }
 \global\unitindent=\wd0}
\parindent=\unitindent
\leftmargini=\unitindent
\end{verbatim}
 
Dit is helaas nog niet voldoende.  Als een gebruiker erg veel van
secties en subsecties houdt, kunnen de nummers een grotere breedte dan
die van `2.2.2' krijgen.  Daarom wordt het label iedere keer bij een
nieuw kopje opgemeten, en zonodig wordt de `unitindent' bijgesteld.
Bij het afsluiten van het document wordt dan de definitieve waarde
(die misschien de oude is, en misschien veel meer) naar het
\texttt{.aux}-bestand geschreven.  Dat wil zeggen: er wordt een
toewijzing van die waarde aan de unitindent weggeschreven.
 
Adders en voetangels te over: hiervoor moet het commando `enddocument'
herschreven worden.
 
 
\section{Verdere moeilijke veranderingen: de opmaak van
  lange koppen. Zoals deze dus.  Reeds. Antidisestablishmentarianism.
  Hottentottententententoonstelling.}
 
\LaTeX\ zet koppen als ingesprongen paragrafen. Het is echter niet
gewoon dat een meerregelige kop zo behandeld wordt: beter is het vrije
regelval te gebruiken en vooral woordafbreking (zelfs in samengestelde
woorden) te verbieden.
 
\subsection{Inventaris van relevante concepten}
Binnen het commando \verb.\@sect. wordt de kop van de sectie gezet als
\begin{verbatim}
{\interlinepenalty\@M #8\par}
\end{verbatim}
 
\subsection{Implementatie van de veranderingen}
Aan de zetcommando's voor de sectiekoppen dient een aanroep van
`headstyle' toegevoegd te worden, waar
\begin{verbatim}
\def\headstyle{\nohyphenation \rightskip=0cm plus 3cm}
\end{verbatim}
of zoiets.  Het commando `nohyphenation' kan op verschillende manieren
bereikt worden, ik heb gekozen voor \verb+\hyphenpenalty=10000+, en
idem zo voor de `exhyphenpenalty'.
 
\section{Opties}
 
De stijlen `Artikel1' en `Artikel3' hebben een door de gebruiker te
kiezen optie.  Hiermee kan de gebruiker de opmaak naar eigen
goeddunken varieren.  Misschien dat er nog wel meer van dat soort
opties komen.
 
\subsection{Hoe werken opties}
Een door de gebruiker gespecificeerde stijloptie wordt soms
gerealiseerd door een commando in het stijlbestand, en soms door een
in te laden optiebestand.  Het mechanisme dat dit bewerkstelligt is
het volgende.
 
Ergens bovenin het stijlbestand worden commando's \verb.\ds@OPTION.
gedefinieerd. Als de gebruiker de betreffende optie meegegeven heeft,
wordt dit commando uitgevoerd door \verb.\@options., dat ook ergens
bovenin het stijlbestand staat.  Voor die opties waarvoor geen
\verb.\ds@OPTION. macro gedefinieerd is, wordt na de verwerking van
het stijlbestand door \LaTeX\ een bestand \verb.OPTION.STY. geladen.
 
\section{De inhoudsopgave}
 
\subsection{Beschrijving}
\subsubsection{Inventaris van kwalen}
Treebus vindt het zogenaamde `uitpunten' van een inhoudsopgave een
minder geslaagd idee. Ook over het steeds verder inspringen van kopjes
in de inhoudsopgave is hij niet te spreken. Laat dit nu precies zijn
wat \LaTeX\ doet.
 
Wat mij dan nog stoort zijn de grote verschillen in zetwijze
van kopjes op verschillende nivo's.
 
\subsubsection{Remedie}
 
\paragraph{Kantlijnen}
Alle nummers worden tegen de linker kantlijn getrokken, en de kopjes
staan dan (allemaal) op `unitindent' van de linker kantlijn. Dit
levert geen problemen op omdat er net zoveel nivo's nummering in
kopjes als in de inhoudsopgave voorkomen.
 
\paragraph{Fonts}
Kopjes worden in drie verschillende fonts gezet om de hierarchie uit
te doen komen. Ik heb gekozen voor `bf', `sl', en `rm' in
`normalsize'. Er valt over te twisten of dit misschien gewoon de fonts
van de koppen zelf moeten zijn.
 
\paragraph{Verdere zetwijze}
Er wordt vrije regelval gebruikt. Het paginanummer verschijnt direct
achter het kopje (met een vaste hoeveelheid wit).
 
\subsection{Implementatie}
 
Ten eerste is er een commando \verb+\toc@font+ gekomen dat het font
bepaalt waarmee een kop in de inhoudsopgave gaat verschijnen.  Deze
bepaling gebeurt in \verb+\@sect+, die daartoe verder is aangepast.
 
Ten tweede is er, als vervanging van \verb+\@dottedtocline+,
een commando\\ \verb+\@regtocline+ dat de opmaak van de kop regelt.
De merkwaardige sequentie
\begin{verbatim}
\@tempdima=\unitindent 
\end{verbatim}
zorgt ervoor dat het nummer (dat in \verb+\@sect+ in een `numberline'
gestopt is) op de goede breedte gezet wordt.
 
De \verb+\l@TYPE+ commando's (waar `type' is `section' en dergelijke)
zijn omgezet zodat ze \verb+\@regtocline+ gebruiken.  Uitzondering:
\verb+\l@part+. Daar kom ik nog wel een keer aan toe.
 
 
 
\part{Veranderingen in Artikel2}
 
In de documentstijl `Artikel2' is voor veel zaken een geheel andere
keuze gemaakt dan in~`Artikel1'. Vaak betekende dit dat, gegeven de
moeite die in `Artikel1' geinvesteerd was, slechts een paar parameters
veranderd hoefden te worden.  In enkele gevallen, echter, moest een
geheel nieuwe aanpak gevolgd worden.
 
\section{Variaties}
 
De beide hier beschreven documentstijlen hebben als voornaamste
verbetering ten opzichte van `Article' een nadrukkelijk aanwezige
tweede kantlijn.  In `Artikel1' wordt deze kantlijn gebruikt door al
het eenmaal ingesprongen materiaal.  In~`Artikel2' wordt deze kantlijn
minder radicaal gevolgd:
\begin{itemize}
\item`verbatim' omgevingen worden weer gewoon tegen de linkerkantlijn
  geplaatst;
\item de eerste kantlijn voor lijststructuren bedraagt de helft van de
  paragraafinspinging; en
\item de labelbreedte van voetnoten is hieraan gelijk gemaakt.
\end{itemize}
Alles bij elkaar wordt het gewicht van de pagina verder tegen de
linkerkantlijn geplaatst.
 
Van een andere kant bekeken is de tweede kantlijn (zeg dat die door de
`parindent' bepaald wordt) in de stijl~`Artikel2' juist nadrukkelijker
aanwezig:
\begin{itemize}
\item alle tussenkopjes springen in over de `parindent, en
\item de eerste regel na een kopje springt ook in.
\end{itemize}
 
 
\section{Behandeling van koppen}
\subsection{Sectie, subsectie, subsubsectie}
\subsubsection{Elementaria}
 
Het laten inspringen van koppen gaat door een positieve waarde voor de
derde parameter van \verb.\@startsection.  te specificeren. Door de
vierde parameter positief te maken springt de eerste regel na de kop
ook in.
 
Omdat de tekst van de kopjes nu geen verdere kantlijn definieert hoeft
er niet zo'n moeite gedaan te worden om die te plaatsen als
in~`Artikel1'. Ik heb de normale \LaTeX-constructie van een vaste
`skip' weer in ere hersteld; op drie-tiende `em' deze keer.
 
\subsubsection{Complicaties}
 
Om te voorkomen dat bij lange koppen de tekst alsnog een tweede
kantlijn gaat defini"eren moest de \verb.\@hangfrom. die dit
bewerkstelligt verwijderd worden. Bij volledig verwijderen, echter,
zal de tweede regel van de kop tegen de linker kantlijn geplaatst
worden.  Ook niet de bedoeling.
 
In de aanpak die ik gevolgd heb hangt de tekst nu aan de inspringing;
het commando \verb.\@svsec. dat het nummer zet is gewoon in de tekst
geplaatst.
 
 
\subsection{Part}
 
Het zou leuk zijn als de eerste regel na een `part'-kop ook insprong.
Het al dan niet inspringen van deze regel wordt bestuurd door de
schakelaar \verb.\@ifafterindent.  waarop getest wordt in
\verb.\@afterheading..  Normaal wordt inspringen voorkomen door deze
schakelaar in `part' op onwaar te zetten.
 
Het zal de perceptieve lezer duidelijk zijn wat ik gedaan heb om
inspringen van de eerste regel na een `part' af te dwingen.
 
\section{De samenvatting}
 
In `Article' (maar niet in `Artikel1') wordt de samenvatting gezet
door middel van de `quotation' omgeving. Dit, op zijn beurt, is een
`list' met slechts een item, in dit geval de tekst van de
samenvatting. Net als in~`Article' zou ik de samenvatting ingesprongen
willen zien over de alineainspring. Dit lukt niet meer als de
samenvatting als een `quotation' gezet wordt, aangezien de
lijstinspringing (op het eerste nivo) de helft van de
alineainspringing bedraagt.
 
Ik heb er derhalve voor gekozen de samenvatting expliciet als een
lijst te zetten, waarbij in het tweede argument van `list' (het
argument waarin commando's meegegeven kunnen worden) de `leftmargin'
op `unitindent' gezet wordt.
 
\section{De inhoudsopgave}
 
De inhoudsopgave wordt in `Artikel2' net zo gezet als in~`Artikel1',
met het verschil dat de sectienummers nu niet links maar rechts
lijnen. Dit in het kader van het beklemtonen van de tweede kantlijn.
Hiertoe moest het commando `numberline' uit `LaTeX.tex' overgenomen en
aangepast worden.
 
Overigens is de tweede kantlijn in de inhoudsopgave verder naar rechts
dan in de rest van het document. De inhoudsopgave dient dus liever
niet op een tekstpagina te beginnen.
 
Dat de tweede kantlijn verder naar rechts staat betekent overigens dat
het woord `inhoudsopgave', dat als een sectiekop gezet wordt,
voorafgegaan moet worden door een `skip' ter breedte van het verschil.
 
 
 
\part{Veranderingen in Artikel3}
 
Uitgaande van `Artikel1' was het kinderspel een stijl te maken die net
zo strak links lijnend oogde, maar die bovendien geen
alinea\-inspringing heeft en dit compenseert met een `parskip'.
\begin{itemize}
\item Er is gekozen voor een `parskip' ter grootte van de helft van de
  `baselineskip'.
\item De `topsep' in lijststructuren --~de witruimte boven en onder de
  gehele lijst~-- is \emph{minus} de halve `parskip'; netto effect is
  dat hier de helft van de witruimte komt die zich tussen alineas
  bevindt.
\item De grootte van de `unitindent' kon ongewijzigd blijven,
  aangezien kopjes nog steeds op dezelfde wijze gezet worden.
\item Het wit onder kopjes is op nul gezet. Dit betekent niet dat er
  geen wit staat, want de `parskip' krijg je hoe dan ook kado.
\end{itemize}
Het geheel oogt wel aardig.
 
\begin{thebibliography}{9}
 
\bibitem{Inge}Inge Eijkhout, Gesprekken en correspondentie, 1989.
 
\bibitem{Leslie}Leslie Lamport, \emph{\LaTeX, a document preparation
    system}, Addison-Wesley, 1986.
 
\bibitem{Miles}John Miles, \emph{Ontwerpen voor Desktop
    Publishing\footnote{De Nederlandse uitgave is goedkoper dan de
      Engelse, maar doet een zware aanslag op je ogen, door het soort
      zetfout dat in \TeX\ onmogelijk zou kunnen voorkomen.}, Alles
    over layout en typografie op de personal computer}, Uitgeverij
  Mingus, Baarn~1988.
 
\bibitem{Karel}Karel Treebus, \emph{Tekstwijzer, een gids voor het
    grafisch verwerken van tekst}, SDU~uitgeverij, 1988.
 
\end{thebibliography}
 
 
\newpage
\tableofcontents
\listoftables
\listoffigures
 
\end{document}