Espace vertical en bas de page

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Espace vertical en bas de page

Messagepar MB » Lundi 04 Février 2019, 19:23

Bonsoir, il me semblait que LaTeX supprimait l'espace vertical en haut et en bas de page lors de l'utilisation des commandes \vspace ou \addvspace (et qu'on pouvait justement forcer cet espacement avec \vspace*). Avec l'ecm suivant, je constate que l'espace en bas de page n'est pas supprimé, ce qui ne me convient pas. Comment expliquer ce fonctionnement et comment faire pour que l'espace en bas de page ne soit pas ajouté ?

Code: Tout sélectionner
\documentclass[a6paper]{article}
\usepackage[showframe]{geometry}
\begin{document}
\addvspace{1cm}
blabla.
\vfill
blabla.\par
\addvspace{1cm}
\end{document}
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Espace vertical en bas de page

Messagepar touhami » Lundi 04 Février 2019, 20:37

Bonjour.

(La)TeX supprime l'espace vertical en haut de page pas en bas.
Pour que l'espace en bas de page ne soit pas ajouté, vous pourriez peut être essayer

Code: Tout sélectionner
\vspace{\stretch{FAC}}


ECM

Code: Tout sélectionner
\documentclass{article}
\usepackage[a6paper,showframe]{geometry}
\begin{document}
\vspace{\stretch{.01}}
blabla.

\vspace{\stretch{1}}
blabla.
\vspace{\stretch{.01}}
%\par
%%foo
\end{document}
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar MB » Lundi 04 Février 2019, 21:50

touhami a écrit:(La)TeX supprime l'espace vertical en haut de page pas en bas.


Voici ce que l'on peut trouver dans la documentation latex2e.

\vspace[*]{length}
The \vspace command adds the vertical space length, i.e., a rubber length. length can be negative or positive.
Ordinarily, LaTeX removes vertical space added by \vspace at the top or bottom of a page. With the optional * argument, the space is not removed.


En ce qui concerne la solution proposée, il me faudrait un système qui détecte automatiquement si on se trouve en bas de page.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Espace vertical en bas de page

Messagepar touhami » Lundi 04 Février 2019, 22:33

MB a écrit:Voici ce que l'on peut trouver dans la documentation latex2e.

\vspace[*]{length}
The \vspace command adds the vertical space length, i.e., a rubber length. length can be negative or positive.
Ordinarily, LaTeX removes vertical space added by \vspace at the top or bottom of a page. With the optional * argument, the space is not removed.


Je crains que ce ne soit pas correct.

MB a écrit:En ce qui concerne la solution proposée, il me faudrait un système qui détecte automatiquement si on se trouve en bas de page.


Vous pouvez faire une comparaison des numéros des pages.
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar MB » Lundi 04 Février 2019, 23:05

J'ai vérifié dans la version 2018 de latex2e.pdf (car j'utilisais la version 2014) et voici ce qu'on y trouve.

LaTeX removes the vertical space from \vspace at a page break, that is, at the top or bottom of a page. The starred version \vspace*{...} causes the space to stay.


Dans LaTeX for Linux: A Vade Mecum, on trouve ceci.

\vspace will be ignored if the program decides to break the page at that point. To force a specific amount of vertical space, even if it is a page break (at the bottom of page) write an asterisk immediately after the command.


Tout ça n'est pas très clair pour moi.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Espace vertical en bas de page

Messagepar touhami » Mardi 05 Février 2019, 09:24

Bonjour.

(La)TeX supprime l'espace ajoutée par \vspace (\vskip pour TeX) lorsqu'il y a une coupure de page. En top de page, c'est toujours vrai, en bas de page ça dépend de la classe (options oneside ou twoside).
Ici, c'est la classe article (option oneside) l'espace n'est pas supprimé. Mais ce n'est pas la seule raison. En effet, c'est la dernière page, et il y a une autre espace verticale insérée par la commande \clearpage au moment de \end{doument}.
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar MB » Mardi 05 Février 2019, 09:48

Merci pour les ces précisions qui expliquent un peu les choses !
Je ne sais pas d'où proviennent ces informations mais je crois comprendre que ces suppressions d'espace vertical sont directement gérées par \vskip ?
Voici le code de la commande \vspace.

Code: Tout sélectionner
\DeclareRobustCommand\vspace{\@ifstar\@vspacer\@vspace}
\def\@vspace #1{%
  \ifvmode
    \vskip #1
    \vskip\z@skip
   \else
     \@bsphack
     \vadjust{\@restorepar
              \vskip #1
              \vskip\z@skip
              }%
     \@esphack
   \fi}
