Liste des \label

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Liste des \label

Messagepar Tonn83 » Mercredi 05 Novembre 2008, 23:55

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
Tonn83
Giga-utilisateur
 
Messages: 889
Inscription: Mercredi 05 Novembre 2008, 01:19
Localisation: Paris, France
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Liste des \label

Messagepar pg » Jeudi 06 Novembre 2008, 01:09

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.
pg
Modérateur
 
Messages: 2597
Inscription: Jeudi 14 Juin 2007, 23:31


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: MSN [Bot] et 3 invités