Helm-Bibtex: Ivy-Bibtex:
Helm-Bibtex и Ivy-Bibtex позволяют искать и управлять библиографией Bibtex. Они оба имеют одинаковый общий бэкэнд, Bibtex-завершение, но один использует структуру завершения шлема, а другой плющ в качестве фронтального.
bibtex-completion-watch-bibliography . Может использоваться для деактивации автоматической перезагрузки библиографии.ivy-bitex . Смотрите здесь.helm-bibtex-with-local-bibliography и ivy-bibtex-with-local-bibliography теперь также используют локально и глобально определенные библиографии в файлах орг. Это библиографии, указанные с использованием новой #+BIBLIOGRAPHY: ключевое слово и те, что в переменной org-cite-global-bibliography .bibtex-completion-format-citation-org-cite (для использования в переменной конфигурации bibtex-completion-format-citation-functions ))=has-pdf= и =has-note= .helm-bibtex-with-notes и ivy-bibtex-with-noted для поиска только в записях, в которых есть примечания.author-or-editor для использования в шаблонах примечаний.@string .Смотрите news.org для старых новостей.
Основными точками продажи Helm-Bibtex 'и Ivy-Bibtex являются эффективные поиски в больших библиографиях, используя мощные поисковые выражения и жесткую интеграцию в ваши рабочие процессы Emacs. Они оба могут выполнить следующие действия на записях, соответствующих выражению поиска: откройте PDF, связанный с записью, его URL или doi, вставьте цитату для этой записи, ключ Bibtex, запись Bibtex или простой текстовой ссылке, прикрепите PDF к электронной почте, примечания, редактируйте запись Bibtex. Многие аспекты могут быть настроены в соответствии с личными предпочтениями.
Ниже приведен снимка экрана, показывающий поиск записей Helm-Bibtex, содержащие выражение «отслеживание глаз».