\def\@vspacer#1{%
  \ifvmode
    \dimen@\prevdepth
    \hrule \@height\z@
    \nobreak
    \vskip #1
    \vskip\z@skip
    \prevdepth\dimen@
  \else
    \@bsphack
    \vadjust{\@restorepar
             \hrule \@height\z@
             \nobreak
             \vskip #1
             \vskip\z@skip}%
    \@esphack
  \fi}


Comment faire pour que l'espace soit supprimé en bas de page quelque soit le cas ?
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Espace vertical en bas de page

Messagepar touhami » Mardi 05 Février 2019, 10:10

En dernière page, c'est difficile. Pourriez vous poster un exemple minimale plus complet.
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar touhami » Mardi 05 Février 2019, 12:22

La solution simple est d'utiliser l'option de classe twoside ou d'ajouter, au préambule, la commande \flushbottom. Pour le problème de la dernière page, pourquoi voulez vous utiliser \vspace{} just avant \end{document} ? S'il agit d'un document généré automatiquement, il faut trouver un outil qui peut le supprimer.
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar MB » Mardi 05 Février 2019, 12:43

En fait c'est pour le développement d'un package dans lequel on a différents environnements qui comportent des marges verticales de type \addvspace. Il faudrait qu'une marge verticale se retrouvant en bas de page soit automatiquement désactivée. Je pensais que ça serait automatique étant donné le fonctionnement de LaTeX, mais au final ça se complique. Peut-être avec des commandes \@ifnextchar en testant un \pagebreak ou un \clearpage ?
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Espace vertical en bas de page

Messagepar evariste_G » Mardi 05 Février 2019, 17:03

Bonjour.

Je ne sais pas si ça va t'aider, mais en utilisant la commande \enlargethispage*{0pt}, cela force à laisser l'espace vertical. Ce n'est pas une solution optimale, mais sait-on jamais... Si ça te permet d'obtenir ce que tu souhaites...
Mathématiques, LaTeX et Python : http://www.mathweb.fr
Cours de math, aide à distance : https://cours-particuliers-bordeaux.fr/
evariste_G
Téra-utilisateur
 
Messages: 1419
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Actif et salarié | Enseignant

Re: Espace vertical en bas de page

Messagepar touhami » Mardi 05 Février 2019, 18:24

Il faut savoir que la plupart des environnements LaTeX (center, abstract, itemize, theorem) ont ce genre de séparation.

Code: Tout sélectionner
\documentclass{article}
\usepackage[showframe]{geometry}
\begin{document}
bla bla
\vfill
\begin{itemize}
\item foo
\item foo
\end{itemize}
\end{document}
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar MB » Mardi 05 Février 2019, 19:01

@evariste_G. Je souhaite au contraire ne pas conserver cet espace vertical (en bas de page).

@touhami. Plusieurs d'entre eux sont basés sur l'environnement trivlist il me semble, je vais tenter de regarder un peu le code de \endtrivlist pour voir. Mais pour l'instant c'est le fonctionnement de \vskip en bas de page qui ne me semble pas très clair.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Espace vertical en bas de page

Messagepar touhami » Mardi 05 Février 2019, 20:08

Commencer par comparer ces deux exemples :

Code: Tout sélectionner
\documentclass[%
%twoside
]{article}
\usepackage[showframe,height=5cm]{geometry}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean et vehicula mi.
In et nisi massa. Donec sed libero bibendum sapien dictum finibus vel eu sapien.
Vestibulum euismod id lacus a cursus. Suspendisse et nibh vitae ligula cursus gravida vel id libero.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
 
Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
Sed sollicitudin risus in orci rutrum, id sodales urna pellentesque. Donec at luctus velit.

Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
\vskip2cm\relax
Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
Sed sollicitudin risus in orci rutrum, id sodales urna pellentesque. Donec at luctus velit.
\end{document}
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar touhami » Mercredi 06 Février 2019, 07:33

Exemples

Code: Tout sélectionner
\documentclass[%
%twoside
]{article}
\usepackage[showframe,height=5cm]{geometry}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean et vehicula mi.
In et nisi massa. Donec sed libero bibendum sapien dictum finibus vel eu sapien.
Vestibulum euismod id lacus a cursus. Suspendisse et nibh vitae ligula cursus gravida vel id libero.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
 
Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
Sed sollicitudin risus in orci rutrum, id sodales urna pellentesque. Donec at luctus velit.

Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
\vskip2cm\relax
Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
Sed sollicitudin risus in orci rutrum, id sodales urna pellentesque. Donec at luctus velit.
\end{document}


Brève explication

