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
151 Certains formateurs prennent un argument supplémentaire, donné entre parenthèses
152 immédiatement après le nom du formateur. L'argument peut-être mis
153 entre guillemets, ce qui est nécessaire s'il inclut des caractères parenthèses.
154 Par exemple, <code>\format[Replace("\s,_")]{\journal}</code> lance
155 le formateur <b>Replace</b> avec l'argument <b>\s,_</b> (cela retourne
156 le champ "journal" avec les espaces remplacées par des soulignements).
159 <p>JabRef fournit les formateurs suivants, certains d'entre eux
160 dépendant d'autres formateurs :</p>
163 <li><code>HTMLChars</code> : remplace les
164 caractères spéciaux spécifiques
165 à TeX (par exemple : {\^a} ou {\"{o}}) par leur
166 représentation HTML.</li>
168 <li><code>HTMLParagraphs</code> : interprète
169 deux retours-chariot consécutifs (comme \n \n) comme
170 le début d'un nouveau paragraphe et crée les
171 balises html de paragraphes appropriées.</li>
173 <li><code>XMLChars</code> : remplace les
174 caractères spéciaux spécifiques
175 à TeX (par exemple : {\^a} ou {\"{o}}) par leur
176 représentation XML.</li>
178 <li><code>CreateDocBookAuthors</code> : formate le
179 contenu du champ author selon le style DocBook.</li>
181 <li><code>CreateDocBookEditors</code> : à
184 <li><code>CurrentDate</code> : renvoie la date
185 actuelle. Sans argument, ce formateur renvoie la date et
186 l'heure actuelle au format "yyyy.MM.dd hh:mm:ss z" (date,
187 heure et fuseau horaire). En donnant une chaîne de
188 format différent comme argument, le format de la
189 date peut-être adapté. Par exemple,
190 <code>\format[CurrentDate]{yyyy.MM.dd}</code> renverra
191 uniquement la date, comme par exemple 2005.11.30.</li>
193 <li><code>AuthorFirstFirst</code> : formate le contenu
194 des champs author/editor en mettant les prénoms en
197 <li><code>AuthorFirstFirstCommas</code> : formate le
198 contenu des champs author/editor en mettant les
199 prénoms en premier et des virgules comme
200 séparateurs.</li>
202 <li><code>AuthorFirstAbbrLastCommas</code> : à
205 <li><code>AuthorFirstAbbrLastOxfordCommas</code> :
206 à documenter.</li>
208 <li><code>AuthorFirstLastOxfordCommas</code> :
209 à documenter.</li>
211 <li><code>AuthorLastFirst</code> : formate le contenu
212 des champs author/editor en mettant le nom de famille en
215 <li><code>AuthorLastFirstAbbreviator</code> :
216 réduit les prénoms de tous les auteurs
217 à leurs initiales. Ce formateur nécessite
218 d'avoir préalablement utilisé
219 AuthorLastFirst.</li>
221 <li><code>AuthorAbbreviator</code> ou <code>AuthorLastFirstAbbreviator</code> :
222 abrège les prénoms de tous les auteurs. Ce formateur renvoie les noms avec
223 le nom propre en premier. Faire suivre ce formateur d'AuthorFirstFirst pour
224 avoir les noms abrégés avec les initiales en premier.
226 <li><code>AuthorLastFirstCommas</code> : à
229 <li><code>AuthorLastFirstOxfordCommas</code> :
230 à documenter.</li>
232 <li><code>AuthorLastFirstAbbrCommas</code> : à
235 <li><code>AuthorLastFirstAbbrOxfordCommas</code> :
236 à documenter.</li>
238 <li><code>AuthorAndsReplacer</code> : remplace "and"
239 par ";" entre les premiers noms et par "&" entre les
242 <li><code>AuthorAndsCommaReplacer</code> : remplace
243 "and" entre les noms par une virgule (",") et "&" entre
244 les deux derniers.</li>
246 <li><code>AuthorOrgSci</code> : premier auteur selon
247 "nom, prénom" et tous les autres selon
248 "prénom nom". Les prénoms sont
249 abrégés.</li>
251 <li><code>AuthorAbbreviator</code> : A
254 <li><code>AuthorNatBib</code> : Formats des noms
255 d'auteurs dans le style NatBib, avec les noms propres
256 séparés par "and" s'il y a deux auteurs, ou
257 le premier nom suivi de "et al." s'il y en a plus de
260 <li><code>NoSpaceBetweenAbbreviations</code> : Les espaces
261 entre les initiales des prénoms sont
262 supprimés.</li>
264 <li><code>FileLink(TypeDeFichier)</code> : sans argument, ce formateur renvoie
265 le premier lien apparaissant dans le champ. Pour fonctionner, ce formateur doit
266 être alimenté par le contenu du champ "file" (fichier).
267 <p>Ce formateur prend comme argument optionnel l'extension du type de fichier externe
268 spécifié entre parenthèses après le nom du formateur. Par exemple,
269 <code>\format[FileLink(pdf)]{\file}</code> spécifie <code>pdf</code> comme un
270 argument. Quand un argument est fourni, le formateur sélectionne le premier lien
271 vers un fichier du type spécifié. Dans l'exemple, le chemin vers le premier lien PDF
272 sera renvoyé.</p></li>
274 <li><code>FormatPagesForHTML</code> : remplace "--"
277 <li><code>FormatPagesForXML</code> : remplace "--" par
280 <li><code>Replace(ExpReg,RemplaceAvec)</code> : effectue le remplacement d'une expression régulière.
281 Pour utiliser ce formateur, un argument en deux parties doit être fourni. Les parties sont
282 séparées par une virgule. Pour indiquer le caractère virgule, utilisez la séquence
283 d'échappement : \,<br> <br>
284 La première partie est l'expression régulière à rechercher. L'expression régulière
285 s'écrit normalement, sans séquence d'échappement supplémentaire pour les anti-slash ("backslashes"). Une description
286 des expression régulières de Java peut être trouvée à :<br>
287 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
289 La seconde partie est le texte qui remplace tous les correspondances.</li>
291 <li><code>Replace(regexp,replacewith)</code> : effectue le remplacement d'une expression régulière.
292 Pour utiliser ce formateur, un argument en deux parties doit être fourni. Les parties sont
293 séparées par une virgule. Pour indiquer le caractère virgule, utilisez la séquence
294 d'échappement : \,<br> <br>
295 La première partie est l'expression régulière à rechercher. L'expression régulière
296 s'écrit normalement, sans séquence d'échappement supplémentaire pour les anti-slash ("backslashes"). Une description
297 des expressions régulières de Java peut être trouvée à :<br>
298 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
300 La seconde partie est le texte qui remplace tous les correspondances.</li>
302 <li><code>RemoveBrackets</code> : supprime toutes les
303 accolades "{" ou "}".</li>
305 <li><code>RemoveBracketsAddComma</code> : à
308 <li><code>RemoveWhitespace</code> : à
311 <li><code>RemoveLatexCommands</code> : supprime toutes
312 les commandes LaTeX comme <code>\em</code>,
313 <code>\textbf</code>, etc. Lorsqu'il est utilisé
314 avec <code>HTMLChars</code> ou <code>XMLChars</code>, ce
315 formateur doit être appelé en dernier.</li>
317 <li><code>RemoveTilde</code> : remplace le
318 caractère tilde (utilisé dans LaTeX comme un
319 espace insécable) par un espace normal. Utile en
320 combinaison avec NameFormatter comme discuté dans la
321 prochaine section.</li>
323 <li><code>ToLowerCase</code> : bascule tous les
324 caractères en minuscules.</li>
326 <li><code>CompositeFormat</code> : à
329 <li><code>GetOpenOfficeType</code> : à
332 <li><code>RTFChars</code> : à documenter.</li>
334 <li><code>ResolvePDF</code> : à
340 <p>Si aucun des formateurs disponibles ne peut faire ce que
341 vous désirez, vous pouvez ajouter le votre à
343 <code>net.sf.jabref.export.layout.LayoutFormatter</code>. Si
344 vous insérez votre propre classe dans
345 <code>net.sf.jabref.export.layout.format</code>, vous pouvez
346 appeler votre formateur en utilisant son nom de classe, comme
347 pour les formateurs standards. Sinon, vous devez appeler le
348 formateur par son nom complet (incluant le nom du package).
349 Dans les deux cas, le formateur doit être dans votre
350 chemin de classe lorsque vous lancez JabRef</p>
352 <h2 id="NameFormatter">Utiliser des formateurs de nom
353 personnalisé</h2>
355 <p>Avec JabRef 2.2, il est maintenant possible de
356 définir des formateurs de nom personnalisés et
357 utilisant la syntaxe des fichiers de style BibTeX. Cela permet
358 une flexibilité totale, mais c'est fastidieux à
361 <p>Vous pouvez définir votre propre formateur dans
362 l'onglet "Formateur de nom" des préférences en
363 utilisant le format suivant et en l'utilisant ensuite avec le
364 nom que vous avez défini comme de n'importe quel autre
366 <code><cas1>@<gamme11>@<format>@<gamme12>@<format>@<gamme13>...@@<br>
368 <cas2>@<gamme21>@... et ainsi de suite.</code>
370 <p>Ce format commence par séparer la tache de formatage
371 de la liste d'auteurs dans des cas dépendant du nombre
372 d'auteurs qu'il y a (c'est ainsi car certains formats
373 diffèrent en fonction du nombre d'auteurs). Chaque cas
374 individuel est séparé par @@ et contient les
375 instructions sur la façon de formater chaque auteur dans
376 le cas considéré. Ces instructions sont
377 séparées par un @.</p>
379 <p>Les cas sont identifiés en utilisant des entiers (1,
380 2, 3, etc.) ou le caractère * (correspondant à
381 n'importe quel nombre d'auteurs) et spécifieront le
382 formateur à appliquer s'il y a un nombre
383 inférieur ou égal d'auteurs.</p>
385 <p>Les gammes sont soit
386 <code><entier>..<entier></code>,
387 <code><entier></code> ou le caractère
388 <code>*</code> en utilisant un index basé sur 1 pour
389 indexer les auteurs d'une liste donnée d'auteurs. Les
390 index entiers peuvent être négatif afin de
391 signifier qu'ils commencent par la fin de la liste où -1
392 est le dernier auteur.</p>
394 <p>Par exemple, avec une liste d'auteurs comme "Joe Doe and
395 Mary Jane and Bruce Bar and Arthur Kay":</p>
398 <li>1..3 affectera Joe, Mary and Bruce</li>
400 <li>4..4 affectera Arthur</li>
402 <li>* les affectera tous</li>
404 <li>2..-1 affectera Mary, Bruce and Arthur</li>
407 <p>Les chaînes de <code><format></code> utilisent
408 le format du formateur BibTeX :</p>
410 <p>Les quatre lettres v, f, l et j indiquent les parties du nom
411 von, first, last et jr qui sont utilisées entre
412 accolades. Une unique lettre v, f, l ou j indique que le nom
413 doit être abrégé. Si l'une de ces lettres
414 ou paires de lettres sont rencontrées, JabRef retournera
415 tous les noms respectifs (potentiellement
416 abrégés), mais l'expression totale entre
417 accolades est uniquement imprimée si la partie du nom
420 <p>Par exemple, si le format est "{ll} {vv {von Part}} {ff}" et
421 si les noms sont "Mary Kay and John von Neumann", alors JabRef
422 retournera "Kay Mary" (avec deux espaces entre le nom propre et
423 le prénom) et "Neuman von von Part John".</p>
425 <p>Je donne ici deux exemples, mais je préfèrerai
426 vous diriger vers la documentations BibTeX.</p>
428 <p>Exemple court : <code>"{ll}, {f.}"</code> va convertir
429 <code>"Joe Doe"</code> en <code>"Doe, J."</code></p>
431 <p>Exemple long :</p>
434 <p>Pour convertir :</p>
436 <p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur
441 <p><code>"Doe, J., Jane, M., Bar, B. and Kay,
444 <p>vous devrez utiliser</p>
446 <p><code>1@*@{ll}, {f}.@@2@1@{ll}, {f}.@2@ and {ll},
447 {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-1@ and {ll},
451 <p>Si quelqu'un souhaite écrire un meilleur didacticiel
452 sur ce sujet, envoyez un courriel sur l'une des listes de
453 diffusion de JabRef !</p>
455 <h3>Les sorties conditionnelles</h3>
457 <p>Certaines informations dans les sorties ne prennent de sens
458 que si un certain champ est utilisé. Par exemple, disons
459 que l'on veuille faire suivre le nom de l'éditeur par le
460 texte <code>(Ed.)</code>. Cela peut être
461 réalisé avec le code suivant :</p>
463 <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor}
466 <p>Cependant, si le champs <code>editor</code> n'a pas
467 été renseigné - il n'a pas de sens pour
468 l'entrée exportée - le texte <code>(Ed.)</code>
469 doit être ignoré. Cela peut être
470 effectué en utilisant les commandes <code>\begin</code>
471 et <code>\end</code> :</p>
473 <p><code>\begin{editor}<br>
474 \format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)<br>
475 \end{editor}</code></p>
477 <p>Les commandes <code>\begin</code> et <code>\end</code>
478 assure que le texte contenu entre les deux commandes ne sera
479 imprimé que si et seulement si le champ
480 spécifié entre accolades est renseigné
481 dans l'entrée que l'on veut exporter.</p>
483 <p><b>Note :</b> L'utilisation des commandes
484 <code>\begin</code> et <code>\end</code> est une manière
485 astucieuse de créer des gabarits qui sont communs
486 à une grande variété d'entrées.</p>
488 <h3>Les sorties groupées</h3>
490 <p>Si vous désirez séparer vos entrées en
491 groupes basés sur un certain champ, vous pouvez utiliser
492 les commandes de sorties groupées. La sortie
493 groupée est assez similaire aux sorties conditionnelles,
494 excepté que le texte spécifié n'est
495 imprimé que si le champ indiqué dans les
496 accolades change de valeur.</p>
498 <p>Par exemple, on suppose que l'on désire faire des
499 groupes à partir de mots-clefs. Avant l'exportation, on
500 s'assure que les entrées sont triées selon les
501 mots-clefs. Ensuite, on utilise les commandes suivantes pour
502 les grouper par mot-clefs :</p>
504 <p><code>\begingroup{keywords}New Category:
505 \format[HTMLChars]{\keywords}<br>
506 \endgroup{keywords}</code></p>
508 <h2>Partage de votre travail</h2>
510 <p>Avec les fichiers gabarit externes, il est relativement
511 simple de partager des formats d'exportation entre
512 utilisateurs. Si vous écrivez un filtre d'exportation
513 pour un format non supporté par JabRef, ou si vous
514 améliorez un filtre déjà existant, nous
515 vous encourageons à déposer votre travail sur
516 notre page SourceForge.net. La même chose est possible
517 pour les nouvelles classes de formateur que vous avez
518 écrites. Nous serons heureux de distribuer une
519 collection des fichiers gabarit soumis ou de les ajouter
520 à la série des filtres d'exportation standard ou