Dans l'exemple qui suit, la condition Ouvrir dans l'éditeur
\documentclass{book} \usepackage{fancyhdr} \usepackage{blindtext} \makeatletter \if@mainmatter \pagestyle{fancy} \renewcommand{\footrulewidth}{2pt} \fi \makeatother \begin{document} \pagestyle{empty} \frontmatter \blinddocument \mainmatter \blinddocument \end{document} Edit Bon, pour résumer, ce que je cherchais est : Ouvrir dans l'éditeur
\documentclass{book} \usepackage{fancyhdr} \pagestyle{fancy} \makeatletter \renewcommand{\headrulewidth}{\if@mainmatter 2pt \else 0pt \fi} \makeatother ... le reste étant identique. Je pose donc une question que je crois être claire : quelle est la fondamentale différence entre le petit morceau de code ci-dessus et celui-ci : Ouvrir dans l'éditeur
\documentclass{book} \usepackage{fancyhdr} \pagestyle{fancy} \makeatletter \if@mainmatter \renewcommand{\headrulewidth}{2pt} \else \renewcommand{\headrulewidth}{0pt} \fi \makeatother @touhami y a répondu en partie dans un autre fil. |
Là où Peut-être quelque chose comme ça (à tester) : Ouvrir dans l'éditeur
\let\OldMainMatter=\mainmatter \def\mainmatter{% \OldMainMatter \pagestyle{fancy} \renewcommand{\footrulewidth}{2pt} \renewcommand{\headrulewidth}{5pt}} Cependant, dès que le style de page sera redéfini (début de chapitre par exemple), les modifs seront perdues.
Lien permanent
Cette réponse est marquée comme « Wiki ».
Publiée 01 Mai '16, 22:18 Le TeXnicien de surface Pathe ♦♦ 1
Bien que c'est la bonne solution il faut noter que au contraire
(01 Mai '16, 22:24)
touhami
Si je peux me permettre de suggérer 3
(01 Mai '16, 22:44)
unbonpetit ♦♦
|
Voici un exemple : Ouvrir dans l'éditeur
\fancypagestyle{myfancy}{% \fancyhf{} \if@mainmatter \fancyfoot[C]{\thepage} \renewcommand{\footrulewidth}{2pt} \renewcommand{\headrulewidth}{5pt} \else \renewcommand{\footrulewidth}{0pt} \renewcommand{\headrulewidth}{0pt}% par défaut 0.4pt \fi} À chaque fois que LaTeX rencontre Exemple complet : Ouvrir dans l'éditeur
\documentclass{book} \usepackage{fancyhdr} \usepackage{blindtext} \makeatletter \fancypagestyle{myfancy}{% \fancyhf{} \if@mainmatter \fancyfoot[C]{\thepage} \renewcommand{\footrulewidth}{2pt} \renewcommand{\headrulewidth}{5pt} \else \renewcommand{\footrulewidth}{0pt} \renewcommand{\headrulewidth}{0pt}% par défaut 0.4pt \fi} \makeatother \begin{document} \frontmatter \pagestyle{myfancy} \blinddocument \mainmatter \pagestyle{myfancy} \blinddocument \end{document} |
Activer
\pagestyle{fancy}
n'est nécessaire qu'une seule fois, lorsque\mainmatter
est exécutée. Toute autre solution « automatique » demande plus de caractères à taper et plus d'efforts de conception qu'un simple\pagestyle{fancy}
dans le code source !La question, et sa réponse, ne sont donc pas vouées à rendre les choses plus compliquées ?
@unbonpetit en fait, je souhaite tester si un
\chapter
est appelé au sein de\frontmatter
ou\mainmatter
et redéfinir le styleplain
en fonction. Pour résumer, le dilemme semble être le suivant. J'ai le choix entre (an langage rapide)\definition\plain \if@mainmatter alors 1 sinon 2
ou bien\if@mainmatter \definition\plain 1 sinon \definition\plain 2
. Une version semble fonctionner mais pas l'autre.Vous auriez dû dire dès le début ce que vouliez vraiment. Cela vaut le coup que vous éditiez votre question. Si c'est
\chapter
qui doit faire le test, il faut redéfinir\chapter
pour qu'il décide, selon le booléen\if@mainmatter
quel style appliquer ou quel style définir ; j'ai pas trop compris ce que vous voulez faire sur les styles.@pluton Comme signalé par unbonpetit, ça sent le syndrome XYZ à plein nez ! ;)
@unbonpetit @denis En fait, l'exemple est suffisant pour ce que je voulais éclaircir. En gros, c'est le test
\if@mainmatter
que je ne comprenais pas et qui est mal placé dans mon cas. Comme dit @unbonpetit c'est peut-être ailleurs, et autrement, que le test doit être effectué, mais il faut que je regarde de mon côté avant.