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
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
|
% This is part of the book TeX for the Impatient.
% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
% See file fdl.tex for copying conditions.
\input fmacros
\chapter {Commandes pour \linebreak composer des pages}
\chapterdef{pages}
Cette section couvre des commandes qui concernent les
pages, leurs composants et la routine de sortie.
Pour une explication des conventions utilis\'ees dans cette section,
voir \headcit{Descriptions des commandes}{cmddesc}.
\begindescriptions
%==========================================================================
\section {Espaces inter-ligne et inter-paragraphe}
\begindesc
\cts baselineskip {\param{ressort}}
\cts lineskiplimit {\param{dimension}}
\cts lineskip {\param{ressort}}
\explain
^^{espacement de ligne}
\bix^^{ressort inter-ligne}
\bix^^|\baselineskip|
\bix^^|\lineskip|
\bix^^|\lineskiplimit|
Ces trois param\`etres d\'eterminent ensemble combien d'espace \TeX\ laisse entre
des \minref{bo\^\i te}s cons\'ecutives d'une \minref{liste verticale} ordinaire,
c'est-\`a-dire, les lignes d'un paragraphe.
Cet espace est appel\'e ``\minref{ressort inter-ligne}''.
Il est aussi ins\'er\'e entre les bo\^\i tes composant une vbox construite en
mode vertical interne.
^^{vbox//ressort inter-ligne pour}
Dans le cas courant, quand les bo\^\i tes ne sont pas anormalement hautes ou profondes, \TeX\
rend la distance de la ligne de base d'une bo\^\i te \`a la ligne de base de la
suivante \'egale \`a |\baselineskip|. Il fait cela en ins\'erant un ressort inter-ligne
\'egal \`a |\baselineskip| moins la profondeur de la bo\^\i te sup\'erieure (ainsi donn\'e
par ^|\prevdepth|) et la hauteur de la bo\^\i te du dessous. Mais si ce ressort
inter-ligne doit \^etre inf\'erieur \`a |\lineskiplimit|, indiquant que les deux
bo\^\i tes sont trop rapproch\'ees, \TeX\ ins\`ere le ressort |\lineskip| \`a la
place.\footnote
{\TeX\ d\'ebute normalement le d\'ebut d'une liste verticale en mettant
|\prevdepth| \`a $-1000$\pt\ et en testant
|\prevdepth| avant \emph{toutes} les bo\^\i tes. Si |\prevdepth|$\>\le-1000$\pt\
il ne doit ins\'erer aucun ressort inter-ligne.} Voir les \knuth{pages~79--80}{93} pour une
description pr\'ecise.
Notez que |\baselineskip| et |\lineskip| mesurent des \emph{choses diff\'e\-rentes}~:
La distance entre des lignes de base d'un cot\'e et la distance
entre le bas d'une bo\^\i te et le haut de la bo\^\i te suivante d'un autre
cot\'e. Voir la \knuth{page~78}{91--92} pour d'autres d\'etails. Le premier exemple ci-dessous
montre les effets de |\lineskiplimit|.
Vous pouvez obtenir l'effet d'un ^{double espacement} en doublant la valeur
de |\baselineskip| comme illustr\'e dans le second exemple ci-des\-sous.
Une modification de |\baselineskip| \`a n'importe quel endroit pr\'ec\'e\-dent la fin
d'un paragraphe affecte le paragraphe entier.
\example
\baselineskip = 11pt \lineskiplimit = 1pt
\lineskip = 2pt plus .5pt
Sometimes you'll need to typeset a paragraph that has
tall material, such as a mathematical formula, embedded
within it. An example of such a formula is $n \choose k$.
Note the extra space above and below this line as
compared with the other lines.
(If the formula didn't project below the line,
we'd only get extra space above the line.)
|
\produces
\baselineskip = 11pt \lineskiplimit = 1pt
\lineskip = 2pt plus .5pt
Sometimes you'll need to typeset a paragraph that has
tall material, such as a mathematical formula, embedded
within it. An example of such a formula is $n \choose k$.
Note the extra space above and below this line as
compared with the other lines.
(If the formula didn't project below the line,
we'd only get extra space above the line.)
\endexample
\example
\baselineskip = 2\baselineskip % Start double spacing.
|
\endexample
\eix^^{ressort inter-ligne}
\eix^^|\baselineskip|
\eix^^|\lineskip|
\eix^^|\lineskiplimit|
\enddesc
\begindesc
\cts prevdepth {\param{dimension}}
\explain
Quand \TeX\ ajoute une bo\^\i te \`a une liste verticale, il r\`egle |\prevdepth| \`a la
hauteur de cette bo\^\i te. \TeX\ met |\prevdepth| \`a $-10000$\pt\ au d\'ebut d'une
liste verticale, indiquant que le ressort inter-ligne normal doit \^etre supprim\'e.
\enddesc
\begindesc
\cts normalbaselineskip {\param{ressort}}
\cts normallineskiplimit {\param{dimension}}
\cts normallineskip {\param{ressort}}
\cts normalbaselines {}
\explain
Ces trois param\`etres contiennent des valeurs pour |\base!-line!-skip|,
|\li!-neskip| et |\line!-skip!-limit| respectivement.
^^|\baselineskip| ^^|\lineskip| ^^|\lineskiplimit|
La commande |\normal!-base!-lines| met |\base!-line!-skip|,
|\line!-skip| et |\line!-skip!-limit| aux va\-leurs contenues dans les
trois param\`etres.
\enddesc
\begindesc
\cts offinterlineskip {}
\explain
Cette commande demande \`a \TeX\ d'arr\^eter d'ins\'erer des ressorts inter-ligne \`a partir
de maintenant. \`A moins que vous vouliez qu'il soit effectif pour le reste du document
(ce que vous ne voulez probablement pas), vous devez l'englober dans un groupe
avec le texte que vous voulez qu'il affecte.
Son principal usage est de vous laisser faire l'espacement inter-ligne vous-m\^eme,
c'est-\`a-dire, en utilisant ^{struts},
sans interf\'erence du ressort inter-ligne normal de \TeX.
|\offinterlineskip| est souvent utile quand
vous construisez un \minref{alignement} horizontal.
^^{alignements//utiliser \b\tt\\offinterlineskip\e\ dans des}
\example
\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr}
\offinterlineskip \tabskip = 0pt \halign{%
\vrule\quad\hfil#\hfil\quad\vrule&
\quad\hfil#\hfil\quad\vrule\cr
\noalign{\hrule}
\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
\entry \it Opera:\it Composer
\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
\vphantom{\vrule height 2pt}&\cr
\entry Fidelio:Beethoven
\entry Peter Grimes:Britten
\entry Don Giovanni:Mozart
\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}}
|
\produces
\medskip
\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr}
\offinterlineskip \tabskip = 0pt \halign{%
\vrule\quad\hfil#\hfil\quad\vrule&
\quad\hfil#\hfil\quad\vrule\cr
\noalign{\hrule}
\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
\entry \it Opera:\it Composer
\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
\vphantom{\vrule height 2pt}&\cr
\entry Fidelio:Beethoven
\entry Peter Grimes:Britten
\entry Don Giovanni:Mozart
\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}}
\endexample
\enddesc
\begindesc
\cts nointerlineskip {}
\explain
Cette commande demande \`a \TeX\ de ne pas ins\'erer de ressort inter-ligne devant la
prochaine ligne.
Elle n'a aucun effet sur les lignes suivantes.
\enddesc
\begindesc
\cts openup {\<dimension>}
\explain
Cette commande augmente ^|\baselineskip| de \<dimension>.
Une commande |\openup| avant la fin d'un paragraphe affecte
tout le paragraphe, donc vous ne devez pas utiliser |\openup| pour
changer |\baseline!-skip| dans un paragraphe. |\openup| est
plus utile pour composer des tables et des affichages math\'ematiques---un
petit espace suppl\'ementaire entre des rang\'ees les rend souvent plus lisibles.
^^{alignements//espace entre rang\'ees d'}
\example
Alice picked up the White King very gently, and lifted him
across more slowly than she had lifted the Queen; but before
she put him on the table, she thought she might well dust
him a little, he was so covered with ashes.
\openup .5\baselineskip % 1.5 linespacing.
|
\produces
Alice picked up the White King very gently, and lifted him
across more slowly than she had lifted the Queen; but before
she put him on the table, she thought she might well dust
him a little, he was so covered with ashes.
\openup .5\baselineskip %1.5 linespacing
\endexample\enddesc
%==========================================================================
\section {Coupures de page}
%==========================================================================
\subsection {Encourager ou d\'ecourager des coupures de page}
\begindesc
\bix^^{coupures de page}
\bix^^{coupures de page//encourager ou d\'ecourager}
\ctspecial break {} \xrdef{vbreak}
\explain
%
\margin{Four commands identical to ones for line breaks (\xref{hbreak})
have been added to correct an omission. The descriptions are exactly parallel.}
%
Cette commande force une coupure de page.
\`a moins que vous ne fassiez quelque chose pour compl\'eter la page,
Vous obtiendrez s\^urement un ``underfull vbox''.
|\break| peut aussi \^etre utilis\'e en mode horizontal.
\enddesc
\begindesc
\ctspecial nobreak {} \xrdef{vnobreak}
\explain
Cette commande emp\^eche une coupure de page l\`a o\`u elle
aurait du arriver autrement.
|\nobreak| peut aussi \^etre utilis\'e en mode horizontal.
\enddesc
\begindesc
\ctspecial allowbreak {} \xrdef{vallowbreak}
\explain
Cette commande demande \`a \TeX\ d'autoriser
une coupure de page l\`a o\`u elle ne pourrait normalement pas arriver.
|\allowbreak| peut aussi \^etre utilis\'e en mode horizontal.
\enddesc
\begindesc
\ctspecial penalty {\<nombre>} \xrdef{vpenalty}
\explain
Cette commande produit un \'el\'ement de \minref{p\'enalit\'e}.
L'\'el\'ement de p\'enalit\'e rend \TeX\ plus ou moins d\'esireux de couper une page
\`a l'endroit o\`u cet \'el\'ement arrive.
Une p\'enalit\'e n\'egative, c'est-\`a-dire, un bonus, encourage une coupure de page~;
Une p\'enalit\'e positive d\'ecourage une coupure de page.
Une p\'enalit\'e de $10000$ ou plus emp\^eche toute coupure,
tandis qu'une p\'enalit\'e de $-10000$ ou moins force une coupure.
|\penalty| peut aussi \^etre utilis\'e en mode horizontal.
\example
\def\break{\penalty-10000 } % as in plain TeX
\def\nobreak{\penalty10000 } % as in plain TeX
\def\allowbreak{\penalty0 } % as in plain TeX
|
\endexample
\enddesc
\begindesc
\cts goodbreak {}
\explain
Cette commande termine un paragraphe et indique aussi \`a \TeX\ que
c'est un bon endroit pour couper la page.
\enddesc
\begindesc
\cts smallbreak {}
\cts medbreak {}
\cts bigbreak {}
\explain
Ces commandes indiquent des endroits de plus en plus d\'esirables pour \TeX\ de
couper une page. Elles demande aussi \`a \TeX\
d'ins\'erer respectivement un ^|\smallskip|, ^|\medskip| ou
^|\bigskip| (\xref \smallskip) si la coupure de page ne se produit pas l\`a.
\TeX\ supprime ce saut s'il se produit juste apr\`es un saut \'egal ou plus grand.
\enddesc
\begindesc
\easy\cts eject {}
\cts supereject {}
\explain
Ces commandes forcent une coupure de page \`a la position courante
et terminent le paragraphe courant.
Si vous ne les pr\'ec\'edez pas de |\vfil| (\xref \vfil),
^^|\vfil//n\'ecessaire avec {\tt\\eject}|
\TeX\ essayera d'\'etirer le contenu de la page
(et se plaindra probablement d'un ``underfull vbox'').
La commande |\supereject|, en plus,
enclenche la routine de sortie de \plainTeX\ pour
faire sortir toutes insertions en surplus,
^^{insertions//forc\'es par \b\tt\\supereject\e}
telles que de longues notes de pied de page,
ainsi elle sont produites avant que toute autre entr\'ee soit ex\'ecut\'ee.
Donc |\supereject| est un bonne commande \`a utiliser \`a la fin de chaque
chapitre ou autre division majeure de votre document.
\enddesc
\begindesc
\cts filbreak {}
\explain
Cette commande procure une sorte de coupure de page conditionnelle.
Elle demande \`a \TeX\ de
couper la page---sauf si le texte d'une autre |\filbreak| se trouve
aussi sur la m\^eme page.
En englobant un paragraphe dans une paire de |\filbreak|,
vous pouvez vous assurer que \TeX\ gardera un paragraphe sur une seule page s'il le peut.
Vous ne devez pas utiliser |\filbreak| dans un paragraphe, car il
force \TeX\ en mode vertical et ainsi termine la paragraphe.
Voir \xrefpg{filbreak} pour plus de conseil sur ce sujet.
\enddesc
\begindesc
\cts raggedbottom {}
\cts normalbottom {}
\explain
Normalement \TeX\ essaye fortement de s'assurer que toutes les pages
aient la m\^eme profondeur, c'est-\`a-dire, que leurs marges du bas soient \'egales.
La commande |\raggedbottom| demande \`a \TeX\ d'autoriser
quelques variations parmi les marges du bas sur diff\'erentes pages.
Il est souvent appropri\'e d'utiliser |\raggedbottom| quand vous avez du mat\'eriel
qui contient de larges blocs de mat\'eriel qui ne doivent pas \^etre s\'epar\'es sur deux pages.
La commande |\normalbottom| efface l'effet de |\raggedbottom|.
\eix^^{coupures de page//encourager ou d\'ecourager}
\enddesc
%==========================================================================
\subsection {Param\`etres de coupure de page}
\bix^^{coupures de page//param\`etres de}
\begindesc
\cts interlinepenalty {\param{nombre}}
\explain
Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
coupure de page entre les lignes d'un paragraphe.
En le mettant \`a $10000$ vous pouvez forcer toutes les coupures de page \`a se faire
entre les paragraphes, en esp\'erant que les pages aient assez d'\'etirement pour
que \TeX\ puisse les composer d\'ecemment.
\PlainTeX\ laisse |\inter!-linepenalty| \`a~$0$.
\enddesc
\begindesc
\cts clubpenalty {\param{nombre}}
\explain
^^{ligne orpheline}
Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
coupure de page juste apr\`es la premi\`ere ligne d'un paragraphe.
Une ligne seule en bas d'une page est appel\'ee une ``ligne orpheline''.
\PlainTeX\ met |\clubpenalty| \`a $150$.
\enddesc
\begindesc
\cts widowpenalty {\param{nombre}}
\explain
^^{ligne veuve}
Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
coupure de page juste avant la derni\`ere ligne d'un paragraphe.
Une ligne seule en haut d'une page est appel\'ee une ``ligne veuve''.
\PlainTeX\ met |\widowpenalty| \`a $150$.
\enddesc
\begindesc
\cts displaywidowpenalty {\param{nombre}}
\explain
^^{ligne veuve}^^{math\'ematiques affich\'ees}
Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
coupure de page juste avant la derni\`ere ligne d'un paragraphe partiel
qui pr\'ec\`ede imm\'ediatement un affichage math\'ematique.
\PlainTeX\ met |\displaywidowpenalty| \`a $50$.
\enddesc
\begindesc
\cts predisplaypenalty {\param{nombre}}
\explain
^^{math\'ematiques affich\'ees}
Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
coupure de page juste avant un affichage math\'ematique.
\PlainTeX\ met |\predisplaypenalty| \`a $10000$.
\enddesc
\begindesc
\cts postdisplaypenalty {\param{nombre}}
\explain
^^{math\'ematiques affich\'ees}
Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
coupure de page juste apr\`es un affichage math\'ematique.
\PlainTeX\ laisse |\postdisplaypenalty| \`a $0$.
\enddesc
\begindesc
\cts brokenpenalty {\param{nombre}}
\explain
Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
coupure de page juste apr\`es une ligne se terminant par
une \'el\'ement optionnel (habituellement une c\'esure).
^^{c\'esure}
|\brokenpenalty| s'applique aux coupure de page, tandis que
^|\hyphenpenalty| \ctsref{\hyphenpenalty} s'applique aux coupure de ligne.
\PlainTeX\ met |\brokenpenalty| \`a $100$.
\enddesc
\begindesc
\cts insertpenalties {\param{nombre}}
\explain
\bix^^{insertions//p\'enalit\'es pour}
\bix^^{mat\'eriel flottant}
Ce param\`etre contient la somme de certaines p\'enalit\'es \minrefs{p\'enalit\'e}
que \TeX\ accumule quand il place des insertions sur la page courante.
Ces p\'enalit\'es encourent une plainte quand \TeX\ ex\'ecute une commande
|\insert|
et d\'ecouvre qu'une insertion pr\'ec\'edente du m\^eme type sur cette page a
\'et\'e s\'epar\'ee, laissant une partie pour les page suivantes.
Voir les \knuth{pages~123--125}{143--146} pour les d\'etails de ce
calcul.
\margin{Material moved from a footnote to the main text.}
|\insertpenalties| a une signification enti\`erement diff\'erente pendant une
^^{routine de sortie//signification de \b\tt\\insertpenalties\e\ dans la}
routine de sortie---c'est le nombre d'insertions qui ont \'et\'e vues
mais qui ne tiennent pas sur la page courante (voir la \knuth{page~125}{146}).
\enddesc
\begindesc
\cts floatingpenalty {\param{nombre}}
\explain
Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} que
\TeX\ ajoute \`a |\insertpenalties|
^^|\insertpenalties|
quand le constructeur de page ajoute une insertion \`a la page courante
et d\'ecouvre qu'une insertion pr\'ec\'edente du m\^eme type sur cette page a
\'et\'e coup\'ee, en laissant une partie d'elle pour des pages suivantes.
\PlainTeX\ laisse |\floatingpenalty| \`a~$0$.
\eix^^{insertions//p\'enalit\'es pour}
\eix^^{mat\'eriel flottant}
\enddesc
\begindesc
\cts pagegoal {\param{dimension}}
\explain
Ce param\`etre sp\'ecifie la hauteur d\'esir\'ee pour la page courante.
\TeX\ met
|\pagegoal| \`a la valeur courante de |\vsize|
quand il met en premier une bo\^\i te ou une insertion sur la page courante.
Vous pouvez raccourcir une page tant que \TeX\ travaille sur elle en
changeant la valeur de |\pagegoal|---m\^eme si la nouvelle valeur est
inf\'erieure \`a la hauteur du mat\'eriel d\'ej\`a sur cette page.
\TeX\ mettra juste le mat\'eriel en plus sur la page suivante.
Mais souvenez-vous---|\pagegoal| est remis \`a |\vsize| quand \TeX\
commence la page suivante.
\enddesc
\begindesc
\cts pagetotal {\param{dimension}}
\explain
Ce param\`etre sp\'ecifie la hauteur naturelle accumul\'ee sur la page courante.
\TeX\ met \`a jour |\pagetotal| quand il ajoute des \'el\'ements \`a la
\minref{liste verticale} principale.
\enddesc
\begindesc
\cts pagedepth {\param{dimension}}
\explain
Ce param\`etre sp\'ecifie la profondeur de la page courante.
\TeX\ met \`a jour |\pagedepth| quand il ajoute des
\'el\'ements \`a la \minref{liste verticale} principale.
\enddesc
\begindesc
\cts pageshrink {\param{dimension}}
\explain
Ce param\`etre sp\'ecifie le montant de \minref{r\'etr\'ecissement}
dans les \minref{ressort} accumul\'es sur la page courante.
\TeX\ met \`a jour |\pageshrink| quand il ajoute des \'el\'ements
\`a la \minref{liste verticale} principale.
\enddesc
\begindesc
\cts pagestretch {\param{dimension}}
\cts pagefilstretch {\param{dimension}}
\cts pagefillstretch {\param{dimension}}
\cts pagefilllstretch {\param{dimension}}
\explain
Ces quatre param\`etres sp\'ecifient ensemble le montant d'\minref{\'etirement}
dans les \minref{ressort}s de la page courante. Le montant d'\'etirement a
la forme
{\def\f#1{\hbox{\tt fi#1}}%
$n_0 + n_1\f{l} + n_2\f{ll} + n_3\f{lll}$}, avec les quatre param\`etres
donnant les valeurs des quatre $n_i$.
\TeX\ met \`a jour ces param\`etres quand il ajoute des
\'el\'ements \`a la \minref{liste verticale} principale.
\eix^^{coupures de page//param\`etres de}
\eix^^{coupures de page}
\enddesc
%==========================================================================
\section{Gabarit de page}
\subsection {Param\`etres de description de page}
\begindesc
\bix^^{dimensions de page}
\margin{This command was also described in the `Paragraphs' section.
The combined description now appears there.}
\aux\cts hsize {\param{dimension}}
\explain
Ce param\`etre sp\'ecifie la longueur de la ligne courante.
Voir \xrefpg{\hsize} pour une plus compl\`ete explication.
\enddesc
\begindesc
\cts vsize {\param{dimension}}
\explain
Ce param\`etre sp\'ecifie l'extension verticale courante d'une page.
\TeX\ ne l'examine qu'en commen\c cant une page. Donc si vous changez
|\vsize| dans le
milieu d'une page, votre changement n'affectera rien avant la page suivante.
Si vous voulez changer l'extension verticale d'une page quand
vous en \^etes au milieu, vous pouvez assigner la nouvelle hauteur
\`a ^|\pagegoal| (\xref \pagegoal) \`a la place. (Si vous
voulez que le changement affecte aussi les pages suivantes, vous devez
changer \emph{ensemble} |\vsize| et |\pagegoal|.)
\PlainTeX\ met |\vsize| \`a |8.9in|.
\eix^^{dimensions de page}
\enddesc
\begindesc
\cts hoffset {\param{dimension}}
\cts voffset {\param{dimension}}
\margin{These commands were moved up from later in the subsection.}
^^{origine de la page}
\idxsee{origine}{origine de la page}
\explain
\TeX\ prend normalement l'``origine'' d'une page, qui est le point o\`u
il d\'ebute l'impression, comme \'etant \`a un pouce sous le haut de la page et \`a un
pouce \`a droite du bord gauche de la page.\footnote{
\TeX\ lui-m\^eme est indiff\'erent d'o\`u est l'origine de la page,
mais cette information doit \^etre inscrite pour les drivers du syst\`eme
^^{drivers de p\'eriph\'erique//origine de la page connu des}
qui convertissent les \dvifile\ en forme imprimable, ainsi ces diff\'erents syst\`emes
donneront les m\^eme r\'esultats.}
Les valeurs de |\hoffset| et
|\voffset| donnent l'offset horizontal et vertical de l'origine actuelle
\`a partir de ce point. Ainsi si |\hoffset| et |\voffset| sont tous les deux
\`a z\'ero, \TeX\ utilise son origine normale.
\example
\hoffset = -.3in
% Start printing .7 inches from left edge of paper.
\voffset = 1in
% Start printing 2 inches from top edge of paper.
|
\endexample
\enddesc
\begindesc
\cts topskip {\param{ressort}}
\explain
\TeX\ ins\`ere un ressort en haut de chaque
page pour s'assurer que la ligne de base de la premi\`ere bo\^\i te de la page
soit toujours \`a la m\^eme distance $d$ du haut de la page.
|\topskip| d\'etermine le montant de ce ressort,
appel\'e le ``ressort |\topskip|'', en sp\'ecifiant
ce que $d$ doit \^etre (pr\'evoyez que la premi\`ere bo\^\i te
de la page ne soit pas trop haute).
$d$ est donn\'e par la taille naturelle du ressort |\topskip|.
Si la hauteur de la premi\`ere bo\^\i te sur la page d\'epasse $d$,
et que le ressort devrait \^etre n\'egatif, \TeX\ n'ins\`ere simplement pas
de ressort |\topskip| du tout sur cette page.
Pour mieux comprendre l'effet de ces r\`egles, supposez que |\topskip|
n'a ni \'etirement ni r\'etr\'ecissement et que le premier \'el\'ement sur la page
soit vraiment une bo\^\i te. Alors si la hauteur de cette bo\^\i te n'est pas plus
grande que |\topskip|, sa ligne de base sera \`a |\topskip| du haut de la page
ind\'ependamment de sa hauteur. D'un autre cot\'e,
si la hauteur de la bo\^\i te est $e$, plus grande que |\topskip|, sa ligne de base
sera \`a |\topskip|\tplus$e$ du haut de la page.
Voir les \knuth{pages~113--114}{132} pour les autres d\'etails sur le
fonctionnement de |\topskip|.
\PlainTeX\ met |\topskip| \`a |10pt|.
\enddesc
\begindesc
\cts parskip {\param{ressort}}
\explain
Ce param\`etre sp\'ecifie le ``^{saut de paragraphe}'', c'est-\`a-dire, le
ressort vertical que \TeX\ ins\`ere au d\'ebut d'un paragraphe.
^^{paragraphes//ressort entre}
Voir |\par| (\xref{\@par}) pour plus d'information sur ce qui se passe
quand \TeX\ d\'ebute un paragraphe.
\PlainTeX\ met |\parskip| \`a |0pt plus 0.1pt|.
\enddesc
\begindesc
\cts maxdepth {\param{dimension}}
\explain
Ce param\`etre sp\'ecifie la profondeur maximum de la \minref{bo\^\i te} du bas
d'une page. Il est reli\'e \`a |\boxmaxdepth| (\xref \boxmaxdepth). Si la
profondeur de la bo\^\i te du bas d'une page d\'epasse |\maxdepth|, \TeX\
descend le point de r\'ef\'erence de la bo\^\i te pour qu'il soit \`a
|\maxdepth| du bas de cette bo\^\i te.
Sans cet ajustement, la bo\^\i te du bas d'une
page pourrait bien s'\'etendre dans la marge du bas ou m\^eme recouvrir
la page enti\`erement. \PlainTeX\ met |\maxdepth| \`a |4pt|.
\enddesc
%==========================================================================
\subsection{Num\'eros de page}
\begindesc
\bix^^{num\'erotation de page}
\cts pageno {\param{nombre}}
\explain
Ce param\`etre contient le num\'ero de page courant sous la forme d'un entier.
Le num\'ero de page est normalement n\'egatif pour les pages d'intro\-duction
qui sont num\'erot\'ees avec des petits chiffres romains au lieu des nombres
arabes. Si vous changez le num\'ero de page dans une page, le num\'ero modifi\'e
sera utilis\'e dans tous les ent\^etes ou pieds de page qui apparaissent sur
cette page. L'impression actuelle des num\'eros de page est prise en main par
la \minref{routine de sortie} de \TeX, que vous pouvez modifier.
\PlainTeX\ garde le num\'ero de page dans le \minref{registre} ^|\count0|.
(|\pageno| est, en fait, un synonyme de |\count0|.)
\`a chaque fois qu'il envoie une page vers le \dvifile,
^^|\shipout//registres {\tt\\count} affich\'es avec|
\TeX\ affiche la valeur courante de |\count0| sur votre
terminal pour que vous puissiez dire sur quelle page il est en train de
travailler. Il est possible d'utiliser des registres |\count1|--|\count9|
pour embo\^\i ter des niveaux de num\'eros de page (vous devez programmer cela vous-m\^eme).
Si un de ces registres est diff\'erent de z\'ero, \TeX\ l'affiche aussi sur votre
terminal.\footnote{
Plus pr\'ecis\'ement, il affiche tous les registres en s\'equence de
|\count0| \`a |\count9|, mais omet les registres restants \`a z\'ero.
Par exemple, si les valeurs de |\count0|--|\count3|
sont $(17, 0 , 0, 7)$ et que les autres sont \`a $0$,
\TeX\ affiche le num\'ero de page ainsi {\tt [17.0.0.7]}.}
\example
This explanation appears on page \number\pageno\
of our book.
|
\produces
This explanation appears on page \number\pageno\
of our book.
\nextexample
\pageno = 30 % Number the next page as 30.
Don't look for this explanation on page \number\pageno.
|
\produces
Don't look for this explanation on page 30.
\endexample
\enddesc
\begindesc
\cts advancepageno {}
\explain
Cette commande ajoute $1$ au num\'ero de page
$n$ dans |\pageno| si $n\ge0$
et lui soustrait $1$ si $n<0$.
\enddesc
\begindesc
\easy\cts nopagenumbers {}
\explain
Par d\'efaut, \plainTeX\ produit un pied de page contenant un num\'ero de page
centr\'e.
Cette commande demande \`a \TeX\ de produire un pied de page blanc \`a la place.
\enddesc
\begindesc
\cts folio {}
\explain
Cette commande produit le num\'ero de page courant, dont la valeur est le num\'ero
$n$ contenu dans ^|\pageno|.
Si $n\ge0$,
\TeX\ produit $n$ comme un nombre d\'ecimal,
tandis que si $n<0$,
\TeX\ produit $-n$ en chiffre romain minuscule.
\example
This explanation appears on page \folio\ of the book.
|
\produces
This explanation appears on page \folio\ of the book.
\endexample
\eix^^{num\'erotation de page}
\enddesc
%==========================================================================
\subsection{Lignes d'ent\^ete et de pied de page}
\begindesc%\secondprinting{\vglue-.75\baselineskip\vskip0pt}
\cts headline {\param{liste de token}}
\cts footline {\param{liste de token}}
\explain
Ces param\`etres
contiennent, respectivement, la ligne de t\^ete courante (ent\^ete) et la ligne de
pied de page courante (pied de page).
La routine de sortie de \plainTeX\
place la ligne de t\^ete en haut de chaque page et ligne de pied de page
en bas de chaque page.
La ligne de t\^ete par d\'efaut est vide et la ligne de pied de page par d\'efaut
est un num\'ero de page centr\'e.
Les lignes de t\^ete et de pied de page doivent \^etre toutes les deux
aussi large que |\hsize| (utilisez |\hfil|, \xref{\hfil}, pour cela
si n\'ecessaire).
Vous devez toujours inclure une commande de s\'election de police dans ces lignes,
sinon la police courante est impr\'evisible quand \TeX\ appelle la routine de
sortie. Si vous ne s\'electionnez la police explicitement,
vous obtiendrez n'importe quelle police que \TeX\ utilisait quand il a coup\'e
la page.
N'essayez pas d'utiliser |\headline| ou |\footline|
pour produire des ent\^etes ou des pieds de page multi-lignes.
Bien que \TeX\ ne se plaindra pas, cela vous donnera quelque chose de tr\`es laid.
Voir \xrefpg{bighead} pour une m\'ethode de cr\'eation d'ent\^ete ou de pied de
page multi-ligne.
\example
\headline = {\tenrm My First Reader\hfil Page \folio}
|
\produces
\pageno = 10
\line{\tenrm \noindent My First Reader\hfil Page \folio}
\par ({\it at the top of page \folio}\/)
\nextexample
\footline = {\tenit\ifodd\pageno\hfil\folio
\else\folio\hfil\fi}
% Produce the page number in ten-point italic at
% the outside bottom corner of each page.
|
\endexample\enddesc
%\secondprinting{\vfill\eject}
%==========================================================================
\subsection {Marques}
\begindesc
\cts mark {\rqbraces{\<texte>}}
\explain
\bix^^{marques}
Cette commande fait que \TeX\ attache une marque
contenant \<mark text>
\`a toute liste qu'il est en train de construire.
G\'en\'eralement vous ne devez pas utiliser |\mark| dans une
construction ``interne'' comme une formule math\'ematique ou une \minref{bo\^\i te}
que vous avez construit avec une commande |\hbox|, |\vbox| ou |\vtop|, parce
que \TeX\ ne verra pas la marque quand il construira la bo\^\i te principale
de la page. Mais si vous utilisez |\mark| en \minref{mode} horizontal ordinaire
ou directement dans une hbox qui fait partie de la liste verticale principale,
la marque migrera vers la \minref{liste verticale} principale.
Voir les \knuth{pages~259--260}{304--305} pour des exemples montrant comment |\mark|
peut \^etre utilis\'e.
\enddesc
\begindesc
\cts firstmark {}
\cts botmark {}
\cts topmark {}
\explain
Ces commandes d\'eveloppent le texte de la marque dans un \'el\'ement g\'en\'er\'e par une
pr\'ec\'edente commande ^|\mark|.
Le texte de la marque a la forme d'une liste de token.
\TeX\ met la valeur de ces commandes quand il
termine le placement du contenu d'une page dans ^|\box255|,
juste avant d'appeler la \minref{routine de sortie}
comme une partie de son action de \minref{coupure de page}. \TeX\ d\'etermine
ces valeurs comme suit~:
\ulist\compact
\li |\firstmark| contient les tokens de la premi\`ere marque de la page.
\li |\botmark| contient les tokens de la derni\`ere marque de la page.
\li |\topmark| contient les tokens de la marque qui est effective tout
en haut de la page.
Cette marque est la derni\`ere marque
qui \emph{pr\'ec\`ede} la page,
c'est-\`a-dire, le |\botmark| de la page pr\'ec\'edente.
Il est vide si aucune page ne pr\'ec\`ede la page.
\endulist
\noindent
Si une page n'a aucune marque sur elle, \TeX\ mettra |\firstmark| et |\botmark|
avec la m\^eme marque que |\topmark|, c'est-\`a-dire, la plus r\'ecente marque pr\'ec\'edente.
La table en bas de la \knuth{page~258}{303} illustre la relation entre
|\firstmark|, |\botmark| et |\topmark|.
\enddesc
\begindesc
\cts splitfirstmark {}
\cts splitbotmark {}
\explain
^^{marques//pour listes d\'edoubl\'ees}
Ces commandes d\'eveloppent le ^{texte de marque} g\'en\'er\'e par une commande
^|\mark| pr\'ec\'edente qui produisent un \'el\'ement dans la liste d'\'el\'ement d'une vbox $V$.
Le texte de marque a la forme d'une liste de token.
Quand \TeX\
s\'epare $V$ en r\'eponse \`a une commande ^|\vsplit| (\xref \vsplit),
il met les valeurs de ces commandes comme suit~:
\ulist\compact
\li |\splitfirstmark| contient les tokens de la premi\`ere marque dans
la liste d'\'el\'ement de $V$.
\li |\splitbotmark| contient les tokens de la derni\`ere marque dans
la liste d'\'el\'ement de $V$.
\endulist
Ces commandes ne produisent aucun token s'il n'y a pas de |\vsplit| pr\'ec\'edent
ou si le plus r\'ecent |\vsplit| pr\'ec\'edent ne contient aucune marque.
\eix^^{marques}
\enddesc
%==========================================================================
\section {Insertions}
\subsection {Pieds de page}
\begindesc
\easy\cts footnote {\<argument$_1$> \<argument$_2$>}
\cts vfootnote {\<argument$_1$> \<argument$_2$>}
\explain
Ces commandes produisent des notes de pied de page.
\<argument$_1$> est la ``^{marque de r\'ef\'erence}''
pour la note de pied de page et \<argument$_2$> est son texte.
Le texte peut faire plusieurs paragraphes de long si n\'ecessaire et peut contenir
des constructions comme des affichages math\'ematiques, mais ne peut contenir
aucune
\minref{insertion} (comme d'autres notes de pied de page).
Vous ne pouvez pas utiliser ces commandes \`a l'int\'erieur d'une sous-formule d'une
formule math\'ematique,
dans une bo\^\i te \`a l'int\'erieur d'une bo\^\i te contribuant \`a une page
ou dans une insertion de toute sorte.
Si vous n'\^etes pas s\^ur de la mani\`ere dont ces restrictions s'appliquent, il
peut \^etre sage de n'utiliser
|\footnote| et |\vfootnote| que directement dans un paragraphe ou
entre des paragraphes.
Ces restrictions ne sont pas aussi s\'ev\`eres qu'elles ne le semblent parce que
vous pouvez utiliser
|\vfootnote| pour mettre en note de pied de page la plupart des choses.
|\foot!-note| et |\vfoot!-note| ins\`erent tous les deux des marques de r\'ef\'erence
en t\^ete de la note de pied de page elle-m\^eme, mais |\vfoot!-note| n'ins\`ere
pas la marque de r\'ef\'erence dans le texte.
Ainsi, quand vous utilisez |\vfoot!-note| vous pouvez
ins\'erer explicitement la marque de r\'ef\'erence
n'importe o\`u, sans que cela concerne le contexte
et placer le |\vfootnote| dans le paragraphe suivant.
Si vous trouvez que la note de bas de page atterrit sur
la page suivant celle o\`u elle devrait, d\'eplacez le |\vfootnote|
vers le paragraphe pr\'ec\'edent.
Il y a de rares circonstances o\`u vous devez alt\'erer
le texte de votre document pour qu'une note de bas de page apparaisse sur
la m\^eme page que sa marque de r\'ef\'erence.
\example
To quote the mathematician P\'olya is a ploy.\footnote
*{This is an example of an anagram, but not a strict one.}
|
\produces
To quote the mathematician P\'olya is a ploy.*
\par\line{\hskip .5in \vdots\hfil}
\nointerlineskip \bigskip
\footnoterule\par\parindent = 12pt
\textindent{*}This is
an example of an anagram, but not a strict one.
\endexample
\example
$$f(t)=\sigma\sigma t\;\raise 1ex \hbox{\dag}$$
\vfootnote \dag{The $\sigma\sigma$ notation was explained in
the previous section.}
|
\produces
$$f(t)=\sigma\sigma t\>\raise 1ex \hbox{\dag}$$
\par\line{\hskip .5in \vdots\hfil}
\nointerlineskip \bigskip
\footnoterule\par\parindent = 12pt
\textindent{\dag}{The $\sigma\sigma$ notation was explained in
the previous section.}
\endexample
\enddesc
%==========================================================================
\subsection {Insertions g\'en\'erales}
\begindesc
\bix^^{insertions//commandes pour}
\cts topinsert {\<mat\'eriel en mode vertical> {\bt \\endinsert}}
\cts midinsert {\<mat\'eriel en mode vertical> {\bt \\endinsert}}
\cts pageinsert {\<mat\'eriel en mode vertical> {\bt \\endinsert}}
\explain
Ces commandes produisent diff\'erentes formes d'insertions qui
informent
(ou autorisent) \TeX\ \`a d\'elocaliser le \<mat\'eriel en mode vertical>~:
\ulist
\li |\topinsert| essaye de mettre le mat\'eriel en haut de la page courante.
S'il ne peut pas s'y ajuster, |\topinsert|
d\'eplacera le mat\'eriel vers le prochain haut de page possible.
\li |\midinsert| essaye de mettre le mat\'eriel \`a la position courante.
S'il ne peut pas s'y ajuster, |\midinsert|
d\'eplacera le mat\'eriel vers le prochain haut de page possible.
\li |\pageinsert| met le mat\'eriel lui-m\^eme sur la page suivante.
Pour \'eviter une page pas assez pleine, assurez vous de terminer le mat\'eriel ins\'er\'e avec
|\vfil| ou remplissez l'espace excessif d'une autre mani\`ere.
% Knuth doesn't say this, but I tried an experiment that verified it.
% Nor does he say explicitly that an insertion does a \par.
\endulist
\noindent
Le \<mat\'eriel en mode vertical>
est dit \^etre ``flottant'' ^^{mat\'eriel flottant} parce que \TeX\
peut le d\'eplacer d'une place \`a une autre.
Des insertions sont tr\`es pratiques pour du mat\'eriel tel que des figures et des
tables parce que vous pouvez positionner ce mat\'eriel o\`u vous voulez sans
savoir o\`u les coupures de page tomberont.
Chacune de ces commandes termine implicitement le paragraphe cou\-rant, donc
vous ne devez les utiliser qu'entre des paragraphes.
Vous ne devez pas les utiliser dans une bo\^\i te ou dans d'autres insertions.
Si vous avez plusieurs insertions en comp\'etition pour
le m\^eme espace, \TeX\ conservera leur ordre relatif.
\example
\pageinsert
% This text will appear on the following page, by itself.
This page is reserved for a picture of the Queen of Hearts
sharing a plate of oysters with the Walrus and
the Carpenter.
\endinsert
|
\endexample
\enddesc
\begindesc
\cts endinsert {}
\explain
Cette commande termine une insertion d\'ebut\'ee par
|\topinsert|, |\mid!-insert| ou |\pageinsert|.
\enddesc
\begindesc
\cts insert {\<nombre> \rqbraces{\<mat\'eriel en mode vertical>}}
\explain
\minrefs{insertion}
Cette commande primitive fournit le m\'ecanisme sous-jacent la construction
des insertions, mais
elle n'est presque jamais utilis\'ee en dehors d'un d\'efinition de \minref{macro}.
Les d\'efinitions des commandes
|\foot!-note|, |\vfoot!-note|,
|\top!-insert|, |\mid!-insert| et |\page!-insert| sont
toutes construites autour d'|\insert|.
^^|\topinsert|
^^|\midinsert| ^^|\pageinsert| ^^|\footnote| ^^|\vfootnote|
Quand vous concevez des insertions pour un document, vous devez assigner un
code entier diff\'erent\footnote
{\texbook{} utilise le terme ``classe'' pour un code.
Nous pr\'ef\'erons un terme diff\'erent pour \'eviter toute confusion avec l'autre signification
de ``classe'' (\xref{classe}).}
$n$ pour chaque type d'insertion,
utilisez la commande ^|\newinsert| (\xref{\@newinsert}) pour obtenir les
codes entiers.
La commande |\insert| elle-m\^eme annexe le \<mat\'eriel en mode vertical>
\`a la \minref{liste verticale} ou horizontale courante.
Notre \minref{routine de sortie} est responsable de
d\'eplacer le mat\'eriel ins\'er\'e d'o\`u il r\'eside dans la |\box|$\,n$
vers la page de sortie.
^^{routine de sortie}
\TeX\ regroupe ensemble toutes les insertions ayant le m\^eme num\'ero de code.
Chaque code d'insertion $n$ a quatre \minref{registre}s qui lui sont associ\'es~:
\ulist
\li |\box|$\,n$ est l'endroit o\`u \TeX\ accumule le mat\'eriel pour des insertions
avec le code $n$. Quand \TeX\ coupe une page, il met dans |\box|$\,n$
autant de mat\'eriel d'insertion $n$ qu'il pourra sur la page.
Notre routine de sortie devra alors d\'eplacer ce mat\'eriel vers la page actuelle.
Vous pouvez utiliser ^|\ifvoid| \ctsref{\@ifvoid}
pour tester s'il y a du mat\'eriel dans |\box|$\,n$.
Si tout le mat\'eriel ne rentre pas, \TeX\ sauve le surplus pour la page suivante.
\li |\count|$\,n$ est un facteur de magnification $f$. Quand \TeX\ doit traiter
l'espace vertical occup\'e sur la page
dans le mat\'eriel d'insertion $n$, il multiplie l'extension
verticale de ce mat\'eriel par $f/1000$.
Ainsi vous mettrez normalement $f$ \`a $500$ pour une insertion en double-colonne
et \`a $0$ pour une note~marginale.
\li |\dimen|$\,n$ sp\'ecifie le montant maximum
de mat\'eriel d'insertion $n$ que \TeX\ mettra sur une seule page.
\li |\skip|$\,n$ sp\'ecifie un espace suppl\'ementaire que \TeX\ alloue sur la page
si la page contient du mat\'eriel d'insertion $n$.
Cet espace est en plus de l'espace occup\'e par l'insertion elle-m\^eme.
Par exemple, il justifiera l'espace sur la page au-dessus des notes de pied de page
(s'il y en a).
\endulist
\noindent
\TeX\ d\'eclare |\box|$\,n$ et vous devez d\'eclarer les trois autres registres
pour que \TeX\ puisse calculer correctement l'espace vertical requis par
l'inser\-tion.
Voir les \knuth{pages~122--125}{142--146} Pour d'autres d\'etails sur la fa\c con dont \TeX\
ex\'ecute ces commandes et comment des insertions interagissent avec les coupures de page.
\xrdef{endofinsert}
\enddesc
\see |\floatingpenalty| (\xref \floatingpenalty).
\eix^^{insertions//commandes pour}
%==========================================================================
\section{Modifier la routine de sortie}
\bix^^{routine de sortie}
\begindesc
\cts output {\param{liste de token}}
\explain
Ce param\`etre contient la \minref{routine de sortie} courante, c'est-\`a-dire,
La liste de token que \TeX\ d\'eveloppe quand il trouve une coupure de page.
\TeX\ met la page dans la ^|\box255|, ainsi |\output| est responsable
de faire quelque chose avec la |\box255|---soit la sortir, soit
la mettre ailleurs.
La routine de sortie est aussi responsable d'attacher des choses comme des
ent\^etes ou des pieds de page.
\enddesc
\begindesc
\cts plainoutput {}
\explain
Cette commande invoque la routine de sortie de \plainTeX.
^^{routine de sortie//par d\'efaut dans \plainTeX}
\PlainTeX\ d\'efinit ^|\output| comme
une liste de token contenant le seul et unique token |\plainoutput|.
\enddesc
\begindesc
\cts shipout {\<bo\^\i te>}
\explain
Cette commande charge \TeX\ d'envoyer \<bo\^\i te> vers le \dvifile.
^^{\dvifile//r\'eception de \boites\ de \b\tt\\shipout\e}
\TeX\ d\'eveloppe toute commande |\write| dans \<bo\^\i te> comme une partie de |\shipout|.
^^|\write//d\'evelopp\'e durant {\tt\\shipout}|
Le principal usage de |\shipout| est dans la routine de sortie, mais vous pouvez
l'utiliser n'importe o\`u.
\enddesc
\begindesc
\cts deadcycles {\param{nombre}}
\explain
Ce param\`etre contient le nombre de fois que \TeX\ a lanc\'e
la \minref{routine de sortie} depuis la derni\`ere fois qu'il a fait un
^^|\shipout| |\ship!-out|.\footnote{
Plus pr\'ecis\'ement, \TeX\ met |\dead!-cyles| \`a $0$ \`a chaque fois qu'il ex\'ecute
|\ship!-out|
et l'incr\'emente de $1$ \`a chaque fois qu'il ex\'ecute |\output|.}
Si |\deadcycles| devient trop grand, \TeX\ est probablement entr\'e dans une
boucle, par exemple, une o\`u le constructeur de page essaye la m\^eme coupure de
page \`a n'en plus finir.
\enddesc
\begindesc
\cts maxdeadcycles {\param{nombre}}
\explain
Si la valeur de |\deadcycles| d\'epasse la valeur de |\maxdeadcycles|,
\TeX\ pr\'esume que la routine de sortie est entr\'ee dans une boucle.
\TeX\ se plaint alors et effectue sa propre et simple routine de sortie,
\'equivalente \`a |\shipout!allowbreak\box255|,
Ce qui brisera vraisemblablement la boucle.
\PlainTeX\ met |\maxdeadcycles| \hbox{\`a $25$}.
\enddesc
\begindesc
\cts outputpenalty {\param{nombre}}
\explain
\TeX\ met ce param\`etre quand il coupe une page. Si le point de coupure \'etait sur un
\'el\'ement de \minref{p\'enalit\'e}, \TeX\ enl\`eve l'\'el\'ement de p\'enalit\'e et
met |\outputpenalty| \`a la valeur de la p\'enalit\'e au point de coupure~;
autrement, il met |\outputpenalty| \hbox{\`a $0$}.
Supposez que vous d\'efaites une coupure de page
pour couper la page \`a un endroit diff\'erent que celui que \TeX\
a choisi. Pour reconstruire la page, vous devez recr\'eer
la p\'enalit\'e au point de coupure choisi par \TeX.
Vous pouvez accomplir ceci avec la commande
|\penalty!allowbreak\outputpenalty|.
\enddesc
\begindesc
\cts holdinginserts {\param{nombre}}
\explain
Si ce param\`etre est plus grand que $0$ quand \TeX\
ex\'ecute une coupure de page, \TeX\ s'abstiendra \`a ex\'ecuter des insertions.
Mettre ce param\`etre \`a $1$
peut \^etre utile quand vous \'ecrivez une routine de sortie
qui \`a besoin de refaire le contenu de la page, par exemple,
une routine de sortie qui utilise une valeur de |\vsize| (\xref \vsize) diff\'erente de
celle utilis\'ee par le constructeur de page.
\eix^^{routine de sortie}
\enddesc
%==========================================================================
\section {S\'eparer des listes verticales}
\begindesc
\cts vsplit {\<nombre> {\bt to} \<dimension>}
\explain
Cette commande fait que \TeX\ s\'epare la \minref{bo\^\i te} num\'ero
\<number>, que nous appellerons $B_2$, en deux parties.
Il utilise le m\^eme algorithme que celui qu'il utiliserait si $B_2$ \'etait une page
et qu'il coupait cette page.
Le point de division correspond alors \`a la coupure de page qu'il trouverait.
La bo\^\i te $B_2$ doit \^etre une vbox, pas une hbox.
% we avoid starting the previous sentence with a symbol, a copyediting no-no.
\TeX\ met le mat\'eriel pr\'ec\'edant le point de division dans
un autre bo\^\i te $B_1$ et laisse le mat\'eriel apr\`es le point de division dans $B_2$.
La commande |\vsplit| alors produit $B_1$.
Normalement vous assignerez $B_1$ \`a un registre de bo\^\i te diff\'erent,
comme dans l'exemple ci-dessous.
Si le point de division est \`a la fin de $B_2$,
$B_2$ sera vide apr\`es le |\vsplit|.
\TeX\ emploie son algorithme de coupure de page habituel
^^{coupures de page//en liste d\'edoubl\'ees}
pour la division.
Il utilise \<dimension> pour ^|\pagegoal|, la hauteur d\'esir\'ee de $B_1$.
L'extension verticale de $B_1$ peut ne pas \^etre exactement \'egale \`a
\<dimension> parce que \TeX\ peut ne pas \^etre capable d\'~ achever son but de page parfaitement.
\TeX\ ne prend pas en compte les insertions dans le calcul de la division,
donc des insertions dans la liste verticale originale de $B_2$
seront maintenues mais n'affecteront pas le point de division.
\example
\setbox 20 = \vsplit 30 to 7in
% Split off the first seven inches or so of material from
% box 30 and place that material in box 20.
|
\endexample
\enddesc
\begindesc
\cts splitmaxdepth {\param{dimension}}
\explain
Ce param\`etre sp\'ecifie la profondeur
maximum autoris\'ee pour une bo\^\i te r\'esultant d'un |\vsplit|.
|\splitmaxdepth| joue le
m\^eme r\^ole que celui de ^|\maxdepth| (\xref \maxdepth) pour une page.
\enddesc
\begindesc
\cts splittopskip {\param{ressort}}
\explain
Ce param\`etre sp\'ecifie le ressort que \TeX\ ins\`ere en haut d'une
bo\^\i te r\'esultant d'un |\vsplit|.
|\splittopskip| joue le
m\^eme r\^ole que ^|\topskip| (\xref \topskip) joue pour une page.
\enddesc
\see |\splitbotmark|, |\splitfirstmark| (\xref \splitfirstmark).
\enddescriptions \endchapter \byebye
|