Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Latex
Latex Forum d'entraide sur LaTeX. Avant de poster -> FAQ LaTeX
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/02/2012, 11h52   #1
Invité de passage
 
Inscription : février 2012
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 5
Points : 1
Points : 1
Par défaut Conflit multicol markboth raggedright \\

Bonjour à tous,

Je suis tout nouveau sur ce forum et je viens vers vous car je m'arrache les cheveux devant un problème.

Je suis en train de faire un annuaire des anciens élèves de mon établissement.

Je souhaite avoir un entête style dictionnaire, ce que je fais avec fancyhdr.


Quand mes entêtes son monoligne, ça marche sans problème mais en multiligne...

Un ECM pour caractériser le problème:


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
\documentclass[a4paper,10pt,titlepage,twoside]{article}
\usepackage{multicol}

\begin{document}

\begin{multicols}{3}

\raggedright
\markright{test \\ test}

\end{multicols}

\end{document}
ne compile pas: message d'erreur
"! Argument of \mult@@cols has an extra }."

Si je remplace raggedright par un environnement flushleft, erreur aussi
"! Use of \@item doesn't match its definition.
\@ifnextchar ... \reserved@d =#1\def \reserved@a {"

Si j'enlève multicol, ou \\ ou raggedright, pas de problème, ou du moins pas d'erreur de compilation.

Si je me débrouille plutôt bien en LaTeX, ma connaissance des mécanismes sous-jacents (TeX, Kernel LaTeX...) est faible. Une bonne âme pourrait-elle me sauver?

merci d'avance

Edit : Je précise, je suis sous une install "standard" texlive sous linux.
legolie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 16h25   #2
Membre Expert
 
Avatar de unbonpetit
 
Enseignant
Inscription : avril 2009
Messages : 1 751
Détails du profil
Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : avril 2009
Messages : 1 751
Points : 1 913
Points : 1 913
\raggedright redéfinie la macro "\\" qui du coup, n'a plus le droit de se trouver dans \markright

il faut écrire une autre macro qui fait comme \raggedright (et modifie donc les \leftskip et \rightskip) sans redéfinir \\.
unbonpetit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 16h55   #3
Invité de passage
 
Inscription : février 2012
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 5
Points : 1
Points : 1
Un truc de ce genre ou il y a plus propre?

Code :
1
2
\setlength{\rightskip}{\columnwidth minus\columnwidth}

Avec ça, ça marche, je pourrais garder les cheveux qui me reste.

Merci mille fois
legolie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 16h57   #4
Membre Expert
 
Avatar de unbonpetit
 
Enseignant
Inscription : avril 2009
Messages : 1 751
Détails du profil
Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : avril 2009
Messages : 1 751
Points : 1 913
Points : 1 913
Plutôt :
Code :
1
2
\rightskip0pt plus 1fil
\lefskip0pt
unbonpetit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 17h17   #5
Invité de passage
 
Inscription : février 2012
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 5
Points : 1
Points : 1
Merci, je venais de me rendre compte que ça ne faisait pas exactement ce que je voulais

J'ai fait
Code :
\setlength{\rightskip}{\fill}
qui correspond à la syntaxe LaTeX de ce que tu me proposes (je me trompes?)
legolie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 17h29   #6
Membre Expert
 
Avatar de unbonpetit
 
Enseignant
Inscription : avril 2009
Messages : 1 751
Détails du profil
Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : avril 2009
Messages : 1 751
Points : 1 913
Points : 1 913
Citation:
Envoyé par legolie Voir le message
Merci, je venais de me rendre compte que ça ne faisait pas exactement ce que je voulais

J'ai fait
Code :
\setlength{\rightskip}{\fill}
qui correspond à la syntaxe LaTeX de ce que tu me proposes (je me trompes?)
Lorsqu'on intervient à un bas niveau comme ici, c'est-à-dire avec des primitives de TeX, on oublie les macros de haut niveau de LaTeX (qui sont parfois assez mal foutues) et on revient aux fondamentaux avec les primitives de TeX, qui ont la chance d'être plus simples ici.

Réponse : non, je ne suis pas d'accord avec ta façon de faire, les macros latex n'ont rien à faire ici. À la limite, j'aurais pu être d'accord avec
mais ce \setlength qui est à gerber, non !

Mais je préfère de loin celui que je t'ai suggéré :
Code :
\rightskip=0pt plus 1fil
unbonpetit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 17h36   #7
Invité de passage
 
Inscription : février 2012
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 5
Points : 1
Points : 1
D'accord, je ne savais pas que rightskip était bas niveau

Par simple curiosité, qu'est-ce qui est reprochable à setlength (ou au moins dans le cas présent?)
legolie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 18h00   #8
Membre Expert
 
Avatar de unbonpetit
 
Enseignant
Inscription : avril 2009
Messages : 1 751
Détails du profil
Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : avril 2009
Messages : 1 751
Points : 1 913
Points : 1 913
Que contrairement aux instructions sur les compteurs ou LaTeX définit ses propres compteurs qui ont des proporiétés intéressantes, \setlength agit de façon ultra basique sur les longueurs/ressorts de TeX.

Juste pour info, \setlength est définie de la façon suivante :
Code :
\def\setlength#1#2{#1#2\relax}
C'est un peu débile comme macro. Heureusement qu'il y a le \relax qui sauve un peu les apparences. Bref, lorsque tu écris
Code :
\setlength{\rightskip}{\fill}
c'est comme si tu écrivais
Dingue non ? Tout ça pour dire que \setlength est à oublier, c'est une macro qui complique les choses pour rien, d'ailleurs, je ne m'en suis jamais servi.
unbonpetit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 18h05   #9
Invité de passage
 
Inscription : février 2012
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 5
Points : 1
Points : 1
ah, effectivement...

J'oublie que LaTeX n'est qu'une surcouche de macros, j'ai tendance à le considérer comme un langage de base.

Il va falloir que je me penche sérieusement sur TeX un de ces jours

Merci
legolie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h30.


 
 
 
 
Partenaires

Hébergement Web