Newsgroup: it.comp.software.tex
Titolo: showidx e pdf

Questo pdflatex mi da' un po' troppi problemi... Uso il pacchetto
showidx per scrivere le voci dell'indice a margine di pagina, ma con
pdflatex non funziona, le voci vengono scritte all'interno del testo,
scombinando tutto. Questa volta dove sbaglio...?

 scrive:

Esempio minimo?
Ciao
Enrico

 Esempio minimo?
\documentclass[a4paper]{book}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage{makeidx}
\usepackage{showidx}
\title{Titolone}
\author{Roberto Zanasi}
\makeindex
\ifx\pdfoutput\undefined
\usepackage{graphicx}
\else
\usepackage{lmodern}
\usepackage[pdftex]{graphicx,hyperref}
\fi
\usepackage{url}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
Introduzione
\mainmatter
Questo dovrebbe andare nell'indice\index{indice}.
\printindex
\end{document}
===
Quello che vedo nel pdf invece e' una cosa tipo questa:
Questo dovrebbe andare nell'indiceindice.

 ...
Pagina 18 del manuale di hyperref, sezione "Special support
for other packages", dove consiglia di dare l'opzione
"implicit=false" se si vuole usare showidx (non compare esplicitamente,
ma è chiaro il riferimento).
Fai anche un errore abbastanza comune, usando l'accrocchio
\ifx\pdfoutput\undefined.
Ecco il modo corretto di procedere: noterai l'uso del pacchetto
ifpdf che si occupa meglio di distinguere i casi. Il pacchetto graphicx
può essere caricato senza opzioni se non hai bisogno di driver speciali
per il caso "latex"; tieni presente comunque che pdflatex ignora i
driver specificati come opzione a graphicx.
Altro suggerimento: è bene che hyperref sia caricato per ultimo. Vale 
lo stesso discorso di graphicx per quanto riguarda i driver.
\documentclass[a4paper]{book}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage{makeidx}
\usepackage{showidx}
\usepackage{ifpdf}
\usepackage{graphicx}
\usepackage{url}
\ifpdf
\usepackage{lmodern}
\usepackage[implicit=false]{hyperref}
\fi
\makeindex
\begin{document}
\title{Titolone}
\author{Roberto Zanasi}
\maketitle
\frontmatter
\tableofcontents
\chapter{Introduzione}
Introduzione
\mainmatter
Questo dovrebbe andare nell'indice\index{indice}.
\printindex
\end{document}
Ciao
Enrico

 driver specificati come opzione a graphicx.
Ok, perfetto, grazie, ora funziona tutto.
A questo punto ne approfitto ancora :-) Non e' che sai aiutarmi anche
riguardo a questo problema:
http://groups.google.it/group/it.comp.software.tex/browse_frm/thread/81e0877356b7d172?hl=it
Mi pare di aver letto che forse devo usare il comando \protect da
qualche parte, ma non so bene dove e come.


Non testato:
\newcommand{\MACRO}{\macro\index{testo@\noexpand\macro}}
Ciao
Enrico

 \newcommand{\MACRO}{\macro\index{testo@\noexpand\macro}}
Non va, quel \noexpand non fa nulla. La macro si espande ugualmente.

  \newcommand{\MACRO}{\macro\index{testo@\noexpand\macro}}
Sostituisci \noexpand con \string. Ma mi piacerebbe sapere l'uso
/reale/ di questa cosa, forse c'è qualche modo migliore.
Ciao
Enrico

 /reale/ di questa cosa, forse c'è qualche modo migliore.
L'uso e' proprio quello. C'e' un testo con una voce che compare spesso,
cosi' invece di inserire il comando \index ogni volta ho fatto una
macro. Pero' a volte mi capita di dover inserire una sotto-voce, cosa
che faccio "a mano", senza l'uso della macro.
Probabilmente il modo giusto sarebbe quello di fare una macro con un
parametro, se questo e' presente allora si inserisce nell'indice la
sotto-voce, altrimenti solo la voce.