Parmi les points où TeX (le programme) peut couper la page on trouve les ressorts.
Un ressort est un élément effaçable, c'est-dire, lorsque TeX déicide de couper la page sur un ressort, il l'efface (...).
Une espace verticale insérée par \vskip est un ressort. Donc, normalement elle doit être effacer par TeX. C'est le cas de l'exemple avec l'option twoside (comportement par défaut de TeX). Dans l'exemple avec l'option oneside l'espace verticale ajoutée par \vskip a été effacée, mais il y a un autre ressort qui a été ajouté à la page plus tard par la routine de sortie de LaTeX.
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar MB » Mercredi 06 Février 2019, 09:38

Je constate effectivement une différence au niveau de l'espacement en bas de page dans entre les options oneside et twoside.
J'ai ajouté un \newpage et j'ai comparé les deux options avec et sans le \vskip qui précède.

Code: Tout sélectionner
\documentclass[oneside]{article}
\usepackage[showframe,height=5cm]{geometry}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean et vehicula mi.
In et nisi massa. Donec sed libero bibendum sapien dictum finibus vel eu sapien.
Vestibulum euismod id lacus a cursus. Suspendisse et nibh vitae ligula cursus gravida vel id libero.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
 
Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
Sed sollicitudin risus in orci rutrum, id sodales urna pellentesque. Donec at luctus velit.

Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.

\vskip2cm\relax
\newpage

Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
Sed sollicitudin risus in orci rutrum, id sodales urna pellentesque. Donec at luctus velit.
\end{document}


  • Avec oneside : aucune différence avec ou sans vskip.
  • Avec twoside : il y a moins d'espace en bas de page (plus aucun) avec le vskip que sans (cas dans lequel on retrouve le même espacement qu'avec oneside).
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Espace vertical en bas de page

Messagepar touhami » Mercredi 06 Février 2019, 10:16

Je n'ai pas bien compris votre dernier message, et en particulier
MB a écrit:
  • Avec twoside : il y a moins d'espace en bas de page (plus aucun) avec le vskip que sans (cas dans lequel on retrouve le même espacement qu'avec oneside).
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar MB » Mercredi 06 Février 2019, 11:10

Voici ce que j'obtiens avec le code suivant (twoside avec vskip).

Code: Tout sélectionner
\documentclass[twoside]{article}
\usepackage[showframe,height=5cm]{geometry}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean et vehicula mi.
In et nisi massa. Donec sed libero bibendum sapien dictum finibus vel eu sapien.
Vestibulum euismod id lacus a cursus. Suspendisse et nibh vitae ligula cursus gravida vel id libero.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
 
Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
Sed sollicitudin risus in orci rutrum, id sodales urna pellentesque. Donec at luctus velit.

Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
\vskip2cm\relax
\newpage
\end{document}


twoside_vskip.png


Voici ce que j'obtiens avec le code suivant (twoside sans vskip).

Code: Tout sélectionner
\documentclass[twoside]{article}
\usepackage[showframe,height=5cm]{geometry}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean et vehicula mi.
In et nisi massa. Donec sed libero bibendum sapien dictum finibus vel eu sapien.
Vestibulum euismod id lacus a cursus. Suspendisse et nibh vitae ligula cursus gravida vel id libero.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
 
Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
Sed sollicitudin risus in orci rutrum, id sodales urna pellentesque. Donec at luctus velit.

Duis at tellus a leo ultricies venenatis a vel sem. Fusce dapibus tincidunt nibh eget ultrices.
Donec mattis et metus sed tincidunt. Donec eget gravida eros, vitae porttitor massa.
Pellentesque tempus consequat tellus, ac ultricies risus tristique quis.
%\vskip2cm\relax
\newpage
\end{document}


twoside_novskip.png


Il y a donc moins d'espace en bas de page avec le vskip que sans.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Espace vertical en bas de page

Messagepar touhami » Mercredi 06 Février 2019, 11:26

Ok.

Sans \vskip : la commande \newpage est à-peu-près \vfil\break donc TeX va remplir le reste de la page par de blanc puis couper la page.

Avec \vskip : TeX va ajouter 2cm d'espace (ressort) ce qui fait une page très longue (essayer par exemple avec \vskip 2mm\relax) . Par suite TeX décide de couper la page sur le ressort (avant le \newpage, le \newpage est donc sans effet) et d'effacer cet espace.
touhami
Méga-utilisateur
 
Messages: 430
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Espace vertical en bas de page

Messagepar MB » Mercredi 06 Février 2019, 11:41

Donc il faudrait faire en sorte que généraliser le comportement de tex en mode twoside au mode oneside (qui sont pourtant des concepts latex il me semble).
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Suivante

Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 6 invités