Liste des \label

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
Tonn83
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 886
Inscription : mercredi 05 novembre 2008, 01:19
Localisation : Paris, France

Liste des \label

Message par Tonn83 »

Bonjour,

Dans des gros documents (book), on utilise beaucoup de labels. Je me perds un peu dans les noms de labels (non, non, on ne se moque pas !). Est-il possible de définir une macro qui affiche une liste des labels utilisés dans un document .tex.

Plus exactement, j'aimerais que cette macro génère un fichier DocumentLabel.pdf. Ce fichier donnerait la liste de tous les noms de labels utilisés et les pages correspondantes dans le fichier Document.pdf. Je sais, cela semble mission impossible :roll:

Je propose un début de solution, mais je ne vois pas comment la mettre en oeuvre jusqu'au bout. Le code suivant modifie la commande \label. On va ajouter des informations dans un fichier Document.lab : le nom du label et la page correspondante. Le code me semble correctement écrit et il n'y a aucun problème d'exécution.

Code : Tout sélectionner

\let\labelorg\label
\renewcommand{\label}[1]{%
      \labelorg{#1}
      \addcontentsline{lab}{1}{#1\hfil \thepage}}
Ensuite, je compte exploiter les informations du fichier Document.lab, en imitant le code de \tableofcontents. Voilà ce que j'écris dans un fichier .sty :

Code : Tout sélectionner

\newcommand{\trucmouche}{%
 \chapter*{Liste des labels}
 \@starttoc{lab}}
Le code suivant fournit la liste des label dans le fichier Document.pdf :

Code : Tout sélectionner

\trucmouche
Je suis face aux problèmes suivants :!: :?:
  • Premier problème : les informations ne sont pas données en liste ! Il y a un problème d'affichage.
  • Deuxième problème : je souhaite que la liste soit introduite dans un autre fichier pdf (DocumentLabel.pdf). Cette liste est évidemment pour un usage personnel.
  • Troisième problème : je souhaite que la liste contienne aussi les labels du fichier Bibliographie.bib auquel on fait appel.
  • Quatrième problème : Cerise sur le gâteau, je souhaite que l'information soit triée selon la "nature" du label (bibliographie, définitions, partie, chapitre, autres, ...)
("nature" du label : nature de l'élément auquel est associé le label) Pouvez-vous m'aider ? Merci pour tout élément de réponse apporté :D
----------------------------
Tonn83

pg
Modérateur
Modérateur
Messages : 2600
Inscription : vendredi 15 juin 2007, 00:31

Re: Liste des \label

Message par pg »

Tonn83 a écrit :Premier problème : les informations ne sont pas données en liste ! Il y a un problème d'affichage.
Ce problème vient du fait qu'il aurait fallu utiliser

Code : Tout sélectionner

\addcontentsline{lab}{section}{#1}
au lieu de \addcontentsline{lab}{1}{#1\hfil \thepage}
Deuxième problème : je souhaite que la liste soit introduite dans un autre fichier pdf (DocumentLabel.pdf). Cette liste est évidemment pour un usage personnel.
Voici un moyen de faire, qui nécessite d'autoriser LaTeX à exécuter des commandes (c'est-à-dire lancer (pdf)latex avec l'option --shell-escape) :

Code : Tout sélectionner

\documentclass{book}

\makeatletter
\newwrite{\label@out}
\immediate\openout \label@out DocumentLabel
\long\def\@writetolabelfile#1{%
    {\@temptokena{#1}%
     \immediate\write\label@out{\the\@temptokena}%
    }%
}

\@writetolabelfile{\documentclass{book}
\begin{document}
\chapter*{Liste des labels}
}

\let\labelorg\label
\def\label#1{%
\labelorg{#1}
\@writetolabelfile{\contentsline{section}{#1}{\thepage}}
}
\makeatother

\begin{document}

\chapter{Titre de chapitre}\label{titre.de.chapitre}

\begin{equation}\label{eqn}
a=b
\end{equation}

\section{Titre de section}\label{titre.de.section}

\makeatletter
\@writetolabelfile{\end{document}}
\makeatother

\immediate\write18{pdflatex DocumentLabel.tex}

\end{document}
Troisième problème : je souhaite que la liste contienne aussi les labels du fichier Bibliographie.bib auquel on fait appel.
Tu as essayé de redéfinir \cite de la même manière que \label ?
Quatrième problème : Cerise sur le gâteau, je souhaite que l'information soit triée selon la "nature" du label (bibliographie, définitions, partie, chapitre, autres, ...)
Je ne suis pas sûr que ce soit possible, à moins peut-être que les labels de chapitres soient tous de la forme \label{chap:...}, tous les labels d'équation \label{eqn:...}, etc. Il faudrait ensuite distinguer les cas, écrire chaque type dans un fichier différent, puis tout inclure dans le fichier DocumentLabel.tex. Je ne suis pas sûr que ça en vaille vraiment le coup.