Agostino, non ho sottomano la soluzione che ho implementato tempo fa; ma visto che siamo nel forum dico come risolsi il problema:
1) ho cercato nel file latex.ltx (il file sorgente del formato LaTeX) la definizione di \pageref: essa preleva il secondo elemento di 2 o di 5 argomenti (2 normalmente, 5 se viene usato hyperref) che contiene il numero della pagina
2) uso la macro di servizio che usa \pageref adeguatamente sottoposta ad un \if (precisamente \@ifpackageloaded) per sapere se devo prendere il secondo di 2 o il secondo di 5 argomenti.
3) prelevo il numero di pagina dal label della figura (magari bisogna far girare pdflatex due volte per essere sicuri che il valore della pagina sia aggiornato) e lo carico in un contatore;
4) uso il comando condizionale \ifodd per sapere se il numero di pagina è pari o dispari e poi mi comporto in modo corrispondente, cioè creo la scatola \makebox con l’opzione di posizionamento r o l a seconda della aprità del numero di pagina.Ovviamente la ricrca su latex.ltx serve solo per sapere come si chiama la macro di servizio; tutto il resto va programmato nel solito file di macro personali.
Aggiungo che questo è uno dei casi in cui ifthen è utile, perché è in grado di gestire \isodd{\pageref{
In questo caso consiglierei di definire un’etichetta “invisibile”, in modo che non si debba richiamare quella affibbiata alla didascalia e il tutto sia automatico:
`\newcounter{dancingfigure}
\newenvironment{dancingfigure}[1][tbp]
{\refstepcounter{dancingfigure}%
\edef\temp{\noexpand\label{DF@\arabic{dancingfigure}}}\temp
\ifthenelse{\isodd{\pageref{DF@\arabic{dancingfigure}}}}
{\odddancingfigure}{\evendancingfigure}
\begin{SCfigure}[0.8][#1]}
{\end{SCfigure}}
\newcommand{\odddancingfigure}{\def\positioning{r}}
\newcommand{\evendancingfigure}{\def\positioning{l}}
\newcommand{\dancinginclude}[2][]{%
\makebox[0.7\textwidth][\positioning]{%
\includegraphics[width=0.84\textwidth,#1]{#2}}}
…
\begin{dancingfigure}[tp]
\dancinginclude{immagine}
\caption{didascalia}
\end{dancingfigure}`
Durante la preparazione del testo le figure potrebbero venire messe in modo sbagliato, ma quando si finisce e si compila fino a risolvere i riferimenti incrociati, tutto va a posto.
Meglio non usare poi etichette esplicite come \label{DF@1}. 🙂
Ciao
Enrico