Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
composition:texte:paragraphes:latex_fait_des_lignes_trop_longues [2018/06/03 13:18] d.p.carlisle2_composition:texte:paragraphes:latex_fait_des_lignes_trop_longues [2021/02/10 10:12] (Version actuelle) – Explicitation de l'utilisation de \linebreak bdumont
Ligne 1: Ligne 1:
---- +====== Comment gérer des lignes qui débordent? ======
-title: (La)TeX makes overfull lines +
-category: usage +
-permalink: /FAQ-overfull +
----+
  
-When TeX is building a paragraphit can make several attempts to +Lorsque <latex>\LaTeX</latex> construit un paragrapheil peut faire plusieurs tentatives pour obtenir un saut de ligne correct. À chaque tentativeil exécute le même algorithme mais lui donne des paramètres différentsVous pouvez influencer le fonctionnement de la coupure de ligne de <latex>\LaTeX</latex> en ajustant ces paramètres cette réponse traite des paramètres de « tolérance » et d'étirementL'autre « paramètre » vital est l'ensemble des césures applicables la question « [[3_composition:langues:cesure:la_cesure_ne_fonctionne_pas|Pourquoi mes mots ne sont pas césurés ?]» et toutes les questions liées développent ce point
-get the line-breaking right; on each attempt it runs the same +
-algorithmbut gives it different parameters You can affect the way +
-TeX's line breaking works by adjusting the parametersthis answer +
-deals with the "tolerance" and stretchability parameters The other +
-vital "parameter" is the set of hyphenations to be appliedsee +
-"[my words aren't being hyphenated](FAQ-nohyph)" +
-(and the questions it references) for advice.+
  
-If you're getting an undesired "overfull box"what has happened is +Si vous obtenez l'erreur « overfull box » (boîte qui déborde)<latex>\LaTeX</latex> a tout simplement abandonné ses tentatives les paramètres que vous lui avez donnés ne lui permettent pas de produire un résultat sans débordementDans ce casDonald Knuth a décidé que la meilleure chose à faire était de produire un avertissement et de permettre à l'utilisateur de résoudre le problème (l'alternative, passer sous silence ce problèmeaurait été désagréable pour tout typographe averti)En temps normal, l'utilisateur peut presque toujours résoudre le problème en reformulant son texte --- mais ce n'est pas toujours possible. Cette réponse décrit donc les approches à adopter pour résoudre le problèmeen supposant que la césure est correcte
-that TeX has given upthe parameters you gave it don't allow it to +
-produce a result that _doesn't_ overfill In this circumstance, +
-Knuth decided the best thing to do was to produce warning, and to +
-allow the user to solve the problem.  (The alternative, silently to go +
-beyond the envelope of "good taste" defined for this run of TeX, +
-would be distasteful to any discerning typographer.)  The user can +
-almost always address the problem by rewriting the text that'+
-provoking the problem&nbsp;&mdash; but that's not always possible, and in some +
-cases it's impossible to solve the problem without adjusting the +
-parameters This answer discusses the approaches one might take to +
-resolution of the problemon the assumption that you've got the +
-hyphenation correct.+
  
-The simplest case is where a "small" word fails to break at the end of +===== Avec la commande \linebreak =====
-a line; pushing the entire word to a new line isn't going to make much +
-difference, but it might make things just bad enough that TeX won'+
-do it by default.  In such a case on can _try_ the LaTeX +
-`\linebreak` command: it may solve the problem, and if it does, it +
-will save an awful lot of fiddling.  Otherwise, one needs to adjust +
-parameters: to do that we need to recap the details of TeX's line +
-breaking mechanisms.+
  
-TeX's first attempt at breaking lines is performed without even +Le cas le plus simple est celui où un mot court ne parvient pas à être césuré à la fin d'une ligneDéplacer le mot entier sur une nouvelle ligne ne fait souvent pas grande différence mais cela peut conduire à un résultat si mauvais que <latex>\LaTeX</latex> le refuse par défautDans ce cason peut //essayer// d'introduire la commande ''\linebreak[n]'' à l'endroit où un passage à la ligne nous paraît souhaitable''n'' étant un entier compris entre 1 et 4 : plus le nombre est élevé, plus <latex>\TeX</latex> est incité à opérer le passage à la ligne, un valeur de 4 ne lui laissant pas le choix. il faut toutefois prendre garde à ce que cela ne produise pas des espacements trop larges dans la ligne que vous coupez
-trying hyphenation: TeX sets its "tolerance" of line breaking +
-oddities to the internal value `\pretolerance`, and sees what +
-happens If it can't get an acceptable break, TeX adds the +
-hyphenation points allowed by the current patterns, and tries again +
-using the internal `\tolerance` value If this pass also failsand +
-the internal `\emergencystretch` value is positiveTeX will try +
-a pass that allows `\emergencystretch` worth of extra stretchability +
-to the spaces in each line.+
  
-In principlethereforethere are three parameters (other than +Sinonil faut ajuster les paramètres : pour ce fairenous devons récapituler les détails des mécanismes de coupure de ligne de <latex>\LaTeX</latex> 
-hyphenation) that you can change`\pretolerance``\tolerance` + 
-and `\emergencystretch` Both the `tolerance` values are +===== Avec les paramètres \pretolerance, \tolerance et \emergencystretch ===== 
-simple numbersand should be set by TeX primitive count + 
-assignment&nbsp;&mdash; for example +<latex>\LaTeX</latex> procède en trois étapes : 
-```latex+  * sa première tentative pour couper les lignes est effectuée sans même essayer de couper les mots il considère que sa tolérance aux bizarreries de saut de ligne vaut la valeur interne ''\pretolerance'' et voit ce qui se passe ; 
 +  * s'il ne parvient pas à obtenir une coupure acceptableil ajoute les points de césure autorisés et essaie à nouveau en ayant pour tolérance la valeur interne ''\tolerance'' 
 +  * si cette passe échoue également et que la valeur interne ''\emergencystretch'' est positive, il essaie une passe qui donne une extensibilité supplémentaire aux espaces de chaque ligne (''\emergencystretch'' justement)
 + 
 +En principeil existe donc trois paramètres (autres que la césure) que vous pouvez modifier : ''\pretolerance'', ''\tolerance'' et ''\emergencystretch''. Les deux premiers paramètres, traitant de la tolérance, sont de simples nombres et doivent être définies avec des primitives <latex>\TeX</latex>, par exemple : 
 + 
 +<code latex>
 \pretolerance=150 \pretolerance=150
-``` +</code>
-For both, an "infinite" tolerance is represented by the value +
-`10000`, but infinite tolerance is rarely +
-appropriate, since it can lead to very bad line breaks indeed.+
  
-`\emergencystretch` is a TeX-internal "dimen" register, and can +Une tolérance « infinie » est représentée par la valeur ''10000'' mais elle est rarement appropriée car pouvant conduire à de très mauvais sauts de ligne. 
-be set as normal for dimens in Plain TeX; in LaTeX, use + 
-`\setlength`&nbsp;&mdash; for example+Par ailleurs, ''\emergencystretch'' est un registre interne à <latex>\LaTeX</latex> contenant une dimension. Il peut être modifié avec ''\setlength'', par exemple :  
-```latex+ 
 +<code latex>
 \setlength{\emergencystretch}{3em} \setlength{\emergencystretch}{3em}
-```+</code>
  
-The choice of method has time implications&nbsp;&mdash; each of the +Modifier ces paramètres peut avoir des conséquences sur la durée du traitement : chacune des passes prend du temps. Aussien ajouter une (en changeant ''\emergencystretch''est moins intéressant que d'en supprimer une (en changeant ''\pretolerance''). Cependantil est rare de nos jours de trouver un ordinateur suffisamment lent pour que des passes supplémentaires soient vraiment gênantes
-passes takes timeso adding a pass (by changing +
-`\emergencystretch`is less desirable than suppressing one (by +
-changing `\pretolerance`).  Howeverit's unusual nowadays to find a +
-computer that's slow enough that the extra passes are really +
-troublesome.+
  
-In practice, `\pretolerance` is rarely used other than to manipulate +==== La modification de \pretolerance ====
-the use of hyphenation; Plain TeX and LaTeX both set its value +
-to `100`.  To suppress the first scan of paragraphs, set +
-`\pretolerance` to `-1`.+
  
-`\tolerance` is often a good method for adjusting spacing; +Dans la pratique, ''\pretolerance'' n'est guère utilisé que pour manipuler l'utilisation de la césure. Plain <latex>\TeX</latex> et <latex>\LaTeX</latex> lui donnent pour valeur ''100''. Pour supprimer le premier balayage des paragraphes, définissez ''\pretolerance'' sur ''-1''.  
-Plain TeX and LaTeX both set its value to `200` LaTeX'+ 
-`\sloppy` command sets it to `9999`as does the +==== La modification de \tolerance ==== 
-`sloppypar` environment This value is the largest + 
-available, this side of infinity, and can allow pretty poor-looking +Modifier ''\tolerance'' est souvent une bonne méthode pour ajuster l'espacement. Plain <latex>\TeX</latex> et <latex>\LaTeX</latex> lui attribuent la valeur ''200''La commande ''\sloppy'' de <latex>\LaTeX</latex> lui donne la valeur de ''9999''tout comme l'environnement ''sloppypar''Cette valeur est la plus grande disponible (hors infiniet peut autoriser des pauses assez médiocres.  
-breaks (this author rarely uses `\sloppy` "bare", though he does + 
-occasionally use `sloppypar`&nbsp;&mdash; that way, the change of +Il est plus satisfaisant d'apporter de petits changements à ''\tolerance''de manière incrémentiellepuis de voir comment le changement affecte le résultatDe très petites augmentations peuvent souvent suffire. Rappelez-vous que ''\tolerance'' est un paramètre de paragraphe : vous devez donc vous assurer qu'il est réellement appliqué comme l'explique la question « [[3_composition:texte:paragraphes:parametres_non_appliques_au_paragraphe|Pourquoi mon paramètre de paragraphe est-il ignoré ?]] »Dans la pratique, les utilisateurs de <latex>\LaTeX</latexpeuvent définir un environnement pouvant englobant plusieurs paragraphes pour y appliquer leur valeur de paramètre. Voici un exemple :  
-`\tolerance` is confined to the environment).  More satisfactory is + 
-to make small changes to `\tolerance`incrementallyand then to look to +<code latex>
-see how the change affects the result; very small increases can often +
-do what's necessary Remember that `\tolerance` is a paragraph +
-parameter, so you need to ensure it's actually applied&nbsp;&mdash; see +
-"[ignoring paragraph parameters](FAQ-paraparam)". +
-LaTeX users could use an environment like: +
-<!-- {% raw %} --+
-```latex+
 \newenvironment{tolerant}[1]{% \newenvironment{tolerant}[1]{%
   \par\tolerance=#1\relax   \par\tolerance=#1\relax
Ligne 99: Ligne 50:
   \par   \par
 } }
-``` +</code> 
-<!-- {% endraw %} --+ 
-enclosing entire paragraphs (or set of paragraphsin it.+==== La modification de \emergencystretch ==== 
 + 
 +Comme dit précédemment, la valeur de ''\emergencystretch'' est ajoutée à l'étirement supposé de chaque ligne d'un paragraphe, au cas où le paragraphe ne pourrait pas être considéré comme correct d'une autre manière. De fait, cette passe supplémentaire se produit si ''\emergencystretch'' est strictement supérieur à ''0pt''. Supposons qu'il soit défini comme valant ''3em''. Les polices //Computer Modern// contiennent généralement trois espaces dans un cadratin (un ''em''), de sorte que l'indication donnée à <latex>\LaTeX</latex> autoriserait jusqu'à l'équivalent de neuf espaces supplémentaires dans chaque ligne. Dans une ligne avec beaucoup d'espaces, cela pourrait être raisonnable, mais avec dans une ligne contenant uniquement trois espaces, cela pourrait conduire à étirer chaque espace jusqu'à quatre fois sa largeur naturelle. Il est donc clair que ''\emergencystretch'' doit être traité avec une certaine prudence.  
 + 
 +===== Avec des réglages microtypographiques ===== 
 + 
 +==== Ceux de pdf(La)TeX ==== 
 + 
 +Les réglages microtypographiques proposées par pdf(La)TeX sont plus subtiles (mais plus délicates à gérer). Dans la mesure où pdf(La)TeX, le moteur par défaut pour <latex>\LaTeX</latex> et ConTeXt, fonctionne dans toutes les distributions, ces réglages sont accessibles à tous. Il existe deux extensions importantes :  
 +  * le crénage marginal n'affecte que l'effet visuel de la page et n'a que peu d'effet sur la construction du paragraphe par <latex>\LaTeX</latex>
 +  * la déformation des caractères fonctionne comme une version plus subtile de l'astuce utilisée avec ''\emergencystretch'' : pdfTeX « sait » que votre police actuelle peut être étirée (ou rétrécie) dans une certaine mesure, et le fera à la volée pour optimiser le réglage d'un paragraphe. Il s'agit là d'une technique assez puissante.  
 + 
 +==== Ceux de l'extension microtype ====
  
-The value of `\emergencystretch` is added to the assumed +Les réglages microtypographiques sont souvent délicats à contrôler. Toutefoisl'extension [[ctanpkg>microtype|microtype]] soulage l'utilisateur du travail fastidieux de spécification des ajustements de marge et des mises à l'échelle de chaque policeCeci se limite cependant aux polices que l'extension connaîtDe manière généralecette extension reste un bon outil et les utilisateurs qui peuvent ajouter les spécification d'ajustements pour de nouvelles polices sont évidemment les bienvenus
-stretchability of each line of a paragraphin a further run of the +
-paragraph formatter in case that the paragraph can't be made to look +
-right any other way.  (The extra scan happens if +
-`\emergencystretch>0pt`&nbsp;&mdash; if it's zero or negative, no gain +
-could be had from rerunning the paragraph setter.)  The example above +
-set it to `3em`; the Computer Modern fonts ordinarily fit three +
-space skips to the `em`, so the change would allow anything up +
-to the equivalent of nine extra spaces in each line In a line with +
-lots of spacesthis could be reasonable, but with (say) only three +
-spaces on the line, each could stretch to four times its natural +
-width.  It is therefore clear that `\emergencystretch` needs to be +
-treated with a degree of caution.+
  
-More subtle (but more tricky to manage) are the microtypographic +-----
-extensions provided by pdfTeX.  Since pdfTeX is the default +
-"engine" for LaTeX and ConTeXt work in all distributions, +
-nowadays, the extensions are available to all.  There are two +
-extensions, margin kerning and font expansion; margin kerning only +
-affects the visual effect of the typeset page, and has little effect +
-on the ability of the paragraph setter to "get things right"+
-Font expansion works like a subtler version of the trick that +
-`\emergencystretch` plays: pdfTeX "knows" that your current font +
-may be stretched (or shrunk) to a certain extent, and will do that +
-"on the fly" to optimise the setting of a paragraph.  This is a +
-powerful tool in the armoury of the typesetter.+
  
-As mentioned above, the microtypographic extensions are tricky beasts +//Source:// [[faquk>FAQ-overfull|(La)TeX makes overfull lines]]
-to control; however, the [`microtype`](https://ctan.org/pkg/microtypepackage relieves the user +
-of the tedious work of specifying how to perform margin adjustments +
-and how much to scale each font&nbsp;&hellip; for the fonts the package +
-knows about; it's a good tool, and users who can take on the +
-specification of adjustments for yet more fonts are always welcome.+
  
 +{{htmlmetatags>metatag-keywords=(LaTeX,usage)
 +metatag-og:title=(Comment gérer des lignes qui débordent)
 +metatag-og:site_name=(FAQ LaTeX francophone)
 +}}
  
3_composition/texte/paragraphes/latex_fait_des_lignes_trop_longues.1528031880.txt.gz · Dernière modification : 2018/06/03 13:18 de d.p.carlisle
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0