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.
\
) 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.
XMLChars
: ersetzt TeX-spezifische Sonderzeichen (z.B. {\^a} oder {\"{o}})
durch ihre XML-Entsprechungen.
CreateDocBookAuthors
: formatiert das author-Feld im DocBook-Stil.
AuthorFirstFirst
: formatiert die Felder author/editor mit den Vornamen zuerst.
AuthorFirstFirstCommas
: formatiert die Felder author/editor mit den Vornamen zuerst
und abgetrennt durch Kommas.
AuthorLastFirst
: formatiert die Felder author/editor mit den Nachnamen zuerst.
AuthorLastFirstAbbreviator
: kürzt die Vornamen aller Autoren.
Dieser Formatierer kann nur angewendet werden, wenn AuthorLastFirst
bereits benutzt wurde.
AuthorAndsReplacer
: ersetzt "and" zwischen den Namen durch ";", zwischen den letzten
beiden Autoren steht "&".
FormatPagesForHTML
: ersetzt "--" durch "-".
FormatPagesForXML
: ersetzt "--" durch einen XML en-dash (Gedanken- bzw. Bis-Strich).
RemoveBrackets
: entfernt alle geschweiften Klammern "{" oder "}".
RemoveLatexCommands
: entfernt LaTeX Kommandos wie \em
, \textbf
etc. Zusammen mit HTMLChars
oder XMLChars
sollte dieser Formatierer
zuletzt aufgerufen werden.
ToLowerCase
: macht aus allen Buchstaben Kleinbuchstaben.
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.
(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.
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}