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 fichiers gabarit 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.
La seule obligation pour avoir un filtre d'exportation valide est l'existence d'un fichier avec l'extension .layout. Pour ajouter un nouveau filtre d'exportation, on utilise le menu Options -> Gérer les exportations personnalisées, et on clique sur Ajouter nouvelle. 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 Fichier -> Exporter de la fenêtre principale de JabRef), le chemin du fichier .layout, 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é).
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.
On suppose que l'on veut créer un filtre d'exportation pour une sortie HTML.
Bien que le filtre d'exportation ne nécessite qu'un seul fichier .layout, qui dans ce cas pourrait s'appeler html.layout, vous pouvez désirer ajouter deux autres fichiers appelés html.begin.layout et html.end.layout. 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.
Il faut noter que ces fichiers doivent être dans le même répertoire que le fichier html.layout, et que leur nom doit comporter .begin pour l'un et .end pour l'autre.
Dans notre exemple de fichier d'exportation, cela pourrait ressembler à
html.begin.layout :
<HTML>
<BODY> text="#275856">
<basefont size="4" color="#2F4958"
face="arial">
html.end.layout :
</BODY>
</HTML>
Le fichier html.layout 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 .layout spécifiques. Les fichiers doivent aussi être dans le même répertoire que le gabarit principal et ils sont nommés en insérant .entrytype dans le nom du fichier gabarit principal. Le nom de l'entrée doit être en minuscules. Dans notre exemple, on peut vouloir ajouter un gabarit différent pour les livres et cela se fera via le fichier html.book.layout. Pour une thèse, on ajoutera le fichier html.phdthesis.layout. 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.
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.
Les mots précédés d'un antislash, par
exemple \author
, \editor
,
\title
ou \year
, sont
interprétés comme des références
aux champs correspondants et le contenu du champ est
copié directement dans la sortie.
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 formateur de champ - une classe java contenant une seule méthode qui manipule le contenu du champ.
Le formateur est utilisé en insérant la
commande \format
suivie du nom du formateur entre
crochets et du nom du champ entre accolades, par exemple
\format[ToLowerCase]{\author}
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 :
\format[ToLowerCase,HTMLChars]{\author}
va d'abord appliquer le formateur ToLowerCase puis HTMLChars sur le résultat. Vous pouvez lister un nombre arbitraire de formateurs de cette manière.
L'argument des formateurs, à l'intérieur des accolades, n'est pas obligatoirement une commande de champ. Ce peut aussi être du texte normal qui sera ensuite passé aux formateurs au lieu des contenus d'un champ. Cela peut être utilse pour certains formateurs, par ex. le formateur CurrentDate (décrit ci-dessous).
Certains formateurs prennent un argument supplémentaire, spécifié entre parenthèses
immédiatement après le nom du formateur. L'argument peut être mis
entre crochets, ce qui est nécessaire s'il inclut les caractères de parenthèses.
Par exemple, \format[Replace("\s,_")]{\journal}
appelle
le formateur Replace avec l'argument \s,_ (ce qui remplace
tous les espaces par des soulignets dans le champ "field").
JabRef fournit la série suivante de formateurs, certains dépendant des autres:
FormatChars
: remplace les
caractères spéciaux spécifiques
à TeX (par exemple : {\^a} ou {\"{o}}) par leur
représentation Unicode.HTMLChars
: remplace les
caractères spéciaux spécifiques
à TeX (par exemple : {\^a} ou {\"{o}}) par leur
représentation HTML, et traduit les commandes LaTeX
\emph, \textit, \textbf dans leurs équivalents HTML.HTMLParagraphs
: interprète
deux retours-chariot consécutifs (comme \n \n) comme
le début d'un nouveau paragraphe et crée les
balises html de paragraphes appropriées.XMLChars
: remplace les
caractères spéciaux spécifiques
à TeX (par exemple : {\^a} ou {\"{o}}) par leur
représentation XML.CreateDocBookAuthors
: formate le
contenu du champ author selon le style DocBook.CreateDocBookEditors
: à
documenter.CurrentDate
: 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,
\format[CurrentDate]{yyyy.MM.dd}
renverra
uniquement la date, comme par exemple 2005.11.30.AuthorFirstFirst
: formate le contenu
des champs author/editor en mettant les prénoms en
premier.AuthorFirstFirstCommas
: formate le
contenu des champs author/editor en mettant les
prénoms en premier, des virgules comme
séparateurs et "and" entre les deux derniers noms.AuthorFirstLastOxfordCommas
:
similaire à AuthorFirstLastCommas
,
excepté que le "and" entre les deux derniers noms
est précédé d'une virgule.AuthorFirstAbbrLastCommas
: formate le
contenu des champs author/editor en mettant les
prénoms abrégés en premier, des virgules comme
séparateurs et "and" entre les deux derniers noms.AuthorFirstAbbrLastOxfordCommas
:
similaire à AuthorFirstAbbrLastCommas
,
excepté que le "and" entre les deux derniers noms
est précédé d'une virgule.AuthorLastFirst
: formate le contenu
des champs author/editor en mettant les noms de famille en
premier.AuthorAbbreviator
ou AuthorLastFirstAbbreviator
:
abrège les prénoms de tous les auteurs. Ce formateur renvoie les noms avec
le nom propre en premier. Faire suivre ce formateur d'AuthorFirstFirst
pour
avoir les noms abrégés avec les initiales en premier.AuthorLastFirstCommas
: formate le contenu
des champs author/editor en mettant les noms de famille en
premier, des virgules comme séparateurs et "and"
entre les deux derniers noms.AuthorLastFirstOxfordCommas
:
similaire à AuthorLastFirstCommas
,
excepté que le "and" entre les deux derniers noms
est précédé d'une virgule.AuthorLastFirstAbbrCommas
: formate le
contenu des champs author/editor en mettant les noms en premier suivis
du prénom abrégé, en utilisant des virgules comme
séparateurs et "and" entre les deux derniers noms.AuthorLastFirstAbbrCommas
:
similaire à AuthorLastFirstAbbrCommas
,
excepté que le "and" entre les deux derniers noms
est précédé d'une virgule.AuthorAndsReplacer
: remplace "and"
par ";" entre les premiers noms et par "&" entre les
deux derniers.AuthorAndsCommaReplacer
: remplace
"and" entre les noms par une virgule (",") et "&" entre
les deux derniers.AuthorOrgSci
: premier auteur selon
"nom, prénom" et tous les autres selon
"prénom nom". Les prénoms sont
abrégés.AuthorNatBib
: Formats des noms
d'auteurs dans le style NatBib, 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.NoSpaceBetweenAbbreviations
: Les espaces
entre les initiales des prénoms sont
supprimés.FileLink(TypeDeFichier)
: sans argument, ce formateur renvoie
le premier lien apparaissant dans le champ. Pour fonctionner, ce formateur doit
être alimenté par le contenu du champ "file" (fichier).
Ce formateur prend comme argument optionnel l'extension du type de fichier externe
spécifié entre parenthèses après le nom du formateur. Par exemple,
\format[FileLink(pdf)]{\file}
spécifie pdf
comme un
argument. Quand un argument est fourni, le formateur sélectionne le premier lien
vers un fichier du type spécifié. Dans l'exemple, le chemin vers le premier lien PDF
sera renvoyé.
FormatPagesForHTML
: remplace "--"
par "-".FormatPagesForXML
: remplace "--" par
un tiret XML.FirstPage
: renvoie la première page du champ "pages", si initialisé.
Par exemple, si le champ "pages" est initialisé avec "345-360" ou "345--360",
ce formatteur renverra "345".LastPage
: renvoie la dernière page du champ "pages", si initialisé.
Par exemple, si le champ "pages" est initialisé avec "345-360" ou "345--360",
ce formatteur renverra "360".Replace(ExpReg,RemplaceAvec)
: effectue le remplacement d'une expression régulière.
Pour utiliser ce formateur, un argument en deux parties doit être fourni. Les parties sont
séparées par une virgule. Pour indiquer le caractère virgule, utilisez la séquence
d'échappement : \,RemoveBrackets
: supprime toutes les
accolades "{" ou "}".RemoveBracketsAddComma
: à
documenter.RemoveWhitespace
: supprime tous les caractères espace.RemoveLatexCommands
: supprime toutes
les commandes LaTeX comme \em
,
\textbf
, etc. Lorsqu'il est utilisé
avec HTMLChars
ou XMLChars
, ce
formateur doit être appelé en dernier.RemoveTilde
: 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.ToLowerCase
: bascule tous les
caractères en minuscules.ToUpperCase
: bascule tous les
caractères en majuscules.GetOpenOfficeType
: renvoie le numéro
utilisé par le système bibliographique d'OpenOffice.org
(versions 1.x et 2.x) pour définir le type
de cette ée.RTFChars
: remplace les
caractères spéciaux spécifiques
à TeX (par exemple : {\^a} ou {\"{o}}) par leur
représentation RTF, et traduit les commandes LaTeX
\emph, \textit, \textbf dans leurs équivalents RTF.Si aucun des formateurs disponibles ne peut faire ce que
vous désirez, vous pouvez ajouter le votre à
l'interface
net.sf.jabref.export.layout.LayoutFormatter
. Si
vous insérez votre propre classe dans
net.sf.jabref.export.layout.format
, 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
Avec JabRef 2.2, il est maintenant possible de définir des formateurs de nom personnalisés et utilisant la syntaxe des fichiers de style BibTeX. Cela permet une flexibilité totale, mais c'est fastidieux à écrire
Vous pouvez définir votre propre formateur dans l'onglet "Formateur de nom" des préférences en utilisant le format suivant et en l'utilisant ensuite avec le nom que vous avez défini comme de n'importe quel autre formateur
<cas1>@<gamme11>@<format>@<gamme12>@<format>@<gamme13>...@@
<cas2>@<gamme21>@... et ainsi de suite.
Ce format commence par séparer la tache de formatage de la liste d'auteurs dans des cas dépendant du nombre d'auteurs qu'il y a (c'est ainsi car certains formats diffèrent en fonction du nombre d'auteurs). Chaque cas individuel est séparé par @@ et contient les instructions sur la façon de formater chaque auteur dans le cas considéré. Ces instructions sont séparées par un @.
Les cas sont identifiés en utilisant des entiers (1, 2, 3, etc.) ou le caractère * (correspondant à n'importe quel nombre d'auteurs) et spécifieront le formateur à appliquer s'il y a un nombre inférieur ou égal d'auteurs.
Les gammes sont soit
<entier>..<entier>
,
<entier>
ou le caractère
*
en utilisant un index basé sur 1 pour
indexer les auteurs d'une liste donnée d'auteurs. Les
index entiers peuvent être négatif afin de
signifier qu'ils commencent par la fin de la liste où -1
est le dernier auteur.
Par exemple, avec une liste d'auteurs comme "Joe Doe and Mary Jane and Bruce Bar and Arthur Kay":
Les chaînes de <format>
utilisent
le format du formateur BibTeX :
Les quatre lettres v, f, l et j indiquent les parties du nom von, first, last et jr qui sont utilisées entre accolades. Une unique lettre v, f, l ou j indique que le nom doit être abrégé. Si l'une de ces lettres ou paires de lettres sont rencontrées, JabRef retournera tous les noms respectifs (potentiellement abrégés), mais l'expression totale entre accolades est uniquement imprimée si la partie du nom existe.
Par exemple, si le format est "{ll} {vv {von Part}} {ff}" et si les noms sont "Mary Kay and John von Neumann", alors JabRef retournera "Kay Mary" (avec deux espaces entre le nom propre et le prénom) et "Neuman von von Part John".
Je donne ici deux exemples, mais je préfèrerai vous diriger vers la documentations BibTeX.
Exemple court : "{ll}, {f.}"
va convertir
"Joe Doe"
en "Doe, J."
Exemple long :
Pour convertir :
"Joe Doe and Mary Jane and Bruce Bar and Arthur Kay"
en
"Doe, J., Jane, M., Bar, B. and Kay, A."
vous devrez utiliser
1@*@{ll}, {f}.@@2@1@{ll}, {f}.@2@ and {ll}, {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-1@ and {ll}, {f}.
Si quelqu'un souhaite écrire un meilleur didacticiel sur ce sujet, envoyez un courriel sur l'une des listes de diffusion de JabRef !
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 (Ed.)
. Cela peut être
réalisé avec le code suivant :
\format[HTMLChars,AuthorFirstFirst]{\editor}
(Ed.)
Cependant, si le champs editor
n'a pas
été renseigné - il n'a pas de sens pour
l'entrée exportée - le texte (Ed.)
doit être ignoré. Cela peut être
effectué en utilisant les commandes \begin
et \end
:
\begin{editor}
\format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)
\end{editor}
Les commandes \begin
et \end
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.
Note : L'utilisation des commandes
\begin
et \end
est une manière
astucieuse de créer des gabarits qui sont communs
à une grande variété d'entrées.
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.
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 :
\begingroup{keywords}New Category:
\format[HTMLChars]{\keywords}
\endgroup{keywords}
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.
A partir de JabRef 2.4b1 vous pouvez aussi empaqueter votre
format d'exportation ("ExportFormat") ou formateur de gabarit
("LayoutFormatter") comme un greffon ("plug-in"). Si vous le
faites, vous pouvez fournir un unique fichier zip à d'autres
utilisateurs afin qu'ils utilisent votre format d'exportation.
Pour un example, télécharger le source de JabRef et jeter un
oeil au répertoire src/plugins/
. N'hésitez pas
à participer aux forums sur Sourceforge, puisque nous ne disposons
pas encore d'une documentation volumineuse.