Helm-Bibtex: Ivy-Bibtex:
Helm-Bibtex e Ivy-Bibtex permitem pesquisar e gerenciar sua bibliografia Bibtex. Ambos compartilham o mesmo back-end genérico, conclusão do bibtex, mas um usa a estrutura de conclusão do leme e a outra hera como front-end.
bibtex-completion-watch-bibliography . Pode ser usado para desativar a recarga automática da bibliografia.ivy-bitex . Veja aqui.helm-bibtex-with-local-bibliography e ivy-bibtex-with-local-bibliography agora também usam bibliografias definidas localmente e globalmente em arquivos org. São bibliografias especificadas usando a nova #+BIBLIOGRAPHY: palavra-chave e aquelas na variável org-cite-global-bibliography .bibtex-completion-format-citation-org-cite (para uso na variável de configuração bibtex-completion-format-citation-functions )=has-pdf= e =has-note= .helm-bibtex-with-notes e ivy-bibtex-with-noted para pesquisar apenas dentro das entradas que têm anotações.author-or-editor para uso em modelos de notas.@string .Veja News.org para notícias antigas.
Os principais pontos de venda de Helm-Bibtex 'e Ivy-Bibtex' são pesquisas eficientes em grandes bibliografias usando expressões de pesquisa poderosas e integração rígida nos seus fluxos de trabalho do EMACS. Ambos podem executar as seguintes ações nas entradas que correspondem à expressão de pesquisa: abra o PDF associado a uma entrada, seu URL ou DOI, insira uma citação para essa entrada, a chave Bibtex, a entrada do Bibtex ou uma referência de texto sem formatação, conecte o PDF a um email, faça anotações, edite a entrada do BIBTEX. Muitos aspectos podem ser configurados para se adequar às preferências pessoais.
Abaixo está uma captura de tela mostrando uma pesquisa de leme-bibtex por entradas que contêm a expressão "rastreamento ocular".

