Mit JabRef können Sie Ihre eigenen Exportfilter definieren und genau so wie die Standard-Exportfilter benutzen. Ein Exportfilter wird durch eine oder mehr Layout-Dateien definiert, die mittels eingebauter Formatierprogramme das Format der exportierten Dateien festlegen. Ihre Layout-Datei müssen Sie in einem separaten Texteditor erstellen.
Die einzige Voraussetzung für einen Exportfilter ist, daß eine Datei mit der Endung .layout vorhanden ist. Um einen neuen, eigenen Exportfilter hinzuzufügen, öffnen Sie das Dialogfenster Optionen -> Verwalte externe Exportfilter und klicken auf die Schaltfläche Neu. Es öffnet sich ein neues Fenster, in dem Sie einen Namen (der als Auswahl im Dateityp-Dropdownmenü erscheint, wenn man Datei -> Exportieren im JabRef-Hauptfenster wählt), eine Pfadangabe zur .layout-Datei und die gewünschte Dateiendung für den Exportfilter angeben können. Wenn Sie den Exportfilter benutzen, wird diese Endung im Datei-Dialog automatisch vorgeschlagen.
Um einen Eindruck zu bekommen, wie Exportfilter auszusehen haben, suchen Sie am besten auf unserer Homepage nach dem Paket, das die Layout-Dateien der Standard-Exportfilter enthält.
Nehmen wir einmal an, dass wir einen HTML-Exportfilter erstellen wollen.
Der Exportfilter muss lediglich aus einer einzigen .layout-Datei bestehen, die in diesem Fall html.layout genannt werden könnte. Sie können darüber hinaus auch zwei Dateien mit den Namen html.begin.layout und html.end.layout anlegen. Die erste dieser beiden Dateien enthält den Kopfteil der Ausgabe, die zweite den Fußteil. JabRef sucht jedes Mal, wenn der Exportfilter benutzt wird, nach diesen Dateien und fügt sie – falls sie gefunden werden – wörtlich vor bzw. nach den einzelnen Einträgen in die Ausgabe ein.
Beachten Sie, dass sich diese Dateien in demselben Verzeichnis wie html.layout befinden müssen und die Namensbestandteile .begin bzw. .end enthalten müssen.
In unserem Beispiel-Exportfilter könnten diese Dateien folgendermaßen aussehen:
html.begin.layout:
    <HTML>
     <BODY> text="#275856">
    <basefont size="4" color="#2F4958"
    face="arial">
html.end.layout:
    </BODY>
     </HTML>
Die Datei html.layout stellt die Standard-Formatvorlage für den Export eines einzelnen Eintrags bereit. Falls Sie unterschiedliche Formatvorlagen für verschiedene Eintragstypen anwenden wollen, müssen Sie Eintrags-spezifische .layout-Dateien erstellen. Diese müssen sich ebenfalls in demselben Verzeichnis wie die Haupt-Layout-Datei befinden und den Namensbestandteil .entrytype enthalten. Der Name des Eintragstyps muss komplett in Kleinbuchstaben geschrieben werden. In unserem Beispiel wollen wir eine Formatvorlage für Einträge des Typs "book" haben, die in der Datei html.book.layout abgelegt wird. Für eine Dissertation würden wir die Datei html.phdthesis.layout anlegen – und so weiter. Diese Dateien sind der Standard-Layout-Datei sehr ähnlich, nur dass sie lediglich für Einträge des entsprechenden Typs genutzt werden. Beachten Sie, dass die Standard-Layout-Datei so allgemein gehalten werden kann, dass sie die meisten Eintragstypen abdeckt.
Layout-Dateien werden mit
    einem einfachen markup-Format erstellt, bei dem die Kommandos
    mit einem "backslash" (\) eingeleitet werden. Alle
    Textbestandteile, die nicht als Kommando identifiziert werden,
    gelangen direkt in die Ausgabedatei.
Ein beliebiges Wort, vor dem ein backslash steht, z.B.
    \author, \editor, \title
    or \year, wird als Verweis auf das entsprechende
    Feld ausgewertet, das dann direkt in die Ausgabe kopiert
    wird.
Oft muss der Feldinhalt vor der Ausgabe verarbeitet werden. Dies wird mit Hilfe eines Feldformatierers gemacht - einer java class, die eine Methode zur Verarbeitung des Feldinhaltes enthält.
Ein Formatierer wird angewendet, indem man das Kommando
    \format gefolgt vom Namen des Formatierers in
    eckigen Klammern und dem Feldnamen in geschweiften Klammern
    einfügt, z.B.:
