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.</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>AuthorAbbreviator</code> ou <code>AuthorLastFirstAbbreviator</code> :
216 abrège les prénoms de tous les auteurs. Ce formateur renvoie les noms avec
217 le nom propre en premier. Faire suivre ce formateur d'AuthorFirstFirst pour
218 avoir les noms abrégés avec les initiales en premier.
220 <li><code>AuthorLastFirstCommas</code> : à
223 <li><code>AuthorLastFirstOxfordCommas</code> :
224 à documenter.</li>
226 <li><code>AuthorLastFirstAbbrCommas</code> : à
229 <li><code>AuthorLastFirstAbbrOxfordCommas</code> :
230 à documenter.</li>
232 <li><code>AuthorAndsReplacer</code> : remplace "and"
233 par ";" entre les premiers noms et par "&" entre les
236 <li><code>AuthorAndsCommaReplacer</code> : remplace
237 "and" entre les noms par une virgule (",") et "&" entre
238 les deux derniers.</li>
240 <li><code>AuthorOrgSci</code> : premier auteur selon
241 "nom, prénom" et tous les autres selon
242 "prénom nom". Les prénoms sont
243 abrégés.</li>
245 <li><code>AuthorNatBib</code> : Formats des noms
246 d'auteurs dans le style NatBib, avec les noms propres
247 séparés par "and" s'il y a deux auteurs, ou
248 le premier nom suivi de "et al." s'il y en a plus de
251 <li><code>NoSpaceBetweenAbbreviations</code> : Les espaces
252 entre les initiales des prénoms sont
253 supprimés.</li>
255 <li><code>FileLink(TypeDeFichier)</code> : sans argument, ce formateur renvoie
256 le premier lien apparaissant dans le champ. Pour fonctionner, ce formateur doit
257 être alimenté par le contenu du champ "file" (fichier).
258 <p>Ce formateur prend comme argument optionnel l'extension du type de fichier externe
259 spécifié entre parenthèses après le nom du formateur. Par exemple,
260 <code>\format[FileLink(pdf)]{\file}</code> spécifie <code>pdf</code> comme un
261 argument. Quand un argument est fourni, le formateur sélectionne le premier lien
262 vers un fichier du type spécifié. Dans l'exemple, le chemin vers le premier lien PDF
263 sera renvoyé.</p></li>
265 <li><code>FormatPagesForHTML</code> : remplace "--"
268 <li><code>FormatPagesForXML</code> : remplace "--" par
271 <li><code>Replace(ExpReg,RemplaceAvec)</code> : effectue le remplacement d'une expression régulière.
272 Pour utiliser ce formateur, un argument en deux parties doit être fourni. Les parties sont
273 séparées par une virgule. Pour indiquer le caractère virgule, utilisez la séquence
274 d'échappement : \,<br> <br>
275 La première partie est l'expression régulière à rechercher. L'expression régulière
276 s'écrit normalement, sans séquence d'échappement supplémentaire pour les anti-slash ("backslashes"). Une description
277 des expression régulières de Java peut être trouvée à :<br>
278 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
280 La seconde partie est le texte qui remplace tous les correspondances.</li>
282 <li><code>RemoveBrackets</code> : supprime toutes les
283 accolades "{" ou "}".</li>
285 <li><code>RemoveBracketsAddComma</code> : à
288 <li><code>RemoveWhitespace</code> : à
291 <li><code>RemoveLatexCommands</code> : supprime toutes
292 les commandes LaTeX comme <code>\em</code>,
293 <code>\textbf</code>, etc. Lorsqu'il est utilisé
294 avec <code>HTMLChars</code> ou <code>XMLChars</code>, ce
295 formateur doit être appelé en dernier.</li>
297 <li><code>RemoveTilde</code> : remplace le
298 caractère tilde (utilisé dans LaTeX comme un
299 espace insécable) par un espace normal. Utile en
300 combinaison avec NameFormatter comme discuté dans la
301 prochaine section.</li>
303 <li><code>ToLowerCase</code> : bascule tous les
304 caractères en minuscules.</li>
306 <li><code>CompositeFormat</code> : à
309 <li><code>GetOpenOfficeType</code> : à
312 <li><code>RTFChars</code> : à documenter.</li>
314 <li><code>ResolvePDF</code> : à
320 <p>Si aucun des formateurs disponibles ne peut faire ce que
321 vous désirez, vous pouvez ajouter le votre à
323 <code>net.sf.jabref.export.layout.LayoutFormatter</code>. Si
324 vous insérez votre propre classe dans
325 <code>net.sf.jabref.export.layout.format</code>, vous pouvez
326 appeler votre formateur en utilisant son nom de classe, comme
327 pour les formateurs standards. Sinon, vous devez appeler le
328 formateur par son nom complet (incluant le nom du package).
329 Dans les deux cas, le formateur doit être dans votre
330 chemin de classe lorsque vous lancez JabRef</p>
332 <h2 id="NameFormatter">Utiliser des formateurs de nom
333 personnalisé</h2>
335 <p>Avec JabRef 2.2, il est maintenant possible de
336 définir des formateurs de nom personnalisés et
337 utilisant la syntaxe des fichiers de style BibTeX. Cela permet
338 une flexibilité totale, mais c'est fastidieux à
341 <p>Vous pouvez définir votre propre formateur dans
342 l'onglet "Formateur de nom" des préférences en
343 utilisant le format suivant et en l'utilisant ensuite avec le
344 nom que vous avez défini comme de n'importe quel autre
346 <code><cas1>@<gamme11>@<format>@<gamme12>@<format>@<gamme13>...@@<br />
348 <cas2>@<gamme21>@... et ainsi de suite.</code>
350 <p>Ce format commence par séparer la tache de formatage
351 de la liste d'auteurs dans des cas dépendant du nombre
352 d'auteurs qu'il y a (c'est ainsi car certains formats
353 diffèrent en fonction du nombre d'auteurs). Chaque cas
354 individuel est séparé par @@ et contient les
355 instructions sur la façon de formater chaque auteur dans
356 le cas considéré. Ces instructions sont
357 séparées par un @.</p>
359 <p>Les cas sont identifiés en utilisant des entiers (1,
360 2, 3, etc.) ou le caractère * (correspondant à
361 n'importe quel nombre d'auteurs) et spécifieront le
362 formateur à appliquer s'il y a un nombre
363 inférieur ou égal d'auteurs.</p>
365 <p>Les gammes sont soit
366 <code><entier>..<entier></code>,
367 <code><entier></code> ou le caractère
368 <code>*</code> en utilisant un index basé sur 1 pour
369 indexer les auteurs d'une liste donnée d'auteurs. Les
370 index entiers peuvent être négatif afin de
371 signifier qu'ils commencent par la fin de la liste où -1
372 est le dernier auteur.</p>
374 <p>Par exemple, avec une liste d'auteurs comme "Joe Doe and
375 Mary Jane and Bruce Bar and Arthur Kay":</p>
378 <li>1..3 affectera Joe, Mary and Bruce</li>
380 <li>4..4 affectera Arthur</li>
382 <li>* les affectera tous</li>
384 <li>2..-1 affectera Mary, Bruce and Arthur</li>
387 <p>Les chaînes de <code><format></code> utilisent
388 le format du formateur BibTeX :</p>
390 <p>Les quatre lettres v, f, l et j indiquent les parties du nom
391 von, first, last et jr qui sont utilisées entre
392 accolades. Une unique lettre v, f, l ou j indique que le nom
393 doit être abrégé. Si l'une de ces lettres
394 ou paires de lettres sont rencontrées, JabRef retournera
395 tous les noms respectifs (potentiellement
396 abrégés), mais l'expression totale entre
397 accolades est uniquement imprimée si la partie du nom
400 <p>Par exemple, si le format est "{ll} {vv {von Part}} {ff}" et
401 si les noms sont "Mary Kay and John von Neumann", alors JabRef
402 retournera "Kay Mary" (avec deux espaces entre le nom propre et
403 le prénom) et "Neuman von von Part John".</p>
405 <p>Je donne ici deux exemples, mais je préfèrerai
406 vous diriger vers la documentations BibTeX.</p>
408 <p>Exemple court : <code>"{ll}, {f.}"</code> va convertir
409 <code>"Joe Doe"</code> en <code>"Doe, J."</code></p>
411 <p>Exemple long :</p>
414 <p>Pour convertir :</p>
416 <p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur
421 <p><code>"Doe, J., Jane, M., Bar, B. and Kay,
424 <p>vous devrez utiliser</p>
426 <p><code>1@*@{ll}, {f}.@@2@1@{ll}, {f}.@2@ and {ll},
427 {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-1@ and {ll},
431 <p>Si quelqu'un souhaite écrire un meilleur didacticiel
432 sur ce sujet, envoyez un courriel sur l'une des listes de
433 diffusion de JabRef !</p>
435 <h3>Les sorties conditionnelles</h3>
437 <p>Certaines informations dans les sorties ne prennent de sens
438 que si un certain champ est utilisé. Par exemple, disons
439 que l'on veuille faire suivre le nom de l'éditeur par le
440 texte <code>(Ed.)</code>. Cela peut être
441 réalisé avec le code suivant :</p>
443 <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor}
446 <p>Cependant, si le champs <code>editor</code> n'a pas
447 été renseigné - il n'a pas de sens pour
448 l'entrée exportée - le texte <code>(Ed.)</code>
449 doit être ignoré. Cela peut être
450 effectué en utilisant les commandes <code>\begin</code>
451 et <code>\end</code> :</p>
453 <p><code>\begin{editor}<br />
454 \format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)<br />
455 \end{editor}</code></p>
457 <p>Les commandes <code>\begin</code> et <code>\end</code>
458 assure que le texte contenu entre les deux commandes ne sera
459 imprimé que si et seulement si le champ
460 spécifié entre accolades est renseigné
461 dans l'entrée que l'on veut exporter.</p>
463 <p><b>Note :</b> L'utilisation des commandes
464 <code>\begin</code> et <code>\end</code> est une manière
465 astucieuse de créer des gabarits qui sont communs
466 à une grande variété d'entrées.</p>
468 <h3>Les sorties groupées</h3>
470 <p>Si vous désirez séparer vos entrées en
471 groupes basés sur un certain champ, vous pouvez utiliser
472 les commandes de sorties groupées. La sortie
473 groupée est assez similaire aux sorties conditionnelles,
474 excepté que le texte spécifié n'est
475 imprimé que si le champ indiqué dans les
476 accolades change de valeur.</p>
478 <p>Par exemple, on suppose que l'on désire faire des
479 groupes à partir de mots-clefs. Avant l'exportation, on
480 s'assure que les entrées sont triées selon les
481 mots-clefs. Ensuite, on utilise les commandes suivantes pour
482 les grouper par mot-clefs :</p>
484 <p><code>\begingroup{keywords}New Category:
485 \format[HTMLChars]{\keywords}<br />
486 \endgroup{keywords}</code></p>
488 <h2>Partage de votre travail</h2>
490 <p>Avec les fichiers gabarit externes, il est relativement
491 simple de partager des formats d'exportation entre
492 utilisateurs. Si vous écrivez un filtre d'exportation
493 pour un format non supporté par JabRef, ou si vous
494 améliorez un filtre déjà existant, nous
495 vous encourageons à déposer votre travail sur
496 notre page SourceForge.net. La même chose est possible
497 pour les nouvelles classes de formateur que vous avez
498 écrites. Nous serons heureux de distribuer une
499 collection des fichiers gabarit soumis ou de les ajouter
500 à la série des filtres d'exportation standard ou
503 <p>A partir de JabRef 2.4b1 vous pouvez aussi empaqueter votre
504 format d'exportation ("ExportFormat") ou formateur de gabarit
505 ("LayoutFormatter") comme un greffon ("plug-in"). Si vous le
506 faites, vous pouvez fournir un unique fichier zip à d'autres
507 utilisateurs afin qu'ils utilisent votre format d'exportation.
508 Pour un example, télécharger le source de JabRef et jeter un
509 oeil au répertoire <code>src/plugins/</code>. N'hésitez pas
510 à participer aux forums sur Sourceforge, puisque nous ne disposons
511 pas encore d'une documentation volumineuse.</p>