HsIndex

A propos de HsIndex

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.

Portabilité

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.

International

HsIndex support plusieurs langages avec des alphabets différents:

Personnalisation

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 , ….)

Introduction

Un index est composé de 3 sections:

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.

Plages de numéros de pages

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

Modification du style

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.

Langage personnalisé

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:

Usage

Exécution

HsIndex s'utilise de la même façon que makeindex ou xindy :

  1. On place l'exécutable de HsIndex dans le répertorie de travail de LaTeX.

  2. On compile une première fois le document LaTeX avec le paquet imakeidx.

  3. On exécute hsindex avec les arguments appropriés:

          hsindex english --style="myindexstyle.sty" --input=input.idx --output=output.ind
    
        
  4. On compile le document LaTeX une deuxième fois afin d'y incorporer l'index.

Téléchargement

Le code source de la dernière version de HsIndex peut être téléchargé sur gitlab

hsindex on gitlab

Un binaire fonctionnant sous Windows peut être téléchargé ici:

hsindex v0.12.0

hsindex v0.11.1

hsindex v0.9.1

Comparaison avec makeindex

Les comparatifs ci-dessous, permettent de se faire une idée sur les différences entre un index générés avec makeindex et HsIndex. Ces comparatifs, ont été générés avec testidx LaTeX package.

makeindex
,
 
LaTeX
Haskell
,
 
HsIndex
,
 
LaTeX
Haskell
,
 
HsIndex
,
 
LaTeX

Évolution

HsIndex est en cours de développement et ses fonctionnalités ne sont pas exacement les même 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.