Benutzer:JakobVoss/Zotero

aus Wikipedia, der freien Enzyklopädie

Mit dem dem Zotero Export-Format "Wikipedia Vorlage:Literatur" für die Literaturverwaltung Zotero können (alternativ zum Vorlagenmeister und Vorlage:Literatur/XML) auf einfache Weise Literaturangaben gemäß der Vorlage:Literatur erstellt werden. Mit Zotero können Literaturangaben aus vielen verschiedenen bibliographischen Quellen (unter Anderem der englischsprachigen Wikipedia) gesammelt und mit dem Export "Wikipedia Vorlage:Literatur" einfach in Wikipedia-Artikel eingetragen werden.

Installation

Momentan ist das Export-Format noch sehr experimentell und nur im Quellcode vorhanden. Zur Installation müssen Zotero und das dazugehörige Scaffold-Plugin installiert sein (dafür reichen vier Mausklicks und ein Neustart des Firefox-Browsers). Anschließend öffnest du Scaffold (im Browser-Menu unter "Extras") und legst einen neuen Translator an. Das geht so:

  1. Im Feld "Label" den Namen "Wikipedia Vorlage:Literatur" eintragen.
  2. Unter "Translator Type" nur das Feld "Export" auswählen
  3. Zum Karteireiter "Code" wechseln und dort den Quelltext einfügen
  4. Auf "Save to database" Klicken (das zweite Icon)
  5. Ggf. Firefox neu Starten

Nun können in Zotero gesammelte Literaturangaben mit der rechten Maustaste als Wikipedia-Vorlage:Literatur in eine Datei exportiert werden. Es geht aber noch einfacher. In den Einstellungen von Zotero unter "Export" unter "Quick-Copy" stellst du als Standardausgabeformat "Wikipedia Vorlage:Literatur" ein. Nun lassen sich Literaturangaben aus Zotero per Drag and Drop direkt in ein geöffnetes Wikipedia-Bearbeitungsfenster ziehen und erscheinen dort mit der Vorlage:Literatur formatiert!

So einfach geht es

