Quelle en est l'explication ? � quoi correspond ce d�calage ?
Y a-t-il un moyen plus �l�gant permettant d'obtenir le r�sultat d�sir�
que celui que je donne � la fin de mon ECM ?
Je pourrais �videmment placer la commande de changement de couleur juste
avant la minipage, mais cela ne me convient pas mieux.
Merci.
\documentclass{article}
\usepackage{color}
\begin{document}
% comportement attendu (pas de couleur)
bla bla \begin{minipage}[t]{12mm}
C C C C C C C
\end{minipage}
\bigskip
% d�calage vers le bas (en pr�sence de \color)
bla bla \begin{minipage}[t]{12mm}
\color{red}C C C C C C C
\end{minipage}
\bigskip
% une mani�re peu �l�gante de s'en sortir
bla bla \begin{minipage}[t]{12mm}
\rule{0pt}{0pt}\color{red}C C C C C C C
\end{minipage}
\end{document}
Quelle en est l'explication ? � quoi correspond ce d�calage ?
Avec \textcolor{red}{....} en lieu et place de \color{red}..., le
d�calage ne se produit pas. Ceci m'apporte une solution qui me convient,
mais n'explique pas le ph�nom�ne.
> Bonsoir, lorsque j'essaye d'aligner une minipage avec le texte qui la
> précède via l'option [t], la minipage est décalée vers le bas lorsque le
> contenu de la minipage débute par \color (ou \bfseries\color par
> exemple) : le haut de la minipage coïncide avec la ligne de base du
> texte qui la précède.
>
> Quelle en est l'explication ? À quoi correspond ce décalage ?
Une histoire de modes horizontal et vertical. Cf. la doc color.pdf, §3.2.
--
LL
> Le 24 novembre 2009, quark67 a �crit :
>
> > Bonsoir, lorsque j'essaye d'aligner une minipage avec le texte qui la
> > pr�c�de via l'option [t], la minipage est d�cal�e vers le bas lorsque le
> > contenu de la minipage d�bute par \color (ou \bfseries\color par
> > exemple) : le haut de la minipage co�ncide avec la ligne de base du
> > texte qui la pr�c�de.
> >
> > Quelle en est l'explication ? � quoi correspond ce d�calage ?
>
> Une histoire de modes horizontal et vertical. Cf. la doc color.pdf, �3.2.
Merci beaucoup pour cette explication. Je l'ignorais totalement (je
n'avais rien trouv� dans le LaTeX Compagnon ni dans les documents pdf
initiant � LaTeX � ma disposition). Je n'ai pas pens� � regarder en
d�tail la doc color.pdf, d'autant que d�s l'introduction, cette derni�re
nous renvoie vers grfguide.pdf (qui n'en parle pas) pour une
documentation au niveau utilisateur.
Y a-t-il d'autres commandes pr�sentant ce genre de subtilit� ?
> Y a-t-il d'autres commandes présentant ce genre de subtilité ?
Tu veux dire dans color.sty ou dans tous les paquets LaTeX ? Dans le
premier cas, je ne crois pas, dans le deuxième, il y a fort à parier que
oui mais rien ne me vient à l'idée comme ça...
--
LL
> Le 26 novembre 2009, quark67 a �crit :
>
> > Y a-t-il d'autres commandes pr�sentant ce genre de subtilit� ?
>
> Tu veux dire dans color.sty ou dans tous les paquets LaTeX ? Dans le
> premier cas, je ne crois pas, dans le deuxi�me, il y a fort � parier que
> oui mais rien ne me vient � l'id�e comme �a...
Ok merci. J'avais esp�r� qu'un r�capitulatif de ce type de pi�ge
(passage en mode vertical avec une commande � priori qui n'a rien � voir
avec la noton de paragraphe) �tait disponible quelque part. Comment
as-tu trouv� que �a venait de \color ? Tu le savais d�j� pour y avoir
d�j� �t� confront� ou tu l'as appris quelque part ? Ou bien simplement
en pensant � chercher dans color.sty et sa doc ?
C'est quand-m�me bizarre, ce passage en mode vertical avec \color. Il y
a probablement une raison sens�e qui m'�chappe, mais je ne vois pas
quoi.
>> Quelle en est l'explication ? � quoi correspond ce d�calage ?
>
> Une histoire de modes horizontal et vertical. Cf. la doc color.pdf, �3.2.
>
On parle du m�me color.pdf ? Dans le mien, le paragraphe 3.2 parle de la
commande \textcolor...
--
Manuel P�gouri�-Gonnard Institut de math�matiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
> Lucas Levrel scripsit :
>
>>> Quelle en est l'explication ? � quoi correspond ce d�calage ?
>>
>> Une histoire de modes horizontal et vertical. Cf. la doc color.pdf, �3.2.
>>
> On parle du m�me color.pdf ? Dans le mien, le paragraphe 3.2 parle de la
> commande \textcolor...
>
Pouf-pouf, oui, et il explique en quoi c'est diff�rent de \color dans le
cas qui nous int�resse. La prochaine fois je lirai pour de vrai avant de
poster...
> Ok merci. J'avais esp�r� qu'un r�capitulatif de ce type de pi�ge
> (passage en mode vertical avec une commande � priori qui n'a rien � voir
> avec la noton de paragraphe)
Euh, mettons les choses au point : \color ne fait pas passer en mode
vertical. On *est* en mode vertical quand on commence la minipage. \color
ne change pas le mode courant, quoi qu'il arrive.
Le point est justement qu'ici on veut changer le mode courant, c'est
pour �a que \rule{0pt}{0pt} r�glait le probl�me. On pouvait aussi
utiliser \noindent, ou bien s�r \leavevmode � la place (c'est ce que
fait \textcolor).
La question, c'est pourquoi est-il g�nant que \color survienne en mode
vertical alors que \bfseries ne d�range pas ? La r�ponse est que la
notion de couleur n'est pas pr�vue dans TeX, elle utilise donc un
m�canisme d'extension de TeX, les � whatsit � (les � machins � en
fran�ais).
Pour fabriquer les paragraphes, les pages, le formules math�matiques,
TeX fait des listes d'�lements � placer les uns apr�s les autres. Ces
�l�ments peuvent �tre de diff�rents types, selon le type de liste : par
exemple, dans une liste horizontale on peut avoir des caract�res, des
bo�tes, des espaces fixes ou �tirables, des p�nalit�s, etc. Dans une
liste verticale par contre on n'aura pas droit aux caract�res. Dans ces
deux cas, il y a un type d'�l�ment particulier, le � whatsit �, qui
permet de stocker tout le reste : soit des trucs dont TeX s'occupe
(comme \write, qui est volontairement impl�ment� comme une extension de
TeX, � titre d'exemple), ou des trucs que TeX � proprement parler
ignore, et qui sont r�serv�s au back-end, comme les \special en DVI ou
tout un tas de trucs en PDF.
Bref, les changements de couleurs fonctionnent en ins�rant des �l�ments
��machins�� dans la liste courante. Quand on commence une minipage, on
est en mode vertical, c'est � dire en train de construire une liste
verticale. Donc le ��machin��, quand il est ins�r�, devient le premier
�l�ment de la liste verticale, faisant de la premi�re ligne le deuxi�me
�l�ment de la liste, et l� c'est le drame : l'alignement ne se fait plus
correctement. La solution, c'est de passer d'abord en mode horizontal,
pour que le ��machin�� de changement de couleur devienne un �l�ment de
la liste horizontale, et que le premi�re ligne reste bien le premier
�l�ment de la liste verticale. On observe le m�me ph�nom�ne si on met un
\write au tout d�but de la bo�te.
Ces histoires de whatsit sont une plaie profonde de la programmation en
TeX. (Contrairement � des trucs comme les probl�mes de d�veloppement qui
sont plus de l'ordre du p�nible, l� c'est un probl�me qui ne peut pas
�tre contourn�.) Il y a un titre d'expos� amusant de Morten H�gholm�:
� Galleys, or how I learned to stop worrying and love the whatsit��.
En LuaTeX, il y a une nouvelle notion permettant de r�aliser des
extensions comme les couleurs sans passer par des whatsit : les
attributs. � chaque �l�ment d'une liste (horizontale, verticale ou
math�matique) est attach� un certain nombres d'attributs, ayant
certaines valeurs. Bref, en LuaTeX, on peut impl�menter \color de fa�on
� ce qu'il n'ait pas ce d�faut.
> quark67 scripsit :
>
> > Ok merci. J'avais esp�r� qu'un r�capitulatif de ce type de pi�ge
> > (passage en mode vertical avec une commande � priori qui n'a rien � voir
> > avec la noton de paragraphe)
>
> Euh, mettons les choses au point : \color ne fait pas passer en mode
> vertical. On *est* en mode vertical quand on commence la minipage. \color
> ne change pas le mode courant, quoi qu'il arrive.
>
Effectivement, par inattention, je me suis totalement plant� dans ma
formulation en parlant de "passage en mode vertical" avec color, alors
qu'il s'agissait bien �videmmment de minipage.
Un grand merci pour ce long expos� qui d�taille les rouages internes et
qui explique par l� une particularit� de \color par rapport � d'autres
commandes.
> Comment
> as-tu trouvé que ça venait de \color ? Tu le savais déjà pour y avoir
> déjà été confronté ou tu l'as appris quelque part ? Ou bien simplement
> en pensant à chercher dans color.sty et sa doc ?
Bon, ça n'a plus trop d'intérêt vue la réponse de Manuel, mais je réponds
quand même : effectivement je me souvenais vaguement d'un gag avec \color
(soit pour l'avoir rencontré soit pour l'avoir lu, je ne sais plus), du
coup j'ai cherché dans la doc au cas où, et paf !
--
LL