HsIndex est un générateur d'indexes utilisable avec LaTeX et ses variantes (XeLaTeX, …) en association avec le paquet imakeidx
HsIndex a été créé pour palier a l'absence de xindy
dans la version 9 de Debian et mon besoin de générer des indexes avec des caractères cyrilliques.
Ce programme est écrit avec Haskell afin d'avoir un programme portable, fiable, rapide et facile à faire évoluer.
HsIndex peut être compilé a partie des sources sur la plupart des distributions Linux et versions de Windows ou Haskell est disponible.
Il devrait se compiler parfaitement avec des versions de Haskell plateform supérieures à 2014.2.
HsIndex support plusieurs langages avec des alphabets différents:
Français.
Anglais.
Allemand.
Russe.
HsIndex est personnalisable par l'utilisateur afin de modifier le style de l'index (Taille de fonte, Alignement, délimiteurs, …) sous LaTeX et le langage lui-même (Ordre de tri des caractères, substitutions de caractères , ….)
Un index est composé de 3 sections:
Les lettres
Les chiffres
Les symboles
Dans chaque section, les lettres, chiffres et symboles sont triés dans un ordre précis.
Les langages de base de HsIndex génèrent un index avec l'ordre habituel des lettres (Alphabétique), un style LaTeX standard et devrait convenir la plupart du temps.
Des substitutions de lettres sont effectuées sur les lettres accentuées pour simplifier l'index et donner un tri cohérent. Par exemple la lettre accentuée é
est remplacée par e
et la ligature œ
est remplacée par les lettres oe
Si le style ou la définition du langage n'est pas satisfaisante, l'utilisateur a la possibilité de définir son propre style et son propre ordre de tri pour chaque section.
HsIndex ne peut pas relire le format d'entrée générant des plages de numéros de pages avec des parenthèses ouvrantes et fermantes (\indexentry{the entry|(}{1}
). Mais il est possible de convertir automatiquement 3 numéros de pages successifs (ou plus) en utilisant l'option --range
.
hsindex english --range --style="myindexstyle.sty" --input=input.idx --output=output.ind
Il est possible de modifier le style de l'index en écrivant un fichier de style qui contient les commandes LaTeX à exécuter a des endroits spécifiques de l'index.
Par exemple, pour modifier le préambule, il faut inclure cette ligne dans le fichier texte.
preamble "\begin{theindex}"
Il est possible de modifier différents paramètres de l'index tels que le préfixe et le suffixe des en-têtes ou l'intervalle entre les groupes :
heading_prefix "{\vspace{1.5cm}\huge{\textbf{"
heading_suffix "}}\hfill}\nopagebreak"
group_skip "\\n\\n \indexspace\\n"
Note : Il est possible de placer des fin de lignes \n
mais ces fins de lignes doivent être précédées de deux backslashes \\n
.
Il est aussi possible de modifier l'ordre des lettres avec un fichier de définitions de langues.
Ce fichier se compose de différentes sections:
LETTERS : Décrit les caractères qui seront considérés comme lettres et leur ordre de tri.
NUMBERS : Décrit les caractères qui seront considérés comme des chiffres et leur ordre de tri.
SYMBOLS : Décrit les caractères qui seront considérés comme des symboles et leur ordre de tri. Si cette section est manquante, tous les caractères qui ne sont pas déclarés par l'utilisateur comme étant des lettres ou des chiffres seront traités comme des symboles.
SUBSTITUTIONS : Décrit la liste des substitutions de caractères à appliquer pour créer des équivalences de caractères. Cela permet de donner aux lettres accentuées ou ligaturées des caractères équivalents et de créer un mot équivalent à utiliser pour le tri.
œ->oe
à->a
ê->e
HsIndex s'utilise de la même façon que makeindex ou xindy
:
On place l'exécutable de HsIndex dans le répertorie de travail de LaTeX.
On compile une première fois le document LaTeX avec le paquet imakeidx
.
On exécute hsindex avec les arguments appropriés:
hsindex english --style="myindexstyle.sty" --input=input.idx --output=output.ind
On compile le document LaTeX une deuxième fois afin d'y incorporer l'index.
Le code source de la dernière version de HsIndex peut être téléchargé sur gitlab
Un binaire fonctionnant sous Windows peut être téléchargé ici:
Les comparatifs ci-dessous, permettent de se faire une idée sur les différences entre un index généré avec makeindex et HsIndex. Ces comparatifs, ont été générés avec testidx LaTeX package.
HsIndex est en cours de développement et ses fonctionnalités ne sont pas exactement les mêmes que makeindex. Par exemple, il n'est pas possible de relire les plages de numéros de pages de makeindex (et ceci ne sera probablement pas implémenté).
Si vous avez des suggestions pour améliorer ce programme ou si vous souhaitez voir un langage être implémenté, contactez-moi par mail.