Helm-Bibtex: Ivy-Bibtex:
Helm-Bibtex e Ivy-Bibtex le permiten buscar y administrar su bibliografía Bibtex. Ambos comparten el mismo backend genérico, Bibtex-Completion, pero uno usa el marco de finalización del timón y la otra hiedra como front-end.
bibtex-completion-watch-bibliography . Se puede utilizar para desactivar la recarga automática de la bibliografía.ivy-bitex . Ver aquí.helm-bibtex-with-local-bibliography y ivy-bibtex-with-local-bibliography ahora también usan bibliografías definidas locales y globalmente en archivos de org. Estas son bibliografías especificadas utilizando la nueva #+BIBLIOGRAPHY: palabra clave y aquellas en la variable org-cite-global-bibliography .bibtex-completion-format-citation-org-cite (para su uso en la configuración variable bibtex-completion-format-citation-functions )=has-pdf= y =has-note= .helm-bibtex-with-notes e ivy-bibtex-with-noted para buscar solo dentro de las entradas que tienen notas.author-or-editor de campo APA virtual para su uso en plantillas de notas.@string .Vea News.org para ver las viejas noticias.
Los puntos de venta principales de Helm-Bibtex 'y Ivy-Bibtex' son una búsqueda eficiente en grandes bibliografías utilizando expresiones de búsqueda potentes e integración estrecha en sus flujos de trabajo de emacs. Ambos pueden realizar las siguientes acciones en las entradas que coinciden con la expresión de búsqueda: abra el PDF asociado con una entrada, su URL o DOI, inserte una cita para esa entrada, la tecla Bibtex, la entrada de Bibtex o una referencia de texto sin formato, adjunte el PDF a un correo electrónico, tome notas, edite la entrada de Bibtex. Muchos aspectos se pueden configurar para adaptarse a las preferencias personales.
A continuación se muestra una captura de pantalla que muestra una búsqueda de timón-bibtex de entradas que contienen la expresión "seguimiento ocular".

