Trabajo con LaTeX y hago versiones con Git. Para la gestión de la bibliografía utilizo Mendeley.
El problema es que cada vez que Mendeley sincroniza sus .bib
exportaciones, están en un orden diferente, lo que hace que las versiones de la bibliografía sean mucho más difíciles.
Mi idea es ordenar las entradas de BibTex en el .bib
archivo, cada vez antes de confirmar.
¿Podrías ayudarme a hacer esto de manera inteligente (corta y dulce)? :)
PD: puedo ejecutar esta rutina manualmente. No necesito la integración de git. Solo quiero que el programa / script ordene el .bib
archivo.
text-processing
git
sort
latex
Grzegorz Wierzowiecki
fuente
fuente
Respuestas:
¿Qué tal
bibsort
?Es un script envoltorio
nawk
(ytr
,sort
ygrep
) e incluye dos advertencias que podría tener que prestar atención a (véase la fuente).( Editar También hay muchos módulos Perl relacionados con bibtex ...)
Edit2 Acabo de reconocer que le gustaría ordenar cualquier clave, mientras que
bibsort
aparentemente se clasifica solo por las etiquetas bibtex , pero tal vez su origen (no es demasiado largo) sigue siendo útil ...?fuente
Puede usar
bibtool
(-s
opción - ordenar según la clave de referencia) con el gancho post-commit de git.fuente
El administrador de referencias
jabref
parece tener esa opción en las preferencias (consulte la sección Ordenar el orden en la página Archivo). También tiene muchas características interesantes:fuente
Tuve exactamente el mismo problema, hasta mi elección de herramientas: usar git y Mendeley en Linux.
Mi 'solución' es inferior a la de un script de línea de comandos, pero no obstante me hizo feliz, así que aquí está:
(también estaba usando emacs, entonces) lo que hago es abrir una copia del archivo bibtex en emacs después de hacer cualquier trabajo en Mendeley, luego ejecuto
en emacs, guarde los resultados y confirme esos resultados ordenados en git.
Aparentemente, el modo bibtex es estándar en emacs, porque no tuve que instalar nada, y emacs reconoció automáticamente mi '.bib' como un archivo bibtex.
fuente
Yo también he tenido este problema, que aún no se soluciona en Mendeley. Basado en la gran sugerencia de que que, resolví mi problema usando emacs, pero en modo por lotes, permitiéndome envolver la solución en un script de shell.
En primer lugar, creé el siguiente script emacs lisp (llamémoslo bibsort.el):
Esto ordena cualquier archivo bibtex por nombre de clave y luego lo guarda. Puede llamar al script en modo por lotes desde la línea de comandos. Fui más allá al escribir un script de shell para llamarlo para cada archivo bibtex que Mendeley había reordenado (con o sin nuevas referencias), al verificar el código de retorno de "git diff filename " (esto ahorra tiempo al no ejecutar el código lisp innecesariamente en archivos que no han cambiado).
Aquí está el script de shell (imaginémoslo como bibsort.sh), que supone que tanto los archivos bibtex como el script lisp están en el directorio actual:
Simplemente ejecútelo (después de configurar los permisos de archivo si es necesario) antes de cada confirmación de git:
No tocará las líneas extra no bibtex agregadas por Mendeley, y debería funcionar en cualquier instalación de Unix / Linux con emacs. También funciona en la consola GIT en Windows (que estoy usando), pero tendría que instalar la compilación MINGW de emacs por separado.
Para mí, git commits ahora trabaja de manera elegante y económica. Espero que esto ayude ...
fuente
bibsort
función separada , tambiénemacs Bibliography.bib --batch -f bibtex-sort-buffer -f save-buffer
lo hará.Los emacs (y xemacs) tienen un complemento llamado AUCTeX , que (entre otros atajos de teclado y ayudantes relacionados con (La) TeX) tiene un modo especial para BibTeX, que incluye la ordenación de
.bib
archivos por tecla.fuente
Si desea ejecutar un comando cada vez que se realiza una confirmación, tal vez el
post-commit
gancho de git pueda ayudar (consulte, por ejemplo, la descripción en el libro de git .fuente