`.Bib` फ़ाइल में BibTex प्रविष्टियों को कैसे (किस कुंजी द्वारा) सॉर्ट करें?


13

मैं LaTeX के साथ काम करता हूं और Git के साथ वर्जनिंग करता हूं। ग्रंथ सूची प्रबंधन के लिए मैं मेंडेली का उपयोग करता हूं।

समस्या यह है कि हर बार मेंडली ने इसे .bibनिर्यात करने के लिए सिंक्रनाइज़ किया है, वे अलग-अलग क्रम में हैं, क्या ग्रंथ सूची संस्करण को बहुत कठिन बना देता है।

मेरा विचार है कि .bibहर बार प्रतिबद्ध होने से पहले, फ़ाइल में बिबटेक प्रविष्टियाँ छाँटें ।

क्या आप मेरी मदद कर सकते हैं, इसे स्मार्ट (शॉर्ट एंड स्वीट) तरीके से कैसे करें? :)

PS मैं इस रूटीन को मैन्युअल रूप से चला सकता हूं। मुझे गिट एकीकरण की आवश्यकता नहीं है। मैं सिर्फ .bibफ़ाइल को सॉर्ट करने के लिए प्रोग्राम / स्क्रिप्ट चाहता हूं ।


4
इस तरह के सवाल से TeX - LaTeX StackExchange साइट पर बेहतर दर्शक हो सकते हैं ।
स्टीफन जिमेनेज़

निश्चित नहीं है कि यह कहाँ है (क्रमबद्ध करने के लिए प्रोग्रामिंग प्रश्न के लिए StackOverflow, या सामान्य रूप से समस्या के लिए La) TeX, लेकिन मुझे ऐसा कुछ नहीं दिखाई देता है जो इस प्रश्न को * nix से संबंधित करता हो।
me_and

1
@me_and वह तो यह शायद ठीक यहाँ है एक लिनक्स उपकरण या सरल रास्ता खोल स्क्रिप्ट BibTeX प्रविष्टियों सॉर्ट करने के लिए की तलाश में किया जा रहा है,
माइकल Mrozek

जवाबों:


8

कैसे के बारे में 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.

यह एक खोल स्क्रिप्ट है रैपिंग nawk(और tr, sortऔर grep) और करने के लिए दो चेतावनी वेतन ध्यान करने के लिए आप हो सकता है (स्रोत देखें) भी शामिल है।

( संपादित करें वहाँ भी की एक बहुत कुछ कर रहे हैं BibTeX से संबंधित पर्ल मॉड्यूल ...)

Edit2 मैंने अभी पहचाना है कि आप किसी भी कुंजी के लिए सॉर्ट करना चाहते हैं , जबकि bibsortजाहिरा तौर पर यह केवल बाइबेट टैग द्वारा सॉर्ट करता है - लेकिन शायद इसका स्रोत (यह बहुत लंबा नहीं है) अभी भी सहायक है ...?


7

आप git पोस्ट-कमिट हुक के साथ विकल्प bibtool( -sसंदर्भ कुंजी के अनुसार क्रमबद्ध करें ) का उपयोग कर सकते हैं ।