El eye.?tracking de expresión regular. Un símbolo cuadrado en bucle (⌘) junto a una entrada indica que hay un PDF disponible. Un símbolo de lápiz (✎) significa que hay notas adjuntas a esta entrada. En la parte inferior, hay entradas que se pueden usar para buscar en bases de datos en línea.
La forma más fácil de instalar Helm-Bibtex o Ivy-Bibtex es a través de MelPA. Alternativamente, coloque los archivos Bibtex-Completion.el y Helm-Bibtex.el o Ivy-Bibtex.el en un directorio incluido en su ruta de carga y agregue la siguiente línea a su archivo de inicio (típicamente init.el )::
( autoload 'helm-bibtex " helm-bibtex " " " t )o
( 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 e Ivy-Bibtex dependen de varios paquetes que se instalarán automáticamente si usa MelPA.
Cuando use Helm-Bibtex o Ivy-Bibtex, asegúrese de que Helm o Ivy esté configurado correctamente (consulte la documentación de Helm o la documentación de Ivy).
Una configuración mínima implica decirle a Bibtex-Completion donde se pueden encontrar sus bibliografías:
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/bibtex-file-2.bib " )) Los usuarios de Org-Bibtex también pueden especificar archivos de bibliografía de modo ORG, en cuyo caso se supondrá que existe un archivo bibtex con el mismo nombre y babero de extensión en lugar de org. Si el archivo bib tiene un nombre diferente, use una celda de contras ("orgfile.org" . “bibfile.bib") en su lugar:
( 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 " )))Especifique dónde se pueden encontrar PDFS:
( setq bibtex-completion-library-path '( " /path1/to/pdfs " " /path2/to/pdfs " )) Bibtex-Completion supone que el nombre de un PDF consiste en la tecla Bibtex que siguió más un sufijo definido por el usuario ( .pdf de forma predeterminada). Por ejemplo, si una entrada de Bibtex tiene la clave Darwin1859 , Bibtex-Completion busca Darwin1859.pdf .
Si las entradas de Bibtex tienen un campo que especifica la ruta completa a los PDF, ese campo también se puede usar. Por ejemplo, Jabref y Zotero almacenan la ubicación de los PDF en un campo llamado File :
( setq bibtex-completion-pdf-field " File " ) Si bibtex-completion-pdf-field no es NIL, Bibtex-Completion primero intentará recuperar el archivo especificado en este campo. Si el campo no está configurado para una entrada o si el archivo especificado no existe, Bibtex-Completion vuelve al método descrito anteriormente (buscando clave + .pdf en los directorios enumerados en bibtex-completion-library-path ).
Las especificaciones de archivo pueden ser rutas desnudas o seguir el formato utilizado por Jabref, Zotero, Calibre y Mendeley. Este formato también permite la especificación de múltiples archivos (por ejemplo, el papel principal y el material complementario). Ejemplos:
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 admite dos métodos para almacenar notas. Puede almacenar todas las notas en un archivo o almacenar notas en varios archivos, un archivo por publicación. En el primer caso, la variable de personalización bibtex-completion-notes-path debe establecerse en la ruta completa del archivo de notas:
( setq bibtex-completion-notes-path " /path/to/notes.org " ) Si se prefiere un archivo por publicación, bibtex-completion-notes-path debe apuntar al directorio utilizado para almacenar los archivos de notas:
( setq bibtex-completion-notes-path " /path/to/notes " ) Los nombres de estos archivos consisten en la tecla Bibtex más un sufijo definido por el usuario ( .org de forma predeterminada).
En este punto, la mayoría de la gente estará lista para comenzar. Pase al uso a continuación para ver cómo usar Helm-Bibtex e Ivy-Bibtex.
Invocar helm-bibtex o ivy-bibtex cuando el punto está en una cita de modo ORG seleccionará automáticamente esa clave. Sin embargo, la organización predeterminada org-open-at-point en una cita de Org lo llevará a la entrada de bibliografía correspondiente. El siguiente código cambiará este comportamiento para abrir helm-bibtex-follow cuando siga una cita de organización ingresando RET o haciendo clic en él:
( setq org-cite-follow-processor 'helm-bibtex-org-cite-follow ) Nota En el caso de una cita de organización con múltiples claves, el código anterior no preseleccionará ninguna entrada cuando se seleccione la parte [cite: la porción. Vea aquí para la alternativa de hiedra.
Los bibtex-completion-display-formats se pueden usar para personalizar cómo los resultados de búsqueda se presentan por entrada por entrada. El valor predeterminado es
'(( t . " ${author:36} ${title:*} ${year:4} ${=has-pdf=:1}${=has-note=:1} ${=type=:7} " )) Lo que significa que todos los tipos de entrada se presentan de la misma manera: autores, título, año, ... En esta cadena de formato, los números indican cuánto espacio está reservado para el campo respectivo. Si hay un * en lugar de un número que significa que este campo obtiene el espacio que queda. Aquí hay una configuración que utiliza un diseño diferente para diferentes tipos de entrada:
( 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:*} " ))) Para que esto funcione, debe agregar journal y booktitle a bibtex-completion-additional-search-fields . Ver la siguiente sección.
Los campos predeterminados utilizados para la búsqueda son: autor, título, año, clave de bibtex, tipo de entrada (artículo, ingresos, ...). Los bibtex-completion-addition-search-fields variable se pueden usar para extender esta lista. Ejemplo:
( setq bibtex-completion-additional-search-fields '(keywords))( setq bibtex-completion-pdf-symbol " ⌘ " )
( setq bibtex-completion-notes-symbol " ✎ " ) Si los archivos PDFS siguen un esquema de nomenclatura diferente que la tecla Bibtex + .pdf , la función bibtex-completion-find-pdf-in-library se puede modificar para acomodar eso.
Por defecto, los emacs se usan para abrir archivos PDF. Esto significa que se utiliza DocView o, si se instala, la extensión de Tools PDF muy superior que ofrece características como la búsqueda incremental en archivos PDF y la creación y modificación de anotaciones que son compatibles con las anotaciones creadas por Adobe Software.
Para configurar otro visor PDF, se puede utilizar la variable de personalización bibtex-completion-pdf-open-function . Aquí hay una configuración de ejemplo para el visor OS X PDF Skim:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " open " nil 0 nil " -a " " /Applications/Skim.app " fpath)))Aquí hay otro ejemplo para el espectador PDF de Linux Evince:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " evince " nil 0 nil fpath))) A veces es deseable tener ambas opciones (Emacs en sí mismo y espectador externo) para abrir el PDF. Lo siguiente agrega una acción con Evince como un espectador externo vinculado a P , además del espectador de emacs regular con p . La acción funciona con Ivy-Bibtex; Tendría que ajustarse para Helm-Bibtex (cambie la ruta a otro espectador si es necesario):
( 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) " ))) Puede almacenar PDF adicionales para una entrada determinada, como una versión anotada del PDF original, un archivo que contiene material suplementario o archivos de capítulos. Si el campo file se usa para vincular los PDF a las entradas (consulte los archivos PDF de la sección), estos PDF adicionales simplemente se pueden agregar a ese campo. Si se activa la acción "Abrir archivo PDF", se le solicitará que se abra el archivo.
Si no se usa el campo file , sino el esquema de nombres bibtex-key + .pdf (nuevamente ver archivos PDF), puede obtener el mismo comportamiento con:
( setq bibtex-completion-find-additional-pdfs t )Todos los archivos cuyo nombre comienza con la tecla Bibtex se asociarán con una entrada. Entonces es suficiente nombrar sus archivos en consecuencia (por ejemplo, con la utilidad de cambio de nombre). Ejemplos:
bibtex-key-annotated.pdfbibtex-key-supplemental.pdfbibtex-key-chapter1.pdf Tenga en cuenta que por razones de rendimiento, estos archivos adicionales solo se detectan al activar una acción, como "Abrir archivo PDF". Cuando se carga toda la bibliografía, solo se detecta el PDF bibtex-key.pdf "principal".
Si se hace referencia a los documentos a través del esquema de nomenclatura bibtex-key.pdf pero está almacenando archivos en un formato diferente al PDF, puede establecer la extensión variable bibtex-completion-pdf-extension . Ejemplo:
( setq bibtex-completion-pdf-extension " .djvu " )Si almacena archivos en varios formatos, puede especificar una lista en lugar de un solo tipo de archivo:
( setq bibtex-completion-pdf-extension '( " .pdf " " .djvu " , " .jpg " ))Las extensiones en esta lista se prueban secuencialmente hasta que se encuentra un archivo. Tenga en cuenta que esto puede reducir el rendimiento para grandes bibliografías.
Por defecto, Bibtex-Completion usa lo que sea predeterminado de Emacs. Sin embargo, hay una variedad de alternativas (consulte la documentación de bibtex-completion-browser-function para una lista completa). Ejemplo:
( setq bibtex-completion-browser-function 'browser-url-chromium )Las funciones definidas por el usuario también se pueden usar:
( setq bibtex-completion-browser-function
( lambda ( url _ ) ( start-process " firefox " " *firefox* " " firefox " url))) La recarga automática se puede configurar utilizando bibtex-completion-watch-bibliography .
Bibtex-Completion crea citas basadas en el modo principal en el que se inserta la cita:
La lista de modos se puede extender y las funciones de citas se pueden cambiar utilizando la variable de personalización bibtex-completion-format-citation-functions . Por ejemplo, las personas que no usan EBIB pueden preferir enlaces a los PDF en lugar de EBIB-enlaces en archivos de modo 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))) Cuando desee crear una lista de lectura de tareas pendientes en el modo Org, puede preferir el título del archivo PDF en el enlace. Para lograr este objetivo, puede modificar las bibtex-completion-format-citation-functions utilizando el siguiente fragmento de código:
( 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)))Una función de cita debe aceptar una lista de claves como entrada y devolver una cadena que contiene las citas. Vea las funciones de citas predefinidas para ver ejemplos.
BIBTEX-Completion solicita un comando de cita de látex al insertar citas en documentos de látex. La lista de comandos disponibles para la completación automática se puede definir utilizando los bibtex-completion-cite-commands .
La configuración predeterminada incluye todos los comandos de CITE definidos en Biblatex (excepto los comandos multicitas y volcite et al.). Si no se ingresa un comando, se utiliza un comando predeterminado que se puede configurar usando bibtex-completion-cite-default-command . El valor predeterminado para el comando predeterminado es cite . La variable bibtex-completion-cite-default-as-initial-input controla cómo se usa el comando predeterminado. Si t , se inserta en el minibuffer antes de leer la entrada del usuario. Si nil , no se inserta en el minibuffer, sino que se usa como predeterminado si el usuario no ingresa nada.
Por defecto, Bibtex-Completion también solicita las notas previas y posteriores opcionales para la cita. Esto se puede desactivar configurando la variable bibtex-completion-cite-prompt-for-optional-arguments a nil .
Consulte también la sección Insertar los comandos de cita de látex a continuación.
Las bases de datos en línea se pueden configurar utilizando la variable de personalización bibtex-completion-fallback-options . Esta variable contiene un alist donde el primer elemento de cada entrada es el nombre de la base de datos y el segundo elemento es una URL o una función. La URL debe contener un %s en la posición donde se debe insertar la expresión de búsqueda actual. Si se usa una función, esa función debe tomar esta expresión de búsqueda como argumento único.
Para un acceso rápido a la bibliografía, vincule el comando de búsqueda, helm-bibtex o ivy-bibtex , a una clave conveniente.
Helm-Bibtex : uso la tecla Menú como la tecla de prefijo para todos los comandos de Helm y BiLing helm-bibtex a b Helm-bibtex se puede comenzar a usar <menu> b . También es útil unir helm-resume a <menu> en helm-command-map . Con este encuadernación, <menu> <menu> se puede usar para reabrir la última búsqueda de timón.
( 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 : puede vincular de manera similar ivy-bibtex a <menu> b e ivy-resume a <menu> <menu> .
Por conveniencia, las búsquedas frecuentes se pueden capturar en comandos y vincularse a combinaciones clave. A continuación se muestra un código de ejemplo que define una búsqueda de publicaciones creadas por "Jane Doe" y vincula el comando de búsqueda a 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 ) Al presionar <enter> en una publicación, desencadena la "acción predeterminada" que está abriendo el PDF asociado con la publicación, si está presente, o su URL o DOI de otra manera. Presionando <tab> en Helm-Bibtex o Mo en Ivy-Bibtex en su lugar, muestra un menú de acción que enumera las acciones disponibles. Aquí está la lista de todas las acciones disponibles junto con sus funciones (estas son las funciones de acción genérica, para Helm-Bibtex, los nombres de funciones comienzan con helm-bibtex- en lugar de bibtex-completion- , y para Ivy-Bibtex comienzan con ivy-bibtex- en su lugar):
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 lista de acciones se puede modificar a través de los comandos helm-add-action-to-source y helm-delete-action-from-source . Por ejemplo, lo siguiente agrega una nueva acción helm-bibtex-open-annotated-pdf (ver arriba) justo después del primer elemento en la lista anterior:
(helm-add-action-to-source
" Open annotated PDF (if present) " 'helm-bibtex-open-annotated-pdf
helm-source-bibtex 1 ) Si se omite el último argumento numérico en helm-add-action-to-source , la nueva acción se agrega al final de la lista. Dado que la acción predeterminada es simplemente la primera entrada en la lista de acciones, la acción predeterminada se puede cambiar eliminando una acción y volver a insertarla en la parte superior de la lista. A continuación se muestra un ejemplo que muestra cómo hacer "insertar la tecla Bibtex" la acción predeterminada:
(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 : la acción predeterminada y las acciones adicionales disponibles se establecen por separado. La acción predeterminada está controlada por las variables ivy-bibtex-default-action y ivy-bibtex-default-multi-action , con la última destinada a listas de entradas marcadas (ver Aplicar acciones a múltiples entradas). Por ejemplo, el siguiente código cambia la acción predeterminada para "insertar la tecla Bibtex":
( setq ivy-bibtex-default-action 'ivy-bibtex-insert-key )De la misma manera, el siguiente código establece la acción predeterminada para listas de entradas marcadas a "Insertar la tecla Bibtex" que insertará una buena lista de claves separadas por comas:
( setq ivy-bibtex-default-multi-action 'ivy-bibtex-insert-key ) Las acciones adicionales se establecen pasando la lista de acción deseada a las ivy-set-actions . Por ejemplo, los siguientes códigos mantienen solo dos acciones disponibles además de la predeterminada:
(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))) Las letras p y e son los enlaces clave para las dos acciones en el menú de acción. El enlace de clave o está reservado para la acción predeterminada. La segunda aparición de la acción en este código alerta ivy de que la acción puede manejar listas de entradas marcadas. Se puede omitir de manera segura si lo correcto es simplemente aplicar la acción a cada entrada a su vez.
Si solo desea agregar nuevas acciones al final de la lista de acciones, puede usar alternativamente el comando ivy-add-actions . Por ejemplo, lo siguiente agrega una nueva acción ivy-bibtex-open-annotated-pdf (ver arriba) al final de la lista de acciones:
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-annotated-pdf " Open annotated PDF (if present) " ivy-bibtex-open-annotated-pdf)))La creación de una nueva acción para Helm-Bibtex o Ivy-Bibtex se puede hacer en tres pasos. Para un ejemplo, consulte Acción para abrir PDF anotados anteriormente.
El primer y principal paso es crear una función de acción genérica bibtex-completion-<action> (por ejemplo, bibtex-completion-open-annotated-pdf ). Esta función debe tomar como argumento único una lista de claves de bibtex y realizar la acción en las entradas de Bibtex correspondientes.
El segundo paso es adaptar la función de acción genérica para Helm-Bibtex o Ivy-Bibtex, para que se ejecute en el búfer correcto y reciba las claves de las entradas seleccionadas).
Helm-bibtex : esto simplemente se hace con:
(helm-bibtex-helmify-action bibtex-completion-<action > helm-bibtex-<action > )Ivy-Bibtex : esto simplemente se hace con:
(ivy-bibtex-ivify-action bibtex-completion-<action > ivy-bibtex-<action > ) El tercer y último paso es hacer que la función de acción personalizada helm-bibtex-<action> o ivy-bibtex-<action> estén disponibles en Helm-Bibtex o Ivy-Bibtex agregándolo al menú de acción. Vea el cambio de las acciones disponibles.
Helm-Bibtex : por defecto, helm-bibtex usa la trama completa para mostrar la bibliografía. Esto se puede cambiar estableciendo el helm-bibtex-full-frame en nil , en cuyo caso se usa el estándar de Helm (típicamente división vertical, con la búsqueda del timón que se muestra en la ventana inferior).
Ivy-Bibtex : Ivy-Bibtex siempre muestra la bibliografía en el minibuffer. La variable ivy-height controla el número de líneas para la ventana Minibuffer en todos los comandos Ivy.
Bibtex-Completion poca nuevas notas con información básica sobre la publicación. En el caso de un solo archivo de notas para todas las publicaciones, las nuevas entradas se parecen al siguiente ejemplo:
Gigerenzer, G. (1998): Necesitamos pensamiento estadístico, no rituales estadísticos :PROPIEDADES: : Custom_id: gigerenzer1998 :FIN:
El título de la nueva sección consta de los nombres del autor, el año y el título de la publicación. La propiedad Custom_ID especifica la clave BIBTEX de la entrada (se llama Custom_ID para compatibilidad con Org-Ref).
En el caso de un archivo por publicación, un nuevo archivo de notas contiene un título en el siguiente formato:
#+Título: Notas sobre: Gigerenzer, G. (1998): Necesitamos pensamiento estadístico, no rituales estadísticos
Si se desean otros formatos, las plantillas para nuevas notas se pueden cambiar utilizando las variables de personalización bibtex-completion-notes-template-one-file y bibtex-completion-notes-template-multiple-files .
Por defecto, Bibtex-Completion supone que los archivos de nota están en formato de modo ORG. Sin embargo, cualquier otro formato también se puede usar. En el caso de un solo archivo de notas, es suficiente establecer bibtex-completion-notes-path para señalar el archivo deseado. En el caso de los archivos de múltiples notas, el tipo de archivos se puede especificar utilizando la variable de personalización bibtex-completion-notes-extension . Por ejemplo, si Markdown es el tipo de archivo deseado:
( setq bibtex-completion-notes-path " /path/to/notes " )
( setq bibtex-completion-notes-extension " .md " )Si el tipo de archivo está configurado en algo más que Org-Mode, las plantillas para nuevos archivos de nota también deben ajustarse. Consulte la sección de arriba para más detalles.
Bibtex-Completion recarga automáticamente la bibliografía cuando un archivo .bib se cambia en el disco. Sin embargo, Bibtex-Completion no ve PDF y notas. Por lo tanto, cuando se agrega un nuevo PDF o nota, la bibliografía debe volver a cargar manualmente para mostrar los símbolos PDF y nota correctamente (a través del argumento de prefijo, por ejemplo, Cu Mx helm-bibtex ). Desafortunadamente, la implementación de la recarga automática para PDF y notas no es del todo directa ya que la finalización de Bibtex es bastante flexible en la forma en que se pueden manejar PDF y notas. Pero para configuraciones simples, hay una solución fácil: solo mire los directorios bibtex-completion-library-path y bibtex-completion-notes-path y recargar la bibliografía cuando cambian. Ejemplo para el directorio PDF:
( setq tmalsburg-pdf-watch
( file-notify-add-watch bibtex-completion-library-path
'(change)
( lambda ( event ) (bibtex-completion-candidates)))) Use Mx helm-bibtex o Mx ivy-bibtex para comenzar una nueva búsqueda. Los campos predeterminados para la búsqueda son: autor, título, año, clave Bibtex y tipo de entrada. Se pueden usar expresiones regulares. Ejemplo de búsquedas:
Todo publicado por Janet Fodor:
Janet Fodor
Todas las tesis de doctorado:
fdtesis
Tesis doctoral de Lyn Frazier:
fdtesis Frazier
Publicaciones sobre el seguimiento ocular. Se usa una expresión regular para que coincida con varias ortografías ("EyeTracking", "Tracking ocular", "seguimiento ocular"):
ojo.
Presentaciones de conferencia en 2013:
2013 Incrutores
Publicaciones de 2010 y 2011:
(2010 | 2011 )
Artículos en coautoría de David Caplan y Gloria Waters:
Artículo Waters Caplan
Busque artículos de David Caplan que no sea coautor de Gloria Waters:
Artículo Caplan! Waters
Use helm-bibtex-with-local-bibliography o ivy-bibtex-with-local-bibliography para comenzar una búsqueda en la "bibliografía local" del amortiguador actual, en lugar de la "bibliografía global" definida por bibtex-completion-bibliography . Si el archivo actual es un archivo bibtex, esa bibliografía se utilizará. Si el archivo actual es un archivo de látex, ReftEx se utilizará para determinar la bibliografía local de los comandos de bibliografía de látex estándar bibliography y addbibresource . Si el archivo es un archivo de Org, se usa la bibliografía de orgullos local y/o global (como se especifica utilizando la nueva #+BIBLIOGRAPHY: palabra clave y la variable org-cite-global-bibliography ). Si no se puede encontrar bibliografía local, se utilizará la bibliografía global ( bibtex-completion-bibliography ).
Use helm-bibtex-with-notes o ivy-bibtex-with-notes para buscar solo entre entradas que tienen notas. Particularmente útil en combinación con ~ org-roam-bibtex.el ~.
Un caso de uso común es donde se escribe un término de búsqueda en un documento (digamos en su manuscrito de látex) y desea buscarlo en su bibliografía. En esta situación, simplemente comience a Helm-Bibtex o Ivy-Bibtex e ingrese Mn . Esto inserta la palabra debajo del cursor como término de búsqueda. (Esta es una función Helm / Ivy y se puede usar en todos los comandos Helm / Ivy, no solo Helm-Bibtex / Ivy-Bibtex). Tenga en cuenta que también es posible usar teclas Bibtex para buscar. Entonces, si su cursor está en una tecla Bibtex (por ejemplo, en un comando de cita de látex) puede iniciar Helm-Bibtex o Ivy-Bibtex, presionar Mn y ver la entrada asociada con esa clave Bibtex. Caso especial: desea abrir el PDF asociado con la tecla Bibtex debajo del cursor: Mx helm-bibtex Mn RET o Mx ivy-bibtex Mn RET . Por supuesto, esto es más corto si se une helm-bibtex o ivy-bibtex a una clave conveniente (consulte los enlaces de llave).
Las acciones disponibles son:
Helm-Bibtex : seleccione una entrada y presione <return> para ejecutar la acción predeterminada. Alternativamente, presione TAB (Tabulator) para ver una lista de todas las acciones disponibles, ejecute una de ellas y salga de Helm-Bibtex.
Ivy-Bibtex : seleccione una entrada y presione <return> para ejecutar la acción predeterminada. Alternativamente, presione Mo para ver una lista de todas las acciones disponibles, ejecute una de ellas y salga de Ivy-Bibtex.
Helm-Bibtex : Inicie Helm-Bibtex, ingrese la expresión de búsqueda, mueva el cursor a la entrada coincidente e ingrese C-<space> (control + barra de espacio) para marcar esta entrada, opcionalmente cambie su expresión de búsqueda, marque más entradas, finalmente presione <return> o <tab> para ejecutar una acción para todas las entradas seleccionadas de una vez y salir de Helm-bibtex.
Ivy-Bibtex : Inicie Ivy-Bibtex, ingrese la expresión de búsqueda, mueva el cursor a la entrada coincidente e ingrese C-<space> (control + barra de espacio) para marcar esta entrada, opcionalmente cambie su expresión de búsqueda, marque más entradas, finalmente presione <return> para ejecutar la acción predeterminada en todas las entradas seleccionadas o Mo para elegir otra acción. Presione S-<space> (Shift + Space Bar) para no marcar una entrada marcada.
Helm-Bibtex : inicie un correo electrónico a su colega ( Cx m ) y ejecute helm-bibtex . Busque sus nuevas publicaciones y marquelas con C-<space> , luego presione <f7> para ejecutar la acción "Adjunte PDF al correo electrónico". Luego, Mx helm-resume (las publicaciones aún están marcadas) y presione <f6> para ejecutar la acción "Insertar la entrada Bibtex". Opcionalmente, inserte más referencias legibles por humanos usando Mx helm-resume y <f4> para ejecutar la acción "Insertar referencia". Enviar correo electrónico ( Cc Cc ). Hecho. Esto lleva menos de 10 segundos.
Ivy-Bibtex : inicie un correo electrónico a su colega ( Cx m ) y ejecute ivy-bibtex . Busque sus nuevas publicaciones y maréngelas con C-<space> , luego presione CMo a para ejecutar la acción "Adjunte PDF al correo electrónico" mientras mantiene abierto a Ivy. Luego presione Mo b para ejecutar la acción "Insertar entrada Bibtex" o insertar más referencias legibles humanas usando Mo r para ejecutar la acción "Insertar referencia". Enviar correo electrónico ( Cc Cc ). Hecho. Esto lleva menos de 10 segundos.
Por supuesto, esto supone que está enviando correo electrónico a Emacs, por ejemplo, a través de MU4E.
Helm-Bibtex e Ivy-Bibtex tienen potentes capacidades de búsqueda, pero algunas búsquedas comunes no se pueden realizar simplemente porque la información relevante generalmente no está representada en archivos Bibtex. Por ejemplo, Bibtex-Completion no sabe si una presentación de la conferencia fue una charla o un póster porque ambos están representados como inproceedings . Entonces, si desea compilar una lista de sus conversaciones de conferencia (por ejemplo, para su CV), eso no es posible, no sin algún trabajo adicional. Una solución es "etiquetar" publicaciones. Las etiquetas son como palabras clave, excepto que no representan el contenido de una publicación sino meta datos. Ejemplo:
@inproceedings { BibtexKey2015 ,
author = { Jane Doe and Monika Mustermann } ,
title = { This is the title } ,
crossref = { XYZ-conference-2015 } ,
keywords = { keyword1, keyword2 } ,
pages = { 10 } ,
tags = { poster } ,
} Dado que tags no es un campo Bibtex estándar, Bibtex-Completion de forma predeterminada no lo considera al buscar. Para poder buscar etiquetas, por lo tanto, debemos decirle a Bibtex-Completion que el campo tags también es relevante:
(Setq Bibtex-Completion-Additional-Search-Fields (Tags))
Hay muchas otras formas en que se pueden usar etiquetas. Por ejemplo, se pueden usar para marcar artículos que planea leer o artículos importantes o manuscritos en progreso, etc. Sea creativo.
La acción para insertar un comando de cita en un documento de látex solicita el comando de cita y, si corresponde, para los argumentos previos y postnote. El indicador del comando de cita tiene su propio historial de minibuffer, lo que significa que se puede acceder a las entradas anteriores presionando la tecla <up> para Helm-Bibtex o Mp para Ivy-Bibtex. Al presionar <down> también es posible acceder a la lista de todos los comandos de citas definidos en Biblatex (excepto los comandos multicitas y el volcito et al. Que tienen diferentes estructuras de argumentos). El mensaje también admite Auto-Completion a través de la tecla tab . Si no se ingresa ningún comando, se usa el comando predeterminado. El comando predeterminado se define en la variable de personalización bibtex-completion-cite-default-command . Por defecto, Helm-Bibtex e Ivy-Bibtex solicitan notas previas y posteriores para la cita. Esto se puede desactivar configurando la variable bibtex-completion-cite-prompt-for-optional-arguments a nil .
Bibtex-Completion almacena la bibliografía para evitar un relevo costoso cuando se inicia una nueva consulta. Sin embargo, el completo de Bibtex no verifica si se agregaron nuevos PDF o notas ya que la última lectura y, por lo tanto, los símbolos que indican la presencia o ausencia de estos elementos pueden ser incorrectos. Se puede forzar un relevo utilizando un argumento de prefijo.
Helm-Bibtex : ya sea Cu Mx helm-bibtex o Cu seguido de cualquier enlace clave que use para invocar Helm-Bibtex.
Ivy-Bibtex : ya sea Cu Mx ivy-bibtex o Cu seguido de cualquier enlace clave que use para invocar Ivy-Bibtex.
Helm-Bibtex : inicie Helm-Bibtex e ingrese los términos de búsqueda. Luego seleccione "CrossRef" en la sección titulada "Opciones de respaldo". (Puede usar las teclas de flecha izquierda y derecha para cambiar entre secciones).
Ivy-Bibtex : inicie Ivy-Bibtex e ingrese los términos de búsqueda. Luego presione Mo f para ver la lista de opciones de respaldo y seleccione "CrossRef".
Esto utilizará Biblio.el para buscar la base de datos CrossRef. En la lista de resultados, coloque el cursor en la entrada de interés y presione c para copiar el bibtex para esa entrada o i para insertarlo en el punto. Presione q para cerrar el búfer con los resultados de búsqueda. Consulte la documentación de Biblio.el para más detalles.
A veces, el término de búsqueda no producirá los resultados deseados en la primera fuente de respaldo seleccionada y es posible que desee elegir otra opción de respuesta con el mismo término de búsqueda. Para esto, puede usar helm-resume (o ivy-resume ) para volver al menú de timón inicial (Ivy) con el último término de búsqueda previamente ingresado, lo que le permite elegir de manera eficiente otra opción.
A continuación proporciono un código que fue útil para mí u otros usuarios. Tenga en cuenta que este código puede hacer suposiciones que no se mantienen en su configuración. Lea el código cuidadosamente antes de ejecutarlo y realice cambios según sea necesario.
El siguiente código lee todos los archivos de notas en su bibtex-completion-notes-path y crea un nuevo archivo de notas que contiene una sección para cada publicación. Este código supone que Bibtex-Completion todavía está configurado para múltiples archivos de notas y que desea almacenar las notas en el archivo notes.org en su bibtex-completion-notes-path . El código también agrega un nivel a todos los titulares de ORG que se encuentran en los archivos de notas individuales (porque los encabezados de nivel superior se utilizan para las publicaciones en el archivo de nuevas notas). Si un archivo de nota no tiene una entrada correspondiente en la bibliografía, se ignora.
( 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 ))))Digamos que desea crear un archivo Bibtex que contenga solo entradas que citó en un artículo, luego puede usar el siguiente código para completar el nuevo archivo Bibtex con entradas:
( 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)If you see
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.