4 <basefont size="4" color="#2F4958" face="arial">
6 <h1>Filtres d'exportation personnalisés</h1>
9 JabRef vous permet de définir et d'utiliser vos propres filtres d'exportation de la même manière que les filtres d'exportation standards. Un filtre d'exportation est défini par un ou plusieurs <i>fichiers gabarit</i> qui, avec l'aide d'un certain nombre de routines internes de formatage, définissent le format des fichiers exportés. Vos fichiers gabarit doivent être préparés avec un éditeur de texte à l'extérieur de JabRef.
12 <h2>Ajout d'un filtre d'exportation personnalisé </h2>
15 La seule obligation pour avoir un filtre d'exportation valide est l'existence d'un fichier avec l'extension <b>.layout</b>. Pour ajouter un nouveau filtre d'exportation, on utilise le menu <b>Options -> Gérer les exportations personnalisées</b>, et on clique sur <b>Ajouter nouvelle</b>. Une nouvelle boite de dialogue apparaît et vous permet de spécifier le nom du nouveau filtre d'exportation (ce nom apparaîtra ensuite comme l'un des choix du menu déroulant "Type de fichier" de la fenêtre de dialogue affectée au menu <b>Fichier -> Exporter</b> de la fenêtre principale de JabRef), le chemin du fichier <b>.layout</b>, et l'extension de fichier préférée par le filtre d'exportation (c'est cette extension qui sera suggérée dans la boite de dialogue lorsque le filtre sera utilisé).
19 <h2>Création d'un filtre d'exportation</h2>
22 Pour voir des exemples de constitution de filtres d'exportation, recherchez le répertoire contenant les fichiers gabarit des filtres d'exportation standards sur notre page de téléchargement.
25 <h3>Les fichiers gabarit</h3>
28 On suppose que l'on veut créer un filtre d'exportation pour une sortie HTML.
32 Bien que le filtre d'exportation ne nécessite qu'un seul fichier <b>.layout</b>, qui dans ce cas pourrait s'appeler <i>html.layout</i>, vous pouvez désirer ajouter deux autres fichiers appelés <i>html.begin.layout</i> et <i>html.end.layout</i>. Le premier contient le début de la sortie et le dernier la fin. JabRef recherche ces deux fichiers quelque soit le fichier d'exportation utilisé et, s'il les trouve, les recopie tel quel dans la sortie avant et après l'écriture des entrées individuelles.
36 Il faut noter que ces fichiers doivent être dans le même répertoire que le fichier <i>html.layout</i>, et que leur nom doit comporter <b>.begin</b> pour l'un et <b>.end</b> pour l'autre.
40 Dans notre exemple de fichier d'exportation, cela pourrait ressembler à
44 <i>html.begin.layout</i> :<br>
47 <BODY> text="#275856"><br>
48 <basefont size="4" color="#2F4958" face="arial">
53 <i>html.end.layout</i> :<br>
61 Le fichier <i>html.layout</i> fournit le gabarit par défaut pour l'exportation d'une seule entrée. Si vous devez utiliser différents gabarits pour les différentes entrées, vous pouvez le faire en ajoutant des fichiers <b>.layout</b> spécifiques.
62 Les fichiers doivent aussi être dans le même répertoire que le gabarit principal et ils sont nommés en insérant <b>.entrytype</b> dans le nom du fichier gabarit principal. Le nom de l'entrée doit être en minuscules.
63 Dans notre exemple, on peut vouloir ajouter un gabarit différent pour les livres et cela se fera via le fichier <i>html.book.layout</i>. Pour une thèse, on ajoutera le fichier <i>html.phdthesis.layout</i>.
64 Ces fichiers sont similaires au gabarit principal, si ce n'est qu'ils sont utilisés pour des entrées spécifiques. A noter que le gabarit général peut aisément être créé suffisamment général pour être utilisable avec la plupart des entrées dans la majorité des filtres d'exportation.
67 <h3>Le format des fichiers gabarit</h3>
70 Les fichiers gabarit utilisent un simple langage de balisage dans lequel les commandes sont identifiées par l'antislash (\) les précédant. Tout texte non identifié comme faisant partie d'une entrée est recopié tel quel dans le fichier de sortie.
73 <h3>Les commandes relatives aux champs</h3>
76 Les mots précédés d'un antislash, par exemple <code>\author</code>, <code>\editor</code>, <code>\title</code> ou <code>\year</code>, sont interprétés comme des références aux champs correspondants et le contenu du champ est copié directement dans la sortie.
79 <h3>Les formateurs de champs</h3>
82 Souvent, on a besoin de faire subir au contenu d'un champ un pré-traitement avant de le copier dans le fichier de sortie. Cela est réalisé en utilisant un <i>formateur de champ</i> - une classe java contenant une seule méthode qui manipule le contenu du champ.
86 Le formateur est utilisé en insérant la commande <code>\format</code> suivie du nom du formateur entre crochets et du nom du champ entre accolades, par exemple
89 <code>\format[ToLowerCase]{\author}</code>
93 Vous pouvez aussi indiquer plusieurs formateurs séparés par des virgules. Ils seront alors appelés séquentiellement de la gauche vers la droite, par exemple :
96 <code>\format[ToLowerCase,HTMLChars]{\author}</code>
99 va d'abord appliquer le formateur <b>ToLowerCase</b> puis <b>HTMLChars</b> sur le résultat. Vous pouvez lister un nombre arbitraire de formateurs de cette manière.
102 <p>Le paramètre des formateurs, entre les accolades, n'est pas obligatoirement une commande de champ. Vous pouvez y insérer du texte normal, qui sera alors passé comme argument au formateur. Cela peut-être utile avec certains formateurs, par exemple le formateur CurrentDate (voir ci-dessous).
106 JabRef fournit les formateurs suivants, certains d'entre eux dépendant d'autres formateurs :
110 <li><code>HTMLChars</code> : remplace les caractères spéciaux spécifiques à TeX (par exemple : {\^a} ou {\"{o}}) par leur représentation HTML.
111 <li><code>XMLChars</code> : remplace les caractères spéciaux spécifiques à TeX (par exemple : {\^a} ou {\"{o}}) par leur représentation XML.
112 <li><code>CreateDocBookAuthors</code> : formate le contenu du champ author selon le style DocBook.
113 <li><code>CurrentDate</code> : renvoie la date actuelle. Sans argument, ce formateur renvoie la date et l'heure actuelle au format "yyyy.MM.dd hh:mm:ss z" (date, heure et fuseau horaire). En donnant une chaîne de format différent comme argument, le format de la date peut-être adapté. Par exemple,
114 <code>\format[CurrentDate]{yyyy.MM.dd}</code> renverra uniquement la date, comme par exemple 2005.11.30.
115 <li><code>AuthorFirstFirst</code> : formate le contenu des champs author/editor en mettant les prénoms en premier.
116 <li><code>AuthorFirstFirstCommas</code> : formate le contenu des champs author/editor en mettant les prénoms en premier et des virgules comme séparateurs.
117 <li><code>AuthorLastFirst</code> : formate le contenu des champs author/editor en mettant le nom de famille en premier.
118 <li><code>AuthorLastFirstAbbreviator</code> : réduit les prénoms de tous les auteurs à leurs initiales. Ce formateur nécessite d'avoir préalablement utilisé AuthorLastFirst.
119 <li><code>AuthorAndsReplacer</code> : remplace "and" par ";" entre les premiers noms et par "&" entre les deux derniers.
120 <li><code>AuthorAndsCommaReplacer</code> : remplace "and" entre les noms par une virgule (",") et "&" entre les deux derniers.
121 <li><code>AuthorOrgSci</code> : premier auteur selon "nom, prénom" et tous les autres selon "prénom nom". Les prénoms sont abrégés.
122 <li><code>AuthorAbbreviator</code> : A documenter.
123 <li><code>AuthorNatBib</code> : Formats des noms d'auteurs dans le style NatBin, avec les noms propres séparés par "and" s'il y a deux auteurs, ou le premier nom suivi de "et al." s'il y en a plus de deux.
124 <li><code>FormatPagesForHTML</code> : remplace "--" par "-".
125 <li><code>FormatPagesForXML</code> : remplace "--" par un tiret XML.
126 <li><code>RemoveBrackets</code> : supprime toutes les accolades "{" ou "}".
127 <li><code>RemoveLatexCommands</code> : supprime toutes les commandes LaTeX comme <code>\em</code>, <code>\textbf</code>, etc. Lorsqu'il est utilisé avec <code>HTMLChars</code> ou <code>XMLChars</code>, ce formateur doit être appelé en dernier.
128 <li><code>RemoveTilde</code> : remplace le caractère tilde (utilisé dans LaTeX comme un espace insécable) par un espace normal. Utile en combinaison avec NameFormatter comme discuté dans la prochaine section.
129 <li><code>ToLowerCase</code> : bascule tous les caractères en minuscules.
133 Si aucun des formateurs disponibles ne peut faire ce que vous désirez, vous pouvez ajouter le votre à l'interface <code> net.sf.jabref.export.layout.LayoutFormatter</code>. Si vous insérez votre propre classe dans <code>net.sf.jabref.export.layout.format</code>, vous pouvez appeler votre formateur en utilisant son nom de classe, comme pour les formateurs standards. Sinon, vous devez appeler le formateur par son nom complet (incluant le nom du package). Dans les deux cas, le formateur doit être dans votre chemin de classe lorsque vous lancez JabRef
136 <h3>Les sorties conditionnelles</h3>
138 Certaines informations dans les sorties ne prennent de sens que si un certain champ est utilisé. Par exemple, disons que l'on veuille faire suivre le nom de l'éditeur par le texte <code>(Ed.)</code>. Cela peut être réalisé avec le code suivant :
142 <code>\format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)</code>
146 Cependant, si le champs <code>editor</code> n'a pas été renseigné - il n'a pas de sens pour l'entrée exportée - le texte <code>(Ed.)</code> doit être ignoré. Cela peut être effectué en utilisant les commandes <code>\begin</code> et <code>\end</code> :
150 <code>\begin{editor}<br>\format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)
151 <br>\end{editor}</code>
154 <p>Les commandes <code>\begin</code> et <code>\end</code> assure que le texte contenu entre les deux commandes ne sera imprimé que si et seulement si le champ spécifié entre accolades est renseigné dans l'entrée que l'on veut exporter.
158 <b>Note :</b> L'utilisation des commandes <code>\begin</code> et <code>\end</code> est une manière astucieuse de créer des gabarits qui sont communs à une grande variété d'entrées.
161 <h3>Les sorties groupées</h3>
164 Si vous désirez séparer vos entrées en groupes basés sur un certain champ, vous pouvez utiliser les commandes de sorties groupées. La sortie groupée est assez similaire aux sorties conditionnelles, excepté que le texte spécifié n'est imprimé que si le champ indiqué dans les accolades change de valeur.
168 Par exemple, on suppose que l'on désire faire des groupes à partir de mots-clefs. Avant l'exportation, on s'assure que les entrées sont triées selon les mots-clefs. Ensuite, on utilise les commandes suivantes pour les grouper par mot-clefs :
171 <code>\begingroup{keywords}New Category: \format[HTMLChars]{\keywords}
172 <br> \endgroup{keywords}</code>
175 <h2>Partage de votre travail </h2>
178 Avec les fichiers gabarit externes, il est relativement simple de partager des formats d'exportation entre utilisateurs. Si vous écrivez un filtre d'exportation pour un format non supporté par JabRef, ou si vous améliorez un filtre déjà existant, nous vous encourageons à déposer votre travail sur notre page SourceForge.net. La même chose est possible pour les nouvelles classes de formateur que vous avez écrites. Nous serons heureux de distribuer une collection des fichiers gabarit soumis ou de les ajouter à la série des filtres d'exportation standard ou des formateurs.