Helm-Bibtex: Ivy-Bibtex:
Mit Helm-Bibtex und Ivy-Bibtex können Sie Ihre Bibtex-Bibliographie durchsuchen und verwalten. Beide teilen sich das gleiche generische Backend, die Bibtex-Vervollständigung, aber einer verwendet das Helm-Completion-Gerüst und den anderen Efeu als Front-End.
bibtex-completion-watch-bibliography . Kann verwendet werden, um die automatische Nachlade der Bibliographie zu deaktivieren.ivy-bitex zu markieren und zu reagieren. Siehe hier.helm-bibtex-with-local-bibliography und ivy-bibtex-with-local-bibliography verwenden jetzt auch lokal und global definierte Bibliografien in Org-Dateien. Dies sind Bibliografien, die mit der neuen #+BIBLIOGRAPHY: Schlüsselwort und in der variablen org-cite-global-bibliography angegeben sind.bibtex-completion-format-citation-org-cite (zur Verwendung in der Konfigurationsvariablen bibtex-completion-format-citation-functions )=has-pdf= und =has-note= .helm-bibtex-with-notes und ivy-bibtex-with-noted für die Suche in den Einträgen, die Notizen haben.author-or-editor zur Verwendung in Notizenvorlagen hinzu.@string Constants hinzugefügt.Siehe News.org für alte Nachrichten.
Helm-Bibtex 'und Ivy-Bibtex' Hauptverkaufspunkte sind effiziente Suche in großen Bibliographien, die leistungsstarke Suchausdrücke und eine enge Integration in Ihre EMACS-Workflows verwenden. Beide können die folgenden Aktionen bei Einträgen ausführen, die mit dem Suchausdruck entsprechen: Öffnen Sie die mit einem Eintrag zugeordnete PDF, seine URL oder DOI, fügen Sie ein Zitat für diesen Eintrag, den Bibtex -Schlüssel, den Bibtex -Eintrag oder eine einfache Textreferenz ein, fügen Sie die PDF an eine E -Mail hinzu, nehmen Sie Notizen, bearbeiten Sie den Bibtex -Eintrag. Viele Aspekte können so konfiguriert werden, dass sie persönliche Einstellungen entsprechen.
Im Folgenden finden Sie einen Screenshot, der eine Helm-Bibtex-Suche nach Einträgen mit dem Ausdruck „Augenverfolgung“ zeigt.

