Eu trabalho com o LaTeX e faço versões com o Git. Para gerenciamento de bibliografia, eu uso o Mendeley.
O problema é que, toda vez que o Mendeley sincroniza suas .bib
exportações, elas estão em ordem diferente, o que dificulta muito a versão da bibliografia.
Minha idéia é classificar as entradas BibTex no .bib
arquivo, antes de confirmar.
Você poderia me ajudar, como fazer isso de maneira inteligente (curta e agradável)? :)
PS Eu posso executar esta rotina manualmente. Eu não preciso de integração com o git. Eu só quero que o programa / script classifique o .bib
arquivo.
text-processing
git
sort
latex
Grzegorz Wierzowiecki
fonte
fonte
Respostas:
Que tal
bibsort
?É um pacote de scripts de shell
nawk
(etr
,sort
egrep
) e inclui dois avisos aos quais você deve prestar atenção (consulte a fonte).( Edit Também há muitos módulos Perl relacionados ao bibtex ...)
Edit2 Acabei de reconhecer que você gostaria de classificar para qualquer chave, enquanto
bibsort
aparentemente classifica apenas pelas tags bibtex - mas talvez sua fonte (não seja muito longa) ainda seja útil ...?fonte
Você pode usar
bibtool
(-s
opção - classificar de acordo com a chave de referência) com o gancho pós-confirmação do git.fonte
O gerenciador de referência
jabref
parece ter essa opção nas preferências (consulte a seção Ordem de classificação na página Arquivo). Também possui muitos recursos interessantes:fonte
Eu tive exatamente o mesmo problema, até a minha escolha de ferramentas: usando git e Mendeley no linux.
Minha 'solução' é insignificante comparada a um script de linha de comando, mas mesmo assim me deixou feliz, então aqui está:
(eu também já estava usando o emacs, então) o que faço é abrir uma cópia do arquivo bibtex no emacs depois de fazer qualquer trabalho em Mendeley, depois corro
no emacs, salve os resultados e envie esses resultados classificados para o git.
Aparentemente, o modo bibtex é padrão no emacs, porque eu não precisava instalar nada, e o emacs reconheceu automaticamente meu '.bib' como um arquivo bibtex.
fonte
Eu também estou tendo esse problema, que ainda não foi corrigido em Mendeley. Com base na grande sugestão de que, resolvi meu problema usando o emacs, mas no modo em lote, permitindo que eu envolvesse a solução em um script de shell.
Primeiro, criei o seguinte script emacs lisp (vamos chamá-lo de bibsort.el):
Isso classifica qualquer arquivo bibtex pelo nome da chave e o salva. Você pode chamar o script no modo em lote na linha de comando. Eu fui além ao escrever um shell script para chamá-lo para cada arquivo bibtex que Mendeley havia reordenado (com ou sem novas referências), verificando o código de retorno de "git diff filename " (isso economiza tempo ao não executar o código lisp desnecessariamente em arquivos que não foram alterados).
Aqui está o script shell (vamos chamá-lo de forma criativa de bibsort.sh), que pressupõe que os arquivos bibtex e o script lisp estão no diretório atual:
Basta executá-lo (depois de definir as permissões do arquivo, se necessário) antes de cada confirmação do git:
Ele não toca nas linhas extras não-bibtex adicionadas por Mendeley e deve funcionar em qualquer instalação Unix / Linux com o emacs. Também funciona no console GIT no Windows (que estou usando), mas você teria que instalar a compilação MINGW do emacs separadamente.
Para mim, o git commit agora funciona de maneira elegante e econômica. Espero que isto ajude ...
fonte
bibsort
função separada ,emacs Bibliography.bib --batch -f bibtex-sort-buffer -f save-buffer
também o fará.O emacs (e xemacs) possui um complemento chamado AUCTeX , que (entre outros atalhos e auxiliares de teclado relacionados ao (La) TeX e auxiliares) possui um modo especial para o BibTeX, incluindo a classificação de
.bib
arquivos pela tecla.fonte
Se você quiser executar um comando sempre que uma confirmação for concluída, talvez o
post-commit
gancho git possa ajudar (veja, por exemplo, a descrição no livro git .fonte