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édentes Révision précédente
Prochaine révision
Révision précédente
3_composition:texte:pages:empecher_un_saut_de_page_entre_deux_lignes [2018/05/24 10:43]
joseph.wright
3_composition:texte:pages:empecher_un_saut_de_page_entre_deux_lignes [2021/02/13 19:23] (Version actuelle)
yannick.tanguy Traduction de l'article anglais, correction de la structure et mise à jour des liens.
Ligne 1: Ligne 1:
---- +====== Comment éviter un saut de page entre des lignes? ======
-title: ​ Preventing ​page breaks between lines +
-section: Adjusting the typesetting +
-subsection: Page layout +
-date: 2014-06-10 +
----+
  
-One commonly requires that a block of typeset material be kept on the +En temps normal, un bloc de texte doit être conservé sur une même page. Mais il s'​avère étonnamment difficile de réussir cela
-same page; it turns out to be surprisingly tricky to arrange this.+
  
-LaTeX provides a `samepage` environment which claims it +===== De manière automatique =====
-does this sort of thing for you.  It proceeds by setting infinite +
-penalties for all sorts of page-break situations; but in many +
-situations where you want to prevent a page break, +
-`samepage` doesn'​t help.  If you're trying to keep running +
-text together, you need to end the paragraph inside the environment +
-(see [preserving paragraph parameters](FAQ-paraparam.md)). +
-Also, if the things you are trying to keep together insert their own +
-pagebreak hints, `samepage` has no power over them (though +
-list items' attempts&​nbsp;&​mdash;​ they suggest page breaks between items&​nbsp;&​mdash;​ +
-are subverted by `samepage`). ​ Naturally, if +
-`samepage` _does_ work, it is capable of leaving +
-stuff jutting out at the bottom of the page.+
  
-Another convenient trick is to set all the relevant stuff in a +==== Avec des commandes de base ====
-`\parbox` (or a `minipage` if it contains things like +
-verbatim text that may not be used in the argument of a `\parbox`). +
-The resulting box certainly _won'​t_ break between pages, but +
-that's not to say that it will actually do what you want it to do: +
-again, the box may be left jutting out at the bottom of the page.+
  
-Why do neither of these obvious things work?&​nbsp;&​mdash;​ Because TeX can'+<​latex>​\LaTeX</​latex>​ fournit un environnement ​''​samepage''​ qui propose de traiter ce sujetIl procède en fixant des pénalités infinies pour toutes sortes de situations de saut de page (pensez d'ailleurs à bien terminer vos paragraphes dans l'environnement,​ comme indiqué dans la question « [[3_composition:​texte:​paragraphes:​parametres_non_appliques_au_paragraphe|Pourquoi mon paramètre de paragraphe est-il ignoré ?]] »). Mais cet environnement a plusieurs limites : 
-really distinguish between infinitely awful things. +  ​* ​''​samepage'' ne gère pas toutes les situations ; 
-`Samepage` will make any possible break point ''​infinitely +  * si les éléments que vous essayez de garder ensemble insèrent leurs propres recommandations de saut de page, ''​samepage''​ n'a aucun pouvoir sur eux, exception faite des suggestions des éléments de liste pour insérer des sauts de page entre eux; 
-bad'' ​and boxes don't even offer the option of breaks, but if the +  * si ''​samepage''​ //​fonctionne//,​ il est capable de laisser des éléments déborder en bas de la page
-alternative is the leave an infinitely bad few centimetres of blank +
-paper at the bottom of the page, TeX will take the line of least +
-resistance and do nothing.+
  
