Grazie funziona!
La ragione per cui mi serve è che, anche lanciando più volte latex/makeindex, se master.ind contiene dei codici hyperref (come \hyperpage) anche alle seguenti compilazioni continuerà a contenerli, e quindi mi dà errore.
Ecco alla fine il codice che mi funziona:
`%%%%%%%%%%%%%%%%%%%%%%%%%%
% print or online version?
% 0 = online
% 1 = print
%%%%%%%%%%%%%%%%%%%%%%%%%%
\let\version=1….
\ifx\version0
%online version
\usepackage[colorlinks=true,bookmarksnumbered=true]{hyperref}
\else
%printable version
\newcommand{\hyperpage}{
\immediate\write15{\noexpand\endinput}
}
\fi
`A differenza di quanto mi hai scritto, non bisogna chiudere il file alla fine, altrimenti \printindex poi non funziona.
E non hai pensato a una cosa molto più semplice?
`\chardef\version=0 % or 1 or …
…
\ifcase\version
%0 = online version
\usepackage[colorlinks=true,bookmarksnumbered=true]{hyperref}
\or
% 1 = print version
\renewcommand{\printindex}{}
\fi`
Con \ifcase puoi definire facilmente altri casi senza dover annidare condizionali. Nota però che \version va definito con \chardef
Ciao
Enrico