1 <html xmlns="http://www.w3.org/1999/xhtml">
9 <h1>Exportfilter anpassen</h1>
11 <p>Mit JabRef können Sie Ihre
12 eigenen Exportfilter definieren und genau so wie die
13 Standard-Exportfilter benutzen. Ein Exportfilter wird durch
14 eine oder mehr <i>Layout-Dateien</i> definiert, die mittels
15 eingebauter Formatierprogramme das Format der exportierten
16 Dateien festlegen. Ihre Layout-Datei müssen Sie in einem
17 separaten Texteditor erstellen.</p>
19 <h2>Hinzufügen eines Exportfilters</h2>
22 Voraussetzung für einen Exportfilter ist, daß eine
23 Datei mit der Endung <b>.layout</b> vorhanden ist. Um einen
24 neuen, eigenen Exportfilter hinzuzufügen, öffnen Sie
25 das Dialogfenster <b>Optionen -> Verwalte externe
26 Exportfilter</b> und klicken auf die Schaltfläche
27 <b>Neu</b>. Es öffnet sich ein neues Fenster, in dem Sie
28 einen Namen (der als Auswahl im Dateityp-Dropdownmenü
29 erscheint, wenn man <b>Datei -> Exportieren</b> im
30 JabRef-Hauptfenster wählt), eine Pfadangabe zur
31 <b>.layout</b>-Datei und die gewünschte Dateiendung
32 für den Exportfilter angeben können. Wenn Sie den
33 Exportfilter benutzen, wird diese Endung im Datei-Dialog
34 automatisch vorgeschlagen.</p>
36 <h2>Das Erstellen des Exportfilters</h2>
38 <p>Um einen Eindruck zu
39 bekommen, wie Exportfilter auszusehen haben, suchen Sie am
40 besten auf unserer Homepage nach dem Paket, das die
41 Layout-Dateien der Standard-Exportfilter enthält.</p>
43 <h3>Layout-Dateien</h3>
45 <p>Nehmen wir einmal an, dass wir einen
46 HTML-Exportfilter erstellen wollen.</p>
48 <p>Der Exportfilter muss lediglich aus einer einzigen
49 <b>.layout</b>-Datei bestehen, die in diesem Fall
50 <i>html.layout</i> genannt werden könnte. Sie können
51 darüber hinaus auch zwei Dateien mit den Namen
52 <i>html.begin.layout</i> und <i>html.end.layout</i> anlegen.
53 Die erste dieser beiden Dateien enthält den Kopfteil der
54 Ausgabe, die zweite den Fußteil. JabRef sucht jedes Mal,
55 wenn der Exportfilter benutzt wird, nach diesen Dateien und
56 fügt sie – falls sie gefunden
57 werden – wörtlich vor bzw. nach den einzelnen
58 Einträgen in die Ausgabe ein.</p>
60 <p>Beachten Sie, dass sich diese Dateien in demselben
61 Verzeichnis wie <i>html.layout</i> befinden müssen und die
62 Namensbestandteile <b>.begin</b> bzw. <b>.end</b> enthalten
65 <p>In unserem Beispiel-Exportfilter könnten diese Dateien
66 folgendermaßen aussehen:</p>
68 <p><i>html.begin.layout</i>:<br>
69 <code><HTML><br>
70 <BODY> text="#275856"><br>
71 <basefont size="4" color="#2F4958"
72 face="arial"></code></p>
74 <p><i>html.end.layout</i>:<br>
75 <code></BODY><br>
76 </HTML></code></p>
78 <p>Die Datei <i>html.layout</i> stellt die
79 <i>Standard</i>-Formatvorlage für den Export eines
80 einzelnen Eintrags bereit. Falls Sie unterschiedliche
81 Formatvorlagen für verschiedene Eintragstypen anwenden
82 wollen, müssen Sie Eintrags-spezifische
83 <b>.layout</b>-Dateien erstellen. Diese müssen sich
84 ebenfalls in demselben Verzeichnis wie die Haupt-Layout-Datei
85 befinden und den Namensbestandteil <b>.entrytype</b> enthalten.
86 Der Name des Eintragstyps muss komplett in Kleinbuchstaben
87 geschrieben werden. In unserem Beispiel wollen wir eine
88 Formatvorlage für Einträge des Typs "book" haben, die
89 in der Datei <i>html.book.layout</i> abgelegt wird. Für
90 eine Dissertation würden wir die Datei
91 <i>html.phdthesis.layout</i> anlegen – und so
92 weiter. Diese Dateien sind der Standard-Layout-Datei sehr
93 ähnlich, nur dass sie lediglich für Einträge des
94 entsprechenden Typs genutzt werden. Beachten Sie, dass die
95 Standard-Layout-Datei so allgemein gehalten werden kann, dass
96 sie die meisten Eintragstypen abdeckt.</p>
98 <h3>Das Format der Layout-Datei</h3>
100 <p>Layout-Dateien werden mit
101 einem einfachen markup-Format erstellt, bei dem die Kommandos
102 mit einem "backslash" (<code>\</code>) eingeleitet werden. Alle
103 Textbestandteile, die nicht als Kommando identifiziert werden,
104 gelangen direkt in die Ausgabedatei.</p>
106 <h3>Feldkommandos</h3>
108 <p>Ein beliebiges Wort, vor dem ein backslash steht, z.B.
109 <code>\author</code>, <code>\editor</code>, <code>\title</code>
110 or <code>\year</code>, wird als Verweis auf das entsprechende
111 Feld ausgewertet, das dann direkt in die Ausgabe kopiert
114 <h3>Feldformatierer</h3>
116 <p>Oft muss der Feldinhalt vor der Ausgabe verarbeitet werden.
117 Dies wird mit Hilfe eines <i>Feldformatierers</i> gemacht -
118 einer java class, die eine Methode zur Verarbeitung des
119 Feldinhaltes enthält.</p>
121 <p>Ein Formatierer wird angewendet, indem man das Kommando
122 <code>\format</code> gefolgt vom Namen des Formatierers in
123 eckigen Klammern und dem Feldnamen in geschweiften Klammern
124 einfügt, z.B.:</p>
126 <p><code>\format[ToLowerCase]{\author}</code></p>
128 <p>Sie können auch mehrere Formatierer angeben, getrennt
129 durch Kommas. Sie werden nacheinander aufgerufen, und zwar von
130 links nach rechts. Das Kommando</p>
132 <p><code>\format[ToLowerCase,HTMLChars]{\author}</code></p>
134 <p>ruft z.B. zunächst den Formatierer <b>ToLowerCase</b>
135 auf, <b>HTMLChars</b> formatiert anschließend das
136 Ergebnis. Auf diese Weise können Sie eine beliebige Anzahl
137 an Formatierern auflisten.</p>
139 <p>JabRef bietet die folgenden Formatierer, wobei einige von
140 anderen abhängen:</p>
143 <li><code>HTMLChars</code> : ersetzt TeX-spezifische
144 Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
145 HTML-Entsprechungen.</li>
147 <li><code>HTMLParagraphs</code> : interpretiert zwei
148 aufeinanderfolgende Zeilenumbrüche (z.B. \n \n) als
149 Beginn eines neuen Absatzes und erstellt dementsprechend
150 Absatz-HTML-Tags.</li>
152 <li><code>XMLChars</code> : ersetzt TeX-spezifische
153 Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
154 XML-Entsprechungen.</li>
156 <li><code>CreateDocBookAuthors</code> : formatiert das
157 author-Feld im DocBook-Stil.</li>
159 <li><code>CreateDocBookEditors</code> : Dokumentation
162 <li><code>CurrentDate</code> : gibt das aktuelle Datum aus.
163 Ohne Argument gibt dieser Formatierer das aktuelle Datum im
164 Format "JJJJ.MM.TT HH:MM:SS Z" (Datum, Zeit und Zeitzone)
165 aus. Mit einem anderen Format-String als Argument kann das
166 Datum angepasst werden. So ergibt
167 <code>\format[CurrentDate]{yyyy.MM.dd}</code> nur das
168 Datum, z.B. 2005.11.30.</li>
170 <li><code>AuthorFirstFirst</code> : formatiert die Felder
171 author/editor mit den Vornamen zuerst.</li>
173 <li><code>AuthorFirstFirstCommas</code> : formatiert die
174 Felder author/editor mit den Vornamen zuerst und abgetrennt
177 <li><code>AuthorFirstAbbrLastCommas</code> : Dokumentation
180 <li><code>AuthorFirstAbbrLastOxfordCommas</code> :
181 Dokumentation folgt.</li>
183 <li><code>AuthorFirstLastOxfordCommas</code> :
184 Dokumentation folgt.</li>
186 <li><code>AuthorLastFirst</code> : formatiert die Felder
187 author/editor mit den Nachnamen zuerst.</li>
189 <li><code>AuthorAbbreviator</code> oder <code>AuthorLastFirstAbbreviator</code> :
190 kürzt die Vornamen und mittleren Namen aller Autoren. Dieser Formatierer gibt
191 Nachnamen zuerst aus. Wenn Sie abgekürzte Namen mit vorangestellten Initialen
192 wollen, wenden Sie anschließend den Formatierer <code>AuthorFirstFirst</code> an.
194 <li><code>AuthorLastFirstCommas</code> : Dokumentation
197 <li><code>AuthorLastFirstOxfordCommas</code> :
198 Dokumentation folgt.</li>
200 <li><code>AuthorLastFirstAbbrCommas</code> : Dokumentation
203 <li><code>AuthorLastFirstAbbrOxfordCommas</code> :
204 Dokumentation folgt.</li>
206 <li><code>AuthorAndsReplacer</code> : ersetzt "and"
207 zwischen den Namen durch ";", zwischen den letzten beiden
208 Autoren steht "&".</li>
210 <li><code>AuthorAndsCommaReplacer</code> : ersetzt "and"
211 zwischen den Namen durch "," sowie "&" zwischen den
214 <li><code>AuthorOrgSci</code> : Der erste Autor erscheint
215 als "Nachname, Vorname", alle anderen als "Vorname
216 Nachname". Vornamen werden abgekürzt.</li>
218 <li><code>AuthorAbbreviator</code> : Dokumentation
221 <li><code>AuthorNatBib</code> : formatiert Autorennamen im
222 Natbib-Stil, also nur mit Nachnamen; zwei Autoren werden
223 durch ein "and" voneinander getrennt, bei mehr als zwei
224 Autoren wird der erste angegeben, gefolgt von "et al."</li>
226 <li><code>NoSpaceBetweenAbbreviations</code> : Leerzeichen
227 zwischen mehreren abgekürzten Vornamen werden
230 <li><code>FormatPagesForHTML</code> : ersetzt "--" durch
233 <li><code>FormatPagesForXML</code> : ersetzt "--" durch
234 einen XML en-dash (Gedanken- bzw. Bis-Strich).</li>
236 <li><code>RemoveBrackets</code> : entfernt alle
237 geschweiften Klammern "{" oder "}".</li>
239 <li><code>RemoveBracketsAddComma</code> : Dokumentation
242 <li><code>RemoveWhitespace</code> : Dokumentation
245 <li><code>RemoveLatexCommands</code> : entfernt LaTeX
246 Kommandos wie <code>\em</code>, <code>\textbf</code> etc.
247 Zusammen mit <code>HTMLChars</code> oder
248 <code>XMLChars</code> sollte dieser Formatierer zuletzt
249 aufgerufen werden.</li>
251 <li><code>RemoveTilde</code> : ersetzt das Tilde-Zeichen
252 (~), das in LaTeX als festes Leerzeichen dient, durch ein
253 normales Leerzeichen. Nützlich in Kombination mit dem
254 <a href="#NameFormatter">Namens-Formatierer</a>, der im
255 nächsten Abschnitt beschrieben wird.</li>
257 <li><code>ToLowerCase</code> : macht aus allen Buchstaben
258 Kleinbuchstaben.</li>
260 <li><code>CompositeFormat</code> : Dokumentation
263 <li><code>GetOpenOfficeType</code> : Dokumentation
266 <li><code>RTFChars</code> : Dokumentation folgt.</li>
268 <li><code>ResolvePDF</code> : Dokumentation folgt.</li>
271 <p>Falls keiner der verfügbaren Formatierer das Ergebnis
272 erzielt, das Sie erreichen möchten, können Sie Ihren
273 eigenen Formatierer hinzufügen, indem Sie das
274 <code>net.sf.jabref.export.layout.LayoutFormatter</code>-Interface
275 implementieren. Wenn Sie Ihre Klasse (class) in das Paket
276 <code>net.sf.jabref.export.layout.format</code> einfügen,
277 können Sie den Formatierer mit seinem Klassennamen
278 aufrufen, so wie auch die Standard-Formatierer. Ansonsten
279 müssen Sie den Formatierer mit seinem vollen Namen
280 aufrufen (inklusive Paketname). In jedem Fall muss der
281 Formatierer in ihrem classpath sein, wenn Sie JabRef
284 <h2><a name="NameFormatter"
285 id="NameFormatter">Eigene Namens-Formatierer
288 <p>Mit JabRef 2.2 ist es jetzt möglich, eigene
289 Namens-Formatierer zu definieren. Dazu wird die Syntax der
290 Bibliographie-Stile (bst) verwendet. Das erlaubt
291 äußerste Flexibilität, ist allerdings
292 aufwändig in der Schreibweise.</p>
294 <p>Sie können unter <strong>Optionen -> Einstellungen
295 -> Namens-Formatierer</strong> Ihren eigenen Formatierer
296 schreiben. Benutzen Sie das folgende Format:
297 <code><Fall1>@<Bereich11>@<Format>@<Bereich12>@<Format>@<Bereich13>...@@<br>
299 <Fall2>@<Bereich21>@... und so weiter.</code></p>
301 <p>Dieses Format teilt die Aufgabe, eine Liste von Autoren zu
302 formatieren, in unterschiedliche Fälle abhängig von
303 der Zahl der Autoren (das ist nötig, weil manche Formate
304 sich je nach der Zahl der Autoren unterscheiden). Die einzelnen
305 Fälle werden durch <code>@@</code> voneinander getrennt
306 und enthalten Anweisungen, wie jeder einzelne Autor in diesem
307 Fall zu formatieren ist. Diese Anweisungen werden durch
308 <code>@</code> getrennt.</p>
310 <p>Fälle werden durch Ganzzahlen (1, 2, 3, etc.) oder das
311 Zeichen <code>*</code> (alle Autoren) definiert. Sie geben die
312 nachfolgenden Anweisungen an den Formatierer weiter, falls
313 weniger oder gleich viele Autoren vorhanden sind.</p>
315 <p>Bereiche sind entweder
316 <code><Ganzzahl>..<Ganzzahl></code>,
317 <code><Ganzzahl></code> oder das Zeichen <code>*</code>.
318 Die Liste der Autoren fängt bei 1 an. Die Ganzzahlen
319 können einen negativen Wert haben, um vom letzten Autor
320 der Liste zu starten, wobei -1 der Wert für den letzten
323 <p>Als Beispiel dient die Autorenliste "Joe Doe and Mary Jane
324 and Bruce Bar and Arthur Kay":</p>
327 <li>1..3 betrifft Joe, Mary und Bruce</li>
329 <li>4..4 betrifft Arthur</li>
331 <li>* betrifft alle</li>
333 <li>2..-1 betrifft Mary, Bruce und Arthur</li>
336 <p>Die <code><Format></code>-Strings nutzen das
337 BibTeX-Namensschema:</p>
339 <p>Die vier Buchstaben v, f, l, j stehen für die
340 Namensteile von, Vorname (first), Nachname (last) und Junior
341 und werden in geschweiften Klammern gesetzt. Ein einzelner
342 Buchstabe v, f, l, j bedeutet, dass der Name abgekürzt
343 werden soll. Wenn einer dieser Buchstaben oder Buchstabenpaare
344 vorkommen, gibt JabRef alle entsprechenden Namen (eventuell
345 abgekürzt) aus, aber der Ausdruck in geschweiften Klammern
346 wird nur ausgegeben, wenn der Namensteil existiert.</p>
348 <p>Beispielsweise wird beim Format "{ll} {vv {von Part}} {ff}"
349 die Autorenliste "Mary Kay and John von Neumann" von JabRef als
350 "Kay Mary" (mit zwei Leerzeichen) und "Neumann von von Part
351 John" ausgegeben.</p>
353 <p>Zwei weitere Beispiele sollen das Ganze verdeutlichen; die
354 BibTeX-Dokumentation gibt weitere Hinweise.</p>
356 <p>Kurzes Beispiel: <code>"{ll}, {f.}"</code> formatiert
357 <code>"Joe Doe"</code> als <code>"Doe, J."</code></p>
359 <p>Ausführliches Beispiel:</p>
364 <p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur
369 <p><code>"Doe, J., Jane, M., Bar, B. and Kay,
372 <p>zu formatieren, nutzt man</p>
374 <p><code>1@*@{ll}, {f}.@@2@1@{ll}, {f}.@2@ and {ll},
375 {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-1@ and {ll},
379 <p>Falls jemand eine bessere Dokumentation hierzu verfassen
380 möchte: Wenden Sie sich einfach an die
381 JabRef-Maililnglisten!</p>
383 <h3>Bedingte Ausgabe</h3>
385 <p>Manche statische Ausgabe macht nur
386 Sinn, wenn ein bestimmtes Feld nicht leer ist. Wenn wir z.B.
387 hinter den Namen der Editoren den Text <code>(Hrsg.)</code>
388 haben wollen, brauchen wir folgendes:</p>
390 <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor}
393 <p>Wenn nun aber das <code>editor</code>-Feld leer ist -
394 möglicherweise ist es für den Eintrag, der exportiert
395 werden soll, nicht erforderlich -, dann würde das
396 <code>(Hrsg.)</code> dennoch erscheinen. Das kann man mit den
397 Kommandos <code>\begin</code> und <code>\end</code>
400 <p><code>\begin{editor}<br>
401 \format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)<br>
402 \end{editor}</code></p>
404 <p>Die Kommandos <code>\begin</code> und <code>\end</code>
405 sorgen dafür, dass der Text, den sie einschließen,
406 nur dann ausgegeben wird, falls das Feld, auf das in den
407 geschweiften Klammern verwiesen wird, für den zu
408 exportierenden Eintrag definiert und damit nicht leer ist.</p>
410 <p><b>Anmerkung:</b> Das Benutzen der Kommandos
411 <code>\begin</code> und <code>\end</code> ist ein
412 Schlüssel zum Erstellen von Layout-Dateien, die mit einer
413 Vielzahl von Eintragstypen umgehen können.</p>
415 <h3>Gruppierte Ausgabe</h3>
417 <p>Wenn Sie Ihre Einträge auf der
418 Basis eines bestimmten Feldes gruppieren wollen, benutzen Sie
419 die Kommandos für die gruppierte Ausgabe. Die gruppierte
420 Ausgabe ist der bedingten Ausgabe sehr ähnlich, auß
421 dass der Text zwischen den Kommandos nur ausgegeben wird, wenn
422 das Feld, auf das in den geschweiften Klammern verwiesen wird,
423 unterschiedliche Werte enthält.</p>
425 <p>Nehmen wir zum Beispiel an, dass wir die Ausgabe nach dem
426 keyword (Stichwort) gruppieren wollen. Bevor die Datei
427 exportiert wird, müssen die Einträge nach dem keyword
428 sortiert worden sein. Dann benutzen Sie die folgenden
429 Kommandos, um nach keyword zu gruppieren:</p>
431 <p><code>\begingroup{keywords}New Category:
432 \format[HTMLChars]{\keywords}<br>
433 \endgroup{keywords}</code></p>
435 <h2>Teilen Sie Ihre Arbeit mit anderen</h2>
438 Layout-Dateien ist es einfach, Ihre eigenen Export-Formate mit
439 anderen Anwendern gemeinsam zu benutzen. Falls Sie einen
440 Exportfilter für ein Format erstellen, das nicht von
441 JabRef unterstützt wird, oder falls Sie einen bestehenden
442 Exportfilter verbessern, möchten wir Sie ermutigen, Ihre
443 Arbeit auf der SourceForge.net-Seite bereitzustellen. Dasselbe
444 gilt für Formatierklassen, die Sie schreiben. Wir
445 würden uns freuen, eine Sammlung von bereitgestellten
446 Layout-Dateien verteilen zu können oder die
447 Standard-Export-Filter und Standard-Formatierer zu erweitern.</p>