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

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
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 : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

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

Message non lu 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. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
pg
Modérateur spécialisé
Modérateur spécialisé
Messages : 2613
Inscription : vendredi 15 juin 2007, 00:31

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

Message non lu 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 : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

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

Message non lu 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. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

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

Message non lu 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. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
pg
Modérateur spécialisé
Modérateur spécialisé
Messages : 2613
Inscription : vendredi 15 juin 2007, 00:31

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

Message non lu 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 : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

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

Message non lu 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. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message