Comment Créer des étiquettes de manière automatique




Ce document a pour but d'expliquer comment se faire un système de création automatique d'étiquettes avec XFig et des outils unix standards.

Pour créer des étiquettes, il faut d'abord savoir à quoi elles vont ressembler. Pour cela on utilisera XFig car son grand avantage est de créer des fichiers de sauvegarde en mode texte facilement compréhensibles et, bien entendu, facilement traitables par des moyens traditionnels via grep, sed ou awk.

La première étape consiste donc à utiliser XFig pour créer une étiquette type, ou, plus rapidement, un lot d'étiquettes type. Qu'elles soient identiques ou non, elles ont chacune un texte. Afin d'en simplifier le traitement, il est nécessaire de remplacer le texte qu'on aurait envie de mettre par un marqueur facilement reconnaissable. Personnellement j'ai choisi LABELn.n est un chiffre qui est différent sur chacune des etiquettes présentes sur la page (ce qui donne des étiquettes nommées LABEL1., LABEL2. ... LABEL8.).
Une fois ces étiquettes obtenues, on sauvegarde la forme définitive dans un fichier labels.fig par exemple.

Le fichier XFig obtenu, il faut créer une liste de noms, ou de ce qu'on veut, qui seront pris comme labels pour les étiquettes. Un nom par ligne et le tour est joué. C'est, en somme, le plus long travail.

L'étape suivante consiste à scripter la lecture du fichier de noms pour remplacer dans le fichier XFig les termes LABELn. par les noms trouvés, et ce par lot afin de créer des pages complètes d'étiquettes. Ces remplacements sont faits avec sed et chaque résultat est exporté dans un fichier labels-n.fig, avec n, le numéro de la page contenant le lot d'étiquettes traitées. La commande à utiliser est la suivante :
sed -e "s/LABEL$i\./$name[$i]/g" labels.fig > labels-$n.fig
Sachant que $i contient le numéro de l'étiquette en cours de remplacement (car il faut le faire pour toutes les étiquettes de la page), que $name est un tableau contenant tous les noms à remplacer pour la page en cours de traitement et $n est le numéro de cette page.

Une fois les fichiers .fig contenant toutes les étiquettes obtenus, il faut encore être capable de les imprimer. Pour cela on va d'abord les transformer en PostScript avec la commande fig2dev. La commande utilisée est donc la suivante :
fig2dev -L ps labels-$n.fig labels-$n.ps
Avec, comme précédemment, $n étant le numéro de la page en cours.

Finalement, il ne reste plus qu'à imprimer ces pages avec lpr, tout simplement, et de supprimer (si on le souhaite) tous les fichiers générés automatiquement.

Voilà ! Maintenant vous savez faire une impression automatique d'étiquettes (ou quoique ce soit d'autre d'ailleurs) avec XFig et les outils standards que l'on trouve sous un unix-like. fig2dev est disponible dans le paquetage transfig, ainsi que fig2ps2tex auquel vous trouverez certainement une utilisation tout aussi amusante.

Pour vous simplifier le travail, j'ai moi-même fait le script qui automatise tout ce qui a été dit ci dessus, sauf, bien entendu, la création des étiquettes ainsi que celle de la liste de noms...
makelabels est le script perl qui traite les fichiers et envoie à l'imprimante le résultat si on lui passe la bonne option.
labels.fig est un fichier fig contenant un exemple d'étiquettes de table (pour mettre des noms ou des numéros sur des tables ou devant des assiètes --- pratique pour placer des personnes).
Il y a plusieurs options à makelabels. En voici la liste obtenue avec l'option -h :

makelabels v 0.0.2, Thomas Nemeth 2002
Usage : makelabels [-h] [-p] [-rm] [-f file] [-n num]
 -h      : this help
 -p      : print files
 -rm     : delete generated files
 -f file : use 'file' as source for names (default: nameslist.txt)
 -n num  : take 'num' names per page (default: 8)
makelabels uses 'labels.fig' as xfig formatted label-file.
Each label should be named 'LABEL#.', with # a number from 1 to whatever you
want (see option -n): don't forget the dot. Of course, there should be as many
labels in the xfig file as declared to exist with '-n'.

Bien sûr, tout le monde est invité à m'envoyer un rapport de bug, des remerciements ou quoique ce soit d'autre (enfin... Gentilement si possible).


Page mise à jour le 29 octobre 2002.
Thomas Nemeth