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>
144 <p>L'argument des formateurs, à l'intérieur des accolades,
145 n'est pas obligatoirement une commande de champ. Ce peut aussi
146 être du texte normal qui sera ensuite passé aux formateurs
147 au lieu des contenus d'un champ. Cela peut être utilse pour
148 certains formateurs, par ex. le formateur CurrentDate (décrit
151 <p>Certains formateurs prennent un argument supplémentaire, spécifié entre parenthèses
152 immédiatement après le nom du formateur. L'argument peut être mis
153 entre crochets, ce qui est nécessaire s'il inclut les caractères de parenthèses.
154 Par exemple, <code>\format[Replace("\s,_")]{\journal}</code> appelle
155 le formateur <b>Replace</b> avec l'argument <b>\s,_</b> (ce qui remplace
156 tous les espaces par des soulignets dans le champ "field").</p>
158 <p>JabRef fournit la série suivante de formateurs, certains
159 dépendant des autres:</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, et traduit les commandes LaTeX
167 \emph, \textit, \textbf dans leurs équivalents HTML.</li>
169 <li><code>HTMLParagraphs</code> : interprète
170 deux retours-chariot consécutifs (comme \n \n) comme
171 le début d'un nouveau paragraphe et crée les
172 balises html de paragraphes appropriées.</li>
174 <li><code>XMLChars</code> : remplace les
175 caractères spéciaux spécifiques
176 à TeX (par exemple : {\^a} ou {\"{o}}) par leur
177 représentation XML.</li>
179 <li><code>CreateDocBookAuthors</code> : formate le
180 contenu du champ author selon le style DocBook.</li>
182 <li><code>CreateDocBookEditors</code> : à
185 <li><code>CurrentDate</code> : renvoie la date
186 actuelle. Sans argument, ce formateur renvoie la date et
187 l'heure actuelle au format "yyyy.MM.dd hh:mm:ss z" (date,
188 heure et fuseau horaire). En donnant une chaîne de
189 format différent comme argument, le format de la
190 date peut-être adapté. Par exemple,
191 <code>\format[CurrentDate]{yyyy.MM.dd}</code> renverra
192 uniquement la date, comme par exemple 2005.11.30.</li>
194 <li><code>AuthorFirstFirst</code> : formate le contenu
195 des champs author/editor en mettant les prénoms en
198 <li><code>AuthorFirstFirstCommas</code> : formate le
199 contenu des champs author/editor en mettant les
200 prénoms en premier, des virgules comme
201 séparateurs et "and" entre les deux derniers noms.</li>
203 <li><code>AuthorFirstLastOxfordCommas</code> :
204 similaire à <code>AuthorFirstLastCommas</code>,
205 excepté que le "and" entre les deux derniers noms
206 est précédé d'une virgule.</li>
208 <li><code>AuthorFirstAbbrLastCommas</code> : formate le
209 contenu des champs author/editor en mettant les
210 prénoms abrégés en premier, des virgules comme
211 séparateurs et "and" entre les deux derniers noms.</li>
213 <li><code>AuthorFirstAbbrLastOxfordCommas</code> :
214 similaire à <code>AuthorFirstAbbrLastCommas</code>,
215 excepté que le "and" entre les deux derniers noms
216 est précédé d'une virgule.</li>
218 <li><code>AuthorLastFirst</code> : formate le contenu
219 des champs author/editor en mettant les noms de famille en
222 <li><code>AuthorAbbreviator</code> ou <code>AuthorLastFirstAbbreviator</code> :
223 abrège les prénoms de tous les auteurs. Ce formateur renvoie les noms avec
224 le nom propre en premier. Faire suivre ce formateur d'<code>AuthorFirstFirst</code> pour
225 avoir les noms abrégés avec les initiales en premier.</li>
227 <li><code>AuthorLastFirstCommas</code> : formate le contenu
228 des champs author/editor en mettant les noms de famille en
229 premier, des virgules comme séparateurs et "and"
230 entre les deux derniers noms.</li>
232 <li><code>AuthorLastFirstOxfordCommas</code> :
233 similaire à <code>AuthorLastFirstCommas</code>,
234 excepté que le "and" entre les deux derniers noms
235 est précédé d'une virgule.</li>
237 <li><code>AuthorLastFirstAbbrCommas</code> : formate le
238 contenu des champs author/editor en mettant les noms en premier suivis
239 du prénom abrégé, en utilisant des virgules comme
240 séparateurs et "and" entre les deux derniers noms.</li>
242 <li><code>AuthorLastFirstAbbrCommas</code> :
243 similaire à <code>AuthorLastFirstAbbrCommas</code>,
244 excepté que le "and" entre les deux derniers noms
245 est précédé d'une virgule.</li>
247 <li><code>AuthorAndsReplacer</code> : remplace "and"
248 par ";" entre les premiers noms et par "&" entre les
251 <li><code>AuthorAndsCommaReplacer</code> : remplace
252 "and" entre les noms par une virgule (",") et "&" entre
253 les deux derniers.</li>
255 <li><code>AuthorOrgSci</code> : premier auteur selon
256 "nom, prénom" et tous les autres selon
257 "prénom nom". Les prénoms sont
258 abrégés.</li>
260 <li><code>AuthorNatBib</code> : Formats des noms
261 d'auteurs dans le style NatBib, avec les noms propres
262 séparés par "and" s'il y a deux auteurs, ou
263 le premier nom suivi de "et al." s'il y en a plus de
266 <li><code>NoSpaceBetweenAbbreviations</code> : Les espaces
267 entre les initiales des prénoms sont
268 supprimés.</li>
270 <li><code>FileLink(TypeDeFichier)</code> : sans argument, ce formateur renvoie
271 le premier lien apparaissant dans le champ. Pour fonctionner, ce formateur doit
272 être alimenté par le contenu du champ "file" (fichier).
273 <p>Ce formateur prend comme argument optionnel l'extension du type de fichier externe
274 spécifié entre parenthèses après le nom du formateur. Par exemple,
275 <code>\format[FileLink(pdf)]{\file}</code> spécifie <code>pdf</code> comme un
276 argument. Quand un argument est fourni, le formateur sélectionne le premier lien
277 vers un fichier du type spécifié. Dans l'exemple, le chemin vers le premier lien PDF
278 sera renvoyé.</p></li>
280 <li><code>FormatPagesForHTML</code> : remplace "--"
283 <li><code>FormatPagesForXML</code> : remplace "--" par
286 <li><code>Replace(ExpReg,RemplaceAvec)</code> : effectue le remplacement d'une expression régulière.
287 Pour utiliser ce formateur, un argument en deux parties doit être fourni. Les parties sont
288 séparées par une virgule. Pour indiquer le caractère virgule, utilisez la séquence
289 d'échappement : \,<br> <br>
290 La première partie est l'expression régulière à rechercher. L'expression régulière
291 s'écrit normalement, sans séquence d'échappement supplémentaire pour les anti-slash ("backslashes"). Une description
292 des expression régulières de Java peut être trouvée à :<br>
293 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
295 La seconde partie est le texte qui remplace tous les correspondances.</li>
297 <li><code>RemoveBrackets</code> : supprime toutes les
298 accolades "{" ou "}".</li>
300 <li><code>RemoveBracketsAddComma</code> : à
303 <li><code>RemoveWhitespace</code> : supprime tous les caractères espace.</li>
305 <li><code>RemoveLatexCommands</code> : supprime toutes
306 les commandes LaTeX comme <code>\em</code>,
307 <code>\textbf</code>, etc. Lorsqu'il est utilisé
308 avec <code>HTMLChars</code> ou <code>XMLChars</code>, ce
309 formateur doit être appelé en dernier.</li>
311 <li><code>RemoveTilde</code> : remplace le
312 caractère tilde (utilisé dans LaTeX comme un
313 espace insécable) par un espace normal. Utile en
314 combinaison avec NameFormatter comme discuté dans la
315 prochaine section.</li>
317 <li><code>ToLowerCase</code> : bascule tous les
318 caractères en minuscules.</li>
320 <li><code>ToUpperCase</code> : bascule tous les
321 caractères en majuscules.</li>
323 <li><code>GetOpenOfficeType</code> : renvoie le numéro
324 utilisé par le système bibliographique d'OpenOffice.org
325 (versions 1.x et 2.x) pour définir le type
326 de cette ée.</li>
328 <li><code>RTFChars</code> : remplace les
329 caractères spéciaux spécifiques
330 à TeX (par exemple : {\^a} ou {\"{o}}) par leur
331 représentation RTF, et traduit les commandes LaTeX
332 \emph, \textit, \textbf dans leurs équivalents RTF.</li>
336 <p>Si aucun des formateurs disponibles ne peut faire ce que
337 vous désirez, vous pouvez ajouter le votre à
339 <code>net.sf.jabref.export.layout.LayoutFormatter</code>. Si
340 vous insérez votre propre classe dans
341 <code>net.sf.jabref.export.layout.format</code>, vous pouvez
342 appeler votre formateur en utilisant son nom de classe, comme
343 pour les formateurs standards. Sinon, vous devez appeler le
344 formateur par son nom complet (incluant le nom du package).
345 Dans les deux cas, le formateur doit être dans votre
346 chemin de classe lorsque vous lancez JabRef</p>
348 <h2 id="NameFormatter">Utiliser des formateurs de nom
349 personnalisé</h2>
351 <p>Avec JabRef 2.2, il est maintenant possible de
352 définir des formateurs de nom personnalisés et
353 utilisant la syntaxe des fichiers de style BibTeX. Cela permet
354 une flexibilité totale, mais c'est fastidieux à
357 <p>Vous pouvez définir votre propre formateur dans
358 l'onglet "Formateur de nom" des préférences en
359 utilisant le format suivant et en l'utilisant ensuite avec le
360 nom que vous avez défini comme de n'importe quel autre
362 <code><cas1>@<gamme11>@<format>@<gamme12>@<format>@<gamme13>...@@<br />
364 <cas2>@<gamme21>@... et ainsi de suite.</code>
366 <p>Ce format commence par séparer la tache de formatage
367 de la liste d'auteurs dans des cas dépendant du nombre
368 d'auteurs qu'il y a (c'est ainsi car certains formats
369 diffèrent en fonction du nombre d'auteurs). Chaque cas
370 individuel est séparé par @@ et contient les
371 instructions sur la façon de formater chaque auteur dans
372 le cas considéré. Ces instructions sont
373 séparées par un @.</p>
375 <p>Les cas sont identifiés en utilisant des entiers (1,
376 2, 3, etc.) ou le caractère * (correspondant à
377 n'importe quel nombre d'auteurs) et spécifieront le
378 formateur à appliquer s'il y a un nombre
379 inférieur ou égal d'auteurs.</p>
381 <p>Les gammes sont soit
382 <code><entier>..<entier></code>,
383 <code><entier></code> ou le caractère
384 <code>*</code> en utilisant un index basé sur 1 pour
385 indexer les auteurs d'une liste donnée d'auteurs. Les
386 index entiers peuvent être négatif afin de
387 signifier qu'ils commencent par la fin de la liste où -1
388 est le dernier auteur.</p>
390 <p>Par exemple, avec une liste d'auteurs comme "Joe Doe and
391 Mary Jane and Bruce Bar and Arthur Kay":</p>
394 <li>1..3 affectera Joe, Mary and Bruce</li>
396 <li>4..4 affectera Arthur</li>
398 <li>* les affectera tous</li>
400 <li>2..-1 affectera Mary, Bruce and Arthur</li>
403 <p>Les chaînes de <code><format></code> utilisent
404 le format du formateur BibTeX :</p>
406 <p>Les quatre lettres v, f, l et j indiquent les parties du nom
407 von, first, last et jr qui sont utilisées entre
408 accolades. Une unique lettre v, f, l ou j indique que le nom
409 doit être abrégé. Si l'une de ces lettres
410 ou paires de lettres sont rencontrées, JabRef retournera
411 tous les noms respectifs (potentiellement
412 abrégés), mais l'expression totale entre
413 accolades est uniquement imprimée si la partie du nom
416 <p>Par exemple, si le format est "{ll} {vv {von Part}} {ff}" et
417 si les noms sont "Mary Kay and John von Neumann", alors JabRef
418 retournera "Kay Mary" (avec deux espaces entre le nom propre et
419 le prénom) et "Neuman von von Part John".</p>
421 <p>Je donne ici deux exemples, mais je préfèrerai
422 vous diriger vers la documentations BibTeX.</p>
424 <p>Exemple court : <code>"{ll}, {f.}"</code> va convertir
425 <code>"Joe Doe"</code> en <code>"Doe, J."</code></p>
427 <p>Exemple long :</p>
430 <p>Pour convertir :</p>
432 <p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur
437 <p><code>"Doe, J., Jane, M., Bar, B. and Kay,
440 <p>vous devrez utiliser</p>
442 <p><code>1@*@{ll}, {f}.@@2@1@{ll}, {f}.@2@ and {ll},
443 {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-1@ and {ll},
447 <p>Si quelqu'un souhaite écrire un meilleur didacticiel
448 sur ce sujet, envoyez un courriel sur l'une des listes de
449 diffusion de JabRef !</p>
451 <h3>Les sorties conditionnelles</h3>
453 <p>Certaines informations dans les sorties ne prennent de sens
454 que si un certain champ est utilisé. Par exemple, disons
455 que l'on veuille faire suivre le nom de l'éditeur par le
456 texte <code>(Ed.)</code>. Cela peut être
457 réalisé avec le code suivant :</p>
459 <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor}
462 <p>Cependant, si le champs <code>editor</code> n'a pas
463 été renseigné - il n'a pas de sens pour
464 l'entrée exportée - le texte <code>(Ed.)</code>
465 doit être ignoré. Cela peut être
466 effectué en utilisant les commandes <code>\begin</code>
467 et <code>\end</code> :</p>
469 <p><code>\begin{editor}<br />
470 \format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)<br />
471 \end{editor}</code></p>
473 <p>Les commandes <code>\begin</code> et <code>\end</code>
474 assure que le texte contenu entre les deux commandes ne sera
475 imprimé que si et seulement si le champ
476 spécifié entre accolades est renseigné
477 dans l'entrée que l'on veut exporter.</p>
479 <p><b>Note :</b> L'utilisation des commandes
480 <code>\begin</code> et <code>\end</code> est une manière
481 astucieuse de créer des gabarits qui sont communs
482 à une grande variété d'entrées.</p>
484 <h3>Les sorties groupées</h3>
486 <p>Si vous désirez séparer vos entrées en
487 groupes basés sur un certain champ, vous pouvez utiliser
488 les commandes de sorties groupées. La sortie
489 groupée est assez similaire aux sorties conditionnelles,
490 excepté que le texte spécifié n'est
491 imprimé que si le champ indiqué dans les
492 accolades change de valeur.</p>
494 <p>Par exemple, on suppose que l'on désire faire des
495 groupes à partir de mots-clefs. Avant l'exportation, on
496 s'assure que les entrées sont triées selon les
497 mots-clefs. Ensuite, on utilise les commandes suivantes pour
498 les grouper par mot-clefs :</p>
500 <p><code>\begingroup{keywords}New Category:
501 \format[HTMLChars]{\keywords}<br />
502 \endgroup{keywords}</code></p>
504 <h2>Partage de votre travail</h2>
506 <p>Avec les fichiers gabarit externes, il est relativement
507 simple de partager des formats d'exportation entre
508 utilisateurs. Si vous écrivez un filtre d'exportation
509 pour un format non supporté par JabRef, ou si vous
510 améliorez un filtre déjà existant, nous
511 vous encourageons à déposer votre travail sur
512 notre page SourceForge.net. La même chose est possible
513 pour les nouvelles classes de formateur que vous avez
514 écrites. Nous serons heureux de distribuer une
515 collection des fichiers gabarit soumis ou de les ajouter
516 à la série des filtres d'exportation standard ou
519 <p>A partir de JabRef 2.4b1 vous pouvez aussi empaqueter votre
520 format d'exportation ("ExportFormat") ou formateur de gabarit
521 ("LayoutFormatter") comme un greffon ("plug-in"). Si vous le
522 faites, vous pouvez fournir un unique fichier zip à d'autres
523 utilisateurs afin qu'ils utilisent votre format d'exportation.
524 Pour un example, télécharger le source de JabRef et jeter un
525 oeil au répertoire <code>src/plugins/</code>. N'hésitez pas
526 à participer aux forums sur Sourceforge, puisque nous ne disposons
527 pas encore d'une documentation volumineuse.</p>