\format[ToLowerCase]{\author}
Sie können auch mehrere Formatierer angeben, getrennt durch Kommas. Sie werden nacheinander aufgerufen, und zwar von links nach rechts. Das Kommando
\format[ToLowerCase,HTMLChars]{\author}
ruft z.B. zunächst den Formatierer ToLowerCase auf, HTMLChars formatiert anschließend das Ergebnis. Auf diese Weise können Sie eine beliebige Anzahl an Formatierern auflisten.
JabRef bietet die folgenden Formatierer, wobei einige von anderen abhängen:
HTMLChars : ersetzt TeX-spezifische
        Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
        HTML-Entsprechungen und übersetzt die LaTeX-Befehle
        \emph, \textit, \textbf in ihre HTML-Entsprechungen.HTMLParagraphs : interpretiert zwei
        aufeinanderfolgende Zeilenumbrüche (z.B. \n \n) als
        Beginn eines neuen Absatzes und erstellt dementsprechend
        Absatz-HTML-Tags.XMLChars : ersetzt TeX-spezifische
        Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
        XML-Entsprechungen.CreateDocBookAuthors : formatiert das
        author-Feld im DocBook-Stil.CreateDocBookEditors : Dokumentation
        folgt.CurrentDate : gibt das aktuelle Datum aus.
        Ohne Argument gibt dieser Formatierer das aktuelle Datum im
        Format "JJJJ.MM.TT HH:MM:SS Z" (Datum, Zeit und Zeitzone)
        aus. Mit einem anderen Format-String als Argument kann das
        Datum angepasst werden. So ergibt
        \format[CurrentDate]{yyyy.MM.dd} nur das
        Datum, z.B. 2005.11.30.AuthorFirstFirst : formatiert die Felder
        author/editor mit den Vornamen zuerst.AuthorFirstFirstCommas oder AuthorFirstLastCommas :
        formatiert die Felder author/editor mit den Vornamen zuerst und abgetrennt
        durch Kommas.AuthorFirstLastOxfordCommas : ähnlich wie
        AuthorFirstLastCommas, außer dass das "and"
        zwischen den letzten beiden Namen durch ein Komma eingeleitet
        wird.AuthorFirstAbbrLastCommas : formatiert die
        Felder author/editor mit abgekürzten Vornamen, abgetrennt durch
        Kommas, mit einem "and" zwischen den letzten beiden Namen.AuthorFirstAbbrLastOxfordCommas : ähnlich wie
        AuthorFirstAbbrLastCommas, außer dass das "and"
        zwischen den letzten beiden Namen durch ein Komma eingeleitet
        wird.AuthorLastFirst : formatiert die Felder
        author/editor mit den Nachnamen zuerst.AuthorAbbreviator oder AuthorLastFirstAbbreviator :
        kürzt die Vornamen und mittleren Namen aller Autoren. Dieser Formatierer gibt
        Nachnamen zuerst aus. Wenn Sie abgekürzte Namen mit vorangestellten Initialen
        wollen, wenden Sie anschließend den Formatierer AuthorFirstFirst an.AuthorLastFirstCommas : formatiert die Felder
        author/editor mit den Nachnamen zuerst, abgetrennt durch Kommas,
        mit einem "and" zwischen den letzten beiden Namen.AuthorLastFirstOxfordCommas : ähnlich wie
        AuthorLastFirstCommas, außer dass das "and"
        zwischen den letzten beiden Namen durch ein Komma eingeleitet
        wird.AuthorLastFirstAbbrCommas : formatiert die Felder
        author/editor mit Nachnamen zuerst und abgekürzten Vornamen,
        abgetrennt durch Kommas, mit einem "and" zwischen den letzten
        beiden Namen.AuthorLastFirstAbbrOxfordCommas : ähnlich wie
        AuthorLastFirstAbbrCommas, außer dass das "and"
        zwischen den letzten beiden Namen durch ein Komma eingeleitet
        wird.AuthorAndsReplacer : ersetzt "and"
        zwischen den Namen durch ";", zwischen den letzten beiden
        Autoren steht "&".AuthorAndsCommaReplacer : ersetzt "and"
        zwischen den Namen durch "," sowie "&" zwischen den
        beiden letzten.AuthorOrgSci : Der erste Autor erscheint
        als "Nachname, Vorname", alle anderen als "Vorname
        Nachname". Vornamen werden abgekürzt.AuthorAbbreviator : Dokumentation
        folgt.AuthorNatBib : formatiert Autorennamen im
        Natbib-Stil, also nur mit Nachnamen; zwei Autoren werden
        durch ein "and" voneinander getrennt, bei mehr als zwei
        Autoren wird der erste angegeben, gefolgt von "et al."NoSpaceBetweenAbbreviations : Leerzeichen
        zwischen mehreren abgekürzten Vornamen werden
        gelöscht.FileLink(Dateityp) : wenn kein Argument angegeben
        wird, gibt dieser Formatierer den ersten externen Dateityp aus, der
        in dem Feld "file" angegeben ist.
        Dieser Formatierer nimmt den Namen eines Dateityps als optionales
        Argument, das in Klammern nach dem Namen des Formatierers angegeben
        wird. Zum Beispiel wird mit \format[FileLink(pdf)]{\file}
        der Dateityp pdf als Argument angegeben. Wenn ein Argument
        mitgegeben wird, wählt der Formatierer den ersten Dateilink des
        entsprechenden Typs. Im Beispiel wird der Pfad zum ersten PDF-Link
        ausgegeben.