Регулярное выражение eye.?tracking Петлярный квадратный символ (⌘) рядом с записью указывает, что доступен PDF. Символ пера (✎) означает, что к этой записи прикреплены примечания. Внизу, есть записи, которые можно использовать для поиска в онлайн -базах данных.
Самый простой способ установить Helm-Bibtex или Ivy-Bibtex-через Melpa. В качестве альтернативы, поместите файлы Bibtex-complotion.el и Helm-bibtex.el или ivy bibtex.el в каталог, включенный в ваш путь нагрузки, и добавьте следующую строку в ваш файл запуска (обычно init.el ):
( autoload 'helm-bibtex " helm-bibtex " " " t )или
( 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 и Ivy-Bibtex зависят от ряда пакетов, которые будут автоматически установлены, если вы используете MELPA.
При использовании Helm-Bibtex или Ivy-Bibtex убедитесь, что Helm или Ivy правильно настроены (см. Документацию Helm или документация плюща).
Минимальная конфигурация включает в себя указание Bibtex-завершения, где можно найти ваши библиографии:
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/bibtex-file-2.bib " )) Пользователи Org-Bibtex также могут указать файлы библиографии Org-Mode, и в этом случае предполагается, что файл Bibtex существует с тем же именем и нагрудником расширения вместо орг. Если файл BIB имеет другое имя, используйте ячейку CONS ("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 " )))Укажите, где можно найти PDF:
( setq bibtex-completion-library-path '( " /path1/to/pdfs " " /path2/to/pdfs " )) Заполнение Bibtex предполагает, что имя PDF состоит из ключа Bibtex, а также пользовательский суффикс ( .pdf по умолчанию). Например, если запись Bibtex имеет ключевой Darwin1859 , Bibtex-завершение поиска для Darwin1859.pdf .
Если записи Bibtex имеют поле, которое указывает полный путь к PDF, это поле также можно использовать. Например, Jabref и Zotero хранят местоположение PDFS в поле с названием File :
( setq bibtex-completion-pdf-field " File " ) Если bibtex-completion-pdf-field не является нолью, Bibtex-завершение сначала попытается извлечь файл, указанный в этом поле. Если поле не установлено для записи или если указанный файл не существует, Bibtex-завершение возвращается к методу, описанному выше (поиск Key + .pdf в каталогах, перечисленных в bibtex-completion-library-path ).
Спецификации файлов могут быть голыми путями или следить за форматом, используемым Jabref, Zotero, Caliber и Mendeley. Этот формат также позволяет спецификацию нескольких файлов (например, основной бумаги и дополнительные материалы). Примеры:
File = {/path/to/article.pdf}File = {:/path/to/article.pdf:PDF}File = {:/path/to/article.pdf:PDF;:/path/to/supplementary_materials.pdf:PDF} Заполнение Bibtex поддерживает два метода хранения заметок. Он может либо сохранить все заметки в одном файле, либо хранить заметки в нескольких файлах, один файл на публикацию. В первом случае переменная настройки bibtex-completion-notes-path должна быть установлена на полный путь файла примечаний:
( setq bibtex-completion-notes-path " /path/to/notes.org " ) Если предпочтительнее одного файла на публикацию, bibtex-completion-notes-path должен указывать на каталог, используемый для хранения файлов примечаний:
( setq bibtex-completion-notes-path " /path/to/notes " ) Имена этих файлов состоят из ключа Bibtex плюс пользовательский суффикс ( .org по умолчанию).
На данный момент большинство людей будут готовы к работе. Пропустите использование ниже, чтобы увидеть, как использовать Helm-Bibtex и Ivy-Bibtex.
Вызов helm-bibtex или ivy-bibtex когда точка находится в цитировании орг в режиме, автоматически выберет этот ключ. Тем не менее, по умолчанию org-open-at-point на орг-цитировании перенесет вас к соответствующей библиографической записи. Следующий код изменит это поведение, чтобы вместо этого открыть helm-bibtex-follow при выполнении цитирования орг, введя RET или нажав на него:
( setq org-cite-follow-processor 'helm-bibtex-org-cite-follow ) Примечание В случае цитирования орг с несколькими клавишами приведенный выше код не будет предварительно выбрать какую -либо запись при выборе [cite: PORTION. Смотрите здесь на альтернативу плюща.
bibtex-completion-display-formats могут быть использованы для настройки того, как результаты поиска представлены на основе типа за ввод. По умолчанию есть
'(( t . " ${author:36} ${title:*} ${year:4} ${=has-pdf=:1}${=has-note=:1} ${=type=:7} " )) Это означает, что все типы вводов представлены одинаково: авторы, заголовок, год,… В этой строке формата цифры указывают, сколько места зарезервировано для соответствующего поля. Если есть * вместо числа, это означает, что это поле получает любое пространство. Вот настройка, которая использует другой макет для разных типов вводов:
( 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:*} " ))) Чтобы это работало, вы должны добавить journal и booktitle в bibtex-completion-additional-search-fields . Смотрите следующий раздел.
Поля по умолчанию, используемые для поиска: автор, заголовок, год, ключ Bibtex, тип записи (статья, Inprocecentings,…). Для расширения этого списка можно использовать bibtex-completion-addition-search-fields . Пример:
( setq bibtex-completion-additional-search-fields '(keywords))( setq bibtex-completion-pdf-symbol " ⌘ " )
( setq bibtex-completion-notes-symbol " ✎ " ) Если файлы PDFS следуют за другой схемой именования, чем ключ Bibtex + .pdf , функция bibtex-completion-find-pdf-in-library может быть изменена, чтобы приспособиться к этому.
По умолчанию EMACS используется для открытия PDF -файлов. Это означает, что либо DocView используется, либо, при установке, намного превосходное расширение PDF-tools, которое предлагает такие функции, как инкрементный поиск в файлах PDF, создание и модификация аннотаций, которые совместимы с аннотациями, созданными Adobe Software.
Для настройки другого просмотра PDF можно использовать переменную настройку bibtex-completion-pdf-open-function . Вот пример конфигурации для просмотра OS X PDF Skim:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " open " nil 0 nil " -a " " /Applications/Skim.app " fpath)))Вот еще один пример для просмотра Linux PDF Evince:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " evince " nil 0 nil fpath))) Иногда желательно иметь оба варианта (сам EMACS и внешний просмотр, чтобы открыть PDF. Следующее добавляет действие с Evince в качестве внешнего зрителя, связанного с P , в дополнение к обычным зрителям Emacs с p Действие работает с плющом-бибтом; Он должен быть скорректирован для Helm-Bibtex (при необходимости измените путь к другому зрителю):
( 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) " ))) Вы можете хранить дополнительные PDF -файлы для данной записи, такой как аннотированная версия исходного PDF, файл, содержащий дополнительные материалы или файлы главы. Если поле file используется для связи PDF с записями (см. Раздел PDF -файлы), эти дополнительные PDF -файлы могут быть просто добавлены в это поле. Если запускается действие «Открыть файл PDF», вам будет предложено открыть файл.
Если поле file не используется, а вместо этого схема именования bibtex-key + .pdf (снова см. Файлы PDF), вы можете получить то же поведение с помощью:
( setq bibtex-completion-find-additional-pdfs t )Все файлы, чье имя начинается с ключа Bibtex, будут связаны с записью. Тогда достаточно назвать ваши файлы соответственно (например, в утилите переименования). Примеры:
bibtex-key-annotated.pdfbibtex-key-supplemental.pdfbibtex-key-chapter1.pdf Обратите внимание, что по соображениям производительности эти дополнительные файлы обнаруживаются только при запуска действия, например, «Открыть файл PDF». Когда вся библиография загружена, обнаруживается только «основной» PDF bibtex-key.pdf .
Если на документы ссылаются с помощью схемы именования bibtex-key.pdf но вы храните файлы в другом формате, чем PDF, вы можете соответствующим образом установить переменную bibtex-completion-pdf-extension . Пример:
( setq bibtex-completion-pdf-extension " .djvu " )Если вы храните файлы в различных форматах, то вы можете указать список вместо одного типа файла:
( setq bibtex-completion-pdf-extension '( " .pdf " " .djvu " , " .jpg " ))Расширения в этом списке затем опробованы последовательно, пока файл не найден. Остерегайтесь, что это может снизить производительность для больших библиографий.
По умолчанию Bibtex-завершение использует то, что есть в Emacs по умолчанию. Тем не менее, существует множество альтернатив (см. Документацию о bibtex-completion-browser-function для полного списка). Пример:
( setq bibtex-completion-browser-function 'browser-url-chromium )Пользовательские функции также могут быть использованы:
( setq bibtex-completion-browser-function
( lambda ( url _ ) ( start-process " firefox " " *firefox* " " firefox " url))) Автоматическое перезагрузка может быть настроена с использованием bibtex-completion-watch-bibliography .
Заполнение Bibtex создает цитаты на основе основного режима, в котором вставлен цитирование:
Список режимов может быть расширен, и функции цитирования могут быть изменены с использованием переменной настройки bibtex-completion-format-citation-functions . Например, люди, которые не используют EBIB, могут предпочесть ссылки на PDF-файлы вместо Ebib-Links в файлах режима орг:
( 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))) Если вы хотите создать список дел для чтения в Org-режиме, вы можете предположить, что использует заголовок файла PDF в ссылке. Для достижения этой цели вы можете изменить переменную bibtex-completion-format-citation-functions используя следующий фрагмент кода:
( 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)))Функция цитирования должна принимать список ключей в качестве ввода и вернуть строку, содержащую цитаты. См. Предопределенные функции цитирования для примеров.
Bibtex-завершение подсказки для команды цитирования латекса при вставке цитат в латексные документы. Список команд, доступных для автоматического заполнения, может быть определен с использованием переменных bibtex-completion-cite-commands .
Настройка по умолчанию включает в себя все команды CITE, определенные в Biblatex (кроме команд Multicite и volcite et al.). Если команда не введена, используется команда по умолчанию, которая может быть настроена с помощью bibtex-completion-cite-default-command . Значение по умолчанию для команды по умолчанию cite . Переменная bibtex-completion-cite-default-as-initial-input управляет тем, как используется команда по умолчанию. Если t , он вставлен в мини -баффер перед чтением ввода от пользователя. Если nil , он не вставлен в минибуффер, а используется в качестве по умолчанию, если пользователь ничего не вводит.
По умолчанию, Bibtex-завершение также подсказывает дополнительные до- и посвязки для цитирования. Это может быть отключено, установив переменную bibtex-completion-cite-prompt-for-optional-arguments до nil .
См. Также раздел «Вставить команды латекса» ниже.
Онлайн-базы данных можно настроить с использованием переменной настройки bibtex-completion-fallback-options . Эта переменная содержит алист, где первым элементом каждой записи является имя базы данных, а второй элемент - это либо URL, либо функция. URL должен содержать %s в положении, где должно быть вставлено текущее выражение поиска. Если используется функция, эта функция должна воспринимать это выражение поиска в качестве единого аргумента.
Для быстрого доступа к библиографии свяжите команду Search, helm-bibtex или ivy-bibtex , с удобным ключом.
Helm-Bibtex : я использую ключ меню в качестве клавиши префикса для всех команд Helm и связывать helm-bibtex с b . Helm-Bibtex можно начать с помощью <menu> b . Также полезно привязать helm-resume с <menu> в helm-command-map . С помощью этого привязки <menu> <menu> можно использовать для повторного открытия последнего поиска руля.
( 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 с <menu> b и ivy-resume с <menu> <menu> .
Для удобства частые поиски могут быть захвачены в командах и связаны с комбинациями ключей. Ниже приведен пример кода, который определяет поиск публикаций, созданных «Джейн Доу», и связывает команду поиска с 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 )Плющ-бибтекс :
( 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 ) Нажатие <enter> на публикации запускает «действие по умолчанию», которое открывает PDF, связанный с публикацией, если она присутствует, или его URL или doi в противном случае. Нажатие <tab> в Helm-Bibtex или Mo в плющах-бибтекс вместо этого отображает меню действий, в котором перечислены доступные действия. Вот список всех доступных действий вместе с их функциями (это общие функции действия, для Helm-Bibtex имена функций начинаются с helm-bibtex- вместо bibtex-completion- , и для плющ-бибтекса они начинаются с 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-attachmentbibtex-completion-edit-notesbibtex-completion-show-entrybibtex-completion-add-pdf-to-library Helm-Bibtex : Список действий может быть изменен через команды helm-add-action-to-source и helm-delete-action-from-source . Например, следующее добавляет новое действие helm-bibtex-open-annotated-pdf (см. Выше) сразу после первого элемента в списке выше:
(helm-add-action-to-source
" Open annotated PDF (if present) " 'helm-bibtex-open-annotated-pdf
helm-source-bibtex 1 ) Если последний, числовой аргумент в helm-add-action-to-source опущен, новое действие добавляется в конце списка. Поскольку действие по умолчанию является просто первой записью в списке действий, действие по умолчанию может быть изменено, удалив действие и повторно включив его в верхней части списка. Ниже приведен пример, показывающий, как сделать «вставить ключ Bibtex» действие по умолчанию:
(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 : действие по умолчанию и дополнительные доступные действия устанавливаются отдельно. Действие по умолчанию контролируется переменными ivy-bibtex-default-action и ivy-bibtex-default-multi-action , с последним, предназначенным для списков отмеченных записей (см. Применить действия к нескольким записям). Например, следующий код изменяет действие по умолчанию, чтобы «вставить ключ Bibtex»:
( setq ivy-bibtex-default-action 'ivy-bibtex-insert-key )Точно так же, следующий код устанавливает действие по умолчанию для списков отмеченных записей в «Вставить ключ Bibtex», который вставит хороший список ключей, разделенных запятыми:
( setq ivy-bibtex-default-multi-action 'ivy-bibtex-insert-key ) Дополнительные действия устанавливаются путем передачи желаемого списка действий в командные ivy-set-actions . Например, следующие коды сохраняют только два доступных действий в дополнение к по умолчанию:
(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))) Буквы p и e являются ключевыми привязками для двух действий в меню действий. Ключевое привязка o зарезервирована для действия по умолчанию. Второе появление действия в этом коде предупреждает ivy о том, что действие может обрабатывать списки отмеченных записей. Это может быть безопасно пропустить, если правильное выполнение - это просто применить действие к каждой записи по очереди.
Если вы хотите добавить только новые действия в конце списка действий, вы можете альтернативно использовать командные ivy-add-actions . Например, следующее добавляет новое действие ivy-bibtex-open-annotated-pdf , в конце списка действий:
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-annotated-pdf " Open annotated PDF (if present) " ivy-bibtex-open-annotated-pdf)))Создание нового действия для Helm-Bibtex или плюща-бибтекс может быть сделано в трех шагах. Для примера см. Действие для открытия аннотированных PDFS выше.
Первым и основным шагом является создание общей функции действия bibtex-completion-<action> (например bibtex-completion-open-annotated-pdf ). Эта функция должна принимать в качестве единого аргумента список ключей Bibtex и выполнять действие на соответствующих записях Bibtex.
Вторым шагом является адаптирование функции общего действия для Helm-Bibtex или Ivy-Bibtex, чтобы она была запускаться в правильном буфере и получить ключи выбранных записей).
Helm-Bibtex : Это просто сделано с:
(helm-bibtex-helmify-action bibtex-completion-<action > helm-bibtex-<action > )Айви-бибтекс : это просто сделано с:
(ivy-bibtex-ivify-action bibtex-completion-<action > ivy-bibtex-<action > ) Третий и последний шаг состоит в том, чтобы сделать адаптированную функцию действия helm-bibtex-<action> или ivy-bibtex-<action> доступным в Helm-Bibtex или Ivy-Bibtex, добавив его в меню Action. См. Измените доступные действия.
Helm-Bibtex : По умолчанию helm-bibtex использует весь кадр для отображения библиографии. Это может быть изменено, установив переменную helm-bibtex-full-frame до nil , и в этом случае используется стандарт Helm (обычно вертикальный разделение, при этом поиск в нижнем окне показан в нижнем окне).
Айви-бибтекс : плющ-бибтекс всегда отображает библиографию в мини-сайте. Переменная ivy-height контролирует количество строк для окна мини-баффера во всех командах плюща.
Сопровождение Bibtex заполняет новые заметки с некоторой базовой информацией о публикации. В случае только одного файла примечания для всех публикаций новые записи выглядят как следующий пример:
Gigerenzer, G. (1998): Нам нужно статистическое мышление, а не статистические ритуалы :ХАРАКТЕРИСТИКИ: : Custom_id: gigerenzer1998 :КОНЕЦ:
Название нового раздела состоит из имен автора, года и названия публикации. Свойство Custom_ID указывает ключ Bibtex в записи (оно называется Custom_ID для совместимости с Org-Ref).
В случае одного файла на публикацию новый файл примечаний содержит заголовок в следующем формате:
#+Название: Примечания на: Gigerenzer, G. (1998): Нам нужно статистическое мышление, а не статистические ритуалы
Если нужны другие форматы, шаблоны для новых заметок могут быть изменены с использованием переменных настройки bibtex-completion-notes-template-one-file и bibtex-completion-notes-template-multiple-files .
По умолчанию Bibtex-завершение предполагает, что файлы заметок находятся в формате Org-Mode. Тем не менее, любой другой формат также может быть использован. В случае только одного файла примечаний достаточно, чтобы установить bibtex-completion-notes-path чтобы указывать на желаемый файл. В случае нескольких файлов примечаний тип файлов может быть указан с использованием переменной настройки bibtex-completion-notes-extension . Например, если отметка является желаемым типом файла:
( setq bibtex-completion-notes-path " /path/to/notes " )
( setq bibtex-completion-notes-extension " .md " )Если тип файла устанавливается на что-то другое, чем Org-Mode, также необходимо настроить шаблоны для новых примечаний. См. Раздел выше для деталей.
Заполнение Bibtex автоматически перезагружает библиографию, когда файл .bib изменяется на диске. Тем не менее, Bibtex-завершение не смотрит PDF и заметки. Таким образом, когда добавляется новый PDF или заметка, библиография должна быть вручную перезагружена, чтобы правильно отобразить PDF и символы примечания (через аргумент префикса, например, Cu Mx helm-bibtex ). К сожалению, реализация автоматической перезагрузки для PDFS и Notes не совсем проста, поскольку завершение Bibtex довольно гибко в том, как можно обрабатывать PDF и заметки. Но для простых настройков есть простое решение: просто посмотрите каталоги bibtex-completion-library-path и bibtex-completion-notes-path и перезагружайте библиографию при изменении. Пример для каталога PDF:
( setq tmalsburg-pdf-watch
( file-notify-add-watch bibtex-completion-library-path
'(change)
( lambda ( event ) (bibtex-completion-candidates)))) Используйте Mx helm-bibtex или Mx ivy-bibtex чтобы начать новый поиск. Поля по умолчанию для поиска: автор, заголовок, год, ключ Bibtex и тип записи. Регулярные выражения могут быть использованы. Пример поиска:
Все опубликовано Джанет Фодором:
Джанет Фодор
Все докторские тезисы:
Доктор философии
Докторская диссертация Лин Фрейзера:
Доктор философии Фрейзер
Публикации о отслеживании глаз. Регулярное выражение используется для соответствия различным написаниям («Eyetracking», «отслеживание глаз», «отслеживание глаз»):
глаз
Презентации конференции в 2013 году:
2013 г.
Публикации с 2010 и 2011 годов:
(2010 | 2011 )
Статьи в соавторстве с Дэвидом Капланом и Глорией Уотерс:
Статья Уотерс Каплан
Поиск статьи Дэвида Каплана, которые не являются соавтором Глории Уотерс:
Статья Каплан! Уотерс
Используйте helm-bibtex-with-local-bibliography или ivy-bibtex-with-local-bibliography чтобы начать поиск в «локальной библиографии» текущего буфера, а не «глобальная библиография», определяемая bibtex-completion-bibliography . Если текущий файл представляет собой файл Bibtex, эта библиография будет использоваться. Если текущий файл является файлом латекса, Reftex будет использоваться для определения локальной библиографии из стандартных команд библиографии латексной библиографии bibliography и addbibresource . Если файл является файлом орг, используется локальная и/или глобальная библиография орг (как указано с использованием новой #+BIBLIOGRAPHY: ключевое слово и переменная org-cite-global-bibliography ). Если локальная библиография не может быть найдена, будет использоваться глобальная библиография ( bibtex-completion-bibliography ).
Используйте helm-bibtex-with-notes или ivy-bibtex-with-notes для поиска только среди записей, в которых есть примечания. Особенно полезно в сочетании с ~ org-roam-bibtex.el ~.
Общий вариант использования - это то, где в документе написан термин поиска (скажем, в вашей рукописи латекса), и вы хотите найти его в своей библиографии. В этой ситуации просто запустите Helm-Bibtex или Ivy-Bibtex и введите Mn . Это вводит слово под курсором в качестве поискового термина. (Это функция руля / плита и может использоваться во всех командах Helm / Ivy, а не только для Helm-Bibtex / Ivy-Bibtex.) Обратите внимание, что также можно использовать ключи Bibtex для поиска. Поэтому, если ваш курсор находится на ключке Bibtex (например, в команде Latex CITE), вы можете запустить Helm-Bibtex или Ivy-Bibtex, нажмите Mn и увидеть запись, связанную с этим ключом Bibtex. Специальный случай: вы хотите открыть PDF, связанный с ключом Bibtex под курсором: Mx helm-bibtex Mn RET или Mx ivy-bibtex Mn RET . Это, конечно, короче, если вы связываете helm-bibtex или ivy-bibtex с удобным ключом (см. Ключевые связки).
Доступные действия:
Helm-Bibtex : выберите запись и нажмите <return> , чтобы выполнить действие по умолчанию. В качестве альтернативы нажмите TAB (табулятор), чтобы увидеть список всех доступных действий, выполнить одно из них и выйти из Helm-Bibtex.
Ivy-Bibtex : выберите запись и нажмите <return> , чтобы выполнить действие по умолчанию. В качестве альтернативы нажмите Mo , чтобы увидеть список всех доступных действий, выполнить одно из них и выйти из Ivy-Bibtex.
Helm-Bibtex : Start Helm-Bibtex, введите выражение поиска, переместите курсор в соответствующую запись и введите C-<space> (Control + Space Band), чтобы отметить эту запись, при желании измените выражение поиска, отметьте больше записей, наконец-то нажмите <return> или <tab> чтобы выполнить действие для всех выбранных записей один раз и выходить из Helm-Bibtex.
Ivy-Bibtex : запустите Ivy-Bibtex, введите выражение поиска, переместите курсор в соответствующую запись и введите C-<space> (Control + Space Band), чтобы отметить эту запись, опционально измените выражение поиска, отметьте больше записей, наконец-то нажмите <return> , чтобы выполнить действие по умолчанию во всех выбранных записях или Mo , чтобы выбрать другое действие. Нажмите S-<space> (Shift + Space Bar), чтобы отметить отмеченную запись.
Helm-Bibtex : запустите электронное письмо своему коллеге ( Cx m ) и выполните helm-bibtex . Найдите свои новые публикации и отметьте их с помощью C-<space> , затем нажмите <f7> , чтобы выполнить действие «Прикрепить PDF к электронной почте». Затем Mx helm-resume (публикации все еще помечены) и нажмите <f6> , чтобы выполнить действие «Вставить запись Bibtex». При желании вставьте больше человеческих читаемых ссылок, используя Mx helm-resume и <f4> , чтобы выполнить действие «Вставить ссылку». Отправить электронную почту ( Cc Cc ). Сделанный. Это занимает менее 10 секунд.
Ivy-Bibtex : запустите электронное письмо своему коллеге ( Cx m ) и выполните ivy-bibtex . Найдите свои новые публикации и отметьте их с помощью C-<space> , затем нажмите CMo a , чтобы выполнить действие «Прикрепить PDF к электронной почте», сохраняя при этом Ivy открытым. Затем нажмите Mo b , чтобы выполнить действие «Вставьте запись Bibtex» или вставьте больше читаемых человеческих ссылок, используя Mo r чтобы выполнить действие «Вставить ссылку». Отправить электронную почту ( Cc Cc ). Сделанный. Это занимает менее 10 секунд.
Конечно, это предполагает, что вы отправляете электронное письмо от Emacs, например, через MU4E.
Helm-Bibtex и Ivy-Bibtex имеют мощные возможности поиска, но некоторые общие поиски не могут быть выполнены просто потому, что соответствующая информация обычно не представлена в файлах Bibtex. Например, заполнение Bibtex не знает, была ли презентация конференции разговором или плакатом, потому что оба представлены в качестве inproceedings . Поэтому, если вы хотите составить список ваших переговоров о конференции (например, для вашего резюме), это невозможно - не без какой -либо дополнительной работы. Одним из решений является «отметить» публикации. Теги похожи на ключевые слова, за исключением того, что они не представляют содержание публикаций, кроме метаданных. Пример:
@inproceedings { BibtexKey2015 ,
author = { Jane Doe and Monika Mustermann } ,
title = { This is the title } ,
crossref = { XYZ-conference-2015 } ,
keywords = { keyword1, keyword2 } ,
pages = { 10 } ,
tags = { poster } ,
} Поскольку tags не являются стандартным полем Bibtex, Bibtex-завершение по умолчанию не учитывает его при поиске. Чтобы иметь возможность искать теги, мы должны сообщить Bibtex-Comploction, что поле tags также актуально:
(SetQ Bibtex-Comploition-Additional-Search Fields '(TAGS))
Есть много других способов использования тегов. Например, их можно использовать, чтобы отметить статьи, которые вы планируете читать, или важные статьи или рукописи в процессе и т. Д. Будьте креативны.
Действие по вставке команды цитирования в документ Latex Document подсказывает команду цитирования и, если применимо, для до- и последовательных аргументов. Подсказка для команды цитирования имеет свою собственную историю мини-муфта, что означает, что доступ к предыдущим входам можно получить, нажав клавишу <up> для Helm-Bibtex или Mp для плющ-бибтекса. Нажав <down> Также можно получить доступ к списку всех команд цитирования, определенных в Biblatex (за исключением команд Multicite и Volcite et al., Которые имеют разные структуры аргументов). Подсказка также поддерживает автоматическое завершение через ключ tab . Если команда не введена, используется команда по умолчанию. Команда по умолчанию определена в переменной настройки bibtex-completion-cite-default-command . По умолчанию подсказка Helm-Bibtex и Avy-Bibtex для досрочных и постежных для цитирования. Это может быть отключено, установив переменную bibtex-completion-cite-prompt-for-optional-arguments до nil .
Bibtex-завершение кэширует библиографию, чтобы предотвратить дорогостоящую перечитывание при запуске нового запроса. Тем не менее, Bibtex-завершение не проверяет, были ли добавлены новые PDF или заметки с момента последнего чтения и, следовательно, символы, указывающие на наличие или отсутствие этих элементов, могут быть неверными. Перечислитель может быть вынужден с использованием аргумента префикса.
Helm-Bibtex : либо Cu Mx helm-bibtex , либо Cu с последующим привязкой клавиши, которые вы используете для вызова Helm-Bibtex.
Ivy-Bibtex : либо сделайте Cu Mx ivy-bibtex , либо Cu а затем любые ключевые привязки, которые вы используете для вызова Ivy-bibtex.
Helm-Bibtex : Start Helm-Bibtex и введите термины поиска. Затем выберите «CrossRef» в разделе под названием «Параметры отступления». (Вы можете использовать клавиши со стрелками влево и вправо для переключения между разделами.)
Ivy-Bibtex : запустите плюс-бибтекс и введите термины поиска. Затем нажмите Mo f , чтобы увидеть список параметров отступления и выберите «CrossRef».
Это будет использовать Biblio.el для поиска базы данных CrossRef. В списке результатов поместите курсор на въезд интереса и нажмите c , чтобы скопировать Bibtex для этой записи или i , чтобы вставить его в точке. Нажмите q , чтобы закрыть буфер с результатами поиска. Смотрите документацию Biblio.el для деталей.
Иногда поисковый термин не дает желаемых результатов на первом выбранном источнике резерва, и вы можете выбрать еще один вариант отступления с тем же поисковым термином. Для этого вы можете использовать helm-resume (или ivy-resume ), чтобы вернуться в начальное меню Helm (плющ) с последним получением поиска, позволяя вам эффективно выбрать другой вариант.
Ниже я предоставляю код, который был полезен для меня или других пользователей. Обратите внимание, что этот код может сделать предположения, которые не удерживаются в вашей настройке. Тщательно прочитайте код перед выполнением его и внесите изменения по мере необходимости.
Приведенный ниже код считывает все файлы примечаний в вашем bibtex-completion-notes-path и создает новый файл примечаний, содержащий раздел для каждой публикации. Этот код предполагает, что Bibtex-завершение по-прежнему настроено для нескольких файлов примечания и что вы хотите сохранить заметки в файле notes.org в вашем bibtex-completion-notes-path . Код также добавляет уровень во все заголовки Org, найденные в отдельных файлах примечаний (поскольку заголовки верхнего уровня используются для публикаций в новом файле Notes). Если файл примечания не имеет соответствующей записи в библиографии, он игнорируется.
( 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 ))))Скажите, что вы хотите создать файл Bibtex, содержащий только записи, которые вы цитировали в статье, затем вы можете использовать следующий код для заполнения нового файла Bibtex с помощью записей:
( 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)Если вы видите
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.