.Bib dosyasındaki BibTex girişlerini nasıl sıralarsınız?


13

LaTeX ile çalışıyorum ve Git ile versiyonlama yapıyorum. Kaynakça yönetimi için Mendeley kullanıyorum.

Sorun şu ki, Mendeley .bibihracatını her senkronize ettiğinde , farklı sıradalar, bibliyografya versiyonunu çok daha zorlaştırıyor.

Benim fikrim BibTex girişleri .bibher taahhütte önce dosyada sıralamaktır .

Bana bunu akıllıca (kısa ve tatlı) bir şekilde nasıl yapabilirim? :)

PS Bu rutini manuel olarak çalıştırabilirim. Git entegrasyonuna ihtiyacım yok. Sadece programın / komut .bibdosyasının dosyayı sıralamasını istiyorum .


4
Bu tür bir soru TeX - LaTeX StackExchange sitesinde daha iyi bir kitleye sahip olabilir .
Stéphane Gimenez

Bu nereye ait olduğundan emin değilim (sıralama yapmak için programlama sorusu için StackOverflow veya genel olarak sorun için (La) TeX), ancak bu soruyu * nix ile ilişkilendiren bir şey görmüyorum.
me_and

1
@me_and BibTeX girişlerini sıralamak için bir Linux aracı veya basit bir kabuk komut dosyası yolu arıyor gibi görünüyor, bu yüzden muhtemelen burada iyi
Michael Mrozek

Yanıtlar:


8

Nasıl bibsort?

NAME
     bibsort - sort a BibTeX bibliography file

SYNOPSIS
     bibsort [optional sort(1) switches] < infile >outfile

DESCRIPTION
     bibsort filters a BibTeX bibliography, or bibliography frag-
     ment,  on  its standard input, printing on standard output a
     sorted bibliography.

Bu bir kabuk betiği kaydırma nawk(ve tr, sortve grep) ve dikkat etmeniz gerekebilecek iki uyarı içerir (kaynağa bakın).

( Düzenleme ayrıca bir sürü konum bibtex ilgili Perl modüllerinin ...)

Edit2 Sadece herhangi bir anahtar için sıralamak istediğinizi fark ettim , bibsortgörünüşe göre sadece bibtex etiketlerine göre sıralıyor - ama belki de kaynağı (çok uzun değil) hala yardımcı oluyor ...?



4

Referans yöneticisinin jabreftercihlerde böyle bir seçeneği var gibi görünüyor (bkz. Dosya sayfasındaki Sıralama düzeni bölümü). Ayrıca birçok ilginç özelliğe sahiptir:

resim açıklamasını buraya girin


Bu seçenek Jabref
FCCOELH

Hayır, olmadı. "Dosya" dan "İhracat sıralaması" menüsüne konuldu. Ve şimdi daha fazla sıralama kriteri mevcut.
Zoltán Csáti

4

Tam olarak aynı problemi yaşadım, araç seçimime kadar: linux üzerinde git ve Mendeley kullanmak.

Benim 'çözümüm' bir komut satırı betiği ile karşılaştırıldığında par. Ama yine de beni mutlu etti, işte burada:

(ben de zaten emacs kullanıyordum, yani) Mendeley'de herhangi bir iş yaptıktan sonra yaptığım şey emacs'ta bibtex dosyasının bir kopyasını açmak, sonra çalıştırıyorum

M-x bibtex-sort-buffer

emacs içinde, sonuçları kaydedin ve bu sıralı sonuçları git için taahhüt.

Görünüşe göre bibtex modu emac'larda standarttır, çünkü hiçbir şey kurmak zorunda değildim ve emacs otomatik olarak '.bib'imi bir bibtex dosyası olarak tanıdı.


1

Ben de Mendeley'de hala düzeltilmemiş olan bu sorunu yaşıyorum. Que que'nin büyük önerisine dayanarak, sorunumu emacs kullanarak çözdüm, ancak toplu modda, güzel bir şekilde bir kabuk betiğinde çözümü sarmama izin verdim.

Öncelikle, aşağıdaki emacs lisp komut dosyasını oluşturdum (buna bibsort.el diyelim):

( defun bibsort()
    ( bibtex-sort-buffer )
    ( save-buffer )
)

Bu, herhangi bir bibtex dosyasını anahtar adına göre sıralar ve kaydeder. Komut satırından komut dosyasını toplu modda çağırabilirsiniz. Ben dönüş kodu kontrol ederek, Mendeley (veya taze referanslar olmaksızın) yeniden sıralanmış olan her bibtex dosyası için aramak bir kabuk yazılı olarak ileri gitti "diff dosya adı " (bu gereksiz üzerine lisp kodu çalışmıyor zamandan tasarruf değişmeyen dosyalar).

İşte hem bibtex dosyalarının hem de lisp komut dosyasının geçerli dizinde olduğunu varsayan kabuk betiği (buna yaratıcı bir şekilde bibsort.sh diyelim):

#!/bin/bash

bibliobasher() {

    IFS=$( echo -en "\n" )
    BIBFILES=*.bib

    for bibfile in $BIBFILES
    do
        git diff --quiet "$bibfile" 2> /dev/null
        if [ $? = 1 ]; then
            emacs --batch -l bibsort.el "$bibfile" -f bibsort
        fi
    done
}

bibliobasher

Her git işleminden önce çalıştırın (gerekirse dosya izinlerini ayarladıktan sonra):

chmod a+x bibsort.sh
./bibsort.sh
git commit ...

Mendeley tarafından eklenen ekstra bibtex olmayan satırlara dokunmaz ve emac'larla herhangi bir Unix / Linux kurulumunda çalışmalıdır. Ayrıca Windows'taki GIT konsolunda da çalışır (ki ben kullanıyorum), ancak MINGW emacs derlemesini ayrı olarak yüklemeniz gerekir.

Benim için git artık zarif ve ekonomik bir şekilde çalışıyor. Bu yardımcı olur umarım ...


Ayrı bir bibsortişlev oluşturmaya gerek emacs Bibliography.bib --batch -f bibtex-sort-buffer -f save-bufferyok, bunu da yapacak.
Dean Serenevy

0

emacs (ve xemacs) , (diğer (La) TeX ile ilgili klavye kısayolları ve yardımcıları arasında) BibTeX için dosyaları anahtarla sıralama da dahil olmak üzere özel bir moda sahip olan AUCTeX adlı bir eklentiye sahiptir .bib.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.