Je compose un texte avec divers labels. À chaque label, un appel de note discret, représenté par une feuille aldine placée dans la marge, renvoie aux notes situées à part, plus loin dans le document. Il arrive que deux labels soient suffisamment proches pour se trouver potentiellement imprimés sur la même page. Il est néanmoins possible qu'après compilation ils se trouvent sur deux pages différentes. Serait-il possible de rédiger une expression conditionnelle modifiant la formulation du deuxième appel de note selon qu'il se trouve ou non sur la même page que le premier ? Voici un ECM : Ouvrir dans l'éditeur
\documentclass[12pt, twoside, twocolumn, a4paper]{book} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[light, largesmallcaps, oldstyle]{kpfonts} \usepackage{adforn} \usepackage{lipsum} \usepackage{calc} \begingroup \fontfamily{OrnementsADF}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont \xdef\foo{\the\fontdimen6\font}\xdef\bar{\the\dimexpr1em\relax}% \endgroup \normalfont \xdef\Foo{\the\fontdimen6\font}\xdef\Bar{\the\dimexpr1em\relax}% \usepackage{microtype} \usepackage[twoside ,a4paper ,includeheadfoot ,layoutsize={190mm,220mm} ,layoutoffset={10mm,10mm} ,hdivide={15mm,15cm, } ,vdivide={18mm,19cm, } ,footskip={1cm} ,marginparwidth=\foo ,marginparsep=0.2\dimexpr\bar\relax ,bindingoffset=1cm ,nohead ,includeall ,showcrop ]{geometry} \usepackage[french]{babel} \begin{document} \lipsum[1] \label{label1}\marginpar{\adforn{60}} cela me semble significatif de\dots~ \lipsum[2] %\newpage % Ceci pour forcer les deux appels de note à se trouver sur deux pages différentes %\lipsum[3] \label{label2} \marginpar{\adforn{39}} il semble qu'en occident\dots~ \lipsum[4] \newpage \adforn{60} En page \pageref{label1}, il est indiqué que\dots\\ %\adforn{39} En page \pageref{label2}, la mention\dots % Formulation utilisée au cas où les deux appels de note sont sur des pages différentes\\ \adforn{39} Toujours en page \pageref{label2}, la mention\dots % Formulation utilisée au cas où les deux appels de note sont situés sur la même page \end{document} Posée 15 Avr '16, 16:33 Pathe ♦♦ |
Voici deux solutions. Une nouvelle commande Solution 1 : utilisant l'extension refcount. L'extension définit la commande L'extension définit aussi les commandes Ouvrir dans l'éditeur
\documentclass{article} \usepackage{lipsum} \usepackage{refcount} \newcounter{mtpage} \newcommand*\mtref[2]{% #1 \ifnum\value{mtpage}=\getpagerefnumber{#2} Toujours en \else En \fi page \pageref{#2}% \setcounterpageref{mtpage}{#2}} \begin{document} \lipsum[1] \label{label1}\marginpar{$\clubsuit$} cela me semble significatif de\dots~ \lipsum[2] %\newpage \label{label2} \marginpar{$\spadesuit$} il semble qu'en occident\dots~ \lipsum[4] \newpage \mtref{$\clubsuit$}{label1}, il est indiqué que\dots\\ \mtref{$\spadesuit$}{label2}, la mention\dots \end{document} Solution 2 : utilisant l'extension varioref. L'extension définit la commande "This macro is provided to allow the user to write their own small commands which implement functions similar to those provided by the two previous commands. It takes two arguments: the second is a label (i.e., as used in Une traduction Cette macro est fournie pour permettre à l'utilisateur d'écrire ses propres petites commandes
qui mettent en œuvre des fonctions similaires à celles fournies par les deux commandes précédentes.
Elle prend deux arguments : le premier est un nom de commande arbitraire (assurez-vous d'utiliser un nom propre) qui reçoit le numéro de page en rapport avec le second, qui est une étiquette (par exemple telle qu'il y en a dans Ouvrir dans l'éditeur
\documentclass{article} \usepackage{lipsum} \usepackage{varioref} \newcommand*\firstnum{0} \newcommand*\mtref[2]{% #1 \vrefpagenum\secondnum{#2}% \ifnum\firstnum=\secondnum Toujours en \else En \fi page \pageref{#2}% \vrefpagenum\firstnum{#2}% } \begin{document} \lipsum[1] \label{label1}\marginpar{$\clubsuit$} cela me semble significatif de\dots~ \lipsum[2] %\newpage \label{label2} \marginpar{$\spadesuit$} il semble qu'en occident\dots~ \lipsum[4] \newpage \mtref{$\clubsuit$}{label1}, il est indiqué que\dots\\ \mtref{$\spadesuit$}{label2}, la mention\dots \end{document} |
Utilisez l'extension
varioref
qui s'occupe de ce genre de choses.