Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

marginpar forcé à droite dans la classe book

72 views
Skip to first unread message

julienvitard

unread,
Jan 16, 2008, 4:16:23 PM1/16/08
to
Bonjour,

je souhaite forcer la position d'une note de marge à droite lorsque
j'utilise la classe book.

Je ne sais pas trop comment faire, voici un code (simple) d'exemple
qui positionne les notes de marge avec marginpar{} normalement :

\documentclass{book}
\begin{document}
\pagestyle{empty}
droite\marginpar{1}
\newpage
gauche\marginpar{2}
\newpage
droite\marginpar{3}
\newpage
%%\reversemarginpar
gauche\marginpar{4}
\newpage
\end{document}

Je souhaiterais :

- soit fixer la position des notes de marge d'un seul côté (à droite)
à partir d'un endroit dans la page

- soit faire un test sur la parité de la page pour fixer la position
de marginpar (en utilisant reversemarginpar je suppose) de manière
automatique (mais comment tester la parité de la page?)

Merci de vos idées

JµL!eN

Guillaume Millet

unread,
Jan 16, 2008, 7:21:10 PM1/16/08
to
> - soit faire un test sur la parité de la page pour fixer la position
> de marginpar (en utilisant reversemarginpar je suppose) de manière
> automatique (mais comment tester la parité de la page?

avec le numéro de la page ?

julienvitard

unread,
Jan 16, 2008, 7:54:39 PM1/16/08
to
Salut Guillaume,

> avec le numéro de la page ?

Oui effectivement je pensais bien utiliser cette méthode avec une
division entière qui renvoie 1 ou 0 ça peut marcher. Il faut que je
fasse le test if...then...else et que j'y inclue le \reversemarginpar.

Mais j'aurais pensé qu'il existait une commande déjà prête pour ça
\odd ou \even. Je vais essayer de tester la division sur les pages.

Mais si vous avez d'autres solutions, je suis aussi preneur.

Merci @+

JµL!eN

julienvitard

unread,
Jan 16, 2008, 7:54:05 PM1/16/08
to
Salut Guillaume,

> avec le numéro de la page ?

Oui effectivement je pensais bien utiliser cette méthode avec une

Message has been deleted

mpg

unread,
Jan 16, 2008, 8:22:26 PM1/16/08
to
Le (on) jeudi 17 janvier 2008 01:54, julienvitard a écrit (wrote) :
> Oui effectivement je pensais bien utiliser cette méthode avec une
> division entière qui renvoie 1 ou 0 ça peut marcher. Il faut que je
> fasse le test if...then...else et que j'y inclue le \reversemarginpar.
>
TeX propose \ifodd :)

> Mais j'aurais pensé qu'il existait une commande déjà prête pour ça
> \odd ou \even. Je vais essayer de tester la division sur les pages.
>

Je crois que la raison pour laquelle il n'y a pas de solution tout prête est
est que c'est bizarre d'écrire tout le temps du même côté dans un document
en recto-verso, ou en tout cas c'est ce qu'ont du penser les concepteurs...

> Mais si vous avez d'autres solutions, je suis aussi preneur.
>

Je n'en connais pas, désolé.

Manuel.


Pétiard François

unread,
Jan 17, 2008, 1:51:47 AM1/17/08
to
Le 16/01/2008 22:16, julienvitard a écrit :
> Bonjour,
>
> je souhaite forcer la position d'une note de marge à droite lorsque
> j'utilise la classe book.
>
> - soit fixer la position des notes de marge d'un seul côté (à droite)
> à partir d'un endroit dans la page

\documentclass[oneside]{book} ne convient pas ?


> - soit faire un test sur la parité de la page pour fixer la position
> de marginpar (en utilisant reversemarginpar je suppose) de manière
> automatique (mais comment tester la parité de la page?)

\ifodd\arabic{page}...\relax\else...\relax\fi

F. Pétiard

julienvitard

unread,
Jan 17, 2008, 3:50:11 AM1/17/08
to
Bonjour Manuel, François

Merci pour cette commande TeX \ifodd, je vais tester cela assez rapidement.

> Je crois que la raison pour laquelle il n'y a pas de solution tout prête est
> est que c'est bizarre d'écrire tout le temps du même côté dans un document
> en recto-verso, ou en tout cas c'est ce qu'ont du penser les concepteurs...

> \documentclass[oneside]{book} ne convient pas ?

Effectivement, cela semble bizarre de vouloir faire cela, la raison
est que c'est au départ un document book twoside pour l'impression,
les notes de marges n'apparaitront pas sur ce document mais sur la
version électronique (je ne sais pas si l'affichage/formattage des
paragraphes change ou pas selon oneside/twoside, je vais regarder).
Et je préfèrerais avoir ces notes de marge à droite (elles sont dans
la bibliographie). Le but est d'afficher un lien à "la fin" de chaque
référence bibliographique.

> \ifodd\arabic{page}...\relax\else...\relax\fi

