[multicol] Problème étrange de décalage

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.

[multicol] Problème étrange de décalage

Messagepar MB » Jeudi 24 Mai 2007, 19:30

J'utilise le package multicol régulièrement mais je constate des étrangetés au niveau de l'alignement d'une colonne à l'autre et je ne parviens pas à les corriger. Voici le fichier de test que j'ai utilisé pour produire l'image ci-jointe.

Code: Tout sélectionner
\documentclass[10pt, oneside]{article}
\usepackage{multicol}
\usepackage{amsmath}
\usepackage[latin1]{inputenc}
\usepackage{ae,aecompl}
\usepackage{cancel}
\usepackage[A4]{vmargin} 

\setmarginsrb{1cm}{1cm}{1cm}{1cm}{1cm}{1cm}{1cm}{1cm}

\raggedcolumns
\setlength{\columnseprule}{0.5pt}

\begin{document}

\begin{multicols}{2}\noindent
\begin{equation*}
\left\{ \begin{array}{lc} 4x-3y=-10 & \\ 2x+5y=8 & (\times 2) \end{array} \right.
\end{equation*}
Le système est donc équivalent à:
\begin{equation*}
\left\{ \begin{array}{l} 4x-3y=-10 \\ 4x+10y=16 \end{array} \right.
\end{equation*}
D'où:
\begin{equation*}
\begin{array}{rcl}
(4x-3y)-(4x+10y) &=& -10-16 \\
\cancel{4x}-3y-\cancel{4x}-10y &=& -10-16 \\
-13y &=& -26 \\
y &=& \frac{-26}{-13} \\
y &=& \mathbf{2} \\
\end{array}
\end{equation*}
\columnbreak
\begin{equation*}
\left\{ \begin{array}{lc} 4x-3y=-10 & \\ 2x+5y=8 & (\times 2) \end{array} \right.
\end{equation*}
Le système est donc équivalent à:
\begin{equation*}
\left\{ \begin{array}{l} 4x-3y=-10 \\ 4x+10y=16 \end{array} \right.
\end{equation*}
D'où:
\begin{equation*}
\begin{array}{rcl}
(4x-3y)-(4x+10y) &=& -10-16 \\
\cancel{4x}-3y-\cancel{4x}-10y &=& -10-16 \\
-13y &=& -26 \\
y &=& \frac{-26}{-13} \\
y &=& \mathbf{2} \\
\end{array}
\end{equation*}
\end{multicols}

\end{document}


On constate que les deux colonnes sont théoriquement identiques.
Pourtant, la colonne de gauche est décalée par rapport à celle de droite (on le constate facilement en observant les lignes bleues ajoutée à la capture).

Quelqu'un aurait une explication et/ou une solution ? :bangin:
Fichiers joints
image1.jpg
(41.54 Kio) Téléchargé 995 fois
Dernière édition par MB le Jeudi 24 Mai 2007, 22:04, édité 1 fois.
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: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Publicité

Messagepar rebouxo » Jeudi 24 Mai 2007, 21:06

Alors là, je sèche. Il y a manifestement un ressort qui ne s'étend pas de la même manière des deux côtés.
Olivier
rebouxo
Modérateur
 
Messages: 6938
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Messagepar gigiair » Jeudi 24 Mai 2007, 21:20

C'est visiblement un problème de multicols. Si l'on place le même dans une structure du genre :

Code: Tout sélectionner
\begin{minipage}{0.5\linewidth}
garniture
\end{minipage}
\begin{minipage}{0.5\linewidth}
 garniture
\end{minipage}


Il n'y a pas de problème. Pour faire apparaître le filet entre les deux, je ne sais pas trop. On peut les mettre dans un tabular{c|c} ça marche, mais ça râle, un peu de Overfull \hbox ... Il y a toujours la possiblité de racourcir les minipages, à 0.45\linewitdth, ça passe sans problème, mais il y a sûrement une solution plus intelligente. Ya bien multicol, mais... :lol:
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2439
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Messagepar francois » Jeudi 24 Mai 2007, 21:25

S'il l'on prend le code exact proposé au premier post et qu'on l'on rajoute % juste avant \columnbreak, plus de problème. Pourquoi ? Et bien en fait c'est tout simple ... non je plaisante, je ne sais pas.
francois
Giga-utilisateur
 
Messages: 856
Inscription: Mercredi 20 Septembre 2006, 23:14
Localisation: Antony
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Jeudi 24 Mai 2007, 22:11

Oui, c'est bizarre tout ça. :?
Tout le monde a bien le même résultat avec ce décalage déjà ?

francois a écrit:S'il l'on prend le code exact proposé au premier post et qu'on l'on rajoute % juste avant \columnbreak, plus de problème.


Ah oui, c'est intéressant ça !!
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: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar gigiair » Jeudi 24 Mai 2007, 22:41

Je te propose le bricolage suivant, faute de mieux (j'ai remplacé array par aligned)

Code: Tout sélectionner
\newcommand*{\garniture}{%
  \begin{minipage}{0.45\linewidth}%
    \begin{equation*}%
      \left\{ \begin{aligned} 4x&-3y&=-10 & &\\ 2x&+5y&=8 & &(\times 2) \end{aligned} \right.%
    \end{equation*}%
    Le systme est donc quivalent :%
    \begin{equation*}%
      \left\{ \begin{aligned} 4x&-3y&=-10 \\ 4x&+10y&=16 \end{aligned} \right.%
    \end{equation*}%
    D'o:%
    \begin{equation*}%
      \begin{aligned}%
        (4x-3y)-(4x+10y) &=& -10-16 \\%
        \cancel{4x}-3y-\cancel{4x}-10y &=& -10-16 \\%
        -13y &=& -26 \\%
        y &=& \frac{-26}{-13} \\%
        y &=& \mathbf{2} \\%
      \end{aligned}%
    \end{equation*}%
  \end{minipage}%
}

\begin{document}

\begin{tabular}[h]{c|c}
  \garniture&\garniture\\
\end{tabular}


Les deux copies sont parfaitement alignées.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2439
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Messagepar MB » Jeudi 24 Mai 2007, 22:53

Merci gigiair, ça fonctionne correctement en effet puisqu'avec minipage il n'y avait pas de problème. Le tabular permet de faire apparaitre la séparation et l'ensemble remplace donc totalement le multicols.

Il n'empêche que je ne comprends pas trop ce qu'il se passe avec multicol et ce \columnbreak. Il doit modifier la hauteur de ligne pour je ne sais trop quelle raison. J'ai jeté un oeil au code du package et je trouve la définition suivante :

Code: Tout sélectionner
\def\columnbreak{%
 \ifnum\col@number<\tw@
  \PackageError{multicol}%
   {\noexpand\columnbreak outside multicols}%
   {This command can only be used within
    a multicols or multicols* environment.}%
 \else
  \ifvmode
    \penalty -\@Mv\relax
  \else
    \@bsphack
    \vadjust{\penalty -\@Mv\relax}%
    \@esphack
  \fi
 \fi}


Bon, en tout cas, je peux en effet m'en sortir de la sorte.
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: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Jeudi 24 Mai 2007, 23:41

Je pense utiliser à l'avenir une commande de ce type :

Code: Tout sélectionner
\newcommand{\deuxcolonnes}[2]{
\begin{tabular}[h]{c|c}
\begin{minipage}[t]{0.48\textwidth} #1 \end{minipage} &
\begin{minipage}[t]{0.48\textwidth} #2 \end{minipage} \\
\end{tabular}}


A utiliser de la sorte :

Code: Tout sélectionner
\deuxcolonnes{
texte 1}{
texte 2}
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: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar opr_oqr » Vendredi 25 Mai 2007, 06:15

Bonjour,

J'ai un doute sur ta nouvelle commande : gère-t-elle le changement de page? (et d'ailleurs, est-ce que multicols en tient compte?)
Cordialement, pp
opr_oqr
Kilo-utilisateur
 
Messages: 117
Inscription: Dimanche 19 Juin 2005, 20:41
Statut actuel: Actif et salarié | Enseignant

Messagepar opr_oqr » Vendredi 25 Mai 2007, 07:17

Un début de piste pour ton problème : google.
Cordialement, pp
opr_oqr
Kilo-utilisateur
 
Messages: 117
Inscription: Dimanche 19 Juin 2005, 20:41
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Vendredi 25 Mai 2007, 07:51

opr_oqr a écrit:J'ai un doute sur ta nouvelle commande : gère-t-elle le changement de page? (et d'ailleurs, est-ce que multicols en tient compte?)


Non, elle ne gère pas.
Il faudrait mettre un longtable.
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: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar gigiair » Vendredi 25 Mai 2007, 09:27

Le bricolage que j'avais proposé était juste pour démontrer que multicols était bien la cause du problème.
Le package parallel me paraît mieux approprié:

Code: Tout sélectionner
\begin{Parallel}[v]{}{}%{0.5\textwidth}{0.5\textwidth}
\ParallelLText{<garniture>}
\ParallelRText{<garniture>}
\end{Parallel}


doc: texdoc parallel en ligne de commande.
Sur cet exemple, ça a l'air de marcher mais il y a un avertissement un peu inquiétant:

tabular s, minipages, ... inside of \ParallelLText or \ParallelRText will cause unexpected results. But you may use these constructions outside \ParallelLText or \ParallelRText, but inside the environment, when typesetting in columns; you must not use those things (within the environment), when typesetting on pages parallel.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2439
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Messagepar MB » Vendredi 25 Mai 2007, 19:12

Je vais regarder ce package parallel plus en détails car je ne connais pas.
En tout cas, la solution avec tabular (ou longtable je pense) fonctionne correctement et est globalement suffisante.

Il est à noter que l'utilisation de multicols* permet d'obtenir un alignement correct, mais par contre la ligne de séparation occupe toute la hauteur de la page. :x
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: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Vendredi 25 Mai 2007, 22:28

J'ai aussi essayé parcolumns mais il n'aime pas les formules mathématiques.
Ca provoque un décalage horizontal cette fois ... (mais c'était précisé dans la doc)
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: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Ahrefs [Bot], Bing [Bot], Google Adsense [Bot], Grapeshot [Crawler] et 15 invités