Je suis allé chercher un peu dans les entrailles de LaTeX et voilà ce que j'observe au niveau de la définition des pieds de page (voir ma question concernant Ce qui fonctionne : Ouvrir dans l'éditeur
\def\@oddfoot{ \if@mainmatter \hfil\textcolor{red}{\thepage}\hfil \else \hfil\textcolor{blue}{\thepage}\hfil \fi} Ce qui aurait pu fonctionner mais non : Ouvrir dans l'éditeur
\if@mainmatter \def\@oddfoot{\hfil\textcolor{red}{\thepage}\hfil} \else \def\@oddfoot{\hfil\textcolor{blue}{\thepage}\hfil} \fi J'ai décidé de me passer de
Affichage de 5 parmi 7
Afficher 2 commentaire(s) en plus
|
Le premier code : Ouvrir dans l'éditeur
\def\@oddfoot{ \if@mainmatter \hfil\textcolor{red}{\thepage}\hfil \else \hfil\textcolor{blue}{\thepage}\hfil \fi} À chaque fois LaTeX rencontre Le deuxième code : Ouvrir dans l'éditeur
\if@mainmatter \def\@oddfoot{\hfil\textcolor{red}{\thepage}\hfil} \else \def\@oddfoot{\hfil\textcolor{blue}{\thepage}\hfil} \fi LaTeX fait le test et selon le résultat Edit - Exemple : Ouvrir dans l'éditeur
\documentclass{article} \newif\ifmytest \mytesttrue %% comme \mytesttrue donc \cmd est toujours T \ifmytest % c'est vrai \def\cmd{T} \else % LaTeX sautera la suite jusqu' à \fi \def\cmd{bla bla} \fi \mytestfalse %% comme \mytestfalse donc \cmdd n'est pas définie du tout \ifmytest% ce n'est pas vrai % LaTeX sautera la suite jusqu' à \fi \def\cmdd{D} \fi \begin{document} \mytesttrue \cmd***%\cmdd \mytestfalse \cmd***%\cmdd \end{document} Exemple avec mainmatter : Ouvrir dans l'éditeur
\documentclass{book} \makeatletter \if@mainmatter% c'est vrai \def\mt{T} \else% tout qui suit (jusqu à \fi) n'est pas vu par LaTeX \documentclass{article} \begin{document} \chapter{Foo} \section{Bar} \end{document} \fi \makeatother \begin{document} \frontmatter 1) bla bla \mt \mainmatter 2) bla bla \mt \end{document} 1
Et pourquoi la définition est-elle définitive ? J'ai l'impression d'avoir déjà vu des
(02 Mai '16, 01:52)
pluton
@pluton vous pouvez penser à
(02 Mai '16, 02:13)
touhami
@touhami oui mais ça ne me dit pas vraiment pourquoi lors de la compilation de chaque page, ce test n'est pas réalisé, ou autrement dit pourquoi il n'est fait qu'une fois au tout début?
(02 Mai '16, 02:18)
pluton
@pluton normalement
(02 Mai '16, 02:28)
touhami
|
On ne comprend pas exactement quelle est la question posée. On ne peut pas non plus se rendre compte du problème que vous rencontrez puisqu'il n'y a pas d'ECM.
On dit « développement », même si ce n'est ce dont il est question ici.
Le premier code le test sera fait à chaque appel de
\@oddfoot
Le deuxième code
\@oddfoot
est défini immédiatement (soit bleu soit rouge) suivant le test (vrai ou faux)@unbonpetit J'ai rebondit sur la réponse de @Le TeXnicien de surface qui a utilisé le terme "développé". En fait, je suis en train de comprendre que, lors d'une compilation, certaines "quantités" sont mises à jour et d'autres non. Ça semble évident mais bon. Désolé pour l'imprécision de mes questions, mais je suis dans le brouillard. Il faudrait que je lise une fois pour toutes les livres appropriés.
@pluton : ce dont il est question ici ne concerne pas tex ou latex mais d'algorithmique en général.
Si vous définissez une macro contenant un test (votre 1er code), alors le test sera exécuté à chaque fois que la macro sera appelée.
En revanche, si vous écrivez un test qui définit, selon son issue, une macro de deux façons différentes (comme votre 2e code), alors le test ne sera effectué qu'une seule fois et lorsque la macro sera exécutée, aucun test ne sera fait.
J'ai décidé de me passer de fancyhdr... mais c'est sans doute une mauvaise idée.
Pourquoi donc ? On dirait que pour beaucoup d'utilisateurs,fancyhdr
est indispensable. Personnellement, je me sers detitleps
, beaucoup plus maniable selon moi.@unbonpetit en effet, c'est un peut évident mais en première lecture, comme tout cela est un peu brumeux, j'avais l'impression que la version 2 pouvait fonctionner, ce qui est bien bête.
@Bernard oui, bonne idée, surtout que ce que propose J. Bezos est de très bonne qualité il me semble. Il connait bien l'algorithmique, lui.