Je m'en vais tester ce code et y intégrer un \reversemarginpar pour
changer la disposition du \marginpar. Je n'en ai besoin que dans ma
bibliographie.

Merci à tous les deux, je reviendrais à la charge pour vous dire si
c'est ok.

JµL!eN

julienvitard

unread,
Jan 17, 2008, 7:26:28 AM1/17/08
to
Re-salut,

> \ifodd\arabic{page}...\relax\else...\relax\fi

je viens de tester le bout de code de François cela fonctionne plutôt
bien, il faut que je l'intègre à ce que je veux faire et je posterais
le code un peu plus tard.

Je reviens sur :

> \documentclass[oneside]{book} ne convient pas ?

En fait le passage de twoside à oneside me fait perdre le n° des pages
ce qui n'est pas forcément pratique s'il y a des révisions à faire...
genre P44 oneside qui correspond à la page 54 twoside, ça mettrait du
temps...

Merci @+

JµL!eN

Alain Ketterlin

unread,
Jan 17, 2008, 7:56:12 AM1/17/08
to
julienvitard <julv...@free.fr> writes:

>> \documentclass[oneside]{book}


>
> En fait le passage de twoside à oneside me fait perdre le n° des pages
> ce qui n'est pas forcément pratique s'il y a des révisions à faire...
> genre P44 oneside qui correspond à la page 54 twoside, ça mettrait du
> temps...

Ca ce n'est pas uniquement le problème de one/twoside, c'est openright
ou openany qui décide l'effet de \cleardoublepage, lequel teste si on
est en twoside ou pas.

Si tu veux la même pagination dans les deux cas, alors ajoute openany
à twoside. (J'avoue que j'ai oublié le problème initial.)

-- Alain.

mpg

unread,
Jan 17, 2008, 8:03:07 AM1/17/08
to
Le (on) jeudi 17 janvier 2008 07:51, Pétiard François a écrit (wrote) :
> \ifodd\arabic{page}...\relax\else...\relax\fi
>
Hum, pour quoi les \relax avant \else et \fi ? Simple curiosité...

Manuel.

mpg

unread,
Jan 17, 2008, 8:04:52 AM1/17/08
to
Le (on) jeudi 17 janvier 2008 13:26, julienvitard a écrit (wrote) :

> Je reviens sur :
>
>> \documentclass[oneside]{book} ne convient pas ?
>
> En fait le passage de twoside à oneside me fait perdre le n° des pages
> ce qui n'est pas forcément pratique s'il y a des révisions à faire...
> genre P44 oneside qui correspond à la page 54 twoside, ça mettrait du
> temps...
>

C'est que la largeur totale du texte ne doit pas être la même en oneside et
en twoside. Je te conseille d'utiliser geometry pour régler la largeur de
la zone de texte dans les deux cas, et ce problème devrait disparaître.

Manuel.


julienvitard

unread,
Jan 17, 2008, 8:12:58 AM1/17/08
to
Bonjour Manuel,

> C'est que la largeur totale du texte ne doit pas être la même en oneside et
> en twoside. Je te conseille d'utiliser geometry pour régler la largeur de
> la zone de texte dans les deux cas, et ce problème devrait disparaître.

en fait il n'y a qu'une image et non un paragraphe complet, de plus
l'image est petite, elle loge facilement dans les marges sans trop
de soucis concernant la taille.

Mais merci, cela pourrait effectivment servir à d'autres.
+++

Julien

julienvitard

unread,
Jan 17, 2008, 8:14:37 AM1/17/08
to
Re-

>> \ifodd\arabic{page}...\relax\else...\relax\fi
>> >
> Hum, pour quoi les \relax avant \else et \fi ? Simple curiosité...

j'ai pris comme ça, c'est ce que m'a donné François mais effectivement
je ne vois pas trop à quoi ils servent...

Si François ou quelqu'un peut nous éclairer, merci

+++

JµL!eN

mpg

unread,
Jan 17, 2008, 8:18:12 AM1/17/08
to
Le (on) jeudi 17 janvier 2008 14:12, julienvitard a écrit (wrote) :

>> C'est que la largeur totale du texte ne doit pas être la même en oneside
>> et en twoside. Je te conseille d'utiliser geometry pour régler la largeur
>> de la zone de texte dans les deux cas, et ce problème devrait
>> disparaître.
>
> en fait il n'y a qu'une image et non un paragraphe complet, de plus
> l'image est petite, elle loge facilement dans les marges sans trop
> de soucis concernant la taille.
>

Hm, je ne suis pas sûr qu'on parle de la même chose. Je parlais du fait que
la numérotation des pages changeait entre oneside et twoside, et j'essayais
de deviner d'où il pouvait venir : j'avais attribué ça à une variation de
la largeur de la zone de texte principale, qui occasionnerait des coupures
de pages différentes...

Manuel.

julienvitard

unread,
Jan 17, 2008, 9:11:34 AM1/17/08
to
Re-