FormatPagesForHTML : ersetzt "--" durch
        "-".FormatPagesForXML : ersetzt "--" durch
        einen XML en-dash (Gedanken- bzw. Bis-Strich).Replace(regexp,ersetzedurch) : führt eine Ersetzung
        mit einem Regulären Ausdruck durch. Um diesen Formatierer zu
        benutzen, muss ein zweiteiliges Argument mitgegeben werden. Die Teile
        werden durch ein Komma getrennt. Will man ein Komma ausgeben lassen,
        muss man es maskieren: \,
        Der erste Teil ist der Reguläre Ausdruck, nach dem gesucht wird.
        Er wird normal geschrieben, ohne Backslashes (\) zu maskieren.
        Eine Beschreibung von Regulären Ausdrücken ist hier zu finden:
        http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
Der zweite Teil ist der Text, der für alle Treffer eingesetzt werden soll.
RemoveBrackets : entfernt alle
        geschweiften Klammern "{" oder "}".RemoveBracketsAddComma : Dokumentation
        folgt.RemoveWhitespace : löscht alle Leerzeichen.RemoveLatexCommands : entfernt LaTeX
        Kommandos wie \emph, \textbf etc.
        Zusammen mit HTMLChars oder
        XMLChars sollte dieser Formatierer zuletzt
        aufgerufen werden.RemoveTilde : ersetzt das Tilde-Zeichen
        (~), das in LaTeX als festes Leerzeichen dient, durch ein
        normales Leerzeichen. Nützlich in Kombination mit dem
        Namens-Formatierer, der im
        nächsten Abschnitt beschrieben wird.ToLowerCase : macht aus allen Buchstaben
        Kleinbuchstaben.ToUpperCase : macht aus allen Buchstaben
        Großbuchstaben.GetOpenOfficeType : gibt die Nummer wieder,
        die vom bibliographischen System von OpenOffice.org (Versionen
        1.x und 2.x) benutzt wird, um den Typ dieses Eintrags zu
        bezeichnen.RTFChars : ersetzt alle TeX-spezifischen
        Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
        RTF-Entsprechung und übersetzt LaTeX-Befehle wie \emph, \textit,
        \textbf in ihre RTF-Entsprechungen.Falls keiner der verfügbaren Formatierer das Ergebnis
    erzielt, das Sie erreichen möchten, können Sie Ihren
    eigenen Formatierer hinzufügen, indem Sie das
    net.sf.jabref.export.layout.LayoutFormatter-Interface
    implementieren. Wenn Sie Ihre Klasse (class) in das Paket
    net.sf.jabref.export.layout.format einfügen,
    können Sie den Formatierer mit seinem Klassennamen
    aufrufen, so wie auch die Standard-Formatierer. Ansonsten
    müssen Sie den Formatierer mit seinem vollen Namen
    aufrufen (inklusive Paketname). In jedem Fall muss der
    Formatierer in ihrem classpath sein, wenn Sie JabRef
    starten.
Mit JabRef 2.2 ist es jetzt möglich, eigene Namens-Formatierer zu definieren. Dazu wird die Syntax der Bibliographie-Stile (bst) verwendet. Das erlaubt äußerste Flexibilität, ist allerdings aufwändig in der Schreibweise.
Sie können unter Optionen -> Einstellungen
    -> Namens-Formatierer Ihren eigenen Formatierer
    schreiben. Benutzen Sie das folgende Format:
    <Fall1>@<Bereich11>@<Format>@<Bereich12>@<Format>@<Bereich13>...@@
     <Fall2>@<Bereich21>@... und so weiter.
Dieses Format teilt die Aufgabe, eine Liste von Autoren zu
    formatieren, in unterschiedliche Fälle abhängig von
    der Zahl der Autoren (das ist nötig, weil manche Formate
    sich je nach der Zahl der Autoren unterscheiden). Die einzelnen
    Fälle werden durch @@ voneinander getrennt
    und enthalten Anweisungen, wie jeder einzelne Autor in diesem
    Fall zu formatieren ist. Diese Anweisungen werden durch
    @ getrennt.
Fälle werden durch Ganzzahlen (1, 2, 3, etc.) oder das
    Zeichen * (alle Autoren) definiert. Sie geben die
    nachfolgenden Anweisungen an den Formatierer weiter, falls
    weniger oder gleich viele Autoren vorhanden sind.
Bereiche sind entweder
    <Ganzzahl>..<Ganzzahl>,
    <Ganzzahl> oder das Zeichen *.
    Die Liste der Autoren fängt bei 1 an. Die Ganzzahlen
    können einen negativen Wert haben, um vom letzten Autor
    der Liste zu starten, wobei -1 der Wert für den letzten
    Autor ist.
Als Beispiel dient die Autorenliste "Joe Doe and Mary Jane and Bruce Bar and Arthur Kay":
Die <Format>-Strings nutzen das
    BibTeX-Namensschema:
Die vier Buchstaben v, f, l, j stehen für die Namensteile von, Vorname (first), Nachname (last) und Junior und werden in geschweiften Klammern gesetzt. Ein einzelner Buchstabe v, f, l, j bedeutet, dass der Name abgekürzt werden soll. Wenn einer dieser Buchstaben oder Buchstabenpaare vorkommen, gibt JabRef alle entsprechenden Namen (eventuell abgekürzt) aus, aber der Ausdruck in geschweiften Klammern wird nur ausgegeben, wenn der Namensteil existiert.
Beispielsweise wird beim Format "{ll} {vv {von Part}} {ff}" die Autorenliste "Mary Kay and John von Neumann" von JabRef als "Kay Mary" (mit zwei Leerzeichen) und "Neumann von von Part John" ausgegeben.
Zwei weitere Beispiele sollen das Ganze verdeutlichen; die BibTeX-Dokumentation gibt weitere Hinweise.
Kurzes Beispiel: "{ll}, {f.}" formatiert
    "Joe Doe" als "Doe, J."
Ausführliches Beispiel:
Um
"Joe Doe and Mary Jane and Bruce Bar and Arthur Kay"als
"Doe, J., Jane, M., Bar, B. and Kay, A."zu formatieren, nutzt man
1@*@{ll}, {f}.@@2@1@{ll}, {f}.@2@ and {ll}, {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-1@ and {ll}, {f}.
Falls jemand eine bessere Dokumentation hierzu verfassen möchte: Wenden Sie sich einfach an die JabRef-Maililnglisten!
Manche statische Ausgabe macht nur
    Sinn, wenn ein bestimmtes Feld nicht leer ist. Wenn wir z.B.
    hinter den Namen der Editoren den Text (Hrsg.)
    haben wollen, brauchen wir folgendes:
\format[HTMLChars,AuthorFirstFirst]{\editor}
    (Hrsg.)
Wenn nun aber das editor-Feld leer ist -
    möglicherweise ist es für den Eintrag, der exportiert
    werden soll, nicht erforderlich -, dann würde das
    (Hrsg.) dennoch erscheinen. Das kann man mit den
    Kommandos \begin und \end
    verhindern:
\begin{editor}
    \format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)
     \end{editor}
Die Kommandos \begin und \end
    sorgen dafür, dass der Text, den sie einschließen,
    nur dann ausgegeben wird, falls das Feld, auf das in den
    geschweiften Klammern verwiesen wird, für den zu
    exportierenden Eintrag definiert und damit nicht leer ist.
Anmerkung: Das Benutzen der Kommandos
    \begin und \end ist ein
    Schlüssel zum Erstellen von Layout-Dateien, die mit einer
    Vielzahl von Eintragstypen umgehen können.
Wenn Sie Ihre Einträge auf der Basis eines bestimmten Feldes gruppieren wollen, benutzen Sie die Kommandos für die gruppierte Ausgabe. Die gruppierte Ausgabe ist der bedingten Ausgabe sehr ähnlich, auß dass der Text zwischen den Kommandos nur ausgegeben wird, wenn das Feld, auf das in den geschweiften Klammern verwiesen wird, unterschiedliche Werte enthält.
Nehmen wir zum Beispiel an, dass wir die Ausgabe nach dem keyword (Stichwort) gruppieren wollen. Bevor die Datei exportiert wird, müssen die Einträge nach dem keyword sortiert worden sein. Dann benutzen Sie die folgenden Kommandos, um nach keyword zu gruppieren:
\begingroup{keywords}New Category:
    \format[HTMLChars]{\keywords}
     \endgroup{keywords}
Mit externen Layout-Dateien ist es einfach, Ihre eigenen Export-Formate mit anderen Anwendern gemeinsam zu benutzen. Falls Sie einen Exportfilter für ein Format erstellen, das nicht von JabRef unterstützt wird, oder falls Sie einen bestehenden Exportfilter verbessern, möchten wir Sie ermutigen, Ihre Arbeit auf der SourceForge.net-Seite bereitzustellen. Dasselbe gilt für Formatierklassen, die Sie schreiben. Wir würden uns freuen, eine Sammlung von bereitgestellten Layout-Dateien verteilen zu können oder die Standard-Export-Filter und Standard-Formatierer zu erweitern.