Mit Zotero und dem Export-Format "Wikipedia Vorlage:Literatur" reichen vier Schritte, um Literatur in einen Wikipedia-Artikel zu bekommen:

  1. In einer Quelle, die von Zotero unterstützt wird nach Literatur suchen (z.B. http://gso.gbv.de/DB=2.1/)
  2. Literatur in Zotero übernehmen (oben rechts in der Browser-Adressleiste erscheint ein Icon zum draufklicken)
  3. Zotero öffnen (Strg+Alt+Z)
  4. Literatur aus Zotero ins Bearbeitungsfenser des gewünschten Wikipedia-Artikels ziehen

Natürlich ist das der Idealfall - da das ganze noch sehr neu ist, gibt es sicherlich Fälle, in denen zusätzliche Handarbeit notwendig ist. Der Quellcode steht für Verbesserungen frei zur Verfügung.

Quelltext

 
/**
* Wikipedia Literaturvorlage - Export-Translator für Zotero
* Version: 0.1a
* Autor: Jakob Voß
*
* Ursprünglich basierend auf dem Export-Translator
* "Wikipedia Citation Templates" von Simon Kornblith.
* Weitere Informationen siehe am Ende dieses Skriptes.
**/

// internen Zotero-Datensatz mit exportieren (zum debuggen)
var exportZoteroRecord = false;

// Mögliche Vorlegen-Parameter in üblicher Reihenfolge
// siehe http://de.wikipedia.org/wiki/Vorlage:Literatur
var parameterNamen = [
    "Autor", "Herausgeber", "Titel","Verlag", "Ort",
    "ISBN", "ISSN", "Sammelwerk","Band","Nummer",
    "Auflage", "Jahr", "Monat", "Tag",
    "Seiten", "Spalten", "Kommentar", "DOI", "Online", "Zugriff"
];

// Monatsnamen
var monatsNamen = {
    "1":"Januar",
    "2":"Februar",
    "3":"März",
    "4":"April",
    "5":"Mai",
    "6":"Juni",
    "7":"Juli",
    "8":"August",
    "9":"September",
    "10":"Oktober",
    "11":"November",
    "12":"Dezember"
};

// Zotero-Felder, die sich direkt auf Vorlagen-Parameter abbilden lassen
var fieldMap = {
    edition:"Auflage",
    publisher:"Verlag",
    DOI:"DOI",
    ISBN:"ISBN",
    issn:"ISSN",
    conference:"Sammelwerk",
    volume:"Band",
    issue:"Nummer",
    pages:"Seiten",
    number:"Nummer",
    publicationTitle:"Sammelwerk",
    title:"Titel",
    place:"Ort"
};

// Erstellt die Autorenliste
function formatAuthors(authors, useTypes) {
    var text = "";
    for each(var author in authors) {
        text += ", "+author.firstName;
        if(author.firstName && author.lastName) text += " ";
        text += author.lastName;
        if(useTypes && creatorType != "author") 
            text += " ("+Zotero.Utilities.getLocalizedCreatorType(author.creatorType)+")";
    }
    return text.substr(2);
}

// Datum in ISO-Format
function formatDate(date) {
    var date = date.substr(0, date.indexOf(" "));
    if(date.substr(4, 3) == "-00") {
        date = date.substr(0, 4);
    } else if(date.substr(7, 3) == "-00") {
        date = date.substr(0, 7);
    }
    return date;
}

// Dies ist die Hauptfunktion für den Export
function doExport() {
    var fehler = ""; // bisher nicht genutzt
    var first = true;

    while(item = Zotero.nextItem()) {
        var literatur = new Object();

        for(var zoteroField in fieldMap) {
            var parameter = fieldMap[zoteroField];
            if(item[zoteroField]) 
                literatur[parameter] = item[zoteroField];
        }

        literatur.Autor = formatAuthors(item.creators);

        if (item.url) {
            var type = "";
            if (item.url.match(/\.pdf$/i)) type = "PDF";
            literatur.Online = "[" + item.url + (type ? " " + type : "") + "]";
        }

        if(item.accessDate) {
            literatur.Zugriff = formatDate(item.accessDate);
        }

        if(item.date) {
            var date = Zotero.Utilities.strToDate(item.date);
            if (date["year"] != undefined){
                literatur.Tag = date["day"];
                literatur.Monat = monatsNamen[ date["month"] ];
                literatur.Jahr = date["year"];
            }
        }

        // TODO: Auflage: z.B. 1., 2. (Punkt am Ende nicht vergessen!)

        // Bisher nicht getestet
        if(item.runningTime) {
            if(item.itemType == "tvBroadcast" || 
               item.itemType == "radioBroadcast") {
                literatur.Kommentar += item.runningTime + " Minuten";
            } else {
                literatur.Kommentar += item.runningTime;
            }
        }

        // Weitere noch fehlende Felder u.A. item.series, seriesTitle, seriesText ...

        // Literatur ausgeben
        // TODO: Nichts ausgegeben wenn alle Felder leer
        Zotero.write((first ? "" : "\r\n\r\n") + "{{Literatur");
        for(var i in parameterNamen) {
            var parameter = parameterNamen[i];
            if(literatur[parameter]) {
                Zotero.write("\r\n|"+parameter+"="+literatur[parameter]);
            }
        }
        Zotero.write("\r\n}}");

        // Internen Zotero-Datensatz anzeigen
        if (exportZoteroRecord) {
            var zoteroRecord = "\r\n{{ZoteroRecord";
            for(var field in item) {
                if (item[field]) {
                    zoteroRecord += "\r\n|" + field + "=" + item[field];
                }
            }
            zoteroRecord += "\r\n}}";
            Zotero.write(zoteroRecord);
        }

        first = false;
    }

    if (fehler) {
        alert("Beim Exportieren ist ein Fehler aufgetreten:\n" + fehler);
    }
}

Weitere Pläne

Mal sehen. Sicherlich gibt es noch viele Verbesserungsmöglichkeiten. Als nächstes steht der umgekehrte Weg (von Wikipedia-Literaturangaben nach Zotero) an. Dazu müsste ein Parser geschrieben werden, der das Format der Literaturangaben weiterverarbeiten kann.