Historique des modifications [retour]
cliquez ici pour masquer/afficher la révision 8
ORTHOGRAPHE, syntaxe et typo

03 Nov '15, 17:57

Pathe's gravatar image

Pathe
7.5k48207252

`indextools` (et `imakeidx`) proposent une commande permettant de créer une entrée dans le fichier `.idx` avec autre chose que le numéro de page (¶5.5 de [la doc](http://mirrors.ctan.org/macros/latex/contrib/indextools/indextools.pdf)) : \indtl@wrindexentry{names}{Charles}{26} Donc tu peux créer ta propre commande d'indexation : \makeatletter \newcommand{\indexobjet}[1]{% \indtl@wrindexentry{\jobname}{#1}{\thepage-\pageref{#1}} }% \makeatother Mais le problème c'est qu'un \pageref `\pageref` va te produire plein d'élèment d'éléments parasites (message d'erreur si indéfini, \hbox{} etc) `\hbox{}` etc.) que tu ne désire désires pas. Dans le cas présent, l'un des problème problèmes est de pouvoir récuperer récupérer la reference référence brut produit par un \ref SANS tout un `\ref` *sans* tous les éléments parasites telle tels que les \hbox ou surtout `\hbox` ou, surtout, les messages d'erreurs si le label n'est pas défini. D'abord je reprend reprends ta commande `\Objet` que je modifie pour appeler `\indexobjet` `\indexobjet` : \newcommand{\Objet}[1]{% \setkeys{site}{#1} \item\@NomSite. \@Contexte. \@Periode.% %\index{\@NomSite} \edef\temp{{site:\@NomSite}}% \indexobjet{\@NomSite} \expandafter\label\temp% \let\temp\@undefined } Maintenant le code de `\indexobjet` proprement dit. Je suppose que tu charge etoolbox (ce charges `etoolbox` - ce n'est pas obligatoire, mais cela simplifie les choses). choses. Il faut savoir que lorsqu'un label `<toto>` `toto` est défini, LaTeX définit une commande `\r@<toto>`. `\r@toto`. Nous allons d'abord tester l'existence de cette commande avec la commande `\ifcsdef` de etoolbox, `etoolbox`, puis nous allons récuperer récupérer une forme brut brute du numero numéro de référence à l'aide de divers `\edef` et `\expandafter`. \newcommand{\indexobjet}[1]{% \edef\tempa{\expandafter\@firstofone\temp}%\tempa = le label SANS les {}, puisque \temp le contient \ifcsdef{r@\tempa}{% si la commande \csname r@\tempa\endcsname est définie, c'est qu'il y a un label posé > on index. Sinon on n'index pas. \edef\tempb{\expandafter\ref\temp}%Numero suivi de \hbox{} \edef\tempc{\expandafter\@firstoftwo\tempb}%Numero suivi de {} \edef\tempd{\expandafter\@firstoftwo\tempc}%Numero brut % \meaning\temp % Debug : trouver signif de \temp % \meaning\tempa % Debug : trouver signif de \tempa % \meaning\tempb % Debug : trouver signif de \tempb % \meaning\tempc % Debug : trouver signif de \tempc % \meaning\tempd % Debug : trouver signif de \tempd \indtl@wrindexentry{\jobname}{#1}{\thepage-\tempd}% }% {} }% Je t'invite à decommenter décommenter les \meaning `\meaning` pour voir le contenu exacte exact de chacune des commandes. Cela te produit le fichier .idx suivant `.idx` suivant : \indexentry{Chavéria}{1-1} \indexentry{Abbeville}{1-2} \indexentry{Blénod-lès-Pont-a-Mousson}{1-3} Après reste Reste ensuite à customiser `xindy` pour qu'il reconnaisse ce type d'entrée. On peut mettre ces lignes là lignes-là dans le fichier `.xdy` : (define-location-class "eledmac" ("arabic-numbers" :sep"-" "arabic-numbers") :hierdepth 2 Voir [cette page](http://geekographie.maieul.net/174) pour comprendre comment gérer les sous-numéros de référence (mais attention on y parle également d'autre chose aussi). chose).
cliquez ici pour masquer/afficher la révision 7
compléter avec le vrai MWE

03 Nov '15, 13:19

Ma%C3%AFeul's gravatar image

Maïeul
321614

`indextools` (et `imakeidx`) proposent une commande permettant de créer une entrée dans le fichier `.idx` avec autre chose que le numéro de page (¶5.5 de [la doc](http://mirrors.ctan.org/macros/latex/contrib/indextools/indextools.pdf)) : \indtl@wrindexentry{names}{Charles}{26} Donc tu peux créer ta propre commande d'indexation : \makeatletter \newcommand{\indexobjet}[1]{% \indtl@wrindexentry{\jobname}{#1}{\thepage-\pageref{#1}} }% \makeatother Après reste à customiser `xindy` pour qu'il reconnaisse ce type d'entrée. On peut mettre ces lignes là dans le fichier `.xdy` : (define-location-class "eledmac" ("arabic-numbers" :sep"-" "arabic-numbers") :hierdepth 2 Voir [cette page](http://geekographie.maieul.net/174) pour comprendre comment gérer les sous-numéros de référence (mais attention on y parle d'autre chose aussi). Mais le problème c'est qu'un \pageref va te produire plein d'élèment parasites (message d'erreur si indéfini, \hbox{} etc) que tu ne désire pas. Dans le cas présent, l'un des problème est de pouvoir récuperer la reference brut produit par un \ref SANS tout les éléments parasites telle que les \hbox ou surtout les messages d'erreurs si le label n'est pas défini. D'abord je reprend ta commande `\Objet` que je modifie pour appeler `\indexobjet` \newcommand{\Objet}[1]{% \setkeys{site}{#1} \item\@NomSite. \@Contexte. \@Periode.% %\index{\@NomSite} \edef\temp{{site:\@NomSite}}% \indexobjet{\@NomSite} \expandafter\label\temp% \let\temp\@undefined } Maintenant le code de `\indexobjet` proprement dit. Je suppose que tu charge etoolbox (ce n'est pas obligatoire, mais cela simplifie les choses). Il faut savoir que lorsqu'un label `<toto>` est défini, LaTeX définit une commande `\r@<toto>`. Nous allons d'abord tester l'existence de cette commande avec la commande `\ifcsdef` de etoolbox, puis nous allons récuperer une forme brut du numero de référence à l'aide de divers `\edef` et `\expandafter`. \newcommand{\indexobjet}[1]{% \edef\tempa{\expandafter\@firstofone\temp}%\tempa = le label SANS les {} {}, puisque \temp le contient \ifcsdef{r@\tempa}{% si la commande \csname r@\tempa\endcsname est définie, c'est qu'il y a un label posé > on index. Sinon on n'index pas. \edef\tempb{\expandafter\ref\temp}%Numero suivi de \hbox{} \edef\tempc{\expandafter\@firstoftwo\tempb}%Numero suivi de {} \edef\tempd{\expandafter\@firstoftwo\tempc}%Numero brut % \meaning\temp % Debug : trouver signif de \temp % \meaning\tempa % Debug : trouver signif de \tempa % \meaning\tempb % Debug : trouver signif de \tempb % \meaning\tempc % Debug : trouver signif de \tempc % \meaning\tempd % Debug : trouver signif de \tempd \indtl@wrindexentry{\jobname}{#1}{\thepage-\tempd}% }% {} }% Je t'invite à decommenter les \meaning pour voir le contenu exacte de chacune des commandes. Cela te produit le fichier .idx suivant \indexentry{Chavéria}{1-1} \indexentry{Abbeville}{1-2} \indexentry{Blénod-lès-Pont-a-Mousson}{1-3} Après reste à customiser `xindy` pour qu'il reconnaisse ce type d'entrée. On peut mettre ces lignes là dans le fichier `.xdy` : (define-location-class "eledmac" ("arabic-numbers" :sep"-" "arabic-numbers") :hierdepth 2 Voir [cette page](http://geekographie.maieul.net/174) pour comprendre comment gérer les sous-numéros de référence (mais attention on y parle d'autre chose aussi).
cliquez ici pour masquer/afficher la révision 6
fichier .idx

03 Nov '15, 13:16

Ma%C3%AFeul's gravatar image

Maïeul
321614

cliquez ici pour masquer/afficher la révision 5
prendre en compte le fait que \ref produit des \hbox et des messages d'erreur

03 Nov '15, 13:13

Ma%C3%AFeul's gravatar image

Maïeul
321614

cliquez ici pour masquer/afficher la révision 4
lien doc indextools

03 Nov '15, 11:52

Pathe's gravatar image

Pathe
7.5k48207252

cliquez ici pour masquer/afficher la révision 3
mise en page et corrections mineures

03 Nov '15, 11:49

Pathe's gravatar image

Pathe
7.5k48207252

cliquez ici pour masquer/afficher la révision 2

03 Nov '15, 11:09

Ma%C3%AFeul's gravatar image

Maïeul
321614

cliquez ici pour masquer/afficher la révision 1

03 Nov '15, 11:06

Ma%C3%AFeul's gravatar image

Maïeul
321614