Der reguläre Ausdruck eye.?tracking ermöglicht die Suche nach verschiedenen Schreibweisen („Eye Tracking“, „Eye-Tracking“, „Eyetracking“). Ein quadratisches Schleifensymbol (⌘) neben einem Eintrag zeigt an, dass ein PDF verfügbar ist. Ein Stiftsymbol (✎) bedeutet, dass diesem Eintrag Notizen angehängt sind. Am Ende gibt es Einträge, mit denen Sie in Online -Datenbanken suchen können.
Der einfachste Weg, Helm-Bibtex oder Ivy-Bibtex zu installieren, ist über Melpa. Alternativ geben Sie die Dateien bibtex-completion.el und entweder helm-bibtex.el oder ivy-bibtex.el in einem in Ihrem Ladezustand enthaltenen Verzeichnis ein und fügen Sie der folgenden Zeile Ihrer Startdatei (normalerweise init.el ) hinzu:
( autoload 'helm-bibtex " helm-bibtex " " " t )oder
( autoload 'ivy-bibtex " ivy-bibtex " " " t )
; ; ivy-bibtex requires ivy's `ivy--regex-ignore-order` regex builder, which
; ; ignores the order of regexp tokens when searching for matching candidates.
; ; Add something like this to your init file:
( setq ivy-re-builders-alist
'((ivy-bibtex . ivy--regex-ignore-order)
( t . ivy--regex-plus)))Helm-Bibtex und Ivy-Bibtex hängen von einer Reihe von Paketen ab, die automatisch installiert werden, wenn Sie MELPA verwenden.
Stellen Sie bei Verwendung von Helm-Bibtex oder Ivy-Bibtex sicher, dass Helm oder Ivy korrekt konfiguriert ist (siehe Helm-Dokumentation oder Ivy-Dokumentation).
Eine minimale Konfiguration beinhaltet die Erklärung von Bibtex-Vervollständigung, wo Ihre Bibliografien gefunden werden können:
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/bibtex-file-2.bib " )) Org-bibtex-Benutzer können auch Org-Mode-Bibliographiedateien angeben. In diesem Fall wird angenommen, dass eine Bibtex-Datei mit demselben Namen und der gleichen Erweiterung anstelle von Org vorhanden ist. Wenn die BIB -Datei einen anderen Namen hat, verwenden Sie stattdessen eine CONS -Zelle ("orgfile.org" . “bibfile.bib") :
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/org-bibtex-file.org "
( " /path/to/org-bibtex-file2.org " . " /path/to/bibtex-file.bib " )))Geben Sie an, wo PDFs gefunden werden können:
( setq bibtex-completion-library-path '( " /path1/to/pdfs " " /path2/to/pdfs " )) Die Bibtex-Vervollständigung geht davon aus, dass der Name eines PDF aus der Bibtex-Taste besteht und ein benutzerdefiniertes Suffix ( .pdf standardmäßig). Wenn beispielsweise ein Bibtex-Eintrag über den Schlüssel Darwin1859 verfügt, sucht die Bibtex-Completion nach Darwin1859.pdf .
Wenn die Bibtex -Einträge ein Feld haben, das den vollständigen Pfad zum PDFS angibt, kann auch dieses Feld verwendet werden. Beispielsweise speichern Jabref und Zotero den Ort von PDFs in einem Feld namens File :
( setq bibtex-completion-pdf-field " File " ) Wenn bibtex-completion-pdf-field nicht nil ist, versucht Bibtex-Vervollständigung zunächst, die in diesem Feld angegebene Datei abzurufen. Wenn das Feld nicht für einen Eintrag festgelegt ist oder wenn die angegebene Datei nicht vorhanden ist, fällt die Bibtex-Completion auf die oben beschriebene Methode zurück (die Suche nach Schlüssel + .pdf in den in bibtex-completion-library-path aufgeführten Verzeichnissen).
Dateispezifikationen können bloße Pfade sein oder dem von Jabref, Zotero, Kaliber und Mendeley verwendeten Format folgen. Dieses Format ermöglicht auch die Spezifikation mehrerer Dateien (z. B. das Hauptpapier und das ergänzende Material). Beispiele:
File = {/path/to/article.pdf}File = {:/path/to/article.pdf:PDF}File = {:/path/to/article.pdf:PDF;:/path/to/supplementary_materials.pdf:PDF} Die Bibtex-Vervollständigung unterstützt zwei Methoden zum Speichern von Notizen. Es kann entweder alle Notizen in einer Datei speichern oder Notizen in mehreren Dateien, einer Datei pro Veröffentlichung, speichern. Im ersten Fall muss die bibtex-completion-notes-path Anpassungsvariablen auf den vollständigen Pfad der Notizendatei eingestellt werden:
( setq bibtex-completion-notes-path " /path/to/notes.org " ) Wenn eine Datei pro Veröffentlichung bevorzugt wird, sollte bibtex-completion-notes-path auf das Verzeichnis verweisen, das zum Speichern der Notizendateien verwendet wird:
( setq bibtex-completion-notes-path " /path/to/notes " ) Die Namen dieser Dateien bestehen aus dem Bibtex-Schlüssel und einem benutzerdefinierten Suffix ( .org standardmäßig).
Zu diesem Zeitpunkt werden die meisten Menschen bereit sein zu gehen. Überspringen Sie die Verwendung unten, um zu sehen, wie Sie Helm-Bibtex und Ivy-Bibtex verwenden.
Aufrufen von helm-bibtex oder ivy-bibtex Wenn sich der Punkt auf einem org-Mode-Zitat befindet, wählt diese Schlüssel automatisch aus. Der Standard org-open-at-point für ein Org-Zitat führt Sie jedoch zum entsprechenden Bibliographieeintrag. Der folgende Code ändert dieses Verhalten, um stattdessen helm-bibtex-follow zu öffnen, wenn Sie ein Org-Zitat befolgen, indem Sie RET eingeben oder darauf klicken:
( setq org-cite-follow-processor 'helm-bibtex-org-cite-follow ) Hinweis Bei einem org -Zitat mit mehreren Schlüssel wird der obige Code keinen Eintrag vorschreibt, wenn der [cite: Teil ausgewählt ist. Hier finden Sie die Ivy -Alternative.
Die variablen bibtex-completion-display-formats können verwendet werden, um anzupassen, wie Suchergebnisse auf einer Basis vom Typ pro Eingang dargestellt werden. Der Standard ist
'(( t . " ${author:36} ${title:*} ${year:4} ${=has-pdf=:1}${=has-note=:1} ${=type=:7} " )) Dies bedeutet, dass alle Einstiegstypen auf die gleiche Weise dargestellt werden: Autoren, Titel, Jahr, in dieser Formatzeichenfolge geben die Zahlen an, wie viel Platz für das jeweilige Feld reserviert ist. Wenn es eine * anstelle einer Zahl gibt, bedeutet dies, dass dieses Feld den Platz erhalten. Hier ist ein Setup, das ein anderes Layout für verschiedene Einstiegstypen verwendet:
( setq bibtex-completion-display-formats
'((article . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} ${journal:40} " )
(inbook . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} Chapter ${chapter:32} " )
(incollection . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} ${booktitle:40} " )
(inproceedings . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} ${booktitle:40} " )
( t . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} " ))) Damit dies funktioniert, müssen Sie journal und booktitle zu bibtex-completion-additional-search-fields hinzufügen. Siehe Nächster Abschnitt.
Die für die Suche verwendeten Standardfelder sind: Autor, Titel, Jahr, Bibtex -Schlüssel, Eintragstyp (Artikel, Inprovedings,…). Die variablen bibtex-completion-addition-search-fields können verwendet werden, um diese Liste zu erweitern. Beispiel:
( setq bibtex-completion-additional-search-fields '(keywords))( setq bibtex-completion-pdf-symbol " ⌘ " )
( setq bibtex-completion-notes-symbol " ✎ " ) Wenn die PDFS-Dateien einem anderen Namensschema folgen als Bibtex-Schlüssel + .pdf , kann die Funktion bibtex-completion-find-pdf-in-library modifiziert werden, um dies aufzunehmen.
Standardmäßig wird EMACs verwendet, um PDF -Dateien zu öffnen. Dies bedeutet, dass entweder DocView verwendet wird oder bei Installation die viel überlegene Erweiterung von PDF-Tools, die Funktionen wie inkrementelle Suche in PDF-Dateien sowie Erstellen und Änderungen von Anmerkungen bietet, die mit von Adobe Software erstellten Annotationen kompatibel sind.
So konfigurieren Sie einen anderen PDF-Viewer. Die Anpassungsvariablen bibtex-completion-pdf-open-function kann verwendet werden. Hier finden Sie eine Beispielkonfiguration für den OS X PDF Viewer Skim:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " open " nil 0 nil " -a " " /Applications/Skim.app " fpath)))Hier ist ein weiteres Beispiel für den Linux PDF Viewer Evince:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " evince " nil 0 nil fpath))) Es ist manchmal wünschenswert, beide Optionen (EMACs selbst und externer Betrachter) zu haben, um die PDF zu öffnen. Das Folgende fügt eine Aktion mit Evince als externer Zuschauer hinzu, das neben dem regulären EMACS -Betrachter mit p an P gebunden ist. Die Aktion funktioniert mit Ivy-Bibtex; Es müsste für Helm-Bibtex angepasst werden (wechseln Sie bei Bedarf den Pfad zu einem anderen Betrachter):
( defun bibtex-completion-open-pdf-external ( keys &optional fallback-action )
( let ((bibtex-completion-pdf-open-function
( lambda ( fpath ) ( start-process " evince " " *helm-bibtex-evince* " " /usr/bin/evince " fpath))))
(bibtex-completion-open-pdf keys fallback-action)))
(ivy-bibtex-ivify-action bibtex-completion-open-pdf-external ivy-bibtex-open-pdf-external)
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-pdf-external " Open PDF file in external viewer (if present) " ))) Sie können zusätzliche PDFs für einen bestimmten Eintrag speichern, z. B. eine kommentierte Version des ursprünglichen PDF, eine Datei mit ergänzendem Material oder Kapiteldateien. Wenn das file verwendet wird, um PDFs mit Einträgen zu verknüpfen (siehe Abschnitt PDF -Dateien), können diese zusätzlichen PDFs einfach zu diesem Feld hinzugefügt werden. Wenn die Aktion "PDF -Datei öffnen" ausgelöst wird, werden Sie aufgefordert, die Datei zu öffnen.
Wenn das file nicht verwendet wird, sondern stattdessen das Benennungsschema bibtex-key + .pdf (erneut siehe PDF-Dateien), können Sie dasselbe Verhalten erhalten mit:
( setq bibtex-completion-find-additional-pdfs t )Alle Dateien, deren Name mit der Bibtex -Taste beginnen, werden dann mit einem Eintrag zugeordnet. Es reicht dann aus, Ihre Dateien entsprechend zu benennen (z. B. mit dem Umbenennen von Dienstprogramme). Beispiele:
bibtex-key-annotated.pdfbibtex-key-supplemental.pdfbibtex-key-chapter1.pdf Beachten Sie, dass diese zusätzlichen Dateien aus Leistungsgründen nur beim Auslösen einer Aktion wie „PDF -Datei öffnen“ erkannt werden. Wenn die gesamte Bibliographie geladen ist, wird nur die „Haupt“ PDF bibtex-key.pdf erkannt.
Wenn Dokumente über das Benennungsschema bibtex-key.pdf referenziert werden, Sie jedoch Dateien in einem anderen Format als PDF speichern, können Sie die variable bibtex-completion-pdf-extension entsprechend festlegen. Beispiel:
( setq bibtex-completion-pdf-extension " .djvu " )Wenn Sie Dateien in verschiedenen Formaten speichern, können Sie anstelle eines einzelnen Dateityps eine Liste angeben:
( setq bibtex-completion-pdf-extension '( " .pdf " " .djvu " , " .jpg " ))Erweiterungen in dieser Liste werden dann nacheinander ausprobiert, bis eine Datei gefunden wurde. Achten Sie darauf, dass dies die Leistung für große Bibliografien verringern kann.
Standardmäßig verwendet die Bibtex-Vervollständigung alles, was EMACS Standard ist. Es gibt jedoch eine Vielzahl von Alternativen (siehe Dokumentation der bibtex-completion-browser-function für eine vollständige Liste). Beispiel:
( setq bibtex-completion-browser-function 'browser-url-chromium )Auch benutzerdefinierte Funktionen können verwendet werden:
( setq bibtex-completion-browser-function
( lambda ( url _ ) ( start-process " firefox " " *firefox* " " firefox " url))) Das automatische Nachladen kann mithilfe bibtex-completion-watch-bibliography konfiguriert werden.
Die Bibtex-Vervollständigung erstellt Zitate, die auf dem Hauptmodus basieren, in dem das Zitat eingefügt wird:
Die Liste der Modi kann erweitert werden und die Zitierfunktionen können mithilfe der Anpassungsvariablen bibtex-completion-format-citation-functions geändert werden. Beispielsweise bevorzugen Personen, die EBIB nicht verwenden, möglicherweise Links zu den PDFs anstelle von Ebib-Links in den Org-Modus-Dateien:
( setq bibtex-completion-format-citation-functions
'(( org-mode . bibtex-completion-format-citation-org-link-to-PDF)
( latex-mode . bibtex-completion-format-citation-cite)
( markdown-mode . bibtex-completion-format-citation-pandoc-citeproc)
( default . bibtex-completion-format-citation-default))) Wenn Sie eine Leser-To-Do-Liste im Org-Modus erstellen möchten, können Sie den Titel der PDF-Datei im Link unterhalten. Um dieses Ziel zu erreichen, können Sie die variablen bibtex-completion-format-citation-functions mit dem folgenden Code-Snippet ändern:
( setq bibtex-completion-format-citation-functions
'(( org-mode . bibtex-completion-format-citation-org-title-link-to-PDF)
( latex-mode . bibtex-completion-format-citation-cite)
( markdown-mode . bibtex-completion-format-citation-pandoc-citeproc)
( default . bibtex-completion-format-citation-default)))Eine Zitierfunktion muss eine Liste von Schlüssel als Eingabe akzeptieren und eine Zeichenfolge zurückgeben, die die Zitate enthält. Beispiele finden Sie in den vordefinierten Zitierfunktionen.
Die Bibtex-Vervollständigung fordert beim Einfügen von Zitaten in Latex-Dokumente einen Latex-Zitat-Befehl auf. Die Liste der für die automatischen Vervollständigung verfügbaren Befehle kann mit den variablen bibtex-completion-cite-commands definiert werden.
Die Standardeinstellung enthält alle in biBlatex definierten Befehle (mit Ausnahme von Multicite -Befehlen und volcite et al.). Wenn kein Befehl eingegeben wird, wird ein Standardbefehl verwendet, der mithilfe von bibtex-completion-cite-default-command konfiguriert werden kann. Der Standardwert für den Standardbefehl wird cite . Die variable bibtex-completion-cite-default-as-initial-input steuert die Verwendung des Standardbefehls. Wenn t , wird es in den Minibuffer eingefügt, bevor es die Eingabe vom Benutzer lesen. Wenn nil , wird es nicht in den Minibuffer eingefügt, sondern als Standard verwendet, wenn der Benutzer nichts eingibt.
Standardmäßig fordert die Bibtex-Vervollständigung auch die optionalen Vor- und Postnoten für das Zitat auf. Dies kann ausgeschaltet werden, indem die variable bibtex-completion-cite-prompt-for-optional-arguments auf nil festgelegt werden.
Siehe auch den Abschnitt Latex CITE -Befehle unten.
Online-Datenbanken können mithilfe der bibtex-completion-fallback-options von Anpassungsvariablen konfiguriert werden. Diese Variable enthält einen Alist, bei dem das erste Element jedes Eintrags der Name der Datenbank ist und das zweite Element entweder eine URL oder eine Funktion ist. Die URL muss an der Position, in der der aktuelle Suchausdruck eingefügt werden soll, einen %s enthalten. Wenn eine Funktion verwendet wird, sollte diese Funktion diesen Suchausdruck als einzelnes Argument annehmen.
Binden Sie den Suchbefehl helm-bibtex oder ivy-bibtex für einen schnellen Zugriff auf die Bibliographie an einen bequemen Schlüssel.
Helm-Bibtex : Ich benutze die Menüschlüssel als Präfixschlüssel für alle Helmbefehle und bin helm-bibtex mit b . Helm-Bibtex kann dann mit <menu> b gestartet werden. Es ist auch nützlich, helm-resume an <menu> in helm-command-map zu binden. Mit dieser Bindung kann <menu> <menu> verwendet werden, um die letzte Helmsuche wieder zu öffnen.
( global - set - key ( kbd " <menu> " ) ' helm-command-prefix)
(define-key helm-command-map "b" ' helm - bibtex )
( define - key helm - command - map " B " ' helm-bibtex-with-local-bibliography)
(define-key helm-command-map "n" ' helm - bibtex - with - notes )
( define - key helm - command - map ( kbd " <menu> " ) ' helm-resume) Ivy-Bibtex : Sie können ivy-bibtex in ähnlicher Weise an <menu> b und ivy-resume an <menu> <menu> binden.
Zur Bequemlichkeit können häufige Suchvorgänge in Befehlen erfasst und an Schlüsselkombinationen gebunden werden. Im Folgenden finden Sie einen Beispielcode, der eine Suche nach Publikationen definiert, die von „Jane Doe“ verfasst wurden, und den Suchbefehl an Cx p bindet.
Helm-Bibtex :
( defun helm-bibtex-my-publications ( &optional arg )
" Search BibTeX entries authored by “Jane Doe”.
With a prefix ARG, the cache is invalidated and the bibliography reread. "
( interactive " P " )
(helm-bibtex arg nil " Jane Doe " ))
; ; Bind this search function to Ctrl-x p:
( global-set-key ( kbd " C-x p " ) 'helm-bibtex-my-publications )Ivy-Bibtex :
( defun ivy-bibtex-my-publications ( &optional arg )
" Search BibTeX entries authored by “Jane Doe”.
With a prefix ARG, the cache is invalidated and the bibliography reread. "
( interactive " P " )
( when arg
(bibtex-completion-clear-cache))
(bibtex-completion-init)
(ivy-read " BibTeX Items: "
(bibtex-completion-candidates)
:initial-input " Jane Doe "
:caller 'ivy-bibtex
:action ivy-bibtex-default-action))
; ; Bind this search function to Ctrl-x p:
( global-set-key ( kbd " C-x p " ) 'ivy-bibtex-my-publications ) Das Drücken von <enter> in einer Veröffentlichung löst die „Standardaktion“ aus, die die mit der Veröffentlichung zugeordnete PDF öffnet, falls vorhanden oder seine URL oder doi anderweitig. Klicken Sie in Helm-Bibtex oder Mo in Ivy-Bibtex <tab> in Helm-Bibtex oder MO. Zeigt stattdessen ein Aktionsmenü an, in dem die verfügbaren Aktionen aufgeführt sind. Hier finden Sie die Liste aller verfügbaren Aktionen zusammen mit ihren Funktionen (dies sind die generischen Aktionsfunktionen, für Helm-Bibtex beginnen die Funktionsnamen mit helm-bibtex- anstelle von bibtex-completion- -und für Ivy-Bibtex beginnen sie mit ivy-bibtex- ):
bibtex-completion-open-anybibtex-completion-open-pdfbibtex-completion-open-url-or-doibibtex-completion-insert-citationbibtex-completion-insert-referencebibtex-completion-insert-keybibtex-completion-insert-bibtexbibtex-completion-add-PDF-attachment Mail beibringenbibtex-completion-edit-notesbibtex-completion-show-entrybibtex-completion-add-pdf-to-library Helm-Bibtex : Die Aktionsliste kann über die Befehle helm-add-action-to-source und helm-delete-action-from-source geändert werden. Im Folgenden fügt das Folgende eine neue Aktion helm-bibtex-open-annotated-pdf (siehe oben) direkt nach dem ersten Element in der obigen Liste hinzu:
(helm-add-action-to-source
" Open annotated PDF (if present) " 'helm-bibtex-open-annotated-pdf
helm-source-bibtex 1 ) Wenn das letzte, numerische Argument in helm-add-action-to-source weggelassen wird, wird die neue Aktion am Ende der Liste hinzugefügt. Da die Standardaktion lediglich der erste Eintrag in der Liste der Aktionen ist, kann die Standardaktion geändert werden, indem eine Aktion gelöscht und ganz oben in der Liste wiedergegeben wird. Im Folgenden finden Sie ein Beispiel, wie Sie die Standardaktion „Bibtex -Taste einfügen“ erstellen:
(helm-delete-action-from-source " Insert BibTeX key " helm-source-bibtex)
(helm-add-action-to-source " Insert BibTeX key " 'helm-bibtex-insert-key helm-source-bibtex 0 ) Ivy-Bibtex : Die Standardaktion und die zusätzlichen verfügbaren Aktionen werden separat festgelegt. Die Standardaktion wird durch die Variablen ivy-bibtex-default-action und ivy-bibtex-default-multi-action gesteuert, wobei letztere für Listen der markierten Einträge bestimmt sind (siehe Aktionen anwenden auf mehrere Einträge). Beispielsweise ändert der folgende Code die Standardaktion in "Bibtex -Taste einfügen":
( setq ivy-bibtex-default-action 'ivy-bibtex-insert-key )Auf die gleiche Weise legt der folgende Code die Standardaktion für Listen der markierten Einträge auf "Bibtex-Taste ein, die eine schöne von Kommas getrennte Liste der Schlüssel einfügen:
( setq ivy-bibtex-default-multi-action 'ivy-bibtex-insert-key ) Die zusätzlichen Aktionen werden festgelegt, indem die gewünschte Aktionsliste an den Befehl ivy-set-actions weitergegeben wird. Beispielsweise führen die folgenden Codes zusätzlich zum Standard -Standard nur zwei verfügbare Aktionen durch:
(ivy-set-actions
'ivy-bibtex
'(( " p " ivy-bibtex-open-any " Open PDF, URL, or DOI " ivy-bibtex-open-any)
( " e " ivy-bibtex-edit-notes " Edit notes " ivy-bibtex-edit-notes))) Die Buchstaben p und e sind die Schlüsselbindungen für die beiden Aktionen im Aktionsmenü. Die Schlüsselbindung o ist für die Standardaktion reserviert. Das zweite Erscheinen der Aktion in diesem Code alarmiert ivy , dass die Aktion Listen der markierten Einträge verarbeiten kann. Es kann sicher weggelassen werden, wenn das Richtige einfach die Aktion auf jeden Eintrag anwendet.
Wenn Sie am Ende der Aktionsliste nur neue Aktionen hinzufügen möchten, können Sie den Befehl ivy-add-actions alternativ verwenden. Beispielsweise fügt das Folgende eine neue Aktion hinzu ivy-bibtex-open-annotated-pdf (siehe oben) am Ende der Aktionsliste:
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-annotated-pdf " Open annotated PDF (if present) " ivy-bibtex-open-annotated-pdf)))Das Erstellen einer neuen Aktion für Helm-Bibtex oder Ivy-Bibtex kann in drei Schritten erfolgen. Ein Beispiel finden Sie in der Aktion zum Öffnen von Annotierungen der oben genannten PDFs.
Der erste und Hauptschritt besteht darin, eine generische Aktionsfunktion zu erstellen, die bibtex-completion-<action> (z. B. bibtex-completion-open-annotated-pdf ) erstellt. Diese Funktion sollte als einzelnes Argument eine Liste von Bibtex -Tasten dauern und die Aktion auf die entsprechenden Bibtex -Einträge ausführen.
Der zweite Schritt besteht darin, die generische Aktionsfunktion für Helm-Bibtex oder Ivy-Bibtex anzupassen, damit sie im richtigen Puffer ausgeführt wird und die Schlüssel der ausgewählten Einträge empfangen wird).
Helm-Bibtex : Dies ist einfach mit:
(helm-bibtex-helmify-action bibtex-completion-<action > helm-bibtex-<action > )Ivy-Bibtex : Dies ist einfach mit:
(ivy-bibtex-ivify-action bibtex-completion-<action > ivy-bibtex-<action > ) Der dritte und letzte Schritt besteht darin, die maßgeschneiderte Aktionsfunktion helm-bibtex-<action> oder ivy-bibtex-<action> in Helm-Bibtex oder Ivy-Bibtex verfügbar zu machen, indem sie dem Aktionsmenü addiert. Siehe Änderung der verfügbaren Aktionen.
Helm-Bibtex : Standardmäßig verwendet helm-bibtex den gesamten Rahmen, um die Bibliographie anzuzeigen. Dies kann geändert werden, indem der variable helm-bibtex-full-frame auf nil festgelegt wird. In diesem Fall wird Helm-Standard verwendet (typischerweise vertikale Trennung, wobei die Helm-Suche im unteren Fenster angezeigt wird).
Ivy-Bibtex : Ivy-Bibtex zeigt immer die Bibliographie im Minibuffer. Die variable ivy-height steuert die Anzahl der Zeilen für das Minibufferfenster in allen Ivy-Befehlen.
Die Bibtex-Vervollständigung bevölkert neue Notizen mit einigen grundlegenden Informationen zur Veröffentlichung. Bei nur einer Notizdatei für alle Veröffentlichungen sehen neue Einträge wie das folgende Beispiel aus:
Gigerzer, G. (1998): Wir brauchen statistisches Denken, nicht statistische Rituale :EIGENSCHAFTEN: : Custom_id: Gigerenzer1998 :ENDE:
Der Titel des neuen Abschnitts besteht aus den Autorennamen, dem Jahr und dem Titel der Veröffentlichung. Die Eigenschaft Custom_ID gibt den Bibtex-Schlüssel des Eintrags an (für die Custom_ID mit org-ref benannt).
Bei einer Datei pro Veröffentlichung enthält eine neue Notizendatei im folgenden Format einen Titel:
#+Titel: Notizen zu: Gigerenzer, G. (1998): Wir brauchen statistisches Denken, nicht statistische Rituale
Wenn andere Formate gewünscht werden, können die Vorlagen für neue Notizen mithilfe der Anpassungsvariablen bibtex-completion-notes-template-one-file und bibtex-completion-notes-template-multiple-files geändert werden.
Standardmäßig geht die Bibtex-Vervollständigung davon aus, dass die Notizes im Org-Mode-Format feststellen. Jedes andere Format kann jedoch auch verwendet werden. Bei nur einer Notizendatei reicht es aus, bibtex-completion-notes-path auf die gewünschte Datei zu verweisen. Bei mehreren Notizdateien kann der Typ der Dateien mithilfe der Anpassungsvariablen bibtex-completion-notes-extension angegeben werden. Zum Beispiel, wenn Markdown der gewünschte Dateityp ist:
( setq bibtex-completion-notes-path " /path/to/notes " )
( setq bibtex-completion-notes-extension " .md " )Wenn der Dateityp auf etwas anderes als Org-Mode eingestellt ist, müssen auch die Vorlagen für neue Notizdateien angepasst werden. Weitere Informationen finden Sie im Abschnitt oben.
Die Bibliographie, die eine .bib Datei auf der Festplatte geändert wird, lädt die Bibliographie automatisch neu. Die Bibtex-Vervollständigung beobachtet jedoch keine PDFs und Notizen. Wenn also ein neues PDF oder eine neue Notiz hinzugefügt wird, muss die Bibliographie manuell neu geladen werden, um die PDF- und Notizsymbole korrekt anzuzeigen (über das Präfix-Argument, z. B. Cu Mx helm-bibtex ). Leider ist die Implementierung des automatischen Nachladens für PDFs und Notizen nicht ganz einfach, da die Bibtex -Fertigstellung in der Umgang mit PDFs und Notizen sehr flexibel ist. Bei einfachen Setups gibt es jedoch eine einfache Lösung: Beobachten Sie einfach die bibtex-completion-library-path und bibtex-completion-notes-path Verzeichnisse und laden Sie die Bibliographie neu, wenn sie sich ändern. Beispiel für das PDF -Verzeichnis:
( setq tmalsburg-pdf-watch
( file-notify-add-watch bibtex-completion-library-path
'(change)
( lambda ( event ) (bibtex-completion-candidates)))) Verwenden Sie Mx helm-bibtex oder Mx ivy-bibtex um eine neue Suche zu starten. Die Standardfelder für die Suche sind: Autor, Titel, Jahr, Bibtex -Schlüssel und Eintragstyp. Regelmäßige Ausdrücke können verwendet werden. Beispielsuche:
Alles von Janet Fodor veröffentlicht:
Janet Fodor
Alle Doktoranden Thesen:
Phdthese
Lyn Fraziers Doktorarbeit:
Phdthesis Frazier
Veröffentlichungen über die Augenverfolgung. Ein regulärer Ausdruck wird verwendet, um verschiedene Schreibweisen zu entsprechen („Eyetracking“, „Eye Tracking“, „Eye-Tracking“):
Eye.?tracking
Konferenzpräsentationen im Jahr 2013:
2013 Inprovedings
Veröffentlichungen von 2010 und 2011:
(2010 | 2011 )
Artikel, die von David Caplan und Gloria Waters mitautorisiert wurden:
Artikel Wasser Caplan
Suche nach Artikeln von David Caplan, die nicht von Gloria Waters mitautorisiert werden:
Artikel Caplan! Wasser
Verwenden Sie helm-bibtex-with-local-bibliography oder ivy-bibtex-with-local-bibliography um eine Suche in der „lokalen Bibliographie“ des aktuellen Puffer anstelle der „globalen Bibliographie“ des bibtex-completion-bibliography zu beginnen. Wenn die aktuelle Datei eine Bibtex -Datei ist, wird diese Bibliographie verwendet. Wenn es sich bei der aktuellen Datei um eine Latex -Datei handelt, wird RefTex verwendet, um die lokale Bibliographie aus den Standardbefehlen für Latex -Bibliographie bibliography und addbibresource zu bestimmen. Wenn es sich bei der Datei um eine Org-Datei handelt, wird die lokale und/oder globale Org-Bibliographie verwendet (wie unter Verwendung der neuen #+BIBLIOGRAPHY: Schlüsselwort und der variablen org-cite-global-bibliography angegeben). Wenn keine lokale Bibliographie gefunden werden kann, wird die globale Bibliographie ( bibtex-completion-bibliography ) verwendet.
Verwenden Sie helm-bibtex-with-notes oder ivy-bibtex-with-notes um nur unter Einträgen zu suchen, die Notizen haben. Besonders nützlich in Kombination mit ~ org-roam-bibtex.el ~.
In einem gemeinsamen Anwendungsfall wird ein Suchbegriff in einem Dokument geschrieben (z. B. in Ihrem Latex -Manuskript) und Sie möchten in Ihrer Bibliographie danach suchen. Starten Sie in dieser Situation einfach Helm-Bibtex oder Ivy-Bibtex und geben Sie Mn ein. Dies fügt das Wort unter dem Cursor als Suchbegriff ein. (Dies ist eine Helm / Ivy-Funktion und kann in allen Helm / Ivy-Befehlen verwendet werden, nicht nur in Helm-Bibtex / Ivy-Bibtex.) Beachten Sie, dass es auch möglich ist, Bibtex-Tasten für die Suche zu verwenden. Wenn sich Ihr Cursor also auf einem Bibtex-Schlüssel (z. B. in einem Latex CITE-Befehl) befindet, können Sie Helm-Bibtex oder Ivy-Bibtex starten, Mn treffen und den Eintrag sehen, der mit diesem Bibtex-Schlüssel zugeordnet ist. Sonderfall: Sie möchten den PDF öffnen, der dem Bibtex-Schlüssel unter dem Cursor zugeordnet ist: Mx helm-bibtex Mn RET oder Mx ivy-bibtex Mn RET . Dies ist natürlich kürzer, wenn Sie helm-bibtex oder ivy-bibtex an einen bequemen Schlüssel binden (siehe Schlüsselbindungen).
Die verfügbaren Aktionen sind:
Helm-Bibtex : Wählen Sie einen Eintrag aus und drücken Sie <return> , um die Standardaktion auszuführen. Alternativ drücken Sie TAB (Tabulator), um eine Liste aller verfügbaren Aktionen anzuzeigen, eine davon auszuführen und Helm-Bibtex zu beenden.
Ivy-Bibtex : Wählen Sie einen Eintrag aus und drücken Sie <return> , um die Standardaktion auszuführen. Alternativ drücken Sie Mo , um eine Liste aller verfügbaren Aktionen anzuzeigen, eine davon auszuführen und Ivy-Bibtex zu beenden.
Helm-Bibtex : Starten Sie Helm-Bibtex, geben Sie den Suchausdruck ein, verschieben Sie den Cursor in den passenden Eintrag und geben Sie C-<space> (Steuerung + Speicherleiste) ein, um diesen Eintrag zu markieren, ändern Sie Ihren Suchausdruck optional, markieren Sie mehr Einträge, drücken Sie schließlich <return> oder <tab> um eine Aktion für alle ausgewählten Einträge zu markieren und Helmbibtex zu beenden.
Ivy-Bibtex : Starten Sie Ivy-Bibtex, geben Sie den Suchausdruck ein, verschieben Sie den Cursor in den passenden Eintrag und geben Sie C-<space> (Steuerung + Speicherleiste) ein, um diesen Eintrag zu markieren. Ändern Sie optional Ihren Suchausdruck, markieren Sie mehr Einträge, drücken Sie schließlich die Ausführung der <return> für alle ausgewählten Einträge oder Mo , um eine andere Aktion auszuwählen. Drücken Sie S-<space> (Shift + Space Bar), um einen markierten Eintrag zu markieren.
Helm-Bibtex : Starten Sie eine E-Mail an Ihren Kollegen ( Cx m ) und führen Sie helm-bibtex aus. Suchen Sie nach Ihren neuen Publikationen und markieren Sie sie mit C-<space> und drücken Sie dann <f7> , um die Aktion „PDF an E-Mail anhängen“ auszuführen. Dann Mx helm-resume Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Re-Residee (sind die Veröffentlichungen noch markiert) und drücken Sie <f6> , um die Aktion „Bibtex-Eintrag einfügen“ auszuführen. Fügen Sie optional mehr lesbare Referenzen für menschliche Leserungen mit Mx helm-resume <f4> ein, um die Aktion "Referenz einfügen" auszuführen. E -Mail senden ( Cc Cc ). Erledigt. Dies dauert weniger als 10 Sekunden.
Ivy-Bibtex : Starten Sie eine E-Mail an Ihren Kollegen ( Cx m ) und führen Sie ivy-bibtex aus. Suchen Sie nach Ihren neuen Publikationen und markieren Sie sie mit C-<space> und drücken Sie dann CMo a , um die Aktion „PDF an E-Mail anzuhängen“ und Ivy offen zu halten. Drücken Sie dann Mo b , um die Aktion „Bibtex -Eintrag einfügen“ oder mehr menschliche lesbare Referenzen mit Mo r einfügen, um die Aktion „Referenz einfügen“ auszuführen. E -Mail senden ( Cc Cc ). Erledigt. Dies dauert weniger als 10 Sekunden.
Dies setzt natürlich voraus, dass Sie E -Mails von EMACs, z. B. über MU4E, senden.
Helm-Bibtex und Ivy-Bibtex verfügen über leistungsstarke Suchfunktionen, aber einige gängige Suchvorgänge können nicht einfach durchgeführt werden, weil die relevanten Informationen in Bibtex-Dateien in der Regel nicht dargestellt werden. Zum Beispiel weiß die Bibtex-Vervollständigung nicht, ob eine Konferenzpräsentation ein Vortrag oder ein Poster war, da beide als inproceedings dargestellt werden. Wenn Sie also eine Liste Ihrer Konferenzgespräche (z. B. für Ihren Lebenslauf) erstellen möchten, ist das nicht möglich - nicht ohne zusätzliche Arbeit. Eine Lösung besteht darin, Veröffentlichungen zu „taggen“. Tags sind wie Schlüsselwörter, außer dass sie nicht den Inhalt einer Veröffentlichungen, sondern Metakaten darstellen. Beispiel:
@inproceedings { BibtexKey2015 ,
author = { Jane Doe and Monika Mustermann } ,
title = { This is the title } ,
crossref = { XYZ-conference-2015 } ,
keywords = { keyword1, keyword2 } ,
pages = { 10 } ,
tags = { poster } ,
} Da tags kein Standard-Bibtex-Feld ist, betrachtet die Bibtex-Vervollständigung standardmäßig bei der Suche nicht. Um nach Tags suchen zu können, müssen wir Bibtex-Vervollständigung daher mitteilen, dass das Feld tags auch relevant ist:
(setq bibtex-completion-additional-search-fields '(tags)))
Es gibt viele andere Möglichkeiten, wie Tags verwendet werden können. Zum Beispiel können sie verwendet werden, um Artikel zu markieren, die Sie lesen möchten, oder wichtige Artikel oder Manuskripte in Arbeit usw.
Die Aktion zum Einfügen eines Zitatsbefehls in ein Latex-Dokumentangebot für den Befehl Zitat und gegebenenfalls für die Argumente vor und nach der Angabe. Die Eingabeaufforderung für den Citation-Befehl hat einen eigenen Minibuffer-Verlauf, was bedeutet, dass frühere Eingaben durch Drücken der <up> Taste für Helm-Bibtex oder Mp für Ivy-Bibtex zugegriffen werden können. Durch Drücken von <down> ist es auch möglich, auf die Liste aller in biblatex definierten Zitierbefehle zuzugreifen (mit Ausnahme von Multicite -Befehlen und Volcite et al., Die unterschiedliche Argumentationsstrukturen haben). Die Eingabeaufforderung unterstützt auch die automatische Vervollständigung über die tab . Wenn kein Befehl eingegeben wird, wird der Standardbefehl verwendet. Der Standardbefehl wird in der Anpassungsvariablen bibtex-completion-cite-default-command definiert. Standardmäßig fordern Helm-Bibtex und Ivy-Bibtex auf Vor- und Nachnoten für das Zitat auf. Dies kann ausgeschaltet werden, indem die variable bibtex-completion-cite-prompt-for-optional-arguments auf nil festgelegt werden.
Die Bibliographie zwischen Bibtex-Vervollständigung zwischengespeichert die Bibliographie, um eine kostspielige Lesen zu verhindern, wenn eine neue Abfrage gestartet wird. Die Bibtex-Vervollständigung prüft jedoch nicht, ob seit der letzten Lektüre neue PDFs oder Notizen hinzugefügt wurden, und daher können die Symbole, die das Vorhandensein oder Fehlen dieser Elemente angeben, möglicherweise falsch sein. Ein erneutes Lesen kann mit einem Präfixargument erzwungen werden.
Helm-Bibtex : Entweder Cu Mx helm-bibtex oder Cu gefolgt von der von Ihnen verwendeten Schlüsselbindung, um Helm-Bibtex aufzurufen.
Ivy-Bibtex : Entweder Cu Mx ivy-bibtex oder Cu gefolgt von der wichtigsten Bindung, die Sie verwenden, um Ivy-Bibtex aufzurufen.
Helm-Bibtex : Starten Sie Helm-Bibtex und geben Sie Suchbegriffe ein. Wählen Sie dann "CrossRef" im Abschnitt mit dem Titel "Fallback -Optionen". (Sie können die linken und rechten Pfeiltasten verwenden, um zwischen Abschnitten zu wechseln.)
Ivy-Bibtex : Starten Sie Ivy-Bibtex und geben Sie Suchbegriffe ein. Drücken Sie dann Mo f um die Liste der Fallback -Optionen anzuzeigen und "CrossRef" auszuwählen.
Dadurch wird Biblio.el verwendet, um die CrossRef -Datenbank zu durchsuchen. Platzieren Sie in der Ergebnisliste den Cursor auf den Interesseneintrag und drücken Sie c , um den Bibtex für diesen Eintrag oder i zu kopieren, um ihn am Punkt einzulegen. Drücken Sie q , um den Puffer mit den Suchergebnissen zu schließen. Einzelheiten finden Sie in der Dokumentation von biblio.el.
Manchmal liefert der Suchbegriff nicht die gewünschten Ergebnisse für die erste ausgewählte Fallback -Quelle, und Sie möchten möglicherweise eine andere Fallback -Option mit demselben Suchbegriff auswählen. Zu diesem Zweck können Sie helm-resume (oder ivy-resume ) verwenden, um zum ersten Helmmenü (Ivy) zurückzukehren, wobei der letzte Suchbegriff voreingegeben wird, damit Sie eine andere Option effizient auswählen können.
Im Folgenden stelle ich Code an, der für mich oder andere Benutzer nützlich war. Beachten Sie, dass dieser Code Annahmen treffen kann, die nicht in Ihrem Setup enthalten sind. Lesen Sie den Code sorgfältig durch, bevor Sie ihn ausführen, und nehmen Sie bei Bedarf Änderungen vor.
Der folgende Code liest alle Notizdateien in Ihrem bibtex-completion-notes-path und erstellt eine neue Notizendatei mit einem Abschnitt für jede Veröffentlichung. In diesem Code geht davon aus, dass die Bibtex-Vervollständigung weiterhin für mehrere Notizdateien konfiguriert ist und die Notizen in der Datei notes.org in Ihrem bibtex-completion-notes-path speichern möchten. Der Code fügt auch allen in den einzelnen Notizdateien gefundenen ORG-Überschriften eine Ebene hinzu (da für die Veröffentlichungen in der neuen Notizendatei die Überschriften der obersten Ebene verwendet werden). Wenn eine Notizdatei keinen entsprechenden Eintrag in der Bibliographie hat, wird sie ignoriert.
( let ((note-files ( directory-files bibtex-completion-notes-path t " ^[^.]+ \ .org$ " ))
(bibtex-completion-notes-path (f-join bibtex-completion-notes-path " notes.org " )))
( cl-loop
for note-file in note-files
for key = (f-no-ext (f-filename note-file))
do ( condition-case nil
( progn
(bibtex-completion-edit-notes key)
( insert ( with-temp-buffer
( insert-file-contents note-file)
( replace-regexp " ^* " " ** " )
( buffer-string ))))
( error nil ))))Angenommen, Sie möchten eine Bibtex -Datei erstellen, die nur Einträge enthält, die Sie in einem Artikel zitiert haben, und dann können Sie den folgenden Code verwenden, um die neue Bibtex -Datei mit Einträgen zu füllen:
( progn
( switch-to-buffer ( generate-new-buffer " my_new_bibliography.bib " ))
(--map ( insert (bibtex-completion-make-bibtex it)) (-distinct '( " Key1 " " Key2 " ))))If LaTeX is used to write the article, grep and sed can be used to extract the cited keys:
grep ' entry{ ' manuscript.bbl | sed ' s/^.*entry{([^}]*)}.*$/1/ ' This can be useful if you'd like to transfer all your PDFs to another directory or similar.
(flatten-tree
( mapcar
( lambda ( entry ) (bibtex-completion-find-pdf entry))
(bibtex-completion-candidates)))Helm-bibtex and ivy-bibtex display entries in the order in which they appear in the BibTeX file reversed. This way, entries that were added at the bottom of the BibTeX file show up at the top when searching. There is currently no support for sorting but if you want to reverse the order of entries you can use the code below:
( advice-add 'bibtex-completion-candidates
:filter-return 'reverse )ivy-bibtex as an org-cite-follow-processor As mentioned here, the default org-open-at-point on a org citation will take you to the corresponding bibliography entry. The following code will change this behavior to instead open ivy-bibtex when following an org citation by entering RET or clicking on it:
(org-cite-register-processor 'my-ivy-bibtex-org-cite-follow
:follow ( lambda ( _ _ ) (ivy-bibtex)))
( setq org-cite-follow-processor 'my-ivy-bibtex-org-cite-follow )This usually happens when a BibTeX file isn't well-formed. Common problems are opening quotes or parentheses that don't have matching counterparts. Unfortunately, Helm swallows the error message that is generated in these cases and just shows an empty buffer.
One way to diagnose the problem is to call the function for reading BibTeX directly and to see what error message it produces:
(bibtex-completion-candidates)Wenn Sie sehen
forward-sexp: Scan error: "Unbalanced parentheses", 181009, 512282
this means that there is an unmatched opening parenthesis at the position 181009. To find this parenthesis, open the BibTeX file and do M-: (goto-char 181009) RET . You can also use the command Mx bibtex-validate RET to check for errors. Fix any problems and try again.