von GreenFM » Di, 28.09.2010 17:42
Ich kann an dieser Stelle einen Erfolg vermelden. Mittlerweile habe ich eine sehr gute Literaturverwaltung für meine Dissertation mit dem Gespann Jabref 2.6 und OpenOffice Writer 3.2.1 hinbekommen - und zwar vollständig individuell konfiguriert und ohne Nutzung des Ooo-Plugins von Jabref.
Entscheidend war, dass ich als Dateiendung im Exportfilter ".csv" statt ".ods" gewählt habe.
Hier die Schritte, die letztendlich zum Erfolg geführt haben:
1. Eine aufsteigende Numerierung der Literatur mit Einfügen der entsprechenden Zitate als Nummern in den Text ([1] etc.) lässt sich einfacher realisieren als das Zitatfomat "Autor Jahr" o. ä.
2. Die Formatierung der Autorenliste (für das Literaturverzeichnis) erfolgt zum allergrößten Teil mittels eines Namens-Formatierers in Jabref, den ich unter "Optionen" -> "Einstellungen" -> "Namens-Formatierer" definiert habe. Bei mir sieht dieser wie folgt aus:
Code: Alles auswählen
1@*@{vv }{ll, }{f.}{, jj}@@2@1@{vv }{ll, }{f.}{, jj}@2@ und {vv }{ll, }{f.}{, jj}@@3@1@{vv }{ll, }{f.}{, jj}@2@; {vv }{ll, }{f.}{, jj}@3@ und {vv }{ll, }{f.}{, jj}@@4@1@{vv }{ll, }{f.}{, jj}@2..3@; {vv }{ll, }{f.}{, jj}@4@ und {vv }{ll, }{f.}{, jj}@@5@1@{vv }{ll, }{f.}{, jj}@2..4@; {vv }{ll, }{f.}{, jj}@5@ und {vv }{ll, }{f.}{, jj}@@6@1@{vv }{ll, }{f.}{, jj}@2..5@; {vv }{ll, }{f.}{, jj}@6@ und {vv }{ll, }{f.}{, jj}@@7@1@{vv }{ll, }{f.}{, jj}@2..6@; {vv }{ll, }{f.}{, jj}@7@ und {vv }{ll, }{f.}{, jj}@@8@1@{vv }{ll, }{f.}{, jj}@2..7@; {vv }{ll, }{f.}{, jj}@8@ und {vv }{ll, }{f.}{, jj}@@9@1@{vv }{ll, }{f.}{, jj}@2..8@; {vv }{ll, }{f.}{, jj}@9@ und {vv }{ll, }{f.}{, jj}@@10@1@{vv }{ll, }{f.}{, jj}@2..9@; {vv }{ll, }{f.}{, jj}@10@ und {vv }{ll, }{f.}{, jj}@@11@1@{vv }{ll, }{f.}{, jj}@2..10@; {vv }{ll, }{f.}{, jj}@11@ und {vv }{ll, }{f.}{, jj}@@12@1@{vv }{ll, }{f.}{, jj}@2..11@; {vv }{ll, }{f.}{, jj}@12@ und {vv }{ll, }{f.}{, jj}@@*@1..10@{vv }{ll, }{f.}{, jj}; @11@{vv }{ll, }{f.}{, jj} @12@et al.
Das geht sicher auch einfacher - bei mir war eine möglichst vollständige Auflistung der Autoren das Ziel, ohne dass aber das Literaturverzeichnis durch Artikel mit teilweise über 25 Autoren unnötig aufgebläht wird.
Der Namens-Formatierer unterscheidet insgesamt 13 Fälle (ein Autor bis zwölf Autoren und mehr als zwölf Autoren), wobei bis zu zwölf Autoren vollständig genannt werden, bei mehr als zwölf werden die ersten elf genannt und "et al." angehängt. Ich habe das Format "von (falls vorhanden), Nachname, abgekürzter Vorname mit Punkt, Junior (falls vorhanden)" gewählt. Das Format lässt sich nach dieser Beschreibung leicht modifizieren:
http://jabref.sourceforge.net/help/de/C ... eFormatter
Der "große" Namensformatierer hat bei mir die Bezeichnung "Autoren" bekommen. Daneben habe ich noch einen zweiten Namensformatierer definiert, um Literaturstellen besser mit dem Nachnamen des Erstautors und Jahr zitieren zu können (s. unten). Dieser hat den Namen "Erstautornachname" und sieht so aus:
Die Syntax der Namensformatierer ist zunächst etwas schwer zu durchschauen - immer hinter "@@" fängt ein neuer Fall, sprich eine neue Anzahl von Autoren an. Zunächst steht da einfach die Zahl der Autoren mit einem weiteren @ dahinter (*@ für alle weiteren Fälle, d. h. mehr Autoren). Dann kommt der erste "Bereich", meist eine "1" für Autor Nr. 1, dann wieder ein @. Danach die Einzelkomponenten des Namens (v für von, l für last name, f für forename, j für junior). Dann wieder ein @, dann folgt der nächste "Bereich" (meist Autor Nr. 2 bis x) usw. Bei meinem Beispiel kommt eine durch Semikola getrennte Autorenliste raus, vor dem letzten Autor steht statt des Semikolons "und", bei sehr vielen Autoren werden die hinteren durch "et al." ersetzt.
3. Ich habe einen externen Exportfilter nach einem Muster aus dem Jabref-Sourcecode verwendet und modizifiert, und zwar aus folgender Quelle:
http://jabref.svn.sourceforge.net/viewv ... penoffice/
Die beiden ".layout"-Dateien von dort (openoffice-csv.layout und openoffice-csv.begin.layout) habe ich für meine Zwecke in diss-csv.layout und diss-csv.begin.layout umbenannt.
Der Exportfilter wird dann folgendermaßen integriert:
"Optionen" -> "Verwalte externe Exportfilter" -> "Neu"
Der Filter kann beliebig benannt werden, man sollte einen dem Zweck entsprechenden Namen wählen, falls man mit mehreren verschiedenen Exportfiltern arbeiten möchte. Als Haupt-Layoutdatei wählt man diejenige ohne "begin" im Namen (bei mir diss-csv.layout), als Dateiendung .csv.
Die .layout-Dateien selbst musste ich vor allem umsortieren, da die Reihenfolge der Felder nicht (mehr?) derjenigen des aktuellen .ods-Exportfilters von Jabref entspricht (habe einfach die .ods-Datei, die Jabref selbst erstellt hat, mit der .csv-Datei aus dem externen Exportfilter verglichen). Das führte dann zu Problemen beim Einbinden der Literaturdatenbank in OpenOffice.
Es ist mir hingegen nicht gelungen, den .ods-Export von Jabref in irgend einer Weise zu modifizieren - daher der Umweg über die .csv-Datei.
So sahen meine beiden .layout-Dateien zum Schluss aus - diss-csv.begin.layout (hier werden zunächst die Feldnamen definiert):
Code: Alles auswählen
Identifier,Type,Address,Annote,Author,Booktitle,Chapter,Edition,Editor,Howpublish,Institutn,Journal,Month,Note,Number,Organizat,Pages,Publisher,School,Series,Title,RepType,Volume,Year,URL,Custom1,Custom2,Custom3,Custom4,Custom5,ISBN
diss-csv.layout (hier der eigentliche Export der Daten):
Code: Alles auswählen
"\format[Erstautornachname]{\author} \year",\format[GetOpenOfficeType]{\bibtextype},"\address","\annote","\format[Autoren,RemoveTilde]{\author}","\booktitle","\chapter","\edition","\format[AuthorLastFirst,AuthorAndsReplacer]{\editor}","\howpublished","\institution","\journal","\month","\note",\number,"\organization","\format[FormatPagesForHTML]{\pages}","\publisher","\school","\series","\format[RemoveBrackets,RemoveWhitespace]{\title}","\begin{reporttype}\reporttype\end{reporttype}",\volume,\year,"\url","\bibtexkey","\comment",,"\format[ResolvePDF]{\pdf}","\key","\begin{isbn}\isbn\end{isbn}"
Die .layout-Dateien lassen sich mit einem simplem Texteditor bearbeiten.
In das Feld "Custom1" habe ich den Bibtexkey übernommen, um damit später noch zu arbeiten (s. unten). Ich habe den Bibtexkey nicht als Identifier verwendet, weil dieser keine Leerzeichen enthalten darf. Ich wollte die Literaturstellen im Text aber nach dem Muster "(Petermeier 2008)" zitieren. Bei mehreren zitierten Arbeiten eines Autors aus dem selben Jahr wollte ich zwischen dem Jahr und dem a/b/c ebenfalls ein Leerzeichen haben. Trotzdem war der Bibtexkey für mich später in OpenOffice noch hilfreich, um eben diesen mehrfachen Arbeiten eines Autors aus dem selben Jahr wieder einen eindeutigen Identifier zu geben.
Als Identifier habe ich eine Kombination aus dem oben definierten Namens-Formatierer "Erstautornachname" und dem Erscheinungsjahr verwendet, um diesen Identifier später auch als Format des Literaturzitats in OpenOffice Writer verwendet zu können.
4. Literaturdatenbank mit "Datei" -> "Exportieren" in dem selbst definierten Format speichern (letzteres lässt sich dann als Dateityp auswählen).
5. Die generierte .csv-Datei mit OpenOffice Calc öffnen. Zunächst erscheint dabei eine Textimport-Dialogbox. Hier ist es jetzt offenbar wichtig, die "Type"-Spalte als Text zu importieren, damit OpenOffice Writer später die Art des Literaturverzeichniseintrags richtig übernimmt. Diesen Hinweis hatte ich hier gefunden:
http://www.ooowiki.de/LiteraturVerwaltu ... _verwenden
Bei der Seitenzahl gab es auch Probleme - da wurden einige Seitenzahlen beim Import in ein Datum umgewandelt. Das ließ sich ebenfalls durch den Import als Text umgehen.
Ich habe daher der Einfachheit halber in eine Zelle der Tabellen-Vorschau geklickt, mit Strg+A alle Zellen markiert und als Spaltentyp "Text" ausgewählt - so ließen sich gleich mehrere Probleme auf einmal lösen, ohne dass neue entstanden sind.
6. Das aktuelle Tabellenblatt von "Tabelle 1" in "biblio" umbenennen. Ich erledige das mit einem OpenOffice-Basic-Makro, das gleich noch einige andere Aufgaben hat (unter anderem doppelt vergebene "Identifier" anhand des Bibtex-Keys finden und korrigieren, doppelte Bindestriche durch Halbgeviertstriche ersetzen und den Eintragstyp 9 in 11 umwandeln, da sonst die Dissertationen in meinem Literaturverzeichnis unter Diplomarbeiten geführt werden):
Code: Alles auswählen
sub LitDBDissoptimieren
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
dim bibtexkey as string
dim bibtexlength as integer
dim expectedidentifier as string
dim currentidentifier as string
dim newidentifier as string
dim currentline as integer
dim args1(0) as new com.sun.star.beans.PropertyValue
dim args2(17) as new com.sun.star.beans.PropertyValue
dim args3(0) as new com.sun.star.beans.PropertyValue
dim args4(1) as new com.sun.star.beans.PropertyValue
dim args5(17) as new com.sun.star.beans.PropertyValue
dim args6(0) as new com.sun.star.beans.PropertyValue
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem rename literature table to biblio
args1(0).Name = "Name"
args1(0).Value = "biblio"
dispatcher.executeDispatch(document, ".uno:RenameTable", "", 0, args1())
rem ----------------------------------------------------------------------
rem search for non unique identifiers and replace them by bibtexkey
currentline = 1
Do
bibtexkey = thisComponent.sheets(0).getCellByPosition(25,currentline).getString
If bibtexkey = "" Then
Exit Do
End If
bibtexlength = len(bibtexkey)
expectedidentifier = left(bibtexkey,(bibtexlength-4)) & " " & right(bibtexkey,4)
currentidentifier = thisComponent.sheets(0).getCellByPosition(0,currentline).getString
If currentidentifier = expectedidentifier Then
currentline = currentline + 1
Else
If right(bibtexkey,4) = right(currentidentifier,4) Then
currentline = currentline + 1
Else
newidentifier = left(bibtexkey,(bibtexlength-5)) & " " & mid(bibtexkey,(bibtexlength-4),4) & " " & right(bibtexkey,1)
thisComponent.sheets(0).getCellByPosition(0,currentline).String = newidentifier
currentline = currentline + 1
End If
End If
Loop
rem ----------------------------------------------------------------------
rem search for double dashes and replace them by long dashes
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 0
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = true
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.Backward"
args2(4).Value = false
args2(5).Name = "SearchItem.Pattern"
args2(5).Value = false
args2(6).Name = "SearchItem.Content"
args2(6).Value = false
args2(7).Name = "SearchItem.AsianOptions"
args2(7).Value = false
args2(8).Name = "SearchItem.AlgorithmType"
args2(8).Value = 1
args2(9).Name = "SearchItem.SearchFlags"
args2(9).Value = 65536
args2(10).Name = "SearchItem.SearchString"
args2(10).Value = "--"
args2(11).Name = "SearchItem.ReplaceString"
args2(11).Value = " "&chr(8211)&" "
args2(12).Name = "SearchItem.Locale"
args2(12).Value = 255
args2(13).Name = "SearchItem.ChangedChars"
args2(13).Value = 2
args2(14).Name = "SearchItem.DeletedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.InsertedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.TransliterateFlags"
args2(16).Value = 1280
args2(17).Name = "SearchItem.Command"
args2(17).Value = 3
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
rem ----------------------------------------------------------------------
rem search for entry type 9 and replace it by entry type 11 in column b
args3(0).Name = "ToPoint"
args3(0).Value = "$B$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
args4(0).Name = "By"
args4(0).Value = 10000
args4(1).Name = "Sel"
args4(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args4()
args5(0).Name = "SearchItem.StyleFamily"
args5(0).Value = 2
args5(1).Name = "SearchItem.CellType"
args5(1).Value = 0
args5(2).Name = "SearchItem.RowDirection"
args5(2).Value = true
args5(3).Name = "SearchItem.AllTables"
args5(3).Value = false
args5(4).Name = "SearchItem.Backward"
args5(4).Value = false
args5(5).Name = "SearchItem.Pattern"
args5(5).Value = false
args5(6).Name = "SearchItem.Content"
args5(6).Value = false
args5(7).Name = "SearchItem.AsianOptions"
args5(7).Value = false
args5(8).Name = "SearchItem.AlgorithmType"
args5(8).Value = 1
args5(9).Name = "SearchItem.SearchFlags"
args5(9).Value = 71680
args5(10).Name = "SearchItem.SearchString"
args5(10).Value = "9"
args5(11).Name = "SearchItem.ReplaceString"
args5(11).Value = "'11"
args5(12).Name = "SearchItem.Locale"
args5(12).Value = 255
args5(13).Name = "SearchItem.ChangedChars"
args5(13).Value = 2
args5(14).Name = "SearchItem.DeletedChars"
args5(14).Value = 2
args5(15).Name = "SearchItem.InsertedChars"
args5(15).Value = 2
args5(16).Name = "SearchItem.TransliterateFlags"
args5(16).Value = 1280
args5(17).Name = "SearchItem.Command"
args5(17).Value = 3
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args5())
args6(0).Name = "ToPoint"
args6(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())
end sub
7. Die Literaturtabelle mit "Speichern unter..." im .ods-Format abspeichern. Dabei kann man idealerweise die .ods-Datei überschreiben, die man bereits vorher direkt aus Jabref heraus mit Bordmitteln generiert hatte, um die Literaturdatenbank in OpenOffice Writer zu übertragen (ich denke, bis zu diesem Punkt waren bereits alle hier Mitlesenden selbst gekommen). Nun kann man die Literaturdatenbank in Writer unmittelbar über "Extras" aufrufen (einige Male musste ich in dem Dropdown-Menü links oben noch die Tabelle "biblio" auswählen).
Ich kann an dieser Stelle einen Erfolg vermelden. Mittlerweile habe ich eine sehr gute Literaturverwaltung für meine Dissertation mit dem Gespann Jabref 2.6 und OpenOffice Writer 3.2.1 hinbekommen - und zwar vollständig individuell konfiguriert und ohne Nutzung des Ooo-Plugins von Jabref.
Entscheidend war, dass ich als Dateiendung im Exportfilter ".csv" statt ".ods" gewählt habe.
Hier die Schritte, die letztendlich zum Erfolg geführt haben:
1. Eine aufsteigende Numerierung der Literatur mit Einfügen der entsprechenden Zitate als Nummern in den Text ([1] etc.) lässt sich einfacher realisieren als das Zitatfomat "Autor Jahr" o. ä.
2. Die Formatierung der Autorenliste (für das Literaturverzeichnis) erfolgt zum allergrößten Teil mittels eines Namens-Formatierers in Jabref, den ich unter "Optionen" -> "Einstellungen" -> "Namens-Formatierer" definiert habe. Bei mir sieht dieser wie folgt aus:
[code]1@*@{vv }{ll, }{f.}{, jj}@@2@1@{vv }{ll, }{f.}{, jj}@2@ und {vv }{ll, }{f.}{, jj}@@3@1@{vv }{ll, }{f.}{, jj}@2@; {vv }{ll, }{f.}{, jj}@3@ und {vv }{ll, }{f.}{, jj}@@4@1@{vv }{ll, }{f.}{, jj}@2..3@; {vv }{ll, }{f.}{, jj}@4@ und {vv }{ll, }{f.}{, jj}@@5@1@{vv }{ll, }{f.}{, jj}@2..4@; {vv }{ll, }{f.}{, jj}@5@ und {vv }{ll, }{f.}{, jj}@@6@1@{vv }{ll, }{f.}{, jj}@2..5@; {vv }{ll, }{f.}{, jj}@6@ und {vv }{ll, }{f.}{, jj}@@7@1@{vv }{ll, }{f.}{, jj}@2..6@; {vv }{ll, }{f.}{, jj}@7@ und {vv }{ll, }{f.}{, jj}@@8@1@{vv }{ll, }{f.}{, jj}@2..7@; {vv }{ll, }{f.}{, jj}@8@ und {vv }{ll, }{f.}{, jj}@@9@1@{vv }{ll, }{f.}{, jj}@2..8@; {vv }{ll, }{f.}{, jj}@9@ und {vv }{ll, }{f.}{, jj}@@10@1@{vv }{ll, }{f.}{, jj}@2..9@; {vv }{ll, }{f.}{, jj}@10@ und {vv }{ll, }{f.}{, jj}@@11@1@{vv }{ll, }{f.}{, jj}@2..10@; {vv }{ll, }{f.}{, jj}@11@ und {vv }{ll, }{f.}{, jj}@@12@1@{vv }{ll, }{f.}{, jj}@2..11@; {vv }{ll, }{f.}{, jj}@12@ und {vv }{ll, }{f.}{, jj}@@*@1..10@{vv }{ll, }{f.}{, jj}; @11@{vv }{ll, }{f.}{, jj} @12@et al.[/code]
Das geht sicher auch einfacher - bei mir war eine möglichst vollständige Auflistung der Autoren das Ziel, ohne dass aber das Literaturverzeichnis durch Artikel mit teilweise über 25 Autoren unnötig aufgebläht wird.
Der Namens-Formatierer unterscheidet insgesamt 13 Fälle (ein Autor bis zwölf Autoren und mehr als zwölf Autoren), wobei bis zu zwölf Autoren vollständig genannt werden, bei mehr als zwölf werden die ersten elf genannt und "et al." angehängt. Ich habe das Format "von (falls vorhanden), Nachname, abgekürzter Vorname mit Punkt, Junior (falls vorhanden)" gewählt. Das Format lässt sich nach dieser Beschreibung leicht modifizieren:
[url]http://jabref.sourceforge.net/help/de/CustomExports.php#NameFormatter[/url]
Der "große" Namensformatierer hat bei mir die Bezeichnung "Autoren" bekommen. Daneben habe ich noch einen zweiten Namensformatierer definiert, um Literaturstellen besser mit dem Nachnamen des Erstautors und Jahr zitieren zu können (s. unten). Dieser hat den Namen "Erstautornachname" und sieht so aus:
[code]*@1@{ll}[/code]
Die Syntax der Namensformatierer ist zunächst etwas schwer zu durchschauen - immer hinter "@@" fängt ein neuer Fall, sprich eine neue Anzahl von Autoren an. Zunächst steht da einfach die Zahl der Autoren mit einem weiteren @ dahinter (*@ für alle weiteren Fälle, d. h. mehr Autoren). Dann kommt der erste "Bereich", meist eine "1" für Autor Nr. 1, dann wieder ein @. Danach die Einzelkomponenten des Namens (v für von, l für last name, f für forename, j für junior). Dann wieder ein @, dann folgt der nächste "Bereich" (meist Autor Nr. 2 bis x) usw. Bei meinem Beispiel kommt eine durch Semikola getrennte Autorenliste raus, vor dem letzten Autor steht statt des Semikolons "und", bei sehr vielen Autoren werden die hinteren durch "et al." ersetzt.
3. Ich habe einen externen Exportfilter nach einem Muster aus dem Jabref-Sourcecode verwendet und modizifiert, und zwar aus folgender Quelle:
[url]http://jabref.svn.sourceforge.net/viewvc/jabref/trunk/jabref/src/resource/layout/openoffice/[/url]
Die beiden ".layout"-Dateien von dort (openoffice-csv.layout und openoffice-csv.begin.layout) habe ich für meine Zwecke in diss-csv.layout und diss-csv.begin.layout umbenannt.
Der Exportfilter wird dann folgendermaßen integriert:
"Optionen" -> "Verwalte externe Exportfilter" -> "Neu"
Der Filter kann beliebig benannt werden, man sollte einen dem Zweck entsprechenden Namen wählen, falls man mit mehreren verschiedenen Exportfiltern arbeiten möchte. Als Haupt-Layoutdatei wählt man diejenige ohne "begin" im Namen (bei mir diss-csv.layout), als Dateiendung .csv.
Die .layout-Dateien selbst musste ich vor allem umsortieren, da die Reihenfolge der Felder nicht (mehr?) derjenigen des aktuellen .ods-Exportfilters von Jabref entspricht (habe einfach die .ods-Datei, die Jabref selbst erstellt hat, mit der .csv-Datei aus dem externen Exportfilter verglichen). Das führte dann zu Problemen beim Einbinden der Literaturdatenbank in OpenOffice.
Es ist mir hingegen nicht gelungen, den .ods-Export von Jabref in irgend einer Weise zu modifizieren - daher der Umweg über die .csv-Datei.
So sahen meine beiden .layout-Dateien zum Schluss aus - diss-csv.begin.layout (hier werden zunächst die Feldnamen definiert):
[code]Identifier,Type,Address,Annote,Author,Booktitle,Chapter,Edition,Editor,Howpublish,Institutn,Journal,Month,Note,Number,Organizat,Pages,Publisher,School,Series,Title,RepType,Volume,Year,URL,Custom1,Custom2,Custom3,Custom4,Custom5,ISBN[/code]
diss-csv.layout (hier der eigentliche Export der Daten):
[code]"\format[Erstautornachname]{\author} \year",\format[GetOpenOfficeType]{\bibtextype},"\address","\annote","\format[Autoren,RemoveTilde]{\author}","\booktitle","\chapter","\edition","\format[AuthorLastFirst,AuthorAndsReplacer]{\editor}","\howpublished","\institution","\journal","\month","\note",\number,"\organization","\format[FormatPagesForHTML]{\pages}","\publisher","\school","\series","\format[RemoveBrackets,RemoveWhitespace]{\title}","\begin{reporttype}\reporttype\end{reporttype}",\volume,\year,"\url","\bibtexkey","\comment",,"\format[ResolvePDF]{\pdf}","\key","\begin{isbn}\isbn\end{isbn}"[/code]
Die .layout-Dateien lassen sich mit einem simplem Texteditor bearbeiten.
In das Feld "Custom1" habe ich den Bibtexkey übernommen, um damit später noch zu arbeiten (s. unten). Ich habe den Bibtexkey nicht als Identifier verwendet, weil dieser keine Leerzeichen enthalten darf. Ich wollte die Literaturstellen im Text aber nach dem Muster "(Petermeier 2008)" zitieren. Bei mehreren zitierten Arbeiten eines Autors aus dem selben Jahr wollte ich zwischen dem Jahr und dem a/b/c ebenfalls ein Leerzeichen haben. Trotzdem war der Bibtexkey für mich später in OpenOffice noch hilfreich, um eben diesen mehrfachen Arbeiten eines Autors aus dem selben Jahr wieder einen eindeutigen Identifier zu geben.
Als Identifier habe ich eine Kombination aus dem oben definierten Namens-Formatierer "Erstautornachname" und dem Erscheinungsjahr verwendet, um diesen Identifier später auch als Format des Literaturzitats in OpenOffice Writer verwendet zu können.
4. Literaturdatenbank mit "Datei" -> "Exportieren" in dem selbst definierten Format speichern (letzteres lässt sich dann als Dateityp auswählen).
5. Die generierte .csv-Datei mit OpenOffice Calc öffnen. Zunächst erscheint dabei eine Textimport-Dialogbox. Hier ist es jetzt offenbar wichtig, die "Type"-Spalte als Text zu importieren, damit OpenOffice Writer später die Art des Literaturverzeichniseintrags richtig übernimmt. Diesen Hinweis hatte ich hier gefunden:
[url]http://www.ooowiki.de/LiteraturVerwaltung#Eine_externe_Datenbank_verwenden[/url]
Bei der Seitenzahl gab es auch Probleme - da wurden einige Seitenzahlen beim Import in ein Datum umgewandelt. Das ließ sich ebenfalls durch den Import als Text umgehen.
Ich habe daher der Einfachheit halber in eine Zelle der Tabellen-Vorschau geklickt, mit Strg+A alle Zellen markiert und als Spaltentyp "Text" ausgewählt - so ließen sich gleich mehrere Probleme auf einmal lösen, ohne dass neue entstanden sind.
6. Das aktuelle Tabellenblatt von "Tabelle 1" in "biblio" umbenennen. Ich erledige das mit einem OpenOffice-Basic-Makro, das gleich noch einige andere Aufgaben hat (unter anderem doppelt vergebene "Identifier" anhand des Bibtex-Keys finden und korrigieren, doppelte Bindestriche durch Halbgeviertstriche ersetzen und den Eintragstyp 9 in 11 umwandeln, da sonst die Dissertationen in meinem Literaturverzeichnis unter Diplomarbeiten geführt werden):
[code]sub LitDBDissoptimieren
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
dim bibtexkey as string
dim bibtexlength as integer
dim expectedidentifier as string
dim currentidentifier as string
dim newidentifier as string
dim currentline as integer
dim args1(0) as new com.sun.star.beans.PropertyValue
dim args2(17) as new com.sun.star.beans.PropertyValue
dim args3(0) as new com.sun.star.beans.PropertyValue
dim args4(1) as new com.sun.star.beans.PropertyValue
dim args5(17) as new com.sun.star.beans.PropertyValue
dim args6(0) as new com.sun.star.beans.PropertyValue
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem rename literature table to biblio
args1(0).Name = "Name"
args1(0).Value = "biblio"
dispatcher.executeDispatch(document, ".uno:RenameTable", "", 0, args1())
rem ----------------------------------------------------------------------
rem search for non unique identifiers and replace them by bibtexkey
currentline = 1
Do
bibtexkey = thisComponent.sheets(0).getCellByPosition(25,currentline).getString
If bibtexkey = "" Then
Exit Do
End If
bibtexlength = len(bibtexkey)
expectedidentifier = left(bibtexkey,(bibtexlength-4)) & " " & right(bibtexkey,4)
currentidentifier = thisComponent.sheets(0).getCellByPosition(0,currentline).getString
If currentidentifier = expectedidentifier Then
currentline = currentline + 1
Else
If right(bibtexkey,4) = right(currentidentifier,4) Then
currentline = currentline + 1
Else
newidentifier = left(bibtexkey,(bibtexlength-5)) & " " & mid(bibtexkey,(bibtexlength-4),4) & " " & right(bibtexkey,1)
thisComponent.sheets(0).getCellByPosition(0,currentline).String = newidentifier
currentline = currentline + 1
End If
End If
Loop
rem ----------------------------------------------------------------------
rem search for double dashes and replace them by long dashes
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 0
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = true
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.Backward"
args2(4).Value = false
args2(5).Name = "SearchItem.Pattern"
args2(5).Value = false
args2(6).Name = "SearchItem.Content"
args2(6).Value = false
args2(7).Name = "SearchItem.AsianOptions"
args2(7).Value = false
args2(8).Name = "SearchItem.AlgorithmType"
args2(8).Value = 1
args2(9).Name = "SearchItem.SearchFlags"
args2(9).Value = 65536
args2(10).Name = "SearchItem.SearchString"
args2(10).Value = "--"
args2(11).Name = "SearchItem.ReplaceString"
args2(11).Value = " "&chr(8211)&" "
args2(12).Name = "SearchItem.Locale"
args2(12).Value = 255
args2(13).Name = "SearchItem.ChangedChars"
args2(13).Value = 2
args2(14).Name = "SearchItem.DeletedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.InsertedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.TransliterateFlags"
args2(16).Value = 1280
args2(17).Name = "SearchItem.Command"
args2(17).Value = 3
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
rem ----------------------------------------------------------------------
rem search for entry type 9 and replace it by entry type 11 in column b
args3(0).Name = "ToPoint"
args3(0).Value = "$B$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
args4(0).Name = "By"
args4(0).Value = 10000
args4(1).Name = "Sel"
args4(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args4()
args5(0).Name = "SearchItem.StyleFamily"
args5(0).Value = 2
args5(1).Name = "SearchItem.CellType"
args5(1).Value = 0
args5(2).Name = "SearchItem.RowDirection"
args5(2).Value = true
args5(3).Name = "SearchItem.AllTables"
args5(3).Value = false
args5(4).Name = "SearchItem.Backward"
args5(4).Value = false
args5(5).Name = "SearchItem.Pattern"
args5(5).Value = false
args5(6).Name = "SearchItem.Content"
args5(6).Value = false
args5(7).Name = "SearchItem.AsianOptions"
args5(7).Value = false
args5(8).Name = "SearchItem.AlgorithmType"
args5(8).Value = 1
args5(9).Name = "SearchItem.SearchFlags"
args5(9).Value = 71680
args5(10).Name = "SearchItem.SearchString"
args5(10).Value = "9"
args5(11).Name = "SearchItem.ReplaceString"
args5(11).Value = "'11"
args5(12).Name = "SearchItem.Locale"
args5(12).Value = 255
args5(13).Name = "SearchItem.ChangedChars"
args5(13).Value = 2
args5(14).Name = "SearchItem.DeletedChars"
args5(14).Value = 2
args5(15).Name = "SearchItem.InsertedChars"
args5(15).Value = 2
args5(16).Name = "SearchItem.TransliterateFlags"
args5(16).Value = 1280
args5(17).Name = "SearchItem.Command"
args5(17).Value = 3
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args5())
args6(0).Name = "ToPoint"
args6(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())
end sub[/code]
7. Die Literaturtabelle mit "Speichern unter..." im .ods-Format abspeichern. Dabei kann man idealerweise die .ods-Datei überschreiben, die man bereits vorher direkt aus Jabref heraus mit Bordmitteln generiert hatte, um die Literaturdatenbank in OpenOffice Writer zu übertragen (ich denke, bis zu diesem Punkt waren bereits alle hier Mitlesenden selbst gekommen). Nun kann man die Literaturdatenbank in Writer unmittelbar über "Extras" aufrufen (einige Male musste ich in dem Dropdown-Menü links oben noch die Tabelle "biblio" auswählen).