Un index des sources primaires (3)

mercredi 26 janvier 2011, mise à jour mercredi 8 août 2012, par Maïeul
Suivre la vie du site RSS 2.0 Forum

J’avais proposé il y a peu une méthode pour indexer les sources primaires en deux articles [1].

Je n’étais pas très satisfait de ce que j’avais fait, voici une meilleure méthode.

Limites de la précédente méthode

  • Pas d’indexation de l’endroit précis.
  • Un code Python qui analyse un fichier de BibTex avec un module externe :
    • Complexe à maintenir.
    • Complexe à personnaliser.
    • Mal codé, et truffé de bugs potentiels liés à toutes les subtilités du format .bib que je ne maîtrise pas encore parfaitement.

Nouvelle méthode : le principe

Chaque fois qu’une source primaire est citée [2], on indexe dans un fichier d’indexation :

  • l’auteur, à partir du champ Namea, sinon du champ Author
  • le titre, à partir du champ indextitle, sinon à partir du champ title
  • éventuellement la page, à partir de la valeur du paramètre postnote quand on cite [3], sinon à partir du champ pages.
  • Une fausse entrée ---

Puis le script Python est exécuté pour lire le fichier d’indexation. Les fausses entrées vont lui permettre de délimiter les les blocs de références, et de les concaténer en un seul morceau.

Par exemple, LaTex + BibLaTex produit, grâce à mes commandes, dans mon fichier d’indexation :

\indexentry {Pseudo-Augustin}{1}
\indexentry {Sermon \incipit {Fratres carissimi, unum rei documentum} (Caillau \cRM {2}, 27)}{1}
\indexentry {4}{1}
\indexentry {---}{1}

Après passage du script Python, j’obtiens à la place :

\indexentry {Pseudo-Augustin@Pseudo-Augustin!Sermon \incipit {Fratres carissimi, unum rei documentum} (Caillau \cRM {2}, 27)@Sermon \incipit {Fratres carissimi, unum rei documentum} (Caillau \cRM {2}, 27)!4@4}{1}

qui sera automatiquement inteprété par MakeIndex.

Notez que le script s’occupe tout seul de supprimer les accents pour choisir l’entrée [4].

Les avantages

  • Pas besoin de relire le fichier de bibliographie avec Python.
  • La majeure partie du traitement est laissé à LaTex.
  • Pas besoin d’un module Python spécifique.

    Concrètement

Il faut mettre ce code dans son fichier .tex [5].

\renewbibmacro{citeindex}{%
\iffieldequalstr{usera}{1}{

	\ifciteindex{%
		 %Index l'auteur
	\ifnameundef{namea}{%
		  	\indexnames[sources]{author}}%
		  	{\indexnames[sources]{namea}}
		  \iffieldundef{indextitle}{%
			\indexfield[sources]{title}%
		  	}%
		{%
			\indexfield[sources]{indextitle}%
		}%
		\iffieldundef{postnote}{
			\indexfield[sources]{pages}}%
			{\indexfield[sources]{postnote}}%
	}{}%
	\index[sources]{---}
	}{}
}
\DeclareIndexNameFormat{sources}{%
  \usebibmacro{index:name}{\index[sources]}{#1}{#3}{#5}{#7}%
}%

\DeclareIndexFieldFormat{sources}{%
	\index[sources]{#1}%
}

J’ai choisi d’utiliser le champ usera pour signaler si on a affaire à une source.

Il faut également déclaré qu’on souhaite un index spécial :

\usepackage{index}
\makeindex
\newindex{sources}{sox}{sod}{Index des sources}

Ensuite, il suffit d’utiliser le script Python ci-joint.

Pour cela :

  • avoir Python installé (c’est le cas avec la plupart des distribs Linux et avec OsX)
  • placer le script à côté du fichier principal et du fichier d’indexation (qui normalement sont au même endroit).
  • se rendre avec l’invite de commande dans le dossier
  • exécuter la commande suivante : % python index2.py [6].

Et ce après avoir compilé une premier fois en LaTeX, puis en BibTeX, puis en LaTeX.

Documents joints

Notes

[2Je ne trouve pas utile d’indexer les sources secondaires.

[3Du coup, on ne peut pas mettre autre chose que le numéro, mais je ne pense pas que cela soit limitatif pour les sources primaires.

[4Oui, bon, ici il n’y a pas d’accent

[5Et non pas dans le fichier .bbx, comme je viens de le découvrir.

[6Le % indique l’invite de commande.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Acheter XeLaTeX appliqué aux sciences humaines

À propos

Titulaire d’un doctorat en théologie et d’un doctorat en histoire, sous la direction conjointe de Frédéric Amsler et d’Élisabeth_Malamut, je commence à partir du 1er août 2017 un travail d’édition critique des Actes de Barnabé.

Dans le cadre de la rédaction de mon mémoire de master puis de ma thèse de doctorat, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares. Ceci m’a conduit à maintenir ou créer plusieurs packages LaTeX et à donner plusieurs formations.

J’ai reçu en 2018 le prix DANTE e.V pour mon travail autour de LaTeX, en particulier autour de reledmac et reledpar.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul