Helm-Bibtex: Ivy-Bibtex:
Helm-Bibtex et Ivy-Bibtex vous permettent de rechercher et de gérer votre bibliographie Bibtex. Ils partagent tous deux le même backend générique, Bibtex-Completion, mais l'un utilise le cadre d'achèvement de Helm et l'autre IVY comme frontal.
bibtex-completion-watch-bibliography . Peut être utilisé pour désactiver le rechargement automatique de la bibliographie.ivy-bitex . Voir ici.helm-bibtex-with-local-bibliography et ivy-bibtex-with-local-bibliography utilisent désormais également des bibliographies à définition locale et globalement dans les fichiers ORG. Ce sont des bibliographies spécifiées en utilisant la nouvelle #+BIBLIOGRAPHY: le mot clé et ceux de la variable org-cite-global-bibliography .bibtex-completion-format-citation-org-cite (pour une utilisation dans la variable de configuration bibtex-completion-format-citation-functions )=has-pdf= et =has-note= .helm-bibtex-with-notes et ivy-bibtex-with-noted pour rechercher juste dans les entrées qui ont des notes.author-or-editor de champ APA virtuel pour une utilisation dans les modèles de notes.@string .Voir News.org pour les anciennes nouvelles.
Helm-Bibtex 'et Ivy-Bibtex' Les principaux points de vente sont une recherche efficace dans les grandes bibliographies en utilisant des expressions de recherche puissantes et une intégration serrée dans vos flux de travail EMACS. Ils peuvent tous deux effectuer les actions suivantes sur les entrées correspondant à l'expression de la recherche: ouvrez le PDF associé à une entrée, son URL ou DOI, insérer une citation pour cette entrée, la clé Bibtex, l'entrée Bibtex ou une référence de texte brut, joignez le PDF à un e-mail, prenez des notes, modifiez l'entrée Bibtex. De nombreux aspects peuvent être configurés en fonction des préférences personnelles.
Vous trouverez ci-dessous une capture d'écran montrant une recherche de bibtex de barre pour les entrées contenant l'expression «suivi des yeux».

