1 <html xmlns="http://www.w3.org/1999/xhtml">
8 <h1>Filtres d'exportation personnalisés</h1>
10 <p>JabRef vous permet de définir et d'utiliser vos
11 propres filtres d'exportation de la même manière
12 que les filtres d'exportation standards. Un filtre
13 d'exportation est défini par un ou plusieurs <i>fichiers
14 gabarit</i> qui, avec l'aide d'un certain nombre de routines
15 internes de formatage, définissent le format des
16 fichiers exportés. Vos fichiers gabarit doivent
17 être préparés avec un éditeur de
18 texte à l'extérieur de JabRef.</p>
20 <h2>Ajout d'un filtre d'exportation personnalisé</h2>
22 <p>La seule obligation pour avoir un filtre d'exportation
23 valide est l'existence d'un fichier avec l'extension
24 <b>.layout</b>. Pour ajouter un nouveau filtre d'exportation,
25 on utilise le menu <b>Options -> Gérer les
26 exportations personnalisées</b>, et on clique sur
27 <b>Ajouter nouvelle</b>. Une nouvelle boite de dialogue
28 apparaît et vous permet de spécifier le nom du
29 nouveau filtre d'exportation (ce nom apparaîtra ensuite
30 comme l'un des choix du menu déroulant "Type de fichier"
31 de la fenêtre de dialogue affectée au menu
32 <b>Fichier -> Exporter</b> de la fenêtre principale de
33 JabRef), le chemin du fichier <b>.layout</b>, et l'extension de
34 fichier préférée par le filtre
35 d'exportation (c'est cette extension qui sera
36 suggérée dans la boite de dialogue lorsque le
37 filtre sera utilisé).</p>
39 <h2>Création d'un filtre d'exportation</h2>
41 <p>Pour voir des exemples de constitution de filtres
42 d'exportation, recherchez le répertoire contenant les
43 fichiers gabarit des filtres d'exportation standards sur notre
44 page de téléchargement.</p>
46 <h3>Les fichiers gabarit</h3>
48 <p>On suppose que l'on veut créer un filtre
49 d'exportation pour une sortie HTML.</p>
51 <p>Bien que le filtre d'exportation ne nécessite qu'un
52 seul fichier <b>.layout</b>, qui dans ce cas pourrait s'appeler
53 <i>html.layout</i>, vous pouvez désirer ajouter deux
54 autres fichiers appelés <i>html.begin.layout</i> et
55 <i>html.end.layout</i>. Le premier contient le début de
56 la sortie et le dernier la fin. JabRef recherche ces deux
57 fichiers quelque soit le fichier d'exportation utilisé
58 et, s'il les trouve, les recopie tel quel dans la sortie avant
59 et après l'écriture des entrées
62 <p>Il faut noter que ces fichiers doivent être dans le
63 même répertoire que le fichier <i>html.layout</i>,
64 et que leur nom doit comporter <b>.begin</b> pour l'un et
65 <b>.end</b> pour l'autre.</p>
67 <p>Dans notre exemple de fichier d'exportation, cela pourrait
68 ressembler à</p>
70 <p><i>html.begin.layout</i> :<br />
71 <code><HTML><br />
72 <BODY> text="#275856"><br />
73 <basefont size="4" color="#2F4958"
74 face="arial"></code></p>
76 <p><i>html.end.layout</i> :<br />
77 <code></BODY><br />
78 </HTML></code></p>
80 <p>Le fichier <i>html.layout</i> fournit le gabarit par
81 défaut pour l'exportation d'une seule entrée. Si
82 vous devez utiliser différents gabarits pour les
83 différentes entrées, vous pouvez le faire en
84 ajoutant des fichiers <b>.layout</b> spécifiques. Les
85 fichiers doivent aussi être dans le même
86 répertoire que le gabarit principal et ils sont
87 nommés en insérant <b>.entrytype</b> dans le nom
88 du fichier gabarit principal. Le nom de l'entrée doit
89 être en minuscules. Dans notre exemple, on peut vouloir
90 ajouter un gabarit différent pour les livres et cela se
91 fera via le fichier <i>html.book.layout</i>. Pour une
92 thèse, on ajoutera le fichier
93 <i>html.phdthesis.layout</i>. Ces fichiers sont similaires au
94 gabarit principal, si ce n'est qu'ils sont utilisés pour
95 des entrées spécifiques. A noter que le gabarit
96 général peut aisément être
97 créé suffisamment général pour
98 être utilisable avec la plupart des entrées dans
99 la majorité des filtres d'exportation.</p>
101 <h3>Le format des fichiers gabarit</h3>
103 <p>Les fichiers gabarit utilisent un simple langage de balisage
104 dans lequel les commandes sont identifiées par
105 l'antislash (\) les précédant. Tout texte non
106 identifié comme faisant partie d'une entrée est
107 recopié tel quel dans le fichier de sortie.</p>
109 <h3>Les commandes relatives aux champs</h3>
111 <p>Les mots précédés d'un antislash, par
112 exemple <code>\author</code>, <code>\editor</code>,
113 <code>\title</code> ou <code>\year</code>, sont
114 interprétés comme des références
115 aux champs correspondants et le contenu du champ est
116 copié directement dans la sortie.</p>
118 <h3>Les formateurs de champs</h3>
120 <p>Souvent, on a besoin de faire subir au contenu d'un champ un
121 pré-traitement avant de le copier dans le fichier de
122 sortie. Cela est réalisé en utilisant un
123 <i>formateur de champ</i> - une classe java contenant une seule
124 méthode qui manipule le contenu du champ.</p>
126 <p>Le formateur est utilisé en insérant la
127 commande <code>\format</code> suivie du nom du formateur entre
128 crochets et du nom du champ entre accolades, par exemple</p>
130 <p><code>\format[ToLowerCase]{\author}</code></p>
132 <p>Vous pouvez aussi indiquer plusieurs formateurs
133 séparés par des virgules. Ils seront alors
134 appelés séquentiellement de la gauche vers la
135 droite, par exemple :</p>
137 <p><code>\format[ToLowerCase,HTMLChars]{\author}</code></p>
139 <p>va d'abord appliquer le formateur <b>ToLowerCase</b> puis
140 <b>HTMLChars</b> sur le résultat. Vous pouvez lister un
141 nombre arbitraire de formateurs de cette manière.</p>
143 <p>Le paramètre des formateurs, entre les accolades,
144 n'est pas obligatoirement une commande de champ. Vous pouvez y
145 insérer du texte normal, qui sera alors passé
146 comme argument au formateur. Cela peut-être utile avec
147 certains formateurs, par exemple le formateur CurrentDate (voir
150 <p>JabRef fournit les formateurs suivants, certains d'entre eux
151 dépendant d'autres formateurs :</p>
154 <li><code>HTMLChars</code> : remplace les
155 caractères spéciaux spécifiques
156 à TeX (par exemple : {\^a} ou {\"{o}}) par leur
157 représentation HTML.</li>
159 <li><code>HTMLParagraphs</code> : interprète
160 deux retours-chariot consécutifs (comme \n \n) comme
161 le début d'un nouveau paragraphe et crée les
162 balises html de paragraphes appropriées.</li>
164 <li><code>XMLChars</code> : remplace les
165 caractères spéciaux spécifiques
166 à TeX (par exemple : {\^a} ou {\"{o}}) par leur
167 représentation XML.</li>
169 <li><code>CreateDocBookAuthors</code> : formate le
170 contenu du champ author selon le style DocBook.</li>
172 <li><code>CreateDocBookEditors</code> : à
175 <li><code>CurrentDate</code> : renvoie la date
176 actuelle. Sans argument, ce formateur renvoie la date et
177 l'heure actuelle au format "yyyy.MM.dd hh:mm:ss z" (date,
178 heure et fuseau horaire). En donnant une chaîne de
179 format différent comme argument, le format de la
180 date peut-être adapté. Par exemple,
181 <code>\format[CurrentDate]{yyyy.MM.dd}</code> renverra
182 uniquement la date, comme par exemple 2005.11.30.</li>
184 <li><code>AuthorFirstFirst</code> : formate le contenu
185 des champs author/editor en mettant les prénoms en
188 <li><code>AuthorFirstFirstCommas</code> : formate le
189 contenu des champs author/editor en mettant les
190 prénoms en premier et des virgules comme
191 séparateurs.</li>
193 <li><code>AuthorFirstAbbrLastCommas</code> : à
196 <li><code>AuthorFirstAbbrLastOxfordCommas</code> :
197 à documenter.</li>
199 <li><code>AuthorFirstLastOxfordCommas</code> :
200 à documenter.</li>
202 <li><code>AuthorLastFirst</code> : formate le contenu
203 des champs author/editor en mettant le nom de famille en
206 <li><code>AuthorLastFirstAbbreviator</code> :
207 réduit les prénoms de tous les auteurs
208 à leurs initiales. Ce formateur nécessite
209 d'avoir préalablement utilisé
210 AuthorLastFirst.</li>
212 <li><code>AuthorLastFirstCommas</code> : à
215 <li><code>AuthorLastFirstOxfordCommas</code> :
216 à documenter.</li>
218 <li><code>AuthorLastFirstAbbrCommas</code> : à
221 <li><code>AuthorLastFirstAbbrOxfordCommas</code> :
222 à documenter.</li>
224 <li><code>AuthorAndsReplacer</code> : remplace "and"
225 par ";" entre les premiers noms et par "&" entre les
228 <li><code>AuthorAndsCommaReplacer</code> : remplace
229 "and" entre les noms par une virgule (",") et "&" entre
230 les deux derniers.</li>
232 <li><code>AuthorOrgSci</code> : premier auteur selon
233 "nom, prénom" et tous les autres selon
234 "prénom nom". Les prénoms sont
235 abrégés.</li>
237 <li><code>AuthorAbbreviator</code> : A
240 <li><code>AuthorNatBib</code> : Formats des noms
241 d'auteurs dans le style NatBib, avec les noms propres
242 séparés par "and" s'il y a deux auteurs, ou
243 le premier nom suivi de "et al." s'il y en a plus de
246 <li><code>NoSpaceBetweenAbbreviations</code> : Les espaces
247 entre les initiales des prénoms sont
248 supprimés.</li>
250 <li><code>FileLink</code> : sans argument, ce formateur renvoie
251 le premier lien apparaissant dans le champ. Pour fonctionner, ce formateur doit
252 être alimenté par le contenu du champ "file" (fichier).
253 <p>Ce formateur prend comme argument optionnel l'extension du type de fichier externe
254 spécifié entre parenthèses après le nom du formateur. Par exemple,
255 <code>\format[FileLink(pdf)]{\file}</code> spécifie <code>pdf</code> comme un
256 argument. Quand un argument est fourni, le formateur sélectionne le premier lien
257 vers un fichier du type spécifié. Dans l'exemple, le chemin vers le premier lien PDF
258 sera renvoyé.</p></li>
260 <li><code>FormatPagesForHTML</code> : remplace "--"
263 <li><code>FormatPagesForXML</code> : remplace "--" par
266 <li><code>RemoveBrackets</code> : supprime toutes les
267 accolades "{" ou "}".</li>
269 <li><code>RemoveBracketsAddComma</code> : à
272 <li><code>RemoveWhitespace</code> : à
275 <li><code>RemoveLatexCommands</code> : supprime toutes
276 les commandes LaTeX comme <code>\em</code>,
277 <code>\textbf</code>, etc. Lorsqu'il est utilisé
278 avec <code>HTMLChars</code> ou <code>XMLChars</code>, ce
279 formateur doit être appelé en dernier.</li>
281 <li><code>RemoveTilde</code> : remplace le
282 caractère tilde (utilisé dans LaTeX comme un
283 espace insécable) par un espace normal. Utile en
284 combinaison avec NameFormatter comme discuté dans la
285 prochaine section.</li>
287 <li><code>ToLowerCase</code> : bascule tous les
288 caractères en minuscules.</li>
290 <li><code>CompositeFormat</code> : à
293 <li><code>GetOpenOfficeType</code> : à
296 <li><code>RTFChars</code> : à documenter.</li>
298 <li><code>ResolvePDF</code> : à
302 <p>Si aucun des formateurs disponibles ne peut faire ce que
303 vous désirez, vous pouvez ajouter le votre à
305 <code>net.sf.jabref.export.layout.LayoutFormatter</code>. Si
306 vous insérez votre propre classe dans
307 <code>net.sf.jabref.export.layout.format</code>, vous pouvez
308 appeler votre formateur en utilisant son nom de classe, comme
309 pour les formateurs standards. Sinon, vous devez appeler le
310 formateur par son nom complet (incluant le nom du package).
311 Dans les deux cas, le formateur doit être dans votre
312 chemin de classe lorsque vous lancez JabRef</p>
314 <h2 id="NameFormatter">Utiliser des formateurs de nom
315 personnalisé</h2>
317 <p>Avec JabRef 2.2, il est maintenant possible de
318 définir des formateurs de nom personnalisés et
319 utilisant la syntaxe des fichiers de style BibTeX. Cela permet
320 une flexibilité totale, mais c'est fastidieux à
323 <p>Vous pouvez définir votre propre formateur dans
324 l'onglet "Formateur de nom" des préférences en
325 utilisant le format suivant et en l'utilisant ensuite avec le
326 nom que vous avez défini comme de n'importe quel autre
328 <code><cas1>@<gamme11>@<format>@<gamme12>@<format>@<gamme13>...@@<br />
330 <cas2>@<gamme21>@... et ainsi de suite.</code>
332 <p>Ce format commence par séparer la tache de formatage
333 de la liste d'auteurs dans des cas dépendant du nombre
334 d'auteurs qu'il y a (c'est ainsi car certains formats
335 diffèrent en fonction du nombre d'auteurs). Chaque cas
336 individuel est séparé par @@ et contient les
337 instructions sur la façon de formater chaque auteur dans
338 le cas considéré. Ces instructions sont
339 séparées par un @.</p>
341 <p>Les cas sont identifiés en utilisant des entiers (1,
342 2, 3, etc.) ou le caractère * (correspondant à
343 n'importe quel nombre d'auteurs) et spécifieront le
344 formateur à appliquer s'il y a un nombre
345 inférieur ou égal d'auteurs.</p>
347 <p>Les gammes sont soit
348 <code><entier>..<entier></code>,
349 <code><entier></code> ou le caractère
350 <code>*</code> en utilisant un index basé sur 1 pour
351 indexer les auteurs d'une liste donnée d'auteurs. Les
352 index entiers peuvent être négatif afin de
353 signifier qu'ils commencent par la fin de la liste où -1
354 est le dernier auteur.</p>
356 <p>Par exemple, avec une liste d'auteurs comme "Joe Doe and
357 Mary Jane and Bruce Bar and Arthur Kay":</p>
360 <li>1..3 affectera Joe, Mary and Bruce</li>
362 <li>4..4 affectera Arthur</li>
364 <li>* les affectera tous</li>
366 <li>2..-1 affectera Mary, Bruce and Arthur</li>
369 <p>Les chaînes de <code><format></code> utilisent
370 le format du formateur BibTeX :</p>
372 <p>Les quatre lettres v, f, l et j indiquent les parties du nom
373 von, first, last et jr qui sont utilisées entre
374 accolades. Une unique lettre v, f, l ou j indique que le nom
375 doit être abrégé. Si l'une de ces lettres
376 ou paires de lettres sont rencontrées, JabRef retournera
377 tous les noms respectifs (potentiellement
378 abrégés), mais l'expression totale entre
379 accolades est uniquement imprimée si la partie du nom
382 <p>Par exemple, si le format est "{ll} {vv {von Part}} {ff}" et
383 si les noms sont "Mary Kay and John von Neumann", alors JabRef
384 retournera "Kay Mary" (avec deux espaces entre le nom propre et
385 le prénom) et "Neuman von von Part John".</p>
387 <p>Je donne ici deux exemples, mais je préfèrerai
388 vous diriger vers la documentations BibTeX.</p>
390 <p>Exemple court : <code>"{ll}, {f.}"</code> va convertir
391 <code>"Joe Doe"</code> en <code>"Doe, J."</code></p>
393 <p>Exemple long :</p>
396 <p>Pour convertir :</p>
398 <p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur
403 <p><code>"Doe, J., Jane, M., Bar, B. and Kay,
406 <p>vous devrez utiliser</p>
408 <p><code>1@*@{ll}, {f}.@@2@1@{ll}, {f}.@2@ and {ll},
409 {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-1@ and {ll},
413 <p>Si quelqu'un souhaite écrire un meilleur didacticiel
414 sur ce sujet, envoyez un courriel sur l'une des listes de
415 diffusion de JabRef !</p>
417 <h3>Les sorties conditionnelles</h3>
419 <p>Certaines informations dans les sorties ne prennent de sens
420 que si un certain champ est utilisé. Par exemple, disons
421 que l'on veuille faire suivre le nom de l'éditeur par le
422 texte <code>(Ed.)</code>. Cela peut être
423 réalisé avec le code suivant :</p>
425 <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor}
428 <p>Cependant, si le champs <code>editor</code> n'a pas
429 été renseigné - il n'a pas de sens pour
430 l'entrée exportée - le texte <code>(Ed.)</code>
431 doit être ignoré. Cela peut être
432 effectué en utilisant les commandes <code>\begin</code>
433 et <code>\end</code> :</p>
435 <p><code>\begin{editor}<br />
436 \format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)<br />
437 \end{editor}</code></p>
439 <p>Les commandes <code>\begin</code> et <code>\end</code>
440 assure que le texte contenu entre les deux commandes ne sera
441 imprimé que si et seulement si le champ
442 spécifié entre accolades est renseigné
443 dans l'entrée que l'on veut exporter.</p>
445 <p><b>Note :</b> L'utilisation des commandes
446 <code>\begin</code> et <code>\end</code> est une manière
447 astucieuse de créer des gabarits qui sont communs
448 à une grande variété d'entrées.</p>
450 <h3>Les sorties groupées</h3>
452 <p>Si vous désirez séparer vos entrées en
453 groupes basés sur un certain champ, vous pouvez utiliser
454 les commandes de sorties groupées. La sortie
455 groupée est assez similaire aux sorties conditionnelles,
456 excepté que le texte spécifié n'est
457 imprimé que si le champ indiqué dans les
458 accolades change de valeur.</p>
460 <p>Par exemple, on suppose que l'on désire faire des
461 groupes à partir de mots-clefs. Avant l'exportation, on
462 s'assure que les entrées sont triées selon les
463 mots-clefs. Ensuite, on utilise les commandes suivantes pour
464 les grouper par mot-clefs :</p>
466 <p><code>\begingroup{keywords}New Category:
467 \format[HTMLChars]{\keywords}<br />
468 \endgroup{keywords}</code></p>
470 <h2>Partage de votre travail</h2>
472 <p>Avec les fichiers gabarit externes, il est relativement
473 simple de partager des formats d'exportation entre
474 utilisateurs. Si vous écrivez un filtre d'exportation
475 pour un format non supporté par JabRef, ou si vous
476 améliorez un filtre déjà existant, nous
477 vous encourageons à déposer votre travail sur
478 notre page SourceForge.net. La même chose est possible
479 pour les nouvelles classes de formateur que vous avez
480 écrites. Nous serons heureux de distribuer une
481 collection des fichiers gabarit soumis ou de les ajouter
482 à la série des filtres d'exportation standard ou