Alle meine Berichte für das Studium schreibe ich in LaTeX. Wenn man es einmal kann, gibt es einfach nichts besseres. Auf jeden Fall braucht man da natürlich auch einiges an Literatur. Man könnte die BibTeX-Datei jetzt natürlich komplett von Hand schreiben oder man nutzt Programme wie Mendeley oder Citavi, die die Daten eines Papers automatisch herunterladen.
Letztere machen aber meist nicht genau das, was man haben will und haben oft auch Probleme mit der Abkürzung der Journal-Namen, weshalb ich die bib-Datei schließlich immer noch einmal mit JabRef nachbearbeite (Automatische Abkürzung der Zeitschriftentitel ftw). Will man nun noch „mal eben“ ein Paper einfügen, müsste man die Daten per Hand in JabRef eingeben, das Zitat einzeln als bib von der Artikelseite herunterladen oder – was ich noch als die angenehmste Lösung empfinde – den BibTeX-Eintrag von Crossref kopieren. Aber all diese Methoden erfordern natürlich einige Klicks, die man sich auch gerne sparen kann.
Dafür habe ich ein kleines AutoHotkey-Skript geschrieben:
; CTRL + WINDOWS KEY + I LOOKS UP DOI ^#i:: Gui, Add, Edit, w300 vDOI Gui, Add, Button, default section, BibTeX Gui, Add, Button, x260 ys, Website Gui, Show,, DOI Lookup return ButtonBibTex: Gui, Submit bibtex:=doiToBibtex(DOI) bibtex=%bibtex% clipboard=%bibtex% TrayTip, BibTeX kopiert, %bibtex%, 10, 1 GUI, Destroy return ButtonWebsite: Gui, Submit openWebpage(DOI) GUI, Destroy return GuiClose: Gui, Destroy return ; DOI to BibTeX doiToBibtex(doi="") { ; from http://www.autohotkey.com/board/topic/94530-curl-some-help-please/ cURL_command := "curl -LH ""Accept: application/x-bibtex"" http://dx.doi.org/" . doi Cmd := ComObjCreate("WScript.Shell") CmdRun := Cmd.Exec(ComSpec . " /c cURL.exe " . cURL_command) output := CmdRun.StdOut.ReadAll() return output } ; Open webpage from DOI openWebpage(doi="") { Run, http://dx.doi.org/%doi% }
Damit wird nach dem Drücken von Strg + Win + I ein kleines Eingabefenster geöffnet, in das der DOI eingegeben werden muss. Mit einem Klick auf BibTex wird der BibTex-Eintrag in die Zwischenablage kopiert, mit einem auf Website die Seite zum Artikel im Browser geöffnet.
Nun folgt, wie immer, noch die Erklärung:
^#i:: Gui, Add, Edit, w300 vDOI Gui, Add, Button, default section, BibTeX Gui, Add, Button, x260 ys, Website Gui, Show,, DOI Lookup return
Hier wird zunächst die GUI erstellt. Ein 300 Pixel breites Eingabefeld mit zugehörigem Variablennamen DOI und zwei Buttons. BibTeX wird bei einem Druck auf Enter ausgelöst (default), Website befindet sich bei einem x-Wert von 260 Pixeln und auf der selben y-Höhe wie BibTeX (das s in ys steht für section). Schließlich wird die GUI mit dem Titel „DOI Lookup“ angezeigt.
ButtonBibTex: Gui, Submit bibtex:=doiToBibtex(DOI) bibtex=%bibtex% clipboard=%bibtex% TrayTip, BibTeX kopiert, %bibtex%, 10, 1 GUI, Destroy return
Bei einem Klick auf BibTeX wird mit Gui, Submit
der DOI in der Variable DOI
gespeichert. Dann wird über die unten erklärte Funktion doiToBibtex
der ausgegebene BibTeX-Inhalt in bibtex
gespeichert und in die Zwischenablage geschrieben. bibtex=%bibtex%
entfernt Leerzeichen am Anfang und Ende. Schließlich wird noch der Ballon-Tip angezeigt. Zum Schluss wird mit Gui, Destroy
dafür gesorgt, dass die Variablen für das nächste Öffnen der GUI wieder zur Verfügung stehen.
ButtonWebsite: Gui, Submit openWebpage(DOI) GUI, Destroy return
Mit einem Klick auf Website wird nur eine weitere Funktion (siehe unten) aufgerufen.
doiToBibtex(doi="") { cURL_command := "curl -LH ""Accept: application/x-bibtex"" http://dx.doi.org/" . doi Cmd := ComObjCreate("WScript.Shell") CmdRun := Cmd.Exec(ComSpec . " /c cURL.exe " . cURL_command) output := CmdRun.StdOut.ReadAll() return output }
Hier kommt der wichtige Teil: Mit curl wird über CrossCite aus dem DOI ein BibTeX erzeugt. Dazu wird curl über die cmd aufgerufen und die Ausgabe zurückgegeben.
openWebpage(doi="") { Run, http://dx.doi.org/%doi% }
Zum Öffnen der Artikelseite wird der DOI einfach an dx.doi.org angehängt.
Schließlich gibt es natürlich noch den Download der ahk-Datei. Außerdem wird curl benötigt. Der „Download WITHOUT SSL“ ist in Ordnung. Die curl.exe muss im selben Verzeichnis wie das Skript liegen. Dann nur noch das Skript ausführen und schon klappt alles.