O eye.?tracking de expressão regular. Um símbolo quadrado em loop (⌘) ao lado de uma entrada indica que um PDF está disponível. Um símbolo da caneta (✎) significa que há notas anexadas a esta entrada. Na parte inferior, existem entradas que podem ser usadas para pesquisar em bancos de dados on -line.
A maneira mais fácil de instalar o helm-bibtex ou a hera-bibtex é através da Melpa. Como alternativa, coloque os arquivos bibtex-clemation.el e helm-bibtex.el ou Ivy-bibtex.el em um diretório incluído no seu caminho de carga e adicione a seguinte linha ao seu arquivo de inicialização (normalmente 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 e Ivy-BibTex dependem de vários pacotes que serão instalados automaticamente se você usar o MELPA.
Ao usar o helm-bibtex ou a hera-BIBTEX, verifique se Helm ou Ivy está configurado corretamente (consulte a documentação do Helm ou a documentação da hera).
Uma configuração mínima envolve a conclusão do BibTex, onde suas bibliografias podem ser encontradas:
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/bibtex-file-2.bib " )) Os usuários de org-bibtex também podem especificar arquivos de bibliografia em modo de organização; nesse caso, será assumido que existe um arquivo bibtex com o mesmo nome e babador de extensão em vez de org. Se o arquivo BIB tiver um nome diferente, use uma célula contras ("orgfile.org" . “bibfile.bib") em vez disso:
( 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 onde os PDFs podem ser encontrados:
( setq bibtex-completion-library-path '( " /path1/to/pdfs " " /path2/to/pdfs " )) A conclusão do bibtex assume que o nome de um PDF consiste na chave BIBTEX seguida mais um sufixo definido pelo usuário ( .pdf por padrão). Por exemplo, se uma entrada do BibTex tiver a chave Darwin1859 , o BibTex-Concleition busca Darwin1859.pdf .
Se as entradas do Bibtex tiverem um campo que especifica o caminho completo para os PDFs, esse campo também poderá ser usado. Por exemplo, Jabref e Zotero armazenam a localização dos PDFs em um campo chamado File :
( setq bibtex-completion-pdf-field " File " ) Se bibtex-completion-pdf-field não for NIL, o BibTex-Conclimtion tentará primeiro recuperar o arquivo especificado neste campo. Se o campo não estiver definido para uma entrada ou se o arquivo especificado não existir, o conclusão do BibTex voltará ao método descrito acima (buscando a chave + .pdf nos diretórios listados no bibtex-completion-library-path ).
As especificações do arquivo podem ser caminhos vazios ou seguir o formato usado por Jabref, Zotero, Caliber e Mendeley. Este formato também permite a especificação de vários arquivos (por exemplo, o papel principal e o material suplementar). Exemplos:
File = {/path/to/article.pdf}File = {:/path/to/article.pdf:PDF}File = {:/path/to/article.pdf:PDF;:/path/to/supplementary_materials.pdf:PDF} A conclusão do BIBTEX suporta dois métodos para armazenar notas. Ele pode armazenar todas as notas em um arquivo ou armazenar notas em vários arquivos, um arquivo por publicação. No primeiro caso, a variável de personalização bibtex-completion-notes-path deve ser definida para o caminho completo do arquivo Notas:
( setq bibtex-completion-notes-path " /path/to/notes.org " ) Se um arquivo por publicação for preferido, bibtex-completion-notes-path deve apontar para o diretório usado para armazenar os arquivos Notes:
( setq bibtex-completion-notes-path " /path/to/notes " ) Os nomes desses arquivos consistem na chave BIBTEX mais um sufixo definido pelo usuário ( .org por padrão).
Neste ponto, a maioria das pessoas estará pronta para ir. Pule para o uso abaixo para ver como usar o helm-bibtex e a hera-bibtex.
Invocar helm-bibtex ou ivy-bibtex quando o ponto estiver em uma citação de modo de organização selecionará automaticamente essa chave. No entanto, o org-open-at-point em uma citação org-Org em uma organização o levará à entrada de bibliografia correspondente. O código a seguir alterará esse comportamento para abrir helm-bibtex-follow ao seguir uma citação de organização entrando RET ou clicando nele:
( setq org-cite-follow-processor 'helm-bibtex-org-cite-follow ) Nota No caso de uma citação org com várias teclas, o código acima não será pré -selecionar nenhuma entrada quando a parte [cite: for selecionada. Veja aqui a alternativa da hera.
A variável bibtex-completion-display-formats pode ser usada para personalizar como os resultados da pesquisa são apresentados em uma base do tipo de entrada. O padrão é
'(( t . " ${author:36} ${title:*} ${year:4} ${=has-pdf=:1}${=has-note=:1} ${=type=:7} " )) O que significa que todos os tipos de entrada são apresentados da mesma maneira: autores, título, ano,… Nesta sequência de formato, os números indicam quanto espaço é reservado para o respectivo campo. Se houver um * em vez de um número, significa que esse campo obtém qualquer espaço permanecer. Aqui está uma configuração que usa um layout 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 isso funcione, você deve adicionar journal e booktitle aos bibtex-completion-additional-search-fields . Veja a próxima seção.
Os campos padrão usados para pesquisa são: autor, título, ano, chave de bibtex, tipo de entrada (artigo, inprocedings,…). Os bibtex-completion-addition-search-fields podem ser usados para estender esta lista. Exemplo:
( setq bibtex-completion-additional-search-fields '(keywords))( setq bibtex-completion-pdf-symbol " ⌘ " )
( setq bibtex-completion-notes-symbol " ✎ " ) Se os arquivos PDFS seguirem um esquema de nomenclatura diferente do BibTex Key + .pdf , a função bibtex-completion-find-pdf-in-library poderá ser modificada para acomodar isso.
Por padrão, o EMACS é usado para abrir arquivos PDF. Isso significa que o DocView é usado ou, se instalado, a extensão PDF-tool muito superior, que oferece recursos como pesquisa incremental em arquivos PDF e criação e modificação de anotações compatíveis com anotações criadas pelo software Adobe.
Para configurar outro visualizador de PDF, a variável de personalização bibtex-completion-pdf-open-function pode ser usada. Aqui está um exemplo de configuração para o espectador OS X PDF Skim:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " open " nil 0 nil " -a " " /Applications/Skim.app " fpath)))Aqui está outro exemplo para o visualizador Linux PDF evidence:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " evince " nil 0 nil fpath))) Às vezes, é desejável ter as duas opções (o próprio Emacs e o espectador externo) abrir o PDF. A seguir, adiciona uma ação com o Evince como um visualizador externo vinculado a P , além do visualizador EMACS regular com p . A ação funciona com Ivy-Bibtex; teria que ser ajustado para o helm-bibtex (altere o caminho para outro espectador, se necessário):
( 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) " ))) Você pode armazenar PDFs adicionais para uma determinada entrada, como uma versão anotada do PDF original, um arquivo que contém material suplementar ou arquivos de capítulo. Se o campo file for usado para vincular PDFs às entradas (consulte os arquivos da seção PDF), esses PDFs adicionais poderão ser simplesmente adicionados a esse campo. Se a ação "Open PDF File" for acionado, você será solicitado para que o arquivo seja aberto.
Se o campo file não for usado, mas o esquema de nomenclatura bibtex-key + .pdf (novamente consulte os arquivos PDF), você pode obter o mesmo comportamento com:
( setq bibtex-completion-find-additional-pdfs t )Todos os arquivos cujo nome começam com a tecla Bibtex serão associados a uma entrada. É suficiente nomear seus arquivos de acordo (por exemplo, com o utilitário renomear). Exemplos:
bibtex-key-annotated.pdfbibtex-key-supplemental.pdfbibtex-key-chapter1.pdf Observe que, por motivos de desempenho, esses arquivos adicionais são detectados apenas ao acionar uma ação, como "Open PDF File". Quando toda a bibliografia é carregada, apenas o pdf bibtex-key.pdf “principal” é detectado.
Se os documentos forem referenciados através do esquema de nomenclatura bibtex-key.pdf mas você estiver armazenando arquivos em um formato diferente do PDF, poderá definir a variável bibtex-completion-pdf-extension de acordo. Exemplo:
( setq bibtex-completion-pdf-extension " .djvu " )Se você armazenar arquivos em vários formatos, poderá especificar uma lista em vez de um único tipo de arquivo:
( setq bibtex-completion-pdf-extension '( " .pdf " " .djvu " , " .jpg " ))As extensões nesta lista são então tentadas sequencialmente até que um arquivo seja encontrado. Cuidado que isso pode reduzir o desempenho para grandes bibliografias.
Por padrão, o bibtex-conclusão usa o que for o padrão da EMACS. No entanto, há uma variedade de alternativas (consulte a documentação da bibtex-completion-browser-function para uma lista completa). Exemplo:
( setq bibtex-completion-browser-function 'browser-url-chromium )Funções definidas pelo usuário também podem ser usadas:
( setq bibtex-completion-browser-function
( lambda ( url _ ) ( start-process " firefox " " *firefox* " " firefox " url))) A recarga automática pode ser configurada usando bibtex-completion-watch-bibliography .
A conclusão do bibtex cria citações com base no modo principal em que a citação é inserida:
A lista de modos pode ser estendida e as funções de citação podem ser alteradas usando a variável de personalização bibtex-completion-format-citation-functions . Por exemplo, as pessoas que não usam o EBIB podem preferir links para os PDFs em vez de ebib-links nos arquivos do modo de organização:
( 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))) Quando você deseja criar uma lista de tarefas de leitura no modo de organização, você pode preferir usando o título do arquivo PDF no link. Para atingir esse objetivo, você pode modificar as bibtex-completion-format-citation-functions usando o seguinte snippet 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)))Uma função de citação deve aceitar uma lista de chaves como entrada e retornar uma string que contém as citações. Veja as funções de citação predefinida para exemplos.
O BibTex-Concleming solicita um comando de citação de látex ao inserir citações em documentos de látex. A lista de comandos disponíveis para conclusão automática pode ser definida usando os bibtex-completion-cite-commands .
A configuração padrão inclui todos os comandos de citação definidos no Biblatex (exceto comandos multicite e volcite et al.). Se nenhum comando for inserido, um comando padrão será usado, que pode ser configurado usando bibtex-completion-cite-default-command . O valor padrão para o comando padrão é cite . A variável bibtex-completion-cite-default-as-initial-input controla como o comando padrão é usado. Se t , ele é inserido no minibuffer antes de ler a entrada do usuário. Se nil , ele não é inserido no minibuffer, mas usado como padrão se o usuário não inserir nada.
Por padrão, a conclusão do BibTex também solicita as pré e as pós-Notas opcionais para a citação. Isso pode ser desligado definindo a variável bibtex-completion-cite-prompt-for-optional-arguments para nil .
Veja também a seção Inserir comandos de citação de látex abaixo.
Os bancos de dados on-line podem ser configurados usando a variável de personalização bibtex-completion-fallback-options . Essa variável contém um alist em que o primeiro elemento de cada entrada é o nome do banco de dados e o segundo elemento é um URL ou uma função. O URL deve conter um %s na posição em que a expressão de pesquisa atual deve ser inserida. Se uma função for usada, essa função deve considerar essa expressão de pesquisa como um argumento único.
Para acesso rápido à bibliografia, vincule o comando de pesquisa, helm-bibtex ou ivy-bibtex , a uma chave conveniente.
Helm-BibTex : Uso a tecla Menu como a tecla Prefix para todos os comandos do Helm e vinculo helm-bibtex a b . Helm-bibtex pode então ser iniciado usando <menu> b . Também é útil vincular helm-resume a <menu> no helm-command-map . Com esta ligação, <menu> <menu> pode ser usada para reabrir a última pesquisa de leme.
( 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 : você pode vincular da mesma forma que ivy-bibtex a <menu> b e ivy-resume a <menu> <menu> .
Por conveniência, pesquisas frequentes podem ser capturadas em comandos e ligadas a combinações de chaves. Abaixo está o código de exemplo que define uma pesquisa por publicações de autoria de "Jane Doe" e vincula o comando de pesquisa 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 ) Pressionar <enter> em uma publicação aciona a "ação padrão" que está abrindo o PDF associado à publicação, se presente, ou seu URL ou DOI de outra forma. Pressionar <tab> no helm-bibtex ou Mo no hera-bibtex exibe um menu de ação listando as ações disponíveis. Aqui está a lista de todas as ações disponíveis, juntamente com suas funções (essas são as funções de ação genérica, para o helm-bibtex os nomes de funções começam com helm-bibtex- em vez de bibtex-completion- e para hera-bibtex que eles começam com ivy-bibtex- em vez disso):
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 : A lista de ação pode ser modificada através dos comandos helm-add-action-to-source e helm-delete-action-from-source . Por exemplo, o seguinte adiciona uma nova ação helm-bibtex-open-annotated-pdf (veja acima) logo após o primeiro item da lista acima:
(helm-add-action-to-source
" Open annotated PDF (if present) " 'helm-bibtex-open-annotated-pdf
helm-source-bibtex 1 ) Se o último argumento numérico no helm-add-action-to-source for omitido, a nova ação é adicionada no final da lista. Como a ação padrão é simplesmente a primeira entrada na lista de ações, a ação padrão pode ser alterada excluindo uma ação e reinserindo-a na parte superior da lista. Abaixo está um exemplo mostrando como fazer "Inserir Bibtex Key" a ação padrão:
(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 : A ação padrão e as ações disponíveis adicionais são definidas separadamente. A ação padrão é controlada pelas variáveis de ivy-bibtex-default-action e ivy-bibtex-default-multi-action , com o último destinado a listas de entradas marcadas (consulte Aplicar ações a várias entradas). Por exemplo, o código a seguir altera a ação padrão para "Inserir a chave BIBTEX":
( setq ivy-bibtex-default-action 'ivy-bibtex-insert-key )Da mesma forma, o código a seguir define a ação padrão para listas de entradas marcadas para "Inserir Bibtex Key", que inserirá uma boa lista de chaves separadas por vírgula:
( setq ivy-bibtex-default-multi-action 'ivy-bibtex-insert-key ) As ações adicionais são definidas passando a lista de ação desejada para as ivy-set-actions . Por exemplo, os códigos a seguir mantêm apenas duas ações disponíveis, além do padrão:
(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))) As letras p e e são as principais ligações para as duas ações no menu de ação. A ligação de chave o é reservada para a ação padrão. A segunda aparição da ação neste código alerta ivy de que a ação pode lidar com listas de entradas marcadas. Pode ser omitido com segurança se a coisa certa a fazer é simplesmente aplicar a ação a cada entrada por sua vez.
Se você deseja adicionar novas ações no final da lista de ações, alternativamente, poderá usar as ivy-add-actions . Por exemplo, o seguinte adiciona uma nova ação ivy-bibtex-open-annotated-pdf (veja acima) no final da lista de ação:
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-annotated-pdf " Open annotated PDF (if present) " ivy-bibtex-open-annotated-pdf)))Criar uma nova ação para helm-bibtex ou hera-bibtex pode ser feita em três etapas. Para um exemplo, consulte Ação para a abertura de PDFs anotados acima.
A primeira e principal etapa é criar uma função de ação genérica bibtex-completion-<action> (por exemplo bibtex-completion-open-annotated-pdf ). Essa função deve ter como um único argumento uma lista de teclas BIBTEX e executar a ação nas entradas Bibtex correspondentes.
A segunda etapa é adaptar a função de ação genérica para o helm-bibtex ou a hera-bibtex, para que seja executada no buffer correto e receber as chaves das entradas selecionadas).
Helm-Bibtex : Isso é simplesmente feito com:
(helm-bibtex-helmify-action bibtex-completion-<action > helm-bibtex-<action > )Ivy-Bibtex : Isso é simplesmente feito com:
(ivy-bibtex-ivify-action bibtex-completion-<action > ivy-bibtex-<action > ) A terceira e última etapa é tornar a função de ação personalizada helm-bibtex-<action> ou ivy-bibtex-<action> disponível no helm-bibtex ou Ivy-bibtex, adicionando-o ao menu de ação. Veja Alterar as ações disponíveis.
Helm-Bibtex : Por padrão, helm-bibtex usa todo o quadro para exibir a bibliografia. Isso pode ser alterado definindo a variável helm-bibtex-full-frame para nil , caso em que o padrão de Helm é usado (normalmente dividido vertical, com a pesquisa de comente sendo mostrada na janela inferior).
Ivy-Bibtex : Ivy-Bibtex sempre exibe a bibliografia no minibuffer. A ivy-height variável controla o número de linhas para a janela Minibuffer em todos os comandos da hera.
A conclusão do Bibtex preenche novas notas com algumas informações básicas sobre a publicação. No caso de apenas um arquivo de nota para todas as publicações, novas entradas parecem o exemplo a seguir:
Gigerenzer, G. (1998): Precisamos de pensamento estatístico, não rituais estatísticos : Propriedades: : Custom_id: gigerenzer1998 :FIM:
O título da nova seção consiste nos nomes dos autores, no ano e no título da publicação. A propriedade Custom_ID especifica a chave Bibtex da entrada (é nomeada Custom_ID para compatibilidade com Org-Ref).
No caso de um arquivo por publicação, um novo arquivo de notas contém um título no seguinte formato:
#+Título: Notas em: Gigerenzer, G. (1998): Precisamos de pensamento estatístico, não rituais estatísticos
Se outros formatos forem desejados, os modelos para novas notas poderão ser alterados usando as variáveis de personalização bibtex-completion-notes-template-one-file e bibtex-completion-notes-template-multiple-files .
Por padrão, a conclusão do BibTex assume que os arquivos de notas estão no formato de modo de organização. No entanto, qualquer outro formato também pode ser usado. No caso de apenas um arquivo Notes, basta definir bibtex-completion-notes-path para apontar para o arquivo desejado. No caso de vários arquivos de notas, o tipo de arquivos pode ser especificado usando a variável de personalização bibtex-completion-notes-extension . Por exemplo, se o Markdown for o tipo de arquivo desejado:
( setq bibtex-completion-notes-path " /path/to/notes " )
( setq bibtex-completion-notes-extension " .md " )Se o tipo de arquivo estiver definido como outra coisa que não o modo de organização, os modelos para novos arquivos de notas também precisam ser ajustados. Veja a seção acima para obter detalhes.
A conclusão do bibtex recarrega automaticamente a bibliografia quando um arquivo .bib é alterado no disco. No entanto, a conclusão do BibTex não assiste PDFs e Notas. Assim, quando um novo PDF ou nota é adicionado, a bibliografia deve ser recarregada manualmente para exibir o PDF e anotar os símbolos corretamente (por meio do argumento prefixo, por exemplo, Cu Mx helm-bibtex ). Infelizmente, a implementação de recarga automática para PDFs e notas não é totalmente direta, pois a conclusão do BIBTEX é bastante flexível na forma como os PDFs e as notas podem ser tratados. Mas, para configurações simples, existe uma solução fácil: basta assistir aos diretórios bibtex-completion-library-path e bibtex-completion-notes-path e recarregar a bibliografia quando eles mudarem. Exemplo para o diretório PDF:
( setq tmalsburg-pdf-watch
( file-notify-add-watch bibtex-completion-library-path
'(change)
( lambda ( event ) (bibtex-completion-candidates)))) Use Mx helm-bibtex ou Mx ivy-bibtex para iniciar uma nova pesquisa. Os campos padrão para pesquisa são: autor, título, ano, chave Bibtex e tipo de entrada. Expressões regulares podem ser usadas. Exemplo de pesquisa:
Tudo publicado por Janet Fodor:
Janet Fodor
Todas as teses de doutorado:
Poubo
Tese de doutorado de Lyn Frazier:
Frezier de doutorado
Publicações sobre rastreamento ocular. Uma expressão regular é usada para combinar com várias grafias ("EyeTracking", "Eye Rastreing", "Racking Oche"):
olho
Apresentações da conferência em 2013:
2013 InProedings
Publicações de 2010 e 2011:
(2010 | 2011 )
Artigos em co-autoria de David Caplan e Gloria Waters:
Artigo Waters Caplan
Procure artigos de David Caplan que não sejam co-autor de Gloria Waters:
Artigo Caplan! Águas
Use helm-bibtex-with-local-bibliography ou ivy-bibtex-with-local-bibliography para iniciar uma pesquisa na "bibliografia local" do buffer atual, em vez da "bibliografia global" definida pela bibtex-completion-bibliography . Se o arquivo atual for um arquivo bibtex, essa bibliografia será usada. Se o arquivo atual for um arquivo de látex, o reftex será usado para determinar a bibliografia local dos comandos padrão de bibliografia de látex bibliography e addbibresource . Se o arquivo for um arquivo org, a bibliografia local e/ou global de org será usada (conforme especificado usando a nova #+BIBLIOGRAPHY: palavra-chave e a variável org-cite-global-bibliography ). Se nenhuma bibliografia local puder ser encontrada, a bibliografia global ( bibtex-completion-bibliography ) será usada.
Use helm-bibtex-with-notes ou ivy-bibtex-with-notes para pesquisar apenas entre entradas que têm notas. Particularmente útil em combinação com ~ org-roam-bibtex.el ~.
Um caso de uso comum é onde um termo de pesquisa é escrito em um documento (digamos no seu manuscrito de látex) e você deseja procurá -lo em sua bibliografia. Nesta situação, basta iniciar o helm-bibtex ou a hera-bibtex e entrar Mn . Isso insere a palavra sob o cursor como termo de pesquisa. (Este é um recurso de leme / hera e pode ser usado em todos os comandos de leme / hera, não apenas com o helm-bibtex / Ivy-bibtex.) Observe que também é possível usar teclas BibTex para pesquisa. Portanto, se o seu cursor estiver em uma chave bibtex (por exemplo, em um comando cite de látex), você poderá iniciar o helm-bibtex ou a hera-bibtex, pressionar Mn e ver a entrada associada a essa chave BIBTEX. Caso especial: você deseja abrir o PDF associado à chave BIBTEX sob o cursor: Mx helm-bibtex Mn RET ou Mx ivy-bibtex Mn RET . É claro que isso é mais curto se você vincular helm-bibtex ou ivy-bibtex a uma chave conveniente (consulte a ligação das chaves).
As ações disponíveis são:
Helm-BibTex : selecione uma entrada e pressione <return> para executar a ação padrão. Como alternativa, pressione TAB (tabulador) para ver uma lista de todas as ações disponíveis, execute uma delas e saia do helm-bibtex.
Ivy-BibTex : selecione uma entrada e pressione <return> para executar a ação padrão. Como alternativa, pressione Mo para ver uma lista de todas as ações disponíveis, execute uma delas e saia da hera-bibtex.
Helm-Bibtex : Inicie o helm-bibtex, insira a expressão de pesquisa, mova o cursor para a entrada correspondente e digite C-<space> (Control + Space Bar) para marcar esta entrada, alterar opcionalmente sua expressão de pesquisa, marcar mais entradas, finalmente pressione <return> ou <tab> para executar uma ação para todas as entradas selecionadas a uma vez e exite Helm-Bibtex.
Ivy-BibTex : Inicie a Ivy-Bibtex, digite a expressão de pesquisa, mova o cursor para a entrada correspondente e digite C-<space> (Control + Space Bar) para marcar esta entrada, alterar opcionalmente sua expressão de pesquisa, marcar mais entradas, finalmente pressione <return> para executar a ação padrão em todas as entradas selecionadas ou Mo para escolher outra ação. Pressione S-<space> (Shift + Space Bar) para marcar uma entrada marcada.
Helm-Bibtex : Inicie um email para seu colega ( Cx m ) e execute helm-bibtex . Pesquise suas novas publicações e marque-as com C-<space> , depois pressione <f7> para executar a ação "Anexe PDF ao email". Em seguida, Mx helm-resume (as publicações ainda estão marcadas) e pressione <f6> para executar a ação "Insira a entrada do Bibtex". Opcionalmente, insira mais referências legíveis humanas usando Mx helm-resume e <f4> para executar a ação "Inserir referência". Enviar email ( Cc Cc ). Feito. Isso leva menos de 10 segundos.
Ivy-Bibtex : Inicie um email para seu colega ( Cx m ) e execute ivy-bibtex . Procure suas novas publicações e marque-as com C-<space> , depois pressione CMo a para executar a ação "Anexe PDF ao email", mantendo a Ivy aberta. Em seguida, pressione Mo b para executar a ação "Insira a entrada do Bibtex" ou insira mais referências legíveis humanas usando Mo r para executar a ação "Inserir referência". Enviar email ( Cc Cc ). Feito. Isso leva menos de 10 segundos.
Obviamente, isso pressupõe que você esteja enviando e -mail da EMACS, por exemplo, via MU4E.
Helm-BibTex e Ivy-Bibtex têm recursos de pesquisa poderosos, mas algumas pesquisas comuns não podem ser executadas simplesmente porque as informações relevantes normalmente não são representadas nos arquivos Bibtex. Por exemplo, o conclusão do BibTex não sabe se uma apresentação da conferência foi uma palestra ou um pôster, porque ambos são representados como inproceedings . Portanto, se você deseja compilar uma lista de suas negociações de conferência (por exemplo, para o seu currículo), isso não é possível - não sem algum trabalho adicional. Uma solução é "marcar" publicações. As tags são como palavras -chave, exceto que não representam o conteúdo de uma publicação, mas meta -dados. Exemplo:
@inproceedings { BibtexKey2015 ,
author = { Jane Doe and Monika Mustermann } ,
title = { This is the title } ,
crossref = { XYZ-conference-2015 } ,
keywords = { keyword1, keyword2 } ,
pages = { 10 } ,
tags = { poster } ,
} Como tags não são um campo BibTex padrão, a conclusão do BibTex por padrão não o considera ao pesquisar. Para poder procurar tags, precisamos, portanto, dizer a conclusão do bibtex que o campo tags também é relevante:
(SetQ Bibtex-Concluir-Addicional-Search-Fields '(Tags))
Existem muitas outras maneiras pelas quais as tags podem ser usadas. Por exemplo, eles podem ser usados para marcar artigos que você planeja ler ou artigos ou manuscritos importantes em andamento, etc. Seja criativo.
A ação para inserir um comando de citação em um documento do LATEX solicita o comando de citação e, se aplicável, para os argumentos pré e pós-nota. O prompt para o comando de citação possui sua própria história de minibuffer, o que significa que as entradas anteriores podem ser acessadas pressionando a tecla <up> para helm-bibtex ou Mp para Ivy-Bibtex. Ao pressionar <down> , também é possível acessar a lista de todos os comandos de citação definidos no Biblatex (exceto para comandos multicite e Volcite et al. Que têm estruturas de argumentos diferentes). O prompt também suporta conclusão automática através da tecla tab . Se nenhum comando for inserido, o comando padrão será usado. O comando padrão é definido na variável de personalização bibtex-completion-cite-default-command . Por padrão, prompt Helm-Bibtex e Ivy-Bibtex para pré e pós-Notas para a citação. Isso pode ser desligado definindo a variável bibtex-completion-cite-prompt-for-optional-arguments para nil .
O Bibtex-Conclui cache a bibliografia para evitar uma releitura dispendiosa quando uma nova consulta é iniciada. No entanto, a conclusão do BIBTEX não verifica se novos PDFs ou notas foram adicionados desde a última leitura e, portanto, os símbolos que indicam a presença ou ausência desses itens podem estar incorretos. Um relevante pode ser forçado usando um argumento de prefixo.
Helm-BibTex : Faça Cu Mx helm-bibtex ou Cu seguido de qualquer ligação de chave que você use para invocar o helm-bibtex.
Ivy-Bibtex : faça Cu Mx ivy-bibtex ou Cu seguido de qualquer ligação de chave que você use para invocar a Ivy-Bibtex.
Helm-BibTex : Inicie o Helm-BibTex e insira os termos de pesquisa. Em seguida, selecione "CrossRef" na seção intitulada "Opções de fallback". (Você pode usar as teclas de seta esquerda e direita para alternar entre as seções.)
Ivy-Bibtex : Inicie a Ivy-Bibtex e insira os termos de pesquisa. Em seguida, pressione Mo f para ver a lista de opções de fallback e selecione "CrossRef".
Isso usará o Biblio.el para pesquisar no banco de dados Crossref. Na lista de resultados, coloque o cursor na entrada de juros e pressione c para copiar o Bibtex para essa entrada ou i inseri -la no ponto. Pressione q para fechar o buffer com os resultados da pesquisa. Consulte a documentação do Biblio.el para obter detalhes.
Às vezes, o termo de pesquisa não produz os resultados desejados na primeira fonte de fallback selecionada e você pode escolher outra opção de fallback com o mesmo termo de pesquisa. Para isso, você pode usar helm-resume (ou ivy-resume ) para voltar ao menu de comando inicial (Ivy) com o último termo de pesquisa pré-entrelaçado, permitindo que você escolha com eficiência outra opção.
Abaixo, forneço código útil para mim ou para outros usuários. Observe que este código pode fazer suposições que não mantêm sua configuração. Leia o código cuidadosamente antes de executá -lo e faça alterações conforme necessário.
O código abaixo lê todos os arquivos de notas no seu bibtex-completion-notes-path e cria um novo arquivo de notas que contêm uma seção para cada publicação. Este código pressupõe que a conclusão do BibTex ainda esteja configurada para vários arquivos de anotações e que você deseja armazenar as notas no arquivo notes.org no seu bibtex-completion-notes-path . O código também adiciona um nível a todas as manchetes da ORG encontradas nos arquivos de notas individuais (porque os títulos de nível superior são usados para as publicações no novo arquivo Notes). Se um arquivo de nota não tiver uma entrada correspondente na bibliografia, ele será ignorado.
( 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 você queira criar um arquivo bibtex contendo apenas entradas que você citou em um artigo, então você pode usar o código a seguir para preencher o novo arquivo Bibtex com entradas:
( progn
( switch-to-buffer ( generate-new-buffer " my_new_bibliography.bib " ))
(--map ( insert (bibtex-completion-make-bibtex it)) (-distinct '( " Key1 " " Key2 " ))))Se o LATEX for usado para escrever o artigo, Grep e Sed poderão ser usados para extrair as chaves citadas:
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)Se você vê
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.