- Questo topic ha 5 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 17 anni, 2 mesi fa da
ororo.
-
CreatoreTopic
-
14 Luglio 2009 alle 9:34 #35558
-
CreatoreTopic
-
AutoreRisposte
-
-
14 Luglio 2009 alle 10:20 #35559::
Salve a tutti,
qualcuno sa come si fa a scrivere su un file esterno? o ancora meglio, a cancellare un file esterno?
Quello che mi serve è un comando che, in determinate situazioni, mi cancelli il file dell’indice “master.ind”.Scusa, non basta far girare di nuovo makeindex?
Il modo c’è, non prendertela con me, però, se per distrazione cancelli qualcosa di importante:
`\immediate\openout15=\jobname.ind
\immediate\write15{\noexpand\endinput}
\immediate\closeout15`
Non viene cancellato il file, ma solo il suo contenuto (e dovrebbe bastarti, visto che cosa ci sta di solito in un file .ind). La seconda riga serve per evitare che il comando \input{\jobname.ind}, eseguito da \printindex, veda una riga vuota.Ciao
Enrico
-
14 Luglio 2009 alle 10:48 #35560::
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.
-
14 Luglio 2009 alle 10:57 #35561::
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.
Non credo che serva scrivere \endinput più e più volte sul file .ind; potresti fare un esempio un pochino più corposo?
Ciao
Enrico
-
14 Luglio 2009 alle 11:47 #35562::
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 \chardefCiao
Enrico
-
14 Luglio 2009 alle 12:19 #35563::
No così non funziona: nella versione “print” non mi mostrerà mai l’indice. Io voglio che, dopo eventualmente un certo numero di compilazioni, alla fine mi stampi l’indice sia nella versione “print” sia nella versione “online”.
Il modo più semplice, alla fin fine, parrebbe questo:`\chardef\version=0 % or 1 or …
…
\ifcase\version
%0 = online version
\usepackage[colorlinks=true,bookmarksnumbered=true]{hyperref}
\or
% 1 = print version
\newcommand{\hyperpage}{}
\fi`Solo, non capisco perchè la prima volta che compila in versione “online” latex mi dà l’errore:
`Paragraph ended before \Hy@setref@link was complete. \par`
Ma non è un grosso problema, alla successiva compilazione l’errore sparisce.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.