L' eye.?tracking d'expression régulière. Un symbole carré en boucle (⌘) à côté d'une entrée indique qu'un PDF est disponible. Un symbole du stylo (✎) signifie qu'il y a des notes jointes à cette entrée. En bas, il existe des entrées qui peuvent être utilisées pour rechercher dans des bases de données en ligne.
La façon la plus simple d'installer Helm-Bibtex ou Ivy-Bibtex est via Melpa. Alternativement, mettez les fichiers bibtex-completion.el et soit Helm-bibtex.el ou ivy-bibtex.el dans un répertoire inclus dans votre chemin de chargement et ajoutez la ligne suivante à votre fichier de démarrage (généralement init.el ):
( autoload 'helm-bibtex " helm-bibtex " " " t )ou
( 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 et Ivy-Bibtex dépendent d'un certain nombre de packages qui seront automatiquement installés si vous utilisez Melpa.
Lorsque vous utilisez Helm-Bibtex ou Ivy-Bibtex, assurez-vous que Helm ou Ivy est correctement configuré (voir la documentation de Helm ou la documentation IVY).
Une configuration minimale consiste à dire à Bibtex-Completion où vos bibliographies peuvent être trouvées:
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/bibtex-file-2.bib " )) Les utilisateurs d'Org-Bibtex peuvent également spécifier des fichiers de bibliographie en mode org, auquel cas il sera supposé qu'un fichier Bibtex existe avec le même nom et le même dossier d'extension au lieu de l'ORG. Si le fichier BIB a un nom différent, utilisez une cellule contre ("orgfile.org" . “bibfile.bib") à la place:
( 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 " )))Spécifiez où les PDF peuvent être trouvés:
( setq bibtex-completion-library-path '( " /path1/to/pdfs " " /path2/to/pdfs " )) Bibtex-Completion suppose que le nom d'un PDF se compose de la touche Bibtex suivi plus un suffixe défini par l'utilisateur ( .pdf par défaut). Par exemple, si une entrée Bibtex a la clé Darwin1859 , Bibtex-Completion recherche Darwin1859.pdf .
Si les entrées Bibtex ont un champ qui spécifie le chemin complet des PDF, ce champ peut également être utilisé. Par exemple, Jabref et Zotero stockent l'emplacement des PDF dans un champ appelé File :
( setq bibtex-completion-pdf-field " File " ) Si bibtex-completion-pdf-field est non-NIL, Bibtex-Completion essaiera d'abord de récupérer le fichier spécifié dans ce champ. Si le champ n'est pas défini pour une entrée ou si le fichier spécifié n'existe pas, Bibtex-Complétion retombe à la méthode décrite ci-dessus (recherche de clé + .pdf dans les répertoires répertoriés dans bibtex-completion-library-path ).
Les spécifications de fichiers peuvent être des chemins nus ou suivre le format utilisé par Jabref, Zotero, Calibre et Mendeley. Ce format permet également la spécification de plusieurs fichiers (par exemple, le papier principal et le matériel supplémentaire). Exemples:
File = {/path/to/article.pdf}File = {:/path/to/article.pdf:PDF}File = {:/path/to/article.pdf:PDF;:/path/to/supplementary_materials.pdf:PDF} Bibtex-Completion prend en charge deux méthodes de stockage de notes. Il peut stocker toutes les notes dans un fichier ou stocker des notes dans plusieurs fichiers, un fichier par publication. Dans le premier cas, la variable de personnalisation bibtex-completion-notes-path doit être définie sur le chemin complet du fichier des notes:
( setq bibtex-completion-notes-path " /path/to/notes.org " ) Si un fichier par publication est préféré, bibtex-completion-notes-path doit pointer vers le répertoire utilisé pour stocker les fichiers de notes:
( setq bibtex-completion-notes-path " /path/to/notes " ) Les noms de ces fichiers se composent de la touche Bibtex plus un suffixe défini par l'utilisateur ( .org par défaut).
À ce stade, la plupart des gens seront prêts à partir. Passez à l'utilisation ci-dessous pour voir comment utiliser Helm-Bibtex et Ivy-Bibtex.
Invoquer helm-bibtex ou ivy-bibtex lorsque le point est sur une citation en mode org sélectionnera automatiquement cette clé. Cependant, l' org-open-at-point sur une citation de l'organisation vous amènera à l'entrée de bibliographie correspondante. Le code suivant modifiera ce comportement pour ouvrir helm-bibtex-follow lors de la suite d'une citation en entrée en RET ou en cliquant dessus:
( setq org-cite-follow-processor 'helm-bibtex-org-cite-follow ) Remarque Dans le cas d'une citation de l'organisation avec plusieurs clés, le code ci-dessus ne préservera aucune entrée lorsque la partie [cite: la partie est sélectionnée. Voir ici pour l'alternative Ivy.
La variable bibtex-completion-display-formats peut être utilisée pour personnaliser la façon dont les résultats de recherche sont présentés sur une base de type par entrée. La valeur par défaut est
'(( t . " ${author:36} ${title:*} ${year:4} ${=has-pdf=:1}${=has-note=:1} ${=type=:7} " )) Ce qui signifie que tous les types d'entrée sont présentés de la même manière: auteurs, titre, année,… Dans ce format String, les chiffres indiquent la quantité d'espace réservée au champ respectif. S'il y a un * au lieu d'un nombre, cela signifie que ce champ obtient n'importe quel espace. Voici une configuration qui utilise une disposition différente pour différents types d'entrée:
( 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:*} " ))) Pour que cela fonctionne, vous devez ajouter journal et booktitle à bibtex-completion-additional-search-fields . Voir la section suivante.
Les champs par défaut utilisés pour la recherche sont: auteur, titre, année, clé de bibtex, type d'entrée (article, inproceedings,…). Les bibtex-completion-addition-search-fields variables peuvent être utilisés pour étendre cette liste. Exemple:
( setq bibtex-completion-additional-search-fields '(keywords))( setq bibtex-completion-pdf-symbol " ⌘ " )
( setq bibtex-completion-notes-symbol " ✎ " ) Si les fichiers PDFS suivent un schéma de dénomination différent de celui de Bibtex Key + .pdf , la fonction bibtex-completion-find-pdf-in-library peut être modifiée pour s'adapter à cela.
Par défaut, Emacs est utilisé pour ouvrir les fichiers PDF. Cela signifie que Docview est utilisé, soit, s'il est installé, l'extension PDF-Tools bien supérieure qui offre des fonctionnalités telles que la recherche incrémentielle dans les fichiers PDF et la création et la modification des annotations qui sont compatibles avec les annotations créées par le logiciel Adobe.
Pour configurer une autre visionneuse PDF, la variable de personnalisation bibtex-completion-pdf-open-function peut être utilisée. Voici un exemple de configuration pour la visionneuse OS X PDF SKIM:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " open " nil 0 nil " -a " " /Applications/Skim.app " fpath)))Voici un autre exemple pour le spectateur PDF Linux EVCINE:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " evince " nil 0 nil fpath))) Il est parfois souhaitable d'avoir les deux options (EMACS elle-même et la visionneuse externe) pour ouvrir le PDF. Ce qui suit ajoute une action avec EVCINE en tant que spectateur externe lié à P , en plus du spectateur EMACS ordinaire avec p L'action fonctionne avec Ivy-Bibtex; Il faudrait ajuster pour Helm-Bibtex (modifiez le chemin vers un autre spectateur si nécessaire):
( 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) " ))) Vous pouvez stocker des PDF supplémentaires pour une entrée donnée, comme une version annotée du PDF d'origine, un fichier contenant du matériel supplémentaire ou des fichiers de chapitre. Si le champ file est utilisé pour lier les PDF aux entrées (voir les fichiers PDF de la section), ces PDF supplémentaires peuvent simplement être ajoutés à ce champ. Si l'action «ouvrir le fichier PDF» est déclenchée, vous serez alors invité à l'ouvrir le fichier.
Si le champ file n'est pas utilisé mais que le schéma de dénomination bibtex-key + .pdf (voir à nouveau les fichiers PDF), vous pouvez obtenir le même comportement avec:
( setq bibtex-completion-find-additional-pdfs t )Tous les fichiers dont le nom commence par la touche Bibtex seront alors associés à une entrée. Il est alors suffisant pour nommer vos fichiers en conséquence (par exemple avec l'utilitaire Rename). Exemples:
bibtex-key-annotated.pdfbibtex-key-supplemental.pdfbibtex-key-chapter1.pdf Notez que pour des raisons de performances, ces fichiers supplémentaires ne sont détectés que lors du déclenchement d'une action, tel que «ouvrir le fichier PDF». Lorsque la bibliographie entière est chargée, seul le «principal» bibtex-key.pdf est détecté.
Si les documents sont référencés via le schéma de dénomination bibtex-key.pdf mais vous stockez des fichiers dans un format différent de PDF, vous pouvez définir la variable bibtex-completion-pdf-extension en conséquence. Exemple:
( setq bibtex-completion-pdf-extension " .djvu " )Si vous stockez des fichiers dans différents formats, vous pouvez spécifier une liste au lieu d'un seul type de fichier:
( setq bibtex-completion-pdf-extension '( " .pdf " " .djvu " , " .jpg " ))Les extensions de cette liste sont ensuite essayées séquentiellement jusqu'à ce qu'un fichier soit trouvé. Méfiez-vous que cela peut réduire les performances des grandes bibliographies.
Par défaut, Bibtex-Completion utilise ce qui est par défaut d'Emacs. Cependant, il existe une variété d'alternatives (voir la documentation de bibtex-completion-browser-function pour une liste complète). Exemple:
( setq bibtex-completion-browser-function 'browser-url-chromium )Les fonctions définies par l'utilisateur peuvent également être utilisées:
( setq bibtex-completion-browser-function
( lambda ( url _ ) ( start-process " firefox " " *firefox* " " firefox " url))) Le rechargement automatique peut être configuré à l'aide de bibtex-completion-watch-bibliography .
Bibtex-Completion crée des citations basées sur le mode majeur dans lequel la citation est insérée:
La liste des modes peut être étendue et les fonctions de citation peuvent être modifiées à l'aide de la variable de personnalisation bibtex-completion-format-citation-functions . Par exemple, les personnes qui n'utilisent pas Ebib pourraient préférer les liens vers les PDF au lieu des liens Ebib dans les fichiers en mode org:
( 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))) Lorsque vous souhaitez créer une liste de tâches de lecture en mode org, vous pouvez vous permettre en utilisant le titre du fichier PDF dans le lien. Pour atteindre cet objectif, vous pouvez modifier la variable bibtex-completion-format-citation-functions à l'aide de l'extrait de code suivant:
( 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)))Une fonction de citation doit accepter une liste des clés en entrée et renvoyer une chaîne contenant les citations. Voir les fonctions de citation prédéfinies pour les exemples.
Bibtex-Completion invite à une commande de citation de latex lors de l'insertion de citations dans des documents en latex. La liste des commandes disponibles pour la complétion automatique peut être définie à l'aide de la variable bibtex-completion-cite-commands .
Le paramètre par défaut inclut toutes les commandes CITE définies dans Biblatex (sauf les commandes multicite et volcite et al.). Si aucune commande n'est entrée, une commande par défaut est utilisée qui peut être configurée à l'aide de bibtex-completion-cite-default-command . La valeur par défaut de la commande par défaut est cite . La variable bibtex-completion-cite-default-as-initial-input contrôle la façon dont la commande par défaut est utilisée. Si t , il est inséré dans le minibuffer avant de lire les entrées de l'utilisateur. Si nil , il n'est pas inséré dans le minibuffer mais utilisé comme défaut si l'utilisateur n'entre rien.
Par défaut, Bibtex-Completion invite également les pré- et post-notes facultatifs pour la citation. Cela peut être éteint en définissant la variable bibtex-completion-cite-prompt-for-optional-arguments sur nil .
Voir également la section Insérer des commandes CITE LATEX ci-dessous.
Les bases de données en ligne peuvent être configurées à l'aide de la variable de personnalisation bibtex-completion-fallback-options . Cette variable contient un Alist où le premier élément de chaque entrée est le nom de la base de données et le deuxième élément est soit une URL ou une fonction. L'URL doit contenir un %s à la position où l'expression de recherche actuelle doit être insérée. Si une fonction est utilisée, cette fonction doit considérer cette expression de recherche comme un seul argument.
Pour un accès rapide à la bibliographie, liez la commande de recherche, helm-bibtex ou ivy-bibtex , à une clé pratique.
HELM-BIBTEX : J'utilise la touche de menu comme touche de préfixe pour toutes les commandes HELM et lie helm-bibtex à b . Helm-Bibtex peut ensuite être démarré à l'aide de <menu> b . Il est également utile de lier helm-resume à <menu> dans helm-command-map . Avec cette reliure, <menu> <menu> peut être utilisé pour rouvrir la dernière recherche de casque.
( 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 : Vous pouvez également lier ivy-bibtex à <menu> b et ivy-resume à <menu> <menu> .
Pour plus de commodité, des recherches fréquentes peuvent être capturées dans les commandes et liées aux combinaisons de clés. Vous trouverez ci-dessous un exemple de code qui définit une recherche de publications rédigées par «Jane Doe» et lie la commande de recherche à Cx p .
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 ) Appuyez sur <enter> sur une publication déclenche «l'action par défaut» qui ouvre le PDF associé à la publication, s'il est présent, ou son URL ou DOI autrement. Appuyez sur <tab> dans Helm-Bibtex ou Mo dans Ivy-Bibtex affiche à la place un menu d'action répertoriant les actions disponibles. Voici la liste de toutes les actions disponibles avec leurs fonctions (ce sont les fonctions d'action génériques, pour Helm-Bibtex, les noms de fonction commencent par helm-bibtex- au lieu de bibtex-completion- , et pour Ivy-Bibtex, ils commencent par ivy-bibtex- à la place)::
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-attachmentbibtex-completion-edit-notesbibtex-completion-show-entrybibtex-completion-add-pdf-to-library Helm-Bibtex : La liste d'action peut être modifiée via les commandes helm-add-action-to-source et helm-delete-action-from-source . Par exemple, ce qui suit ajoute une nouvelle action helm-bibtex-open-annotated-pdf (voir ci-dessus) juste après le premier élément de la liste ci-dessus:
(helm-add-action-to-source
" Open annotated PDF (if present) " 'helm-bibtex-open-annotated-pdf
helm-source-bibtex 1 ) Si le dernier argument numérique dans helm-add-action-to-source est omis, la nouvelle action est ajoutée à la fin de la liste. Étant donné que l'action par défaut est simplement la première entrée de la liste des actions, l'action par défaut peut être modifiée en supprimant une action et en la réinsertion en haut de la liste. Vous trouverez ci-dessous un exemple montrant comment faire «Insérer la clé de bibtex» l'action par défaut:
(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 : L'action par défaut et les actions disponibles supplémentaires sont définies séparément. L'action par défaut est contrôlée par les variables ivy-bibtex-default-action et ivy-bibtex-default-multi-action , avec ce dernier destiné aux listes des entrées marquées (voir Appliquer les actions à plusieurs entrées). Par exemple, le code suivant modifie l'action par défaut pour «insérer la clé de bibtex»:
( setq ivy-bibtex-default-action 'ivy-bibtex-insert-key )De la même manière, le code suivant définit l'action par défaut pour les listes des entrées marquées pour «insérer la clé Bibtex» qui insérera une belle liste de touches séparées par des virgules:
( setq ivy-bibtex-default-multi-action 'ivy-bibtex-insert-key ) Les actions supplémentaires sont définies en passant la liste d'action souhaitée aux ivy-set-actions . Par exemple, les codes suivants ne conservent que deux actions disponibles en plus de la par défaut:
(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))) Les lettres p et e sont les liaisons clés des deux actions dans le menu Action. La liaison clé o est réservée à l'action par défaut. La deuxième apparition de l'action dans ce code alerte ivy que l'action peut gérer les listes des entrées marquées. Il peut être omis en toute sécurité si la bonne chose à faire est simplement d'appliquer l'action à chaque entrée tour à tour.
Si vous souhaitez seulement ajouter de nouvelles actions à la fin de la liste des actions, vous pouvez également utiliser la commande ivy-add-actions . Par exemple, ce qui suit ajoute une nouvelle action ivy-bibtex-open-annotated-pdf (voir ci-dessus) à la fin de la liste d'action:
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-annotated-pdf " Open annotated PDF (if present) " ivy-bibtex-open-annotated-pdf)))La création d'une nouvelle action pour Helm-Bibtex ou Ivy-Bibtex peut être effectuée en trois étapes. Pour un exemple, voir l'action pour l'ouverture des PDF annotés ci-dessus.
La première étape et principale consiste à créer une fonction d'action générique bibtex-completion-<action> (par exemple bibtex-completion-open-annotated-pdf ). Cette fonction doit considérer comme un argument unique une liste de touches Bibtex et effectuer l'action sur les entrées Bibtex correspondantes.
La deuxième étape consiste à adapter la fonction d'action générique pour Helm-Bibtex ou Ivy-Bibtex, afin qu'elle soit exécutée dans le tampon correct et recevra les clés des entrées sélectionnées).
Helm-Bibtex : cela se fait simplement avec:
(helm-bibtex-helmify-action bibtex-completion-<action > helm-bibtex-<action > )Ivy-Bibtex : Cela se fait simplement avec:
(ivy-bibtex-ivify-action bibtex-completion-<action > ivy-bibtex-<action > ) La troisième et dernière étape consiste à rendre la fonction d'action personnalisée helm-bibtex-<action> ou ivy-bibtex-<action> disponible dans Helm-Bibtex ou Ivy-Bibtex en l'ajoutant au menu d'action. Voir Modifier les actions disponibles.
Helm-Bibtex : Par défaut, helm-bibtex utilise la trame entière pour afficher la bibliographie. Cela peut être modifié en définissant la variable helm-bibtex-full-frame sur nil , auquel cas la norme du casque est utilisée (généralement divisée verticale, la recherche de barre étant indiquée dans la fenêtre inférieure).
Ivy-Bibtex : Ivy-Bibtex affiche toujours la bibliographie dans le minibuffer. La variable ivy-height contrôle le nombre de lignes pour la fenêtre MiniBuffer dans toutes les commandes IVY.
Bibtex-Completion remplit de nouvelles notes avec quelques informations de base sur la publication. Dans le cas d'un seul fichier de notes pour toutes les publications, les nouvelles entrées ressemblent à l'exemple suivant:
Gigerenzer, G. (1998): Nous avons besoin de pensée statistique, pas de rituels statistiques :PROPRIÉTÉS: : Custom_id: Gigerenzer1998 :FIN:
Le titre de la nouvelle section se compose des noms d'auteur, l'année et le titre de la publication. La propriété Custom_ID spécifie la clé Bibtex de l'entrée (elle est nommée Custom_ID pour compatibilité avec org-ref).
Dans le cas d'un fichier par publication, un nouveau fichier de notes contient un titre dans le format suivant:
# + Titre: Notes sur: Gigerenzer, G. (1998): Nous avons besoin de pensée statistique, pas de rituels statistiques
Si d'autres formats sont souhaités, les modèles pour les nouvelles notes peuvent être modifiés à l'aide des variables de personnalisation bibtex-completion-notes-template-one-file et bibtex-completion-notes-template-multiple-files .
Par défaut, Bibtex-Completion suppose que les fichiers de notes sont au format en mode org. Cependant, tout autre format peut également être utilisé. Dans le cas d'un seul fichier de notes, il suffit de définir bibtex-completion-notes-path pour pointer vers le fichier souhaité. Dans le cas de plusieurs fichiers de notes, le type de fichiers peut être spécifié à l'aide de la variable de personnalisation bibtex-completion-notes-extension . Par exemple, si Markdown est le type de fichier souhaité:
( setq bibtex-completion-notes-path " /path/to/notes " )
( setq bibtex-completion-notes-extension " .md " )Si le type de fichier est défini sur autre chose que le mode org, les modèles pour les nouveaux fichiers de notes doivent également être ajustés. Voir la section ci-dessus pour plus de détails.
Bibtex-Completion recharge automatiquement la bibliographie lorsqu'un fichier .bib est modifié sur le disque. Cependant, Bibtex-Completion ne regarde pas les PDF et les notes. Ainsi, lorsqu'un nouveau PDF ou note est ajouté, la bibliographie doit être rechargée manuellement pour afficher correctement le PDF et les symboles de note (via l'argument du préfixe, par exemple Cu Mx helm-bibtex ). Malheureusement, la mise en œuvre du rechargement automatique pour les PDF et les notes n'est pas entièrement simple, car l'achèvement de Bibtex est assez flexible dans la façon dont les PDF et les notes peuvent être gérés. Mais pour des configurations simples, il y a une solution facile: il suffit de regarder les répertoires bibtex-completion-library-path et bibtex-completion-notes-path et recharger la bibliographie lorsqu'ils changent. Exemple pour le répertoire PDF:
( setq tmalsburg-pdf-watch
( file-notify-add-watch bibtex-completion-library-path
'(change)
( lambda ( event ) (bibtex-completion-candidates)))) Utilisez Mx helm-bibtex ou Mx ivy-bibtex pour démarrer une nouvelle recherche. Les champs par défaut pour la recherche sont: l'auteur, le titre, l'année, la clé Bibtex et le type d'entrée. Des expressions régulières peuvent être utilisées. Exemples de recherche:
Tout publié par Janet Fodor:
Janet Fodor
Toutes les thèses de doctorat:
phdhèse
La thèse de doctorat de Lyn Frazier:
Phdthèse Frazier
Publications sur le suivi des yeux. Une expression régulière est utilisée pour correspondre à diverses orthographes («Eyetracking», «Eye Tracking», «Eye-Tracking»):
œil.
Présentations de la conférence en 2013:
2013 Inproceedings
Publications de 2010 et 2011:
(2010 | 2011 )
Articles co-écrits par David Caplan et Gloria Waters:
Article Waters Caplan
Recherche d'articles de David Caplan qui ne sont pas co-écrits par Gloria Waters:
Article Caplan! Waters
Utilisez helm-bibtex-with-local-bibliography ou ivy-bibtex-with-local-bibliography pour démarrer une recherche dans la «bibliographie locale» du tampon actuel, au lieu de la «bibliographie mondiale» définie par bibtex-completion-bibliography . Si le fichier actuel est un fichier bibtex, cette bibliographie sera utilisée. Si le fichier actuel est un fichier latex, Reftex sera utilisé pour déterminer la bibliographie locale des commandes de bibliographie standard de latex bibliography et addbibresource . Si le fichier est un fichier ORG, la bibliographie ORG locale et / ou globale est utilisée (comme spécifié en utilisant la nouvelle #+BIBLIOGRAPHY: le mot clé et la variable org-cite-global-bibliography ). Si aucune bibliographie locale ne peut être trouvée, la bibliographie mondiale ( bibtex-completion-bibliography ) sera utilisée.
Utilisez helm-bibtex-with-notes ou ivy-bibtex-with-notes pour rechercher uniquement parmi les entrées qui ont des notes. Particulièrement utile en combinaison avec ~ org-roam-bibtex.el ~.
Un cas d'utilisation courant est l'endroit où un terme de recherche est écrit dans un document (par exemple dans votre manuscrit Latex) et vous souhaitez le rechercher dans votre bibliographie. Dans cette situation, commencez simplement Helm-Bibtex ou Ivy-Bibtex et entrez Mn . Cela insère le mot sous le curseur comme terme de recherche. (Il s'agit d'une fonctionnalité Helm / Ivy et peut être utilisée dans toutes les commandes Helm / Ivy, pas seulement Helm-Bibtex / IVY-Bibtex.) Notez qu'il est également possible d'utiliser des touches Bibtex pour la recherche. Donc, si votre curseur se trouve sur une touche Bibtex (par exemple, dans une commande Latex Cite), vous pouvez démarrer Helm-Bibtex ou Ivy-Bibtex, appuyez sur Mn et voir l'entrée associée à cette clé Bibtex. Cas spécial: vous souhaitez ouvrir le PDF associé à la touche Bibtex sous le curseur: Mx helm-bibtex Mn RET ou Mx ivy-bibtex Mn RET . Ceci est bien sûr plus court si vous liez helm-bibtex ou ivy-bibtex à une clé pratique (voir les liaisons clés).
Les actions disponibles sont:
HELM-BIBTEX : Sélectionnez une entrée et appuyez sur <return> pour exécuter l'action par défaut. Alternativement, appuyez sur TAB (Tabulator) pour voir une liste de toutes les actions disponibles, en exécuter une et sortir de Helm-Bibtex.
Ivy-bibtex : sélectionnez une entrée et appuyez sur <return> pour exécuter l'action par défaut. Alternativement, appuyez sur Mo pour voir une liste de toutes les actions disponibles, en exécuter une et sortir IVY-Bibtex.
HELM-BIBTEX : Démarrez Helm-Bibtex, entrez l'expression de la recherche, déplacez le curseur vers l'entrée correspondante et entrez C-<space> (Control + Space Bar) pour marquer cette entrée, modifiez éventuellement votre expression de recherche, marquez plus d'entrées, appuyez enfin <return> ou <tab> pour exécuter une action pour toutes les entrées sélectionnées à la fois et quitter Helm-Bibtex.
IVY-Bibtex : Démarrez Ivy-Bibtex, entrez l'expression de la recherche, déplacez le curseur vers l'entrée correspondante et entrez C-<space> (Control + Space Bar) pour marquer cette entrée, modifiez éventuellement votre expression de recherche, marquez plus d'entrées, appuyez enfin à <return> pour exécuter l'action par défaut sur toutes les entrées sélectionnées ou Mo pour choisir une autre action. Appuyez sur S-<space> (Shift + Space Bar) pour débarrasser une entrée marquée.
Helm-Bibtex : Démarrez un e-mail à votre collègue ( Cx m ) et exécutez helm-bibtex . Recherchez vos nouvelles publications et marquez-les avec C-<space> , puis appuyez sur <f7> pour exécuter l'action «Joindre PDF à Email». Ensuite, Mx helm-resume (les publications sont toujours marquées) et appuyez sur <f6> pour exécuter l'action «Insérer l'entrée Bibtex». Insérer éventuellement plus de références lisibles par humain à l'aide Mx helm-resume et <f4> pour exécuter l'action «insérer la référence». Envoyer un e-mail ( Cc Cc ). Fait. Cela prend moins de 10 secondes.
Ivy-Bibtex : Démarrez un e-mail à votre collègue ( Cx m ) et exécutez ivy-bibtex . Recherchez vos nouvelles publications et marquez-les avec C-<space> , puis appuyez sur CMo a pour exécuter l'action «Joindre PDF à Email» tout en gardant Ivy ouvert. Ensuite, appuyez sur Mo b pour exécuter l'action «Insérer une entrée Bibtex» ou insérer plus de références lisibles humaines en utilisant Mo r pour exécuter l'action «insérer la référence». Envoyer un e-mail ( Cc Cc ). Fait. Cela prend moins de 10 secondes.
Bien sûr, cela suppose que vous envoyez des e-mails d'Emacs, par exemple via MU4E.
Helm-Bibtex et Ivy-Bibtex ont des capacités de recherche puissantes, mais certaines recherches courantes ne peuvent pas être effectuées simplement parce que les informations pertinentes ne sont généralement pas représentées dans les fichiers Bibtex. Par exemple, Bibtex-Completion ne sait pas si une présentation de conférence était une conférence ou une affiche car les deux sont représentées comme inproceedings . Donc, si vous souhaitez compiler une liste de vos conférences de conférence (par exemple, pour votre CV), ce n'est pas possible - non sans un travail supplémentaire. Une solution consiste à «baliser» les publications. Les balises sont comme des mots clés, sauf qu'ils ne représentent pas le contenu d'une publication mais des métas. Exemple:
@inproceedings { BibtexKey2015 ,
author = { Jane Doe and Monika Mustermann } ,
title = { This is the title } ,
crossref = { XYZ-conference-2015 } ,
keywords = { keyword1, keyword2 } ,
pages = { 10 } ,
tags = { poster } ,
} Étant donné que tags n'est pas un champ Bibtex standard, Bibtex-Completion par défaut ne le considère pas lors de la recherche. Pour pouvoir rechercher des balises, nous devons donc dire à Bibtex-Completion que le champ tags est également pertinent:
(setq bibtex-completion-additional-search fields '(tags))
Il existe de nombreuses autres façons dont les balises peuvent être utilisées. Par exemple, ils peuvent être utilisés pour marquer des articles que vous prévoyez de lire ou des articles ou des manuscrits importants en cours, etc. Soyez créatif.
L'action pour insérer une commande de citation dans un document de latex invite la commande de citation et, le cas échéant, pour les arguments pré et postnote. L'invite pour la commande de citation a son propre historique de minibuffer, ce qui signifie que les entrées précédentes peuvent être accessibles en appuyant sur la touche <up> pour Helm-Bibtex ou Mp pour Ivy-Bibtex. En appuyant sur <down> , il est également possible d'accéder à la liste de toutes les commandes de citation définies dans Biblatex (à l'exception des commandes mulcite et Volcite et al. Qui ont des structures d'argument différentes). L'invite prend également en charge la complétion automatique via la touche tab . Si aucune commande n'est entrée, la commande par défaut est utilisée. La commande par défaut est définie dans la variable de personnalisation bibtex-completion-cite-default-command . Par défaut, Helm-Bibtex et Ivy-Bibtex invitent les pré et post-notes pour la citation. Cela peut être éteint en définissant la variable bibtex-completion-cite-prompt-for-optional-arguments sur nil .
Bibtex-Completion cache la bibliographie pour empêcher une relecture coûteuse lorsque une nouvelle requête est démarrée. Cependant, Bibtex-Completion ne vérifie pas si de nouveaux PDF ou notes ont été ajoutés depuis la dernière lecture et donc les symboles indiquant la présence ou l'absence de ces éléments peuvent être incorrects. Une relire peut être forcée à l'aide d'un argument de préfixe.
HELM-BIBTEX : Soit Cu Mx helm-bibtex ou Cu suivi de la liaison clé que vous utilisez pour invoquer Helm-Bibtex.
Ivy-Bibtex : Soit Cu Mx ivy-bibtex ou Cu suivi de la liaison clé que vous utilisez pour invoquer Ivy-Bibtex.
Helm-Bibtex : Démarrez Helm-Bibtex et entrez les termes de recherche. Sélectionnez ensuite «CrossRef» dans la section intitulée «Options de repli». (Vous pouvez utiliser les touches flèches gauche et droite pour basculer entre les sections.)
Ivy-Bibtex : Démarrez Ivy-Bibtex et entrez les termes de recherche. Ensuite, appuyez sur Mo f pour voir la liste des options de secours et sélectionnez «CrossRef».
Cela utilisera Biblio.el pour rechercher la base de données CrossRef. Dans la liste des résultats, placez le curseur sur l'entrée d'intérêt et appuyez sur c pour copier le bibtex pour cette entrée ou i l'insérer au point. Appuyez sur q pour fermer le tampon avec les résultats de recherche. Voir la documentation de Biblio.el pour plus de détails.
Parfois, le terme de recherche ne donne pas les résultats souhaités sur la première source de repli sélectionnée et vous pouvez choisir une autre option de secours avec le même terme de recherche. Pour cela, vous pouvez utiliser helm-resume (ou ivy-resume ) pour revenir au menu Helm initial (IVY) avec le dernier terme de recherche pré-entré vous permettant de choisir efficacement une autre option.
Ci-dessous, je fournis un code utile pour moi ou d'autres utilisateurs. Notez que ce code peut faire des hypothèses qui ne tiennent pas dans votre configuration. Lisez attentivement le code avant de l'exécuter et apportez des modifications au besoin.
Le code ci-dessous lit tous les fichiers de notes dans votre bibtex-completion-notes-path et crée un nouveau fichier de notes contenant une section pour chaque publication. Ce code suppose que Bibtex-Completion est toujours configuré pour plusieurs fichiers de notes et que vous souhaitez stocker les notes dans le fichier notes.org dans votre bibtex-completion-notes-path . Le code ajoute également un niveau à tous les titres de l'organisation trouvés dans les fichiers de notes individuels (car les en-têtes de niveau supérieur sont utilisés pour les publications dans le fichier des nouveaux notes). Si un fichier de notes n'a pas d'entrée correspondante dans la bibliographie, elle est ignorée.
( 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 ))))Dites que vous souhaitez créer un fichier Bibtex contenant uniquement des entrées que vous avez citées dans un article, vous pouvez alors utiliser le code suivant pour remplir le nouveau fichier Bibtex avec les entrées:
( 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)Si tu vois
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.