Problème d'espacement vertical (\baselinestretch modifié)

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
MB
Administrateur
Administrateur
Messages : 7135
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Problème d'espacement vertical (\baselinestretch modifié)

Message par MB »

Bonjour, voici le problème expliqué dans un ecm :

Code : Tout sélectionner

\documentclass[a4paper,10pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage[a4paper]{geometry}
\geometry{hscale=0.85,vscale=0.85,centering}
\usepackage{calc}
%
\renewcommand{\baselinestretch}{2}
%
\newenvironment{enva}{
\newcommand{\widthsq}{\textwidth-2ex}
\begin{flushright} 
\begin{minipage}[t]{\widthsq}}{
\end{minipage}
\end{flushright}}
%
\newenvironment{envb}{
\newcommand{\widthsq}{\textwidth-4ex}
\begin{flushright} 
\vspace{-0.35\baselineskip}
\begin{minipage}[t]{\widthsq}}{
\end{minipage}
\end{flushright}}
%
\begin{document}

\begin{enva}
Un texte de l'environnement 'a' qui fait moins d'une ligne.
\end{enva}

\begin{enva}
Un texte de l'environnement 'a' qui fait moins d'une ligne.
\end{enva}

\begin{envb}
Un texte de l'environnement 'b' qui fait moins d'une ligne (peu importe en fait).
\end{envb}

\begin{envb}
Un texte de l'environnement 'b' qui fait moins d'une ligne (peu importe en fait).
\end{envb}

\begin{enva}
Un texte de l'environnement 'a' qui fait moins d'une ligne. On remarque que l'environnement 'b' suivant n'est pas espacé de l'environnement 'a' comme les autres. L'espacement est (un peu) plus court.
\end{enva}

% Ici, l'espacement ne convient pas.

\begin{envb}
Un texte de l'environnement 'b' qui fait moins d'une ligne (peu importe en fait).
\end{envb}

\begin{envb}
Un texte de l'environnement 'b' qui fait moins d'une ligne (peu importe en fait).
\end{envb}

\end{document}
J'ai volontairement et grossièrement modifié \baselinestretch afin que le problème soit plus visible. Je dois dire que je ne comprends pas très bien pourquoi je n'obtiens pas le bon espacement mais c'est clairement lié à la modification de cette valeur et à la présence d'un texte de plusieurs lignes dans l'environnement a.
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.

pg
Modérateur
Modérateur
Messages : 2600
Inscription : vendredi 15 juin 2007, 00:31

Re: Problème d'espacement vertical (\baselinestretch modifié)

Message par pg »

Le problème serait le même pour l'environnement b car c'est à cause de la minipage : lorsqu'elle fait plus d'une ligne, il n'y a pas ajout du baselineskip après, d'où le problème.

On peut essayer de rajouter ce baselineskip à la main, mais selon ce que tu veux obtenir, il y a probablement plus simple. A priori, une liste avec une marge à droite semble faire ce que tu veux et n'aura aucun de ces désavantages :

Code : Tout sélectionner

\documentclass[a4paper,10pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage[a4paper]{geometry}
\geometry{hscale=0.85,vscale=0.85,centering}
\usepackage{calc}
%
\renewcommand{\baselinestretch}{2}
%
\newenvironment{enva}{%
  \begin{list}{}{\leftmargin=2ex}\item\relax
}{%
  \end{list}%
}
%
\newenvironment{envb}{%
  \begin{list}{}{\leftmargin=4ex}\item\relax
}{%
  \end{list}%
}
%
\begin{document}


\begin{enva}
Un texte de l'environnement 'a' qui fait moins d'une ligne.
\end{enva}

\begin{enva}
Un texte de l'environnement 'a' qui fait moins d'une ligne.
\end{enva}

\begin{envb}
Un texte de l'environnement 'b' qui fait moins d'une ligne (peu importe en fait).
\end{envb}

\begin{envb}
Un texte de l'environnement 'b' qui fait moins d'une ligne (peu importe en fait).
\end{envb}

\begin{enva}
Un texte de l'environnement 'a' qui fait moins d'une ligne. On remarque que l'environnement 'b' suivant n'est pas espacé de l'environnement 'a' comme les autres. L'espacement est (un peu) plus court.
\end{enva}

\begin{envb}
Un texte de l'environnement 'b' qui fait moins d'une ligne (peu importe en fait).
\end{envb}

\begin{envb}
Un texte de l'environnement 'b' qui fait moins d'une ligne (peu importe en fait).
\end{envb}

\end{document}

MB
Administrateur
Administrateur
Messages : 7135
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Problème d'espacement vertical (\baselinestretch modifié)

Message par MB »

pg a écrit :Le problème serait le même pour l'environnement b car c'est à cause de la minipage : lorsqu'elle fait plus d'une ligne, il n'y a pas ajout du baselineskip après, d'où le problème.
Oui, c'est sûr.
pg a écrit :A priori, une liste avec une marge à droite semble faire ce que tu veux et n'aura aucun de ces désavantages.
En effet, ça fonctionne mieux et ça ne semble pas spécialement poser de problème par rapport à une structure minipage.
Merci pg.
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.

MB
Administrateur
Administrateur
Messages : 7135
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Problème d'espacement vertical (\baselinestretch modifié)

Message par MB »

D'ailleurs, il semblerait qu'aux vues du fichier ragged2e.sty les environnements de type "flushright" soient définis à l'aide de listes. On y trouve le code suivant :

Code : Tout sélectionner

\newenvironment{FlushRight}{%
   \trivlist
   \RaggedLeft\item\relax
   }{%
   \endtrivlist
   }
Je ne le savais pas et ça me conforte dans l'idée d'utiliser l'environnement list.
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.

pg
Modérateur
Modérateur
Messages : 2600
Inscription : vendredi 15 juin 2007, 00:31

Re: Problème d'espacement vertical (\baselinestretch modifié)

Message par pg »

Tout à fait, et ce n'est pas le seul, plein de trucs qui n'en ont pas forcément l'air sont définis à partir des listes ; extrait de latex.ltx :

Code : Tout sélectionner

\def\center{\trivlist \centering\item\relax}
\def\endcenter{\endtrivlist}
\def\flushleft{\trivlist \raggedright\item\relax}
\def\endflushleft{\endtrivlist}
\def\flushright{\trivlist \raggedleft\item\relax}
\def\endflushright{\endtrivlist}
Extrait de book.cls :

Code : Tout sélectionner

\newenvironment{quotation}
               {\list{}{\listparindent 1.5em%
                        \itemindent    \listparindent
                        \rightmargin   \leftmargin
                        \parsep        \z@ \@plus\p@}%
                \item\relax}
               {\endlist}
\newenvironment{quote}
               {\list{}{\rightmargin\leftmargin}%
                \item\relax}
               {\endlist}
Les théorèmes sont aussi des trivlist (voir amsthm.sty, ntheorem.sty).

MB
Administrateur
Administrateur
Messages : 7135
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Problème d'espacement vertical (\baselinestretch modifié)

Message par MB »

Oui, on en apprend tous les jours. :D
En tout cas, je vais donc modifier ma façon de faire habituelle et utiliser plus souvent ces environnements list. (en plus le code est plus simple)

Merci encore pg.
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.