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 franaise.
% 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
|