वर्ष के अनुसार सॉर्ट करने का कोई तरीका नहीं मिला :-(
fccoelho

4

संदर्भ प्रबंधक jabrefको वरीयताओं में ऐसा विकल्प लगता है (फ़ाइल पृष्ठ में क्रम क्रमबद्ध करें देखें)। इसकी कई दिलचस्प विशेषताएं हैं:

यहाँ छवि विवरण दर्ज करें


इस विकल्प को jabref
fccoelho

नहीं, यह नहीं है। इसे "फ़ाइल" से "निर्यात सॉर्टिंग" मेनू पर रखा गया था। और अधिक छँटाई मापदंड अब उपलब्ध हैं।
Zoltán Csáti

4

मेरे पास सटीक एक ही समस्या थी, उपकरण के मेरी पसंद के नीचे: लाइनक्स पर गिट और मेंडेली का उपयोग करना।

मेरा 'समाधान' कमांड-लाइन स्क्रिप्ट की तुलना में सब-बराबर है, लेकिन फिर भी इसने मुझे खुश कर दिया है, इसलिए यहां यह है:

(मैं भी पहले से ही emacs का उपयोग कर रहा था, इसलिए) क्या मैं Mendeley में किसी भी काम करने के बाद emacs में bibtex फ़ाइल की एक प्रति खोलें, तो मैं चला

M-x bibtex-sort-buffer

emacs में, परिणामों को सहेजें, और उन छांटे गए परिणामों को करने के लिए प्रतिबद्ध करें।

Emacs में जाहिरा तौर पर bibtex- मोड मानक है, क्योंकि मुझे कुछ भी स्थापित नहीं करना था, और emacs ने मेरे '.bib' को एक bibtex फ़ाइल के रूप में मान्यता दी है।


1

मुझे भी यह समस्या हो रही है, जो अभी भी मेंडेली में तय नहीं है। क्यू के महान सुझाव के आधार पर, मैंने अपने मुद्दे को एमएसीएस का उपयोग करके हल किया, लेकिन बैच मोड में, अच्छी तरह से मुझे शेल स्क्रिप्ट में समाधान लपेटने की अनुमति दी।

सबसे पहले, मैंने निम्नलिखित एमएसीएस लिस्प स्क्रिप्ट बनाई (चलो इसे bibsort.el कहते हैं):

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

यह कुंजी नाम से किसी भी bibtex फ़ाइल को सॉर्ट करता है और फिर उसे सहेजता है। आप कमांड लाइन से स्क्रिप्ट को बैच मोड में कॉल कर सकते हैं। मैं प्रत्येक बाइबेट फ़ाइल के लिए इसे कॉल करने के लिए एक शेल स्क्रिप्ट लिखने में आगे बढ़ गया, जिसे मेंडली ने (नए संदर्भों के साथ या बिना) पुन: व्यवस्थित किया था, "git diff filename " से रिटर्न कोड की जाँच करके (यह लिस्प कोड को अनावश्यक रूप से नहीं चलाकर समय बचाता है। फ़ाइलें जो नहीं बदली हैं)।

यहाँ शेल स्क्रिप्ट है (चलो कल्पना से इसे bibsort.sh कहते हैं), जो मानता है कि दोनों बाइबेट फ़ाइलें और लिस्प स्क्रिप्ट वर्तमान निर्देशिका में हैं:

#!/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

प्रत्येक कार्य करने से पहले इसे बस चलाएं (यदि आवश्यक हो तो फ़ाइल अनुमति देने के बाद):

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

यह मेंडली द्वारा जोड़ी गई अतिरिक्त गैर-बिबटेक्स लाइनों को नहीं छूएगा, और एमएसीएस के साथ किसी भी यूनिक्स / लिनक्स इंस्टॉलेशन पर काम करना चाहिए। यह विंडोज में जीआईटी कंसोल (जो मैं उपयोग कर रहा हूं) पर भी काम करता है, लेकिन आपको अलग से एमएसीडब्ल्यू का निर्माण करना होगा।

मेरे लिए, जीआईटी कमिटमेंट अब सुरुचिपूर्ण ढंग से और आर्थिक रूप से काम करता है। उम्मीद है की यह मदद करेगा ...


अलग bibsortफ़ंक्शन बनाने की आवश्यकता नहीं है , emacs Bibliography.bib --batch -f bibtex-sort-buffer -f save-bufferयह भी करेगा।
डीन सेरेनीवी

0

emacs (और xemacs) में AUCTeX नामक एक ऐड-ऑन है , जो (अन्य) (La) TeX संबंधित की-बोर्ड शॉर्टकट्स और हेल्पर्स) में BibTeX के लिए एक विशेष मोड है, जिसमें .bibकुंजी द्वारा फाइल को सॉर्ट करना शामिल है ।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.