Am 20.11.2011 um 21:26 schrieb Meer, H. van der:
Thanks Wolfgang for the code.
Just in case it is of use I concocted my variation on this theme. Now this simply replaces the \in, \at and \about macro's with one that does not show on the page where the link originates, but behaves as of old everywhere else. I introduced the unskip in order to remove the space that ruins the end of a line when there is nothing to display. For example from \in{see there}[ref]. <--this period would otherwise acquire a space before it.
Instead of \unskip you should use \removeunwantedspaces which does a check before it calls \unskip.
\def\SamePageDo#1[#2]% {\doifreferencefoundelse{#2} {\ifnum\referencepagestate=1 \unskip%\unknown % reference is on the same page \else #1[#2]% \fi} {\unskip}} % reference not found \let\oldin=\in \let\oldat=\at \let\oldabout=\about \def\in{\SamePageDo\oldin} \def\at{\SamePageDo\oldat} \def\about{\SamePageDo\oldabout}
Don’t redefine \in, at and \about because all three commands can also be used in math mode where they have a different meaning but with your redefinition they can’t be used anymore for math. Wolfgang