> Hm, je ne suis pas sûr qu'on parle de la même chose. Je parlais du fait que
> la numérotation des pages changeait entre oneside et twoside, et j'essayais
> de deviner d'où il pouvait venir : j'avais attribué ça à une variation de
> la largeur de la zone de texte principale, qui occasionnerait des coupures
> de pages différentes...

effectivement, on devait pas parler de la même chose...

Alain parlait de \cleardoublepage qui pouvait avoir un comportement
différent selon openany/openright. Quelle est l'option par défaut avec
la classe book/twoside : openright ou openany?

Quelles seraient les options à mettre dans la classe book/oneside pour
avoir le même comportement qu'en book/twoside?

Merci @+

JµL!eN

Ulrike Fischer

unread,
Jan 17, 2008, 9:59:27 AM1/17/08
to
Am Thu, 17 Jan 2008 07:51:47 +0100 schrieb Pétiard François:


>> je souhaite forcer la position d'une note de marge à droite lorsque
>> j'utilise la classe book.

\documentclass{book}
\begin{document}

\pagestyle{empty}
\noindent droite x\hfill y\marginpar{1}
\newpage
\noindent gauche x\hfill y\marginpar{2}
\newpage
\noindent droite x\hfill y\marginpar{3}
\newpage
\makeatletter
\@mparswitchfalse
\makeatother
\noindent gauche x\hfill y\marginpar{4}

\makeatletter
\@mparswitchtrue
\makeatother
\noindent gauche x\hfill y\marginpar{4}
\newpage
\end{document}


>> - soit faire un test sur la parité de la page pour fixer la position
>> de marginpar (en utilisant reversemarginpar je suppose) de manière
>> automatique (mais comment tester la parité de la page?)
>
> \ifodd\arabic{page}...\relax\else...\relax\fi

Ca ne marchera pas a cause du montage de page asynchrone.

http://www.tex.ac.uk/cgi-bin/texfaq2html?label=marginparside
http://www.tex.ac.uk/cgi-bin/texfaq2html?label=oddpage

--
Ulrike Fischer

Alain Ketterlin

unread,
Jan 17, 2008, 10:13:37 AM1/17/08
to
julienvitard <julv...@free.fr> writes:

> Alain parlait de \cleardoublepage qui pouvait avoir un comportement
> différent selon openany/openright. Quelle est l'option par défaut avec
> la classe book/twoside : openright ou openany?

openright : un chapitre s'ouvre toujours sur une page droite, donc
cela insère éventuellement des pages gauches vides, d'où le changement
de numérotation (peut-être). C'est aussi twoside par défaut.

> Quelles seraient les options à mettre dans la classe book/oneside pour
> avoir le même comportement qu'en book/twoside?

Normalement, c'est la même chose tant que tu n'utilises pas
\{front,main,back}matter (ou tout ce qui utilise \cleardoublepage), ou
\part (qui teste explicitement).

Je te suggère donc d'essayer openany, mais je te conseille d'essayer
les différentes possiblités : le code correspondant, dans book.cls,
est, comment dire... , un peu déroutant. Par exemple, oneside a pour
effet d'activer \raggedbottom ! Et aussi de changer les "pagestyles".
Et enfin d'influer sur \part. (Mais c'est son utilisation dans
latex.ltx qui conditionne \cleardoublepage, qui ne fait rien de plus
que \clearpage dans le cas oneside.)

-- Alain.

julienvitard

unread,
Jan 17, 2008, 10:50:59 AM1/17/08
to
Bonjour,

Merci pour les codes :

> \makeatletter
> \@mparswitchfalse
> \makeatother

et

> \makeatletter
> \@mparswitchtrue
> \makeatother

cela fonctionne plutôt bien, il me reste à tester la page.

> http://www.tex.ac.uk/cgi-bin/texfaq2html?label=marginparside
> http://www.tex.ac.uk/cgi-bin/texfaq2html?label=oddpage

Merci pour ces précisions, je m'en vais de ce pas regarder ces
infos, et essayer de les combiner, pour obtenir ce que je veux.

@+

JµL!eN

julienvitard

unread,
Jan 18, 2008, 4:11:39 PM1/18/08
to
Bonsoir,
Un ami m'a envoyé un code que je poste ici pour tester la parité des
pages, cela a l'air de fonctionner correctement en mode book :

> \usepackage{ifthen}% tellement utile ...
> \newcounter{cptepage}% on définit un compteur pour les références
> \newcommand{\pagepaireimpaire}{%
> % on définit la commande qui tiendra compte de la parité
> \stepcounter{cptepage}\label{p-\thecptepage}%
> % on place le label paramétré sur la page
> \ifthenelse{\isodd{\pageref{p-\thecptepage}}}%
> % ici il faut la référence au bon label !!!
> % on décide ce que l'on fait en fonction de la parité
> {impaire}{paire}%
> }%


voilà je repasserais avec le code complet
@+

JµL!eN

0 new messages