4 <basefont size="4" color="#2F4958" face="arial">
6 <H1>Exportfilter anpassen</H1>
8 Mit JabRef können Sie Ihre eigenen Exportfilter definieren und genau so wie die
9 Standard-Exportfilter benutzen. Ein Exportfilter wird durch eine oder mehr <i>Layout-Dateien</i>
10 definiert, die mittels eingebauter Formatierprogramme das Format der exportierten Dateien
11 festlegen. Ihre Layout-Datei müssen Sie in einem separaten Texteditor erstellen.
13 <H2>Hinzufügen eines Exportfilters</H2>
15 Die einzige Voraussetzung für einen Exportfilter ist, daß eine Datei mit der
16 Endung <b>.layout</b> vorhanden ist. Um einen neuen, eigenen Exportfilter hinzuzufügen,
17 öffnen Sie das Dialogfenster <b>Optionen -> Verwalte externe Exportfilter</b> und klicken
18 auf die Schaltfläche <b>Neu</b>. Es öffnet sich ein neues Fenster, in dem Sie einen
19 Namen (der im Menü <b>Datei -> Externe Exportfilter</b> angezeigt wird), eine Pfadangabe
20 zur <b>.layout</b>-Datei und die gewünschte Dateiendung für den Exportfilter angeben
21 können. Wenn Sie den Exportfilter benutzen, wird diese Endung im Datei-Dialog automatisch
24 <H2>Das Erstellen des Exportfilters</H2>
26 Um einen Eindruck zu bekommen, wie Exportfilter auszusehen haben, suchen Sie am besten auf unserer
27 Homepage nach dem Paket, das die Layout-Dateien der Standard-Exportfilter enthält.
29 <H3>Layout-Dateien</H3>
31 Nehmen wir einmal an, dass wir einen HTML-Exportfilter erstellen wollen.
33 <P>Der Exportfilter muss lediglich aus einer einzigen <b>.layout</b>-Datei bestehen, die in diesem
34 Fall <i>html.layout</i> genannt werden könnte. Sie können darüber hinaus auch zwei
36 Namen <i>html.begin.layout</i> und <i>html.end.layout</i> anlegen. Die erste dieser beiden Dateien
37 enthält den Kopfteil der Ausgabe, die zweite den Fußteil. JabRef sucht jedes Mal, wenn der
38 Exportfilter benutzt wird, nach diesen Dateien und fügt sie – falls sie gefunden
39 werden – wörtlich vor bzw. nach den einzelnen Einträgen in die Ausgabe ein.
41 <P>Beachten Sie, dass sich diese Dateien in demselben Verzeichnis wie <i>html.layout</i> befinden
42 müssen und die Namensbestandteile <b>.begin</b> bzw. <b>.end</b> enthalten müssen.
44 <P>In unserem Beispiel-Exportfilter könnten diese Dateien folgendermaßen aussehen:
46 <p><i>html.begin.layout</i>:<br>
47 <code><HTML><br>
48 <BODY> text="#275856"><br>
49 <basefont size="4" color="#2F4958" face="arial"></code>
51 <p><i>html.end.layout</i>:<br>
52 <code></BODY><br>
55 <P>Die Datei <i>html.layout</i> stellt die <i>Standard</i>-Formatvorlage für den Export
56 eines einzelnen Eintrags bereit. Falls Sie unterschiedliche Formatvorlagen für verschiedene
57 Eintragstypen anwenden wollen, müssen Sie Eintrags-spezifische <b>.layout</b>-Dateien erstellen.
58 Diese müssen sich ebenfalls in demselben Verzeichnis wie die Haupt-Layout-Datei befinden und
59 den Namensbestandteil <b>.entrytype</b> enthalten. Der Name des Eintragstyps muss komplett in
60 Kleinbuchstaben geschrieben werden. In unserem Beispiel wollen wir eine Formatvorlage für
61 Einträge des Typs "book" haben, die in der Datei <i>html.book.layout</i> abgelegt wird.
62 Für eine Dissertation würden wir die Datei <i>html.phdthesis.layout</i> anlegen –
63 und so weiter. Diese Dateien sind der Standard-Layout-Datei sehr ähnlich, nur dass sie lediglich
64 für Einträge des entsprechenden Typs genutzt werden. Beachten Sie, dass die
65 Standard-Layout-Datei so allgemein gehalten werden kann, dass sie die meisten
66 Eintragstypen abdeckt.
68 <H3>Das Format der Layout-Datei</H3>
70 Layout-Dateien werden mit einem einfachen markup-Format erstellt, bei dem die Kommandos mit
71 einem "backslash" (<code>\</code>) eingeleitet werden. Alle Textbestandteile, die nicht als
72 Kommando identifiziert werden, gelangen direkt in die Ausgabedatei.
74 <H3>Feldkommandos</H3>
76 <p>Ein beliebiges Wort, vor dem ein backslash steht, z.B. <code>\author</code>, <code>\editor</code>,
77 <code>\title</code> or <code>\year</code>, wird als Verweis auf das entsprechende Feld ausgewertet,
78 das dann direkt in die Ausgabe kopiert wird.
80 <H3>Feldformatierer</H3>
82 <p>Oft muss der Feldinhalt vor der Ausgabe verarbeitet werden. Dies wird mit Hilfe eines
83 <i>Feldformatierers</i> gemacht - einer java class, die eine Methode zur Verarbeitung des
84 Feldinhaltes enthält.
85 <p>Ein Formatierer wird angewendet, indem man das Kommando <code>\format</code> gefolgt vom Namen
86 des Formatierers in eckigen Klammern und dem Feldnamen in geschweiften Klammern einfügt, z.B.:
88 <p><code>\format[ToLowerCase]{\author}</code>
90 <p>Sie können auch mehrere Formatierer angeben, getrennt durch Kommas. Sie werden nacheinander
91 aufgerufen, und zwar von links nach rechts. Das Kommando
93 <p><code>\format[ToLowerCase,HTMLChars]{\author}</code>
95 <p>ruft z.B. zunächst den Formatierer <b>ToLowerCase</b> auf, <b>HTMLChars</b> formatiert
96 anschließend das Ergebnis. Auf diese Weise können Sie eine beliebige Anzahl an
97 Formatierern auflisten.
99 <p>JabRef bietet die folgenden Formatierer, wobei einige von anderen abhängen:
102 <li><code>HTMLChars</code> : ersetzt TeX-spezifische Sonderzeichen (z.B. {\^a} oder {\"{o}})
103 durch ihre HTML-Entsprechungen.
104 <li><code>XMLChars</code> : ersetzt TeX-spezifische Sonderzeichen (z.B. {\^a} oder {\"{o}})
105 durch ihre XML-Entsprechungen.
106 <li><code>CreateDocBookAuthors</code> : formatiert das author-Feld im DocBook-Stil.
107 <li><code>AuthorFirstFirst</code> : formatiert die Felder author/editor mit den Vornamen zuerst.
108 <li><code>AuthorFirstFirstCommas</code> : formatiert die Felder author/editor mit den Vornamen zuerst
109 und abgetrennt durch Kommas.
110 <li><code>AuthorLastFirst</code> : formatiert die Felder author/editor mit den Nachnamen zuerst.
111 <li><code>AuthorLastFirstAbbreviator</code> : kürzt die Vornamen aller Autoren.
112 Dieser Formatierer kann nur angewendet werden, wenn <code>AuthorLastFirst</code> bereits benutzt wurde.
113 <li><code>AuthorAndsReplacer</code> : ersetzt "and" zwischen den Namen durch ";", zwischen den letzten beiden Autoren steht "&".
114 <li><code>AuthorAndsCommaReplacer</code> : ersetzt "and" zwischen den Namen durch "," sowie "&" zwischen den beiden letzten.
115 <li><code>FormatPagesForHTML</code> : ersetzt "--" durch "-".
116 <li><code>FormatPagesForXML</code> : ersetzt "--" durch einen XML en-dash (Gedanken- bzw. Bis-Strich).
117 <li><code>RemoveBrackets</code> : entfernt alle geschweiften Klammern "{" oder "}".
118 <li><code>RemoveLatexCommands</code> : entfernt LaTeX Kommandos wie <code>\em</code>, <code>\textbf</code>
119 etc. Zusammen mit <code>HTMLChars</code> oder <code>XMLChars</code> sollte dieser Formatierer
120 zuletzt aufgerufen werden.
121 <li><code>ToLowerCase</code> : macht aus allen Buchstaben Kleinbuchstaben.
124 <p>Falls keiner der verfügbaren Formatierer das Ergebnis erzielt, das Sie erreichen möchten,
125 können Sie Ihren eigenen Formatierer hinzufügen, indem Sie das
126 <code>net.sf.jabref.export.layout.LayoutFormatter</code>-Interface implementieren. Wenn Sie Ihre Klasse
127 (class) in das Paket <code>net.sf.jabref.export.layout.format</code> einfügen, können Sie
128 den Formatierer mit seinem Klassennamen aufrufen, so wie auch die Standard-Formatierer. Ansonsten
129 müssen Sie den Formatierer mit seinem vollen Namen aufrufen (inklusive Paketname). In jedem Fall
130 muss der Formatierer in ihrem classpath sein, wenn Sie JabRef starten.
132 <H3>Bedingte Ausgabe</H3>
134 Manche statische Ausgabe macht nur Sinn, wenn ein bestimmtes Feld nicht leer ist. Wenn wir z.B. hinter
135 den Namen der Editoren den Text <code>(Hrsg.)</code> haben wollen, brauchen wir folgendes:
137 <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)</code>
139 <p>Wenn nun aber das <code>editor</code>-Feld leer ist - möglicherweise ist es für den Eintrag,
140 der exportiert werden soll, nicht erforderlich -, dann würde das <code>(Hrsg.)</code> dennoch
141 erscheinen. Das kann man mit den Kommandos <code>\begin</code> und <code>\end</code> verhindern:
143 <p><code>\begin{editor}<br>\format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)
144 <br>\end{editor}</code>
146 <p>Die Kommandos <code>\begin</code> und <code>\end</code> sorgen dafür, dass der Text, den sie
147 einschließen, nur dann ausgegeben wird, falls das Feld, auf das in den geschweiften Klammern
148 verwiesen wird, für den zu exportierenden Eintrag definiert und damit nicht leer ist.
150 <p><b>Anmerkung:</b> Das Benutzen der Kommandos <code>\begin</code> und <code>\end</code> ist ein
151 Schlüssel zum Erstellen von Layout-Dateien, die mit einer Vielzahl von Eintragstypen
154 <H3>Gruppierte Ausgabe</H3>
156 Wenn Sie Ihre Einträge auf der Basis eines bestimmten Feldes gruppieren wollen, benutzen Sie
157 die Kommandos für die gruppierte Ausgabe.
158 Die gruppierte Ausgabe ist der bedingten Ausgabe sehr ähnlich, auß dass der Text zwischen
159 den Kommandos nur ausgegeben wird, wenn das Feld, auf das in den geschweiften Klammern verwiesen wird,
160 unterschiedliche Werte enthält.
162 <p>Nehmen wir zum Beispiel an, dass wir die Ausgabe nach dem keyword (Stichwort) gruppieren wollen.
163 Bevor die Datei exportiert wird, müssen die Einträge nach dem keyword sortiert worden sein.
164 Dann benutzen Sie die folgenden Kommandos, um nach keyword zu gruppieren:
166 <p><code>\begingroup{keywords}New Category: \format[HTMLChars]{\keywords}
167 <br> \endgroup{keywords}</code>
169 <H2>Teilen Sie Ihre Arbeit mit anderen</H2>
171 Mit externen Layout-Dateien ist es einfach, Ihre eigenen Export-Formate mit anderen Anwendern
172 gemeinsam zu benutzen. Falls Sie einen Exportfilter für ein Format erstellen, das nicht von
173 JabRef unterstützt wird, oder falls Sie einen bestehenden Exportfilter verbessern, möchten
174 wir Sie ermutigen, Ihre Arbeit auf der SourceForge.net-Seite bereitzustellen. Dasselbe gilt für
175 Formatierklassen, die Sie schreiben. Wir würden uns freuen, eine Sammlung von bereitgestellten
176 Layout-Dateien verteilen zu können oder die Standard-Export-Filter und Standard-Formatierer