2
1

Dans l'ECM suivant, l'espace vertical après « lieu 2 », situé sous la deuxième boîte (qui tient sur une ligne), est plus grand que l'espace après « lieu 1 », sous la première boîte qui, elle, tient sur deux lignes.

Je ne comprends pas pourquoi.

Ouvrir dans l'éditeur Overleaf
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage[top=1.5cm,bottom=1cm,left=1.75cm,right=1.75cm]{geometry}

% multiplicateurs et longueurs
\newcommand\marginll{0.12}
\newcommand\centersize{0.775}
\setlength\fboxrule{0.25pt}
\setlength\fboxsep{0pt}

% définition des sections
\newcommand{\cvlineA}[3]{\fbox{\begin{minipage}[t]{\marginll\textwidth}\raggedleft\small\sffamily #1\end{minipage}}\hspace{3mm}\fbox{\begin{minipage}[t]{\centersize\textwidth}#2\end{minipage}}\hfill\fbox{\makebox[0pt][r]{#3}}}%
\newcommand*{\cvitemA}[3]{\noindent\cvlineA{\textbf{#1}}{\small#2}{\raggedleft\small\fbox{\textbf{#3}}}\par}%

\begin{document}
\cvitemA{année}{\textbf{ploplo} description description description description description description description description description description description description description}{Lieu 1}%
\cvitemA{année}{\textbf{ploplo} description description}{Lieu 2}%
\cvitemA{année}{\textbf{ploplo} description description description description description description description description description description description description description}{Lieu}%
\end{document}

Posée 25 Nov '17, 07:53

pluton's gravatar image

pluton
1.2k22836
Taux d'acceptation : 34%

Modifiée 25 Nov '17, 18:05

Pathe's gravatar image

Pathe ♦♦
7.4k29197245


Il faut ajouter \par \xdef\mtprevdepth{\the\prevdepth} à la fin de la deuxième boîte (deuxième minipage de la commande \cvlineA) pour sauvegarder la valeur de \the\prevdepth, puis utiliser cette valeur pour la construction de la prochaine boîte, avec \par \prevdepth\mtprevdepth à la fin de la commande \cvitemA.

ECM

Ouvrir dans l'éditeur Overleaf
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage[top=1.5cm,bottom=1cm,left=1.75cm,right=1.75cm]{geometry}

% multiplicateurs et longueurs
\newcommand\marginll{0.12}
\newcommand\centersize{0.775}
\setlength\fboxrule{0.25pt}
\setlength\fboxsep{0pt}

% définition des sections
\newcommand{\cvlineA}[3]{\fbox{\begin{minipage}[t]{\marginll\textwidth}\raggedleft\small\sffamily #1\end{minipage}}\hspace{3mm}\fbox{\begin{minipage}[t]{\centersize\textwidth}#2\par \xdef\mtprevdepth{\the\prevdepth}\end{minipage}}\hfill\fbox{\makebox[0pt][r]{#3}}}%
\newcommand*{\cvitemA}[3]{\noindent\cvlineA{\textbf{#1}}{\small#2}{\raggedleft\small\fbox{\textbf{#3}}}\par\prevdepth\mtprevdepth}%

\begin{document}
\cvitemA{année}{\textbf{ploplo} description description description description description description description description description description description description description}{Lieu 1}%
\cvitemA{année}{\textbf{ploplo} description description}{Lieu 2}%
\cvitemA{année}{\textbf{ploplo} description description description description description description description description description description description description description}{Lieu}%
\end{document}

Comment (La)TeX gère-t-il l'espace entre lignes ?

Une page est, pour (La)TeX, un ensemble des boîtes (lignes) disposées les uns en dessous des autres. Pour garder une distance constante entre les boîtes (La)TeX calcule la valeur : Sep = b - h - p. où b = baselineskip : valeur définie par la classe, par défaut =12pt. h = hauteur de la boîte suivante (ou actuelle). p = profondeur de la boîte précédente.

  • Si Sep>=\lineskiplimite (=0pt par défault) la distance (finale) entre les deux boîtes (lignes) est égale à \baselineskip. Dans ce cas TeX ajoute une espace verticale de Sep entre les deux boîtes.

  • Si Sep<\lineskiplimite TeX ajoute une espace verticale de \lineskip (=1pt par défault) entre les deux boîtes. Dans ce cas, la distance finale entre les deux boîtes est plus grande que la norme.

Exemple On utilise la primitive \vrule pour construire un objet invisible (W=0pt) de profondeur X et de hauteur Y. Cette primitive a la syntaxe suivante :

\vrule width W depth X height Y.

On définie donc la commande :

\newcommand*{\mtrule}[2][0pt]{\mbox{\vrule width 0pt depth #1 height #2}}.

La commande \mtrule[X]{Y} ajoute une boîte vide (de largeur nul) de profondeur X et de hauteur Y. La valeur par défaut de X est 0pt.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\newcommand*{\mtline}[1]{\makebox[0pt][l]{\rule{\textwidth}{\fboxrule}}#1}

\newcommand*{\mtrule}[2][0pt]{\mbox{\vrule width 0pt  depth #1 height #2}}

\setlength{\parindent}{0pt}

\begin{document}

\mtline{abcdefg}

\mtline{abcdefg}

\mtline{abcdefg}

\mtline{\mtrule{6pt}} %p=0 h=6pt

\mtline{\mtrule{6pt}} %p=0 h=6pt

\mtline{\mtrule[10pt]{6pt}}  %p=10 h=6pt

\mtline{\mtrule{1pt}}  %p=0 h=1pt

\mtline{\mtrule[10pt]{6pt}} %p=10 h=6pt

\mtline{\mtrule{2pt}} %p=0 h=2pt

\mtline{\mtrule[10pt]{6pt}} %p=10 h=6pt

\mtline{\mtrule{3pt}} %p=0 h=3pt

\mtline{\mtrule[10pt]{6pt}} %p=10 h=6pt

\mtline{\mtrule{5pt}} %p=0 h=5pt

\end{document}

Cas de minipage

L'environnement minipage possède une argument optionnelle qui indique l'alignement de la boîte sur la ligne courante.

  • c : la boite est centrée verticalement i.e. profondeur=hauteur;
  • b : la profondeur de la boite est celle de la dernière ligne, le reste est la hauteur;
  • t : la hauteur de la boîte est la hauteur de la première ligne, le reste c'est la profondeur.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\newcommand*{\mtline}[1]{\makebox[0pt][l]{\rule{\textwidth}{\fboxrule}}#1}
\setlength{\parindent}{0pt}
\setlength{\fboxsep}{0pt}

\begin{document}
\mtline{A}\hfill
\fbox{%
\begin{minipage}[b]{.3\textwidth}
De texte pour montrer la différence entre les différent options
de l'environnement minipage.
\end{minipage}}\hfill
\fbox{%
\begin{minipage}[t]{.3\textwidth}
De texte pour montrer la différence entre les différent options
de l'environnement minipage.  
\end{minipage}}\hfill
\fbox{%
\begin{minipage}[c]{.3\textwidth}
De texte pour montrer la différence entre les différent options
de l'environnement minipage.  
\end{minipage}}
\end{document}

Dans l'exemple de P.O. la profondeur de la première minipage est assez grand, donc Sep<0 et LaTeX a ajouté une espace verticale =1pt (espace relativement petite). La deuxième minipage contient une seule ligne, c'est pratiquement une ligne normale et l'espace verticale après cette boite est normale (plus grand que 1pt).

Lien permanent

Publiée 25 Nov '17, 12:35

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 27 Nov '17, 19:35

mazette, c'est super compliqué! Merci. Que se passe-t-il exactement avec minipage ?

(26 Nov '17, 20:05) pluton pluton's gravatar image

Je vais essayer d'ajouter une petite explication.

(26 Nov '17, 20:40) touhami touhami's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.