Pracuję z LaTeX i robię wersjonowanie z Git. Do zarządzania bibliografią używam Mendeley.
Problem polega na tym, że za każdym razem, gdy Mendeley synchronizuje .bib
eksport, są one w innej kolejności, co znacznie utrudnia wersjonowanie bibliografii.
Moim pomysłem jest sortowanie wpisów BibTex w .bib
pliku za każdym razem przed zatwierdzeniem.
Czy możesz mi pomóc, jak to zrobić w inteligentny (krótki i słodki) sposób? :)
PS Mogę uruchomić tę procedurę ręcznie. Nie potrzebuję integracji git. Chcę tylko, aby program / skrypt posortował .bib
plik.
text-processing
git
sort
latex
Grzegorz Wierzowiecki
źródło
źródło
Odpowiedzi:
Jak o
bibsort
?Jest to opakowanie skryptów powłoki
nawk
(itr
,sort
igrep
) i zawiera dwa ostrzeżenia, na które być może trzeba zwrócić uwagę (patrz źródło).( Edytuj Istnieje również wiele modułów Perla związanych z bibtex ...)
Edit2 Właśnie rozpoznałem, że chcesz sortować według dowolnego klucza, podczas gdy
bibsort
najwyraźniej sortujesz według znaczników bibtex - ale może jego źródło (nie jest zbyt długie) jest nadal pomocne ...?źródło
Możesz użyć
bibtool
(-s
opcja - sortuj według klucza referencyjnego) z hakiem po zatwierdzeniu git.źródło
Menedżer referencji
jabref
wydaje się mieć taką opcję w preferencjach (patrz sekcja Kolejność sortowania na stronie Plik). Ma również wiele interesujących funkcji:źródło
Miałem dokładnie ten sam problem, aż do wyboru narzędzi: używania git i Mendeley na Linuksie.
Moje „rozwiązanie” jest mniejsze od skryptu wiersza poleceń, ale mimo to mnie ucieszyło, więc oto:
(ja również używałem emacsa, więc) to, co robię, to otwieranie kopii pliku bibtex w emacsie po wykonaniu jakiejkolwiek pracy w Mendeley, a następnie uruchamiam
w emacs, zapisz wyniki i przekaż te posortowane wyniki do git.
Najwyraźniej tryb bibtex jest standardem w emacsie, ponieważ nie musiałem niczego instalować, a emacs automatycznie rozpoznał mój plik „.bib” jako plik bibtex.
źródło
Ja również miałem ten problem, który wciąż nie został rozwiązany w Mendeley. Opierając się na doskonałej sugestii que que, rozwiązałem swój problem za pomocą emacsa, ale w trybie wsadowym, co pozwala mi dobrze owinąć rozwiązanie w skrypcie powłoki.
Po pierwsze, stworzyłem następujący skrypt emacs lisp (nazwijmy go bibsort.el):
Sortuje każdy plik bibtex według nazwy klucza, a następnie zapisuje go. Możesz wywołać skrypt w trybie wsadowym z wiersza poleceń. Poszedłem dalej, pisząc skrypt powłoki, aby wywoływał go dla każdego pliku bibtex, który uporządkował Mendeley (z lub bez świeżych referencji), sprawdzając kod powrotu z „git diff filename ” (oszczędza to czas, nie uruchamiając niepotrzebnie kodu lisp na pliki, które nie uległy zmianie).
Oto skrypt powłoki (nazwijmy go wyobraźni bibsort.sh), który zakłada, że zarówno pliki bibtex, jak i skrypt lisp znajdują się w bieżącym katalogu:
Po prostu uruchom go (po ustawieniu uprawnień do pliku, jeśli to konieczne) przed każdym zatwierdzeniem git:
Nie dotknie dodatkowych linii innych niż bibtex dodanych przez Mendeleya i powinien działać na każdej instalacji Unix / Linux z emacsem. Działa również na konsoli GIT w systemie Windows (której używam), ale musisz zainstalować osobno kompilację emacsa MINGW.
Dla mnie git commits działa teraz elegancko i ekonomicznie. Mam nadzieję że to pomoże ...
źródło
bibsort
funkcji,emacs Bibliography.bib --batch -f bibtex-sort-buffer -f save-buffer
zrobi to również.emacs (i xemacs) mają dodatek o nazwie AUCTeX , który (między innymi skrótami i pomocnikami związanymi z LaX TeX-em) ma specjalny tryb dla BibTeX, w tym sortowanie
.bib
plików według klucza.źródło
Jeśli chcesz uruchamiać polecenie za każdym razem, gdy dokonywane jest zatwierdzenie, być może
post-commit
haczyk do git może ci pomóc (patrz na przykład opis w książce git) .źródło