2010-03-04 9 views
2

Ceci est étrange. J'ai dû faire des solutions de contournement intéressantes pour que cela fonctionne même un petit peu, mais nous avons une autre pierre d'achoppement.Inclusion de marques de hachage dans un index LaTeX indexentry avec une commande new

J'ai eu du mal à créer un document séparé qui utilise un grand fichier .ind (index créé en utilisant makeindex à partir de petits fichiers individuels .idx), l'idée étant que j'aurai finalement un seul document qui indique le SUB-documents et numéros de page où les données indexées se produisent.

À cette fin, j'ai dû définir une commande qui recueille toutes les entrées d'index comme:

\newcommand{\myindexer}[3] 
    {\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf}}} 

Le résultat est des entrées d'index dans le fichier myindex.idx que:

\indexentry{IndexedItemA : 55.iii!\href{Volume 1.pdf}{Volume 1.pdf}}{30}} 
\indexentry{IndexedItemB : 23.vi!\href{Volume 3.pdf}{Volume 3.pdf}}{114}} 

Pourtant, le problème existe en essayant de créer un hyperref au PDF cible. Pour ouvrir un fichier PDF à une page spécifique, doit être utilisé le format suivant (merci à quelqu'un d'autre sur cette carte pour pointer la syntaxe # de page.xx dans le paquet hyperref):

\href{FILENAME#page.XX}{Link Text} 

moyens wihch qu'une marque de hachage doit être inclus dans le flux de sortie du \ newcommand lorsque myindex est déclarée, peut-être utiliser une marque de hachage échappé # comme:

\newcommand{\myindexer}[3] 
    {\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf\#page.\thepage}}} 

ou selon quelque fragment que j'ai trouvé quelque part à l'aide d'un double -hash comme:

\newcommand{\myindexer}[3] 
    {\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf##page.\thepage}}} 

Les résultats antérieurs dans l'erreur suivante lors de la compilation de la source de latex pour les multiples documents indexés:

! Illegal parameter number in definition of \@gtempa. 
<to be read again> 
        \thepage 
l.31 \myindex{IndexedItemA}{55}{iii} 

Alors que ce dernier se traduit par une barre oblique inverse indésirable dans le fichier myindex.idx résultant comme:

\indexentry{IndexedItemA : 55.iii!\href {Volume 1.pdf\#page.33}{Volume 1}}{33} 

ce qui entraîne l'ouverture incorrecte du fichier PDF cible.

Avez-vous une idée de la manière dont la nouvelle commande peut être forcée de sortir le hachage pour prendre en charge l'hyperlien des fichiers PDF de cette manière?

Répondre

0

Qu'en est-il de l'emballage du \href en \protect?

+0

Est-ce que '\ thepage' n'a pas besoin d'être développé immédiatement? –

0

Vous pouvez échanger la catcode de # et%:

\catcode`\%=6 \catcode`\#=12

Ensuite, utilisez% pour marquer les paramètres:

\newcommand{\myindexer}[3] 
    {\index{myindex}{%1 : %2.%3!\href{\doctitle.pdf#page.\thepage}}}

Après cela, rétablir les catcodes habituelles:

\catcode`\%=12 \catcode`\#=6

C'est un peu maladroit, mais ça devrait fonctionner même si quelque chose interfère avec les mécanismes d'échappement habituels, et il permet d'exhaler \href au point \myindexer est utilisé.