-This problem still arises even if you have `\raggedbottom` in +Une autre astuce pratique consiste à placer tous les éléments pertinents dans une commande ''​\parbox''​ (ou un environnement ''​minipage''​ s'il contient des éléments qui ne peuvent être utilisés dans l'​argument de ''​\parbox''​). La boîte résultante //ne se scindera pas// entre les pages... mais cela ne veut pas dire qu'​elle fera proprement ce que vous souhaitez ​une nouvelle fois, la boîte peut largement déborder en bas de la page.  
-effect: TeX doesn't notice the value of _that_ until it starts + 
-actually shipping a page out One approach is to set+Pourquoi aucune de ces choses évidentes ne fonctionne ? Parce que <​latex>​\TeX</​latex>​ ne peut pas vraiment faire la distinction entre des choses qu'il définit comme « infiniment mauvaises ». L'​environnement ''​samepage''​ rend tout point de saut de page « infiniment mauvais » et les boîtes n'​offrent aucune option de saut de page. Toutefois, si l'​alternative est de laisser quelques centimètres « infiniment mauvais » de page blanche en bas de page, <​latex>​\TeX</​latex>​ ne fait rien.  
-```latex+ 
 +Ce problème se pose d'​ailleurs même si vous avez utilisé la commande ''​\raggedbottom''​ : <​latex>​\TeX</​latex>​ ne remarque pas ce paramètre tant qu'il ne délivre pas la page. Une approche consiste alors à définir ​:  
 + 
 +<​code ​latex>
 \raggedbottom \raggedbottom
 \addtolength{\topskip}{0pt plus 10pt} \addtolength{\topskip}{0pt plus 10pt}
-``` +</​code>​ 
-The `10pt` offers a hint to the output ​routine ​that the column is + 
-stretchable;​ this will cause TeX to be more tolerant of the need to +Le ''​10pt''​ indique à la routine ​de sortie que la colonne de texte est extensible. Cela amènera <​latex>​\TeX</​latex>​ à être plus tolérant sur la nécessité de s'​étirer lors de la construction de la page. Si vous recourrez à cette mesure temporairement dans votre documentil vous faudra annuler la modification de ''​\topskip''​ avec :  
-stretch while building the page.  If you're doing this as a temporary + 
-measurecancel the change to `\topskip` by+<​code ​latex>
-```latex+
 \addtolength{\topskip}{0pt plus-10pt} \addtolength{\topskip}{0pt plus-10pt}
-``` +</​code>​
-as well as resetting `\flushbottom`. ​ (Note that the `10pt` never +
-actually shows up, because it is overwhelmed when the page is shipped +
-out by the stretchability introduced by `\raggedbottom`;​ however, it +
-could well have an effect if `\flushbottom` was in effect.)+
  
-An alternative (which derives from a suggestion by Knuth in the +De même, il fera réinitialiser ''​\flushbottom''​. Notez que le ''​10pt''​ n'​impacte jamais réellement la page car il est neutralisé par l'​extensibilité introduite par ''​\raggedbottom''​ lorsque la page est finalisée. Cependant, il pourrait bien avoir un effet si ''​\flushbottom''​ est actif. 
-TeXbookis the package ​[`needspace`](https://​ctan.org/​pkg/​needspace) or the [`memoir`](https://​ctan.org/​pkg/​memoir) class, + 
-which both define a command `\needspace` whose argument ​tells it +==== Avec l'​extension needspace ou la classe memoir ==== 
-what space is needed If the space isn't availablethe current ​page + 
-is cleared, and the matter that needs to be kept together will be +Une alternative (suggérée par Donald ​Knuth dans le <​latex>​\TeX book</​latex>​est donnée par l'​extension ​[[ctanpkg>​needspace|needspace]] ou la classe [[ctanpkg>​memoir|memoir]]Elles définissent toutes deux une commande ''​\needspace''​ dont l'argument ​lui indique quel espace est nécessaire pour garder les éléments groupésSi l'espace n'est pas disponiblela page actuelle est effacée et les élements qui doivent être conservés ensemble sont insérés dans une nouvelle ​page. Par exemplesi lignes de texte doivent être conservées ensemblela séquence  
-inserted on the new page.  For exampleif 4&​nbsp;​lines of text need to be + 
-kept togetherthe sequence +<​code ​latex>
-```latex+
 \par \par
 \needspace{4\baselineskip} \needspace{4\baselineskip}
-the stuff that must stay together +Les éléments qui doivent rester ensemble 
-<text generating lines 1-4+<le texte d'une à quatre lignes
-now stuff we don't mind about +Puis la suite où vous êtes moins regardant 
-``` +</​code>​ 
-Yet another trick by Knuth is useful if you have a sequence of small + 
-blocks of text that needindividuallyto be kept on their own page. +==== Avec la commande \filbreak ==== 
-Insert the command `\filbreak` before each small block, and the + 
-effect is achieved ​The ​technique ​can be used in the case of +Une autre astuce donnée par Knuth peut servir si vous avez une séquence de petits blocs de texte qui doiventindividuellementêtre conservés sur leur propre ​page. Insérez alors la commande ''​\filbreak''​ avant chaque petit blocLa technique ​peut être utilisée dans le cas de séquences de sections ​<​latex>​\LaTeX</​latex>​en incorporant ''​\filbreak''​ dans la définition d'une commande ​(sur le principe vu dans « [[2_programmation:​macros:​patcher_une_commande_existante|Comment modifier une commande existante ?]] »). Un patch simple ​et efficace peut être :  
-sequences of LaTeX-style ​sections, ​by incorporating `\filbreak+ 
-into the definition of a command ​(as in  +<​code ​latex>
-[patching commands](FAQ-patch.md)).  ​A ​simple ​and effective +
-patch would be+
-<!-- {% raw %} --> +
-```latex+
 \let\oldsubsubsection=\subsubsection \let\oldsubsubsection=\subsubsection
 \renewcommand{\subsubsection}{% \renewcommand{\subsubsection}{%
Ligne 86: Ligne 53:
   \oldsubsubsection   \oldsubsubsection
 } }
-``` +</code
-<!-- {% endraw %} --+ 
-While the trick works for consecutive sequences of blocksit'+Bien que l'​astuce fonctionne pour des blocs de texte consécutifsil est assez délicat de sortir d'une telle séquence à moins qu'​elle ne soit interrompue par un saut de page forcé ​(comme ''​\clearpage''​qui peut être introduit par une commande ''​\chapter''​ ou la fin du document). ​Si la séquence n'est pas interrompue,​ le dernier bloc est susceptible d'​être placé sur une nouvelle page, qu'il en ait besoin ou non.  
-slightly tricky to get out of such sequences unless the sequence is + 
-interrupted by a forced ​page break (such as `\clearpage`which may +===== De manière manuelle ===== 
-be introduced by a `\chapter` command, or the end of the document). + 
-If the sequence is not interruptedthe last block is likely to be +Si vous êtes prêt à accepter que tout ne peut pas être accompli de manière totalement automatiquela voie à suivre est de composer le document et de vérifier les éléments susceptibles de créer des problèmes. Dans un tel scénario, vous pouvez décider, au cas par cas, comment traiter les problèmes au dernier stade de la relecture. Là, vous pouvez modifier manuellement les sauts de page : 
-forced onto a new page, regardless of whether it actually needs it.+  * en utilisant ''​\pagebreak''​ ou ''​\clearpage''​ pour ajouter un saut de page ; 
 +  * en plaçant une commande ''​\nopagebreak''​ pour supprimer les coupures malheureuses.  
 + 
 +Vous pouvez également procéder à de petits ajustements de la géométrie de la page, en utilisant ''​\enlargethispage''​. Supposons que vous ayez une ligne ou deux qui s'​égarent,​ vous pourrez alors indiquer : 
 + 
 +<code latex> 
 +\enlargethispage{2\baselineskip} 
 +</​code>​ 
 + 
 +Deux lignes sont ajoutées ainsi à la page que vous composez. Et que cette technique puisse sembler horrible ou acceptable, elle reste un élément utile dans votre arsenal.  
 + 
 +Notez que les commandes ''​\pagebreak''​ et ''​\nopagebreak''​ prennent un argument numérique facultatif pour ajuster la façon dont la commande doit être interprétée. Ainsi avec ''​\pagebreak[0]'',​ la commande indique qu'un saut de page peut valoir la peine d'​être fait alors que ''​\pagebreak[4]''​ demande le saut de page. De même ''​\nopagebreak[0]''​ fait une suggestion, tandis que ''​\nopagebreak[4]''​ est une demande. Dans les deux commandes, la valeur par défaut de l'​argument facultatif est 4
  
-If one is willing to accept that not everything can be accomplished +-----
-totally automatically,​ the way to go is to typeset the document and to +
-check for things that have the potential to give trouble. ​ In such a +
-scenario (which has Knuth'​s authority behind it, if one is to believe +
-the rather few words he says on the subject in the TeXbook) one can +
-decide, case by case, how to deal with problems at the last +
-proof-reading stage. ​ At this stage, you can manually alter page +
-breaking, using either `\pagebreak` or `\clearpage`,​ or you can +
-place a `\nopagebreak` command to suppress unfortunate breaks. +
-Otherwise, you can make small adjustments to the page geometry, using +
-`\enlargethispage`. ​ Supposing you have a line or two that stray: +
-issue the command `\enlargethispage{2`\baselineskip`}` and +
-two lines are added to the page you're typesetting. ​ Whether this +
-looks impossibly awful or entirely acceptable depends on the document +
-context, but the command remains a useful item in the armoury.+
  
-Note that both `\pagebreak` and `\nopagebreak` take an optional +//​Source:// ​[[faquk>​FAQ-nopagebrk|Preventing ​page breaks between lines]]
-number argument to adjust how the command is to be interpreted. ​ Thus +
-`\pagebreak[0]`, the command ''​suggests''​ that a page break +
-might be worth doing, whereas `\pagebreak[4]` ''​demands''​ a +
-page break. ​ Similarly `\nopagebreak[0]` makes a suggestion,​ +
-while `\nopagebreak[4]` is a demand. ​ In both commands, the +
-default value of the optional argument is 4.+
  
 +{{htmlmetatags>​metatag-keywords=(LaTeX,​saut de page,​samepage,​\parbox,​\pagebreak,​\raggedbottom,​needspace)
 +metatag-og:​title=(Comment éviter un saut de page entre des lignes)
 +metatag-og:​site_name=(FAQ LaTeX francophone)
 +}}
  
3_composition/texte/pages/empecher_un_saut_de_page_entre_deux_lignes.1527151382.txt.gz · Dernière modification: 2018/05/24 10:43 par joseph.wright
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0