12.07.2015 Views

TEX pour l'Impatient - Apprendre en ligne.net

TEX pour l'Impatient - Apprendre en ligne.net

TEX pour l'Impatient - Apprendre en ligne.net

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

24 Sep 2004 2:48 p.m.<strong>TEX</strong> <strong>pour</strong> l’Impati<strong>en</strong>t N o 107page 85page. <strong>TEX</strong> compile un docum<strong>en</strong>t <strong>en</strong> assemblant des pages une par uneet <strong>en</strong> les passant à la routine de sortie. Quand il lit votre docum<strong>en</strong>t,<strong>TEX</strong> mainti<strong>en</strong>t une liste des <strong>ligne</strong>s et d’autres élém<strong>en</strong>ts à placer sur lapage. (Les <strong>ligne</strong>s sont normalem<strong>en</strong>t des hbox.) Cette liste est appelée la“liste verticale principale”. Périodiquem<strong>en</strong>t <strong>TEX</strong> r<strong>en</strong>tre dans un processusappelé “devoir du constructeur de page”. Les élém<strong>en</strong>ts ajoutés à la listeverticale principale <strong>en</strong>tre les devoirs du constructeur de page sont appelé“contributions réc<strong>en</strong>tes”.Le constructeur de page examine d’abord la liste verticale principale<strong>pour</strong> voir si elle a besoin de déposer une page maint<strong>en</strong>ant, soit parce queles élém<strong>en</strong>ts sur la liste verticale principale ne ti<strong>en</strong>n<strong>en</strong>t pas sur la page,soit parce que un élém<strong>en</strong>t spécifique, tel que \eject (p. 143), demande à<strong>TEX</strong> de finir la page. S’il n’est pas nécessaire de déposer une page, alorsle constructeur de page est fait <strong>pour</strong> la prochaine fois.Autrem<strong>en</strong>t, le constructeur de page analyse la liste verticale principale<strong>pour</strong> trouver ce qu’il considère comme étant la meilleure coupure de pagepossible. Il associe des pénalités avec plusieurs types de coupure de pagepeu attirantes—une coupure qui laisse une <strong>ligne</strong> isolée <strong>en</strong> haut ou <strong>en</strong> basde la page, une coupure juste avant un affichage mathématique, et ainside suite. Il choisit alors la coupure de page la moins chère où le coûtd’une coupure est augm<strong>en</strong>té de toute pénalité associée avec cette coupureet par la médiocrité de la page qui <strong>en</strong> résulte (voir la page 111 de The<strong>TEX</strong>book et 130 de la traduction française <strong>pour</strong> la formule du coût). S’iltrouve plusieurs coupures de page de coût id<strong>en</strong>tique, il choisit la dernière.Une fois que le constructeur de page a choisi une coupure de page, ilplace les élém<strong>en</strong>ts de la liste qui sont avant cette coupure dans la \box255et garde le reste <strong>pour</strong> la page suivante. Il appelle alors la routine de sortie.\box255 agit comme une boîte aux lettres, avec le constructeur de pagecomme expéditeur et la routine de sortie comme destinataire. Ordinairem<strong>en</strong>tla routine de sortie traite la \box255, ajoute d’autres élém<strong>en</strong>ts,comme des insertions, <strong>en</strong>tête et pieds de page à la page et <strong>en</strong>voit la pagevers le fichier .dvi avec une commande \shipout. (Des routines de sortiespécialisées peuv<strong>en</strong>t agir différemm<strong>en</strong>t.) Du point de vue de <strong>TEX</strong>, ilimporte peu que la routine de sortie <strong>en</strong>voie la page ou non ; La seule responsabilitéde la routine de sortie est de traiter la \box255 d’une façonou d’une autre.Il est important de réaliser que le meilleur <strong>en</strong>droit <strong>pour</strong> couper une pag<strong>en</strong>’est pas nécessairem<strong>en</strong>t le dernier <strong>en</strong>droit possible <strong>pour</strong> couper la page.Des pénalités et autres considérations peuv<strong>en</strong>t faire que la coupure de pageait lieu plus tôt. De plus, <strong>TEX</strong> appréh<strong>en</strong>de les élém<strong>en</strong>ts de la liste verticaleprincipale <strong>en</strong> batch, pas seulem<strong>en</strong>t un par un. Les <strong>ligne</strong>s d’un paragraphesont un exemple d’un tel batch. Pour ces raisons, le constructeur de pagegarde des élém<strong>en</strong>ts sous le coude quand il coupe une page. Ces élém<strong>en</strong>tsmis <strong>en</strong> réserve form<strong>en</strong>t alors le début de la liste verticale principale de lapage suivante (vraisemblablem<strong>en</strong>t au milieu d’un batch). Parce que desélém<strong>en</strong>ts sont déplacés d’une page à une autre, vous pouvez être sûr que

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!