1 <html xmlns="http://www.w3.org/1999/xhtml">
5 <basefont size="4" color="#2F4958" face="arial" />
7 <h1>Exportfilter anpassen</h1>
9 <p>Mit JabRef können Sie Ihre
10 eigenen Exportfilter definieren und genau so wie die
11 Standard-Exportfilter benutzen. Ein Exportfilter wird durch
12 eine oder mehr <i>Layout-Dateien</i> definiert, die mittels
13 eingebauter Formatierprogramme das Format der exportierten
14 Dateien festlegen. Ihre Layout-Datei müssen Sie in einem
15 separaten Texteditor erstellen.</p>
17 <h2>Hinzufügen eines Exportfilters</h2>
20 Voraussetzung für einen Exportfilter ist, daß eine
21 Datei mit der Endung <b>.layout</b> vorhanden ist. Um einen
22 neuen, eigenen Exportfilter hinzuzufügen, öffnen Sie
23 das Dialogfenster <b>Optionen -> Verwalte externe
24 Exportfilter</b> und klicken auf die Schaltfläche
25 <b>Neu</b>. Es öffnet sich ein neues Fenster, in dem Sie
26 einen Namen (der als Auswahl im Dateityp-Dropdownmenü
27 erscheint, wenn man <b>Datei -> Exportieren</b> im
28 JabRef-Hauptfenster wählt), eine Pfadangabe zur
29 <b>.layout</b>-Datei und die gewünschte Dateiendung
30 für den Exportfilter angeben können. Wenn Sie den
31 Exportfilter benutzen, wird diese Endung im Datei-Dialog
32 automatisch vorgeschlagen.</p>
34 <h2>Das Erstellen des Exportfilters</h2>
36 <p>Um einen Eindruck zu
37 bekommen, wie Exportfilter auszusehen haben, suchen Sie am
38 besten auf unserer Homepage nach dem Paket, das die
39 Layout-Dateien der Standard-Exportfilter enthält.</p>
41 <h3>Layout-Dateien</h3>
43 <p>Nehmen wir einmal an, dass wir einen
44 HTML-Exportfilter erstellen wollen.</p>
46 <p>Der Exportfilter muss lediglich aus einer einzigen
47 <b>.layout</b>-Datei bestehen, die in diesem Fall
48 <i>html.layout</i> genannt werden könnte. Sie können
49 darüber hinaus auch zwei Dateien mit den Namen
50 <i>html.begin.layout</i> und <i>html.end.layout</i> anlegen.
51 Die erste dieser beiden Dateien enthält den Kopfteil der
52 Ausgabe, die zweite den Fußteil. JabRef sucht jedes Mal,
53 wenn der Exportfilter benutzt wird, nach diesen Dateien und
54 fügt sie – falls sie gefunden
55 werden – wörtlich vor bzw. nach den einzelnen
56 Einträgen in die Ausgabe ein.</p>
58 <p>Beachten Sie, dass sich diese Dateien in demselben
59 Verzeichnis wie <i>html.layout</i> befinden müssen und die
60 Namensbestandteile <b>.begin</b> bzw. <b>.end</b> enthalten
63 <p>In unserem Beispiel-Exportfilter könnten diese Dateien
64 folgendermaßen aussehen:</p>
66 <p><i>html.begin.layout</i>:<br />
67 <code><HTML><br />
68 <BODY> text="#275856"><br />
69 <basefont size="4" color="#2F4958"
70 face="arial"></code></p>
72 <p><i>html.end.layout</i>:<br />
73 <code></BODY><br />
74 </HTML></code></p>
76 <p>Die Datei <i>html.layout</i> stellt die
77 <i>Standard</i>-Formatvorlage für den Export eines
78 einzelnen Eintrags bereit. Falls Sie unterschiedliche
79 Formatvorlagen für verschiedene Eintragstypen anwenden
80 wollen, müssen Sie Eintrags-spezifische
81 <b>.layout</b>-Dateien erstellen. Diese müssen sich
82 ebenfalls in demselben Verzeichnis wie die Haupt-Layout-Datei
83 befinden und den Namensbestandteil <b>.entrytype</b> enthalten.
84 Der Name des Eintragstyps muss komplett in Kleinbuchstaben
85 geschrieben werden. In unserem Beispiel wollen wir eine
86 Formatvorlage für Einträge des Typs "book" haben, die
87 in der Datei <i>html.book.layout</i> abgelegt wird. Für
88 eine Dissertation würden wir die Datei
89 <i>html.phdthesis.layout</i> anlegen – und so
90 weiter. Diese Dateien sind der Standard-Layout-Datei sehr
91 ähnlich, nur dass sie lediglich für Einträge des
92 entsprechenden Typs genutzt werden. Beachten Sie, dass die
93 Standard-Layout-Datei so allgemein gehalten werden kann, dass
94 sie die meisten Eintragstypen abdeckt.</p>
96 <h3>Das Format der Layout-Datei</h3>
98 <p>Layout-Dateien werden mit
99 einem einfachen markup-Format erstellt, bei dem die Kommandos
100 mit einem "backslash" (<code>\</code>) eingeleitet werden. Alle
101 Textbestandteile, die nicht als Kommando identifiziert werden,
102 gelangen direkt in die Ausgabedatei.</p>
104 <h3>Feldkommandos</h3>
106 <p>Ein beliebiges Wort, vor dem ein backslash steht, z.B.
107 <code>\author</code>, <code>\editor</code>, <code>\title</code>
108 or <code>\year</code>, wird als Verweis auf das entsprechende
109 Feld ausgewertet, das dann direkt in die Ausgabe kopiert
112 <h3>Feldformatierer</h3>
114 <p>Oft muss der Feldinhalt vor der Ausgabe verarbeitet werden.
115 Dies wird mit Hilfe eines <i>Feldformatierers</i> gemacht -
116 einer java class, die eine Methode zur Verarbeitung des
117 Feldinhaltes enthält.</p>
119 <p>Ein Formatierer wird angewendet, indem man das Kommando
120 <code>\format</code> gefolgt vom Namen des Formatierers in
121 eckigen Klammern und dem Feldnamen in geschweiften Klammern
122 einfügt, z.B.:</p>
124 <p><code>\format[ToLowerCase]{\author}</code></p>
126 <p>Sie können auch mehrere Formatierer angeben, getrennt
127 durch Kommas. Sie werden nacheinander aufgerufen, und zwar von
128 links nach rechts. Das Kommando</p>
130 <p><code>\format[ToLowerCase,HTMLChars]{\author}</code></p>
132 <p>ruft z.B. zunächst den Formatierer <b>ToLowerCase</b>
133 auf, <b>HTMLChars</b> formatiert anschließend das
134 Ergebnis. Auf diese Weise können Sie eine beliebige Anzahl
135 an Formatierern auflisten.</p>
137 <p>JabRef bietet die folgenden Formatierer, wobei einige von
138 anderen abhängen:</p>
141 <li><code>HTMLChars</code> : ersetzt TeX-spezifische
142 Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
143 HTML-Entsprechungen und übersetzt die LaTeX-Befehle
144 \emph, \textit, \textbf in ihre HTML-Entsprechungen.</li>
146 <li><code>HTMLParagraphs</code> : interpretiert zwei
147 aufeinanderfolgende Zeilenumbrüche (z.B. \n \n) als
148 Beginn eines neuen Absatzes und erstellt dementsprechend
149 Absatz-HTML-Tags.</li>
151 <li><code>XMLChars</code> : ersetzt TeX-spezifische
152 Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
153 XML-Entsprechungen.</li>
155 <li><code>CreateDocBookAuthors</code> : formatiert das
156 author-Feld im DocBook-Stil.</li>
158 <li><code>CreateDocBookEditors</code> : Dokumentation
161 <li><code>CurrentDate</code> : gibt das aktuelle Datum aus.
162 Ohne Argument gibt dieser Formatierer das aktuelle Datum im
163 Format "JJJJ.MM.TT HH:MM:SS Z" (Datum, Zeit und Zeitzone)
164 aus. Mit einem anderen Format-String als Argument kann das
165 Datum angepasst werden. So ergibt
166 <code>\format[CurrentDate]{yyyy.MM.dd}</code> nur das
167 Datum, z.B. 2005.11.30.</li>
169 <li><code>AuthorFirstFirst</code> : formatiert die Felder
170 author/editor mit den Vornamen zuerst.</li>
172 <li><code>AuthorFirstFirstCommas</code> oder <code>AuthorFirstLastCommas</code> :
173 formatiert die Felder author/editor mit den Vornamen zuerst und abgetrennt
176 <li><code>AuthorFirstLastOxfordCommas</code> : ähnlich wie
177 <code>AuthorFirstLastCommas</code>, außer dass das "and"
178 zwischen den letzten beiden Namen durch ein Komma eingeleitet
181 <li><code>AuthorFirstAbbrLastCommas</code> : formatiert die
182 Felder author/editor mit abgekürzten Vornamen, abgetrennt durch
183 Kommas, mit einem "and" zwischen den letzten beiden Namen.</li>
185 <li><code>AuthorFirstAbbrLastOxfordCommas</code> : ähnlich wie
186 <code>AuthorFirstAbbrLastCommas</code>, außer dass das "and"
187 zwischen den letzten beiden Namen durch ein Komma eingeleitet
190 <li><code>AuthorLastFirst</code> : formatiert die Felder
191 author/editor mit den Nachnamen zuerst.</li>
193 <li><code>AuthorAbbreviator</code> oder <code>AuthorLastFirstAbbreviator</code> :
194 kürzt die Vornamen und mittleren Namen aller Autoren. Dieser Formatierer gibt
195 Nachnamen zuerst aus. Wenn Sie abgekürzte Namen mit vorangestellten Initialen
196 wollen, wenden Sie anschließend den Formatierer <code>AuthorFirstFirst</code> an.</li>
198 <li><code>AuthorLastFirstCommas</code> : formatiert die Felder
199 author/editor mit den Nachnamen zuerst, abgetrennt durch Kommas,
200 mit einem "and" zwischen den letzten beiden Namen.</li>
202 <li><code>AuthorLastFirstOxfordCommas</code> : ähnlich wie
203 <code>AuthorLastFirstCommas</code>, außer dass das "and"
204 zwischen den letzten beiden Namen durch ein Komma eingeleitet
207 <li><code>AuthorLastFirstAbbrCommas</code> : formatiert die Felder
208 author/editor mit Nachnamen zuerst und abgekürzten Vornamen,
209 abgetrennt durch Kommas, mit einem "and" zwischen den letzten
212 <li><code>AuthorLastFirstAbbrOxfordCommas</code> : ähnlich wie
213 <code>AuthorLastFirstAbbrCommas</code>, außer dass das "and"
214 zwischen den letzten beiden Namen durch ein Komma eingeleitet
217 <li><code>AuthorAndsReplacer</code> : ersetzt "and"
218 zwischen den Namen durch ";", zwischen den letzten beiden
219 Autoren steht "&".</li>
221 <li><code>AuthorAndsCommaReplacer</code> : ersetzt "and"
222 zwischen den Namen durch "," sowie "&" zwischen den
225 <li><code>AuthorOrgSci</code> : Der erste Autor erscheint
226 als "Nachname, Vorname", alle anderen als "Vorname
227 Nachname". Vornamen werden abgekürzt.</li>
229 <li><code>AuthorAbbreviator</code> : Dokumentation
232 <li><code>AuthorNatBib</code> : formatiert Autorennamen im
233 Natbib-Stil, also nur mit Nachnamen; zwei Autoren werden
234 durch ein "and" voneinander getrennt, bei mehr als zwei
235 Autoren wird der erste angegeben, gefolgt von "et al."</li>
237 <li><code>NoSpaceBetweenAbbreviations</code> : Leerzeichen
238 zwischen mehreren abgekürzten Vornamen werden
241 <li><code>FileLink(Dateityp)</code> : wenn kein Argument angegeben
242 wird, gibt dieser Formatierer den ersten externen Dateityp aus, der
243 in dem Feld "file" angegeben ist.
244 <p>Dieser Formatierer nimmt den Namen eines Dateityps als optionales
245 Argument, das in Klammern nach dem Namen des Formatierers angegeben
246 wird. Zum Beispiel wird mit <code>\format[FileLink(pdf)]{\file}</code>
247 der Dateityp <code>pdf</code> als Argument angegeben. Wenn ein Argument
248 mitgegeben wird, wählt der Formatierer den ersten Dateilink des
249 entsprechenden Typs. Im Beispiel wird der Pfad zum ersten PDF-Link
252 <li><code>FormatPagesForHTML</code> : ersetzt "--" durch
255 <li><code>FormatPagesForXML</code> : ersetzt "--" durch
256 einen XML en-dash (Gedanken- bzw. Bis-Strich).</li>
258 <li><code>Replace(regexp,ersetzedurch)</code> : führt eine Ersetzung
259 mit einem Regulären Ausdruck durch. Um diesen Formatierer zu
260 benutzen, muss ein zweiteiliges Argument mitgegeben werden. Die Teile
261 werden durch ein Komma getrennt. Will man ein Komma ausgeben lassen,
262 muss man es maskieren: \,
263 <p>Der erste Teil ist der Reguläre Ausdruck, nach dem gesucht wird.
264 Er wird normal geschrieben, ohne Backslashes (\) zu maskieren.
265 Eine Beschreibung von Regulären Ausdrücken ist hier zu finden:<br />
266 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html</p>
267 <p>Der zweite Teil ist der Text, der für alle Treffer eingesetzt
268 werden soll.</p></li>
270 <li><code>RemoveBrackets</code> : entfernt alle
271 geschweiften Klammern "{" oder "}".</li>
273 <li><code>RemoveBracketsAddComma</code> : Dokumentation
276 <li><code>RemoveWhitespace</code> : löscht alle Leerzeichen.</li>
278 <li><code>RemoveLatexCommands</code> : entfernt LaTeX
279 Kommandos wie <code>\emph</code>, <code>\textbf</code> etc.
280 Zusammen mit <code>HTMLChars</code> oder
281 <code>XMLChars</code> sollte dieser Formatierer zuletzt
282 aufgerufen werden.</li>
284 <li><code>RemoveTilde</code> : ersetzt das Tilde-Zeichen
285 (~), das in LaTeX als festes Leerzeichen dient, durch ein
286 normales Leerzeichen. Nützlich in Kombination mit dem
287 <a href="#NameFormatter">Namens-Formatierer</a>, der im
288 nächsten Abschnitt beschrieben wird.</li>
290 <li><code>ToLowerCase</code> : macht aus allen Buchstaben
291 Kleinbuchstaben.</li>
293 <li><code>ToUpperCase</code> : macht aus allen Buchstaben
294 Großbuchstaben.</li>
296 <li><code>GetOpenOfficeType</code> : gibt die Nummer wieder,
297 die vom bibliographischen System von OpenOffice.org (Versionen
298 1.x und 2.x) benutzt wird, um den Typ dieses Eintrags zu
301 <li><code>RTFChars</code> : ersetzt alle TeX-spezifischen
302 Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
303 RTF-Entsprechung und übersetzt LaTeX-Befehle wie \emph, \textit,
304 \textbf in ihre RTF-Entsprechungen.</li>
308 <p>Falls keiner der verfügbaren Formatierer das Ergebnis
309 erzielt, das Sie erreichen möchten, können Sie Ihren
310 eigenen Formatierer hinzufügen, indem Sie das
311 <code>net.sf.jabref.export.layout.LayoutFormatter</code>-Interface
312 implementieren. Wenn Sie Ihre Klasse (class) in das Paket
313 <code>net.sf.jabref.export.layout.format</code> einfügen,
314 können Sie den Formatierer mit seinem Klassennamen
315 aufrufen, so wie auch die Standard-Formatierer. Ansonsten
316 müssen Sie den Formatierer mit seinem vollen Namen
317 aufrufen (inklusive Paketname). In jedem Fall muss der
318 Formatierer in ihrem classpath sein, wenn Sie JabRef
321 <h2><a name="NameFormatter"
322 id="NameFormatter">Eigene Namens-Formatierer
325 <p>Mit JabRef 2.2 ist es jetzt möglich, eigene
326 Namens-Formatierer zu definieren. Dazu wird die Syntax der
327 Bibliographie-Stile (bst) verwendet. Das erlaubt
328 äußerste Flexibilität, ist allerdings
329 aufwändig in der Schreibweise.</p>
331 <p>Sie können unter <strong>Optionen -> Einstellungen
332 -> Namens-Formatierer</strong> Ihren eigenen Formatierer
333 schreiben. Benutzen Sie das folgende Format:
334 <code><Fall1>@<Bereich11>@<Format>@<Bereich12>@<Format>@<Bereich13>...@@<br />
336 <Fall2>@<Bereich21>@... und so weiter.</code></p>
338 <p>Dieses Format teilt die Aufgabe, eine Liste von Autoren zu
339 formatieren, in unterschiedliche Fälle abhängig von
340 der Zahl der Autoren (das ist nötig, weil manche Formate
341 sich je nach der Zahl der Autoren unterscheiden). Die einzelnen
342 Fälle werden durch <code>@@</code> voneinander getrennt
343 und enthalten Anweisungen, wie jeder einzelne Autor in diesem
344 Fall zu formatieren ist. Diese Anweisungen werden durch
345 <code>@</code> getrennt.</p>
347 <p>Fälle werden durch Ganzzahlen (1, 2, 3, etc.) oder das
348 Zeichen <code>*</code> (alle Autoren) definiert. Sie geben die
349 nachfolgenden Anweisungen an den Formatierer weiter, falls
350 weniger oder gleich viele Autoren vorhanden sind.</p>
352 <p>Bereiche sind entweder
353 <code><Ganzzahl>..<Ganzzahl></code>,
354 <code><Ganzzahl></code> oder das Zeichen <code>*</code>.
355 Die Liste der Autoren fängt bei 1 an. Die Ganzzahlen
356 können einen negativen Wert haben, um vom letzten Autor
357 der Liste zu starten, wobei -1 der Wert für den letzten
360 <p>Als Beispiel dient die Autorenliste "Joe Doe and Mary Jane
361 and Bruce Bar and Arthur Kay":</p>
364 <li>1..3 betrifft Joe, Mary und Bruce</li>
366 <li>4..4 betrifft Arthur</li>
368 <li>* betrifft alle</li>
370 <li>2..-1 betrifft Mary, Bruce und Arthur</li>
373 <p>Die <code><Format></code>-Strings nutzen das
374 BibTeX-Namensschema:</p>
376 <p>Die vier Buchstaben v, f, l, j stehen für die
377 Namensteile von, Vorname (first), Nachname (last) und Junior
378 und werden in geschweiften Klammern gesetzt. Ein einzelner
379 Buchstabe v, f, l, j bedeutet, dass der Name abgekürzt
380 werden soll. Wenn einer dieser Buchstaben oder Buchstabenpaare
381 vorkommen, gibt JabRef alle entsprechenden Namen (eventuell
382 abgekürzt) aus, aber der Ausdruck in geschweiften Klammern
383 wird nur ausgegeben, wenn der Namensteil existiert.</p>
385 <p>Beispielsweise wird beim Format "{ll} {vv {von Part}} {ff}"
386 die Autorenliste "Mary Kay and John von Neumann" von JabRef als
387 "Kay Mary" (mit zwei Leerzeichen) und "Neumann von von Part
388 John" ausgegeben.</p>
390 <p>Zwei weitere Beispiele sollen das Ganze verdeutlichen; die
391 BibTeX-Dokumentation gibt weitere Hinweise.</p>
393 <p>Kurzes Beispiel: <code>"{ll}, {f.}"</code> formatiert
394 <code>"Joe Doe"</code> als <code>"Doe, J."</code></p>
396 <p>Ausführliches Beispiel:</p>
401 <p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur
406 <p><code>"Doe, J., Jane, M., Bar, B. and Kay,
409 <p>zu formatieren, nutzt man</p>
411 <p><code>1@*@{ll}, {f}.@@2@1@{ll}, {f}.@2@ and {ll},
412 {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-1@ and {ll},
416 <p>Falls jemand eine bessere Dokumentation hierzu verfassen
417 möchte: Wenden Sie sich einfach an die
418 JabRef-Maililnglisten!</p>
420 <h3>Bedingte Ausgabe</h3>
422 <p>Manche statische Ausgabe macht nur
423 Sinn, wenn ein bestimmtes Feld nicht leer ist. Wenn wir z.B.
424 hinter den Namen der Editoren den Text <code>(Hrsg.)</code>
425 haben wollen, brauchen wir folgendes:</p>
427 <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor}
430 <p>Wenn nun aber das <code>editor</code>-Feld leer ist -
431 möglicherweise ist es für den Eintrag, der exportiert
432 werden soll, nicht erforderlich -, dann würde das
433 <code>(Hrsg.)</code> dennoch erscheinen. Das kann man mit den
434 Kommandos <code>\begin</code> und <code>\end</code>
437 <p><code>\begin{editor}<br />
438 \format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)<br />
439 \end{editor}</code></p>
441 <p>Die Kommandos <code>\begin</code> und <code>\end</code>
442 sorgen dafür, dass der Text, den sie einschließen,
443 nur dann ausgegeben wird, falls das Feld, auf das in den
444 geschweiften Klammern verwiesen wird, für den zu
445 exportierenden Eintrag definiert und damit nicht leer ist.</p>
447 <p><b>Anmerkung:</b> Das Benutzen der Kommandos
448 <code>\begin</code> und <code>\end</code> ist ein
449 Schlüssel zum Erstellen von Layout-Dateien, die mit einer
450 Vielzahl von Eintragstypen umgehen können.</p>
452 <h3>Gruppierte Ausgabe</h3>
454 <p>Wenn Sie Ihre Einträge auf der
455 Basis eines bestimmten Feldes gruppieren wollen, benutzen Sie
456 die Kommandos für die gruppierte Ausgabe. Die gruppierte
457 Ausgabe ist der bedingten Ausgabe sehr ähnlich, auß
458 dass der Text zwischen den Kommandos nur ausgegeben wird, wenn
459 das Feld, auf das in den geschweiften Klammern verwiesen wird,
460 unterschiedliche Werte enthält.</p>
462 <p>Nehmen wir zum Beispiel an, dass wir die Ausgabe nach dem
463 keyword (Stichwort) gruppieren wollen. Bevor die Datei
464 exportiert wird, müssen die Einträge nach dem keyword
465 sortiert worden sein. Dann benutzen Sie die folgenden
466 Kommandos, um nach keyword zu gruppieren:</p>
468 <p><code>\begingroup{keywords}New Category:
469 \format[HTMLChars]{\keywords}<br />
470 \endgroup{keywords}</code></p>
472 <h2>Teilen Sie Ihre Arbeit mit anderen</h2>
475 Layout-Dateien ist es einfach, Ihre eigenen Export-Formate mit
476 anderen Anwendern gemeinsam zu benutzen. Falls Sie einen
477 Exportfilter für ein Format erstellen, das nicht von
478 JabRef unterstützt wird, oder falls Sie einen bestehenden
479 Exportfilter verbessern, möchten wir Sie ermutigen, Ihre
480 Arbeit auf der SourceForge.net-Seite bereitzustellen. Dasselbe
481 gilt für Formatierklassen, die Sie schreiben. Wir
482 würden uns freuen, eine Sammlung von bereitgestellten
483 Layout-Dateien verteilen zu können oder die
484 Standard-Export-Filter und Standard-Formatierer zu erweitern.</p>