2012-02-03 15 views
9

द्वारा निगल लिया जा रहा है संगठन-मोड और उसके LaTeX निर्यात BibTeX या Biblatex अक्सर संदर्भ को संभालने के लिए प्रयोग किया जाता है का उपयोग करते समय। उस स्थिति में LaTeX कमांड \printbibliography अक्सर संगठन फ़ाइल में शामिल किया जाता है। \printbibliography संगठन फ़ाइल में रखा गया है जहां लाटेक्स को संदर्भ सूची लिखनी है। क्या संदर्भ \printbibliography संदर्भ सूची के साथ एक लाटेक्स हेडर डालने के लिए है। अधिकांश मामलों में \printbibliography संगठन फ़ाइल के अंत में रखा जाता है क्योंकि अधिकांश दस्तावेज़ों में संदर्भ सूची को अंतिम रूप दिया जाना चाहिए। इसका मतलब है कि \printbibliography संगठन फ़ाइल में अंतिम शीर्षक के तहत शामिल किया जाएगा, उदा।बचें printbibliography संगठन मोड शीर्षकों

* Heading 

    \printbibliography 

इसका यह भी मतलब है कि जब कि शीर्षक मोड़ा जाता है \printbibliography निगल लिया किया जाएगा:

* Heading... 

लेकिन क्योंकि यह उत्पादन में अपनी ही शीर्षक में शामिल हैं इस \printbibliography के अर्थ के खिलाफ जाता है। साथ ही, यह भ्रमित हो जाएगा जब \printbibliography निगल लिया गया है और उसके बाद एक नया शीर्षक रखा गया है क्योंकि तब संदर्भ सूची दस्तावेज़ में अंतिम नहीं दिखाई देगी।

मैं इसे कैसे कर सकते हैं ताकि \printbibliography संगठन-मोड में वर्गों द्वारा निगल लिया है ना? एक बोनस सवाल: मैं इसे कैसे इतना है कि संगठन-मोड के बाद \printbibliography जब तक सी Ret दबाया जाता है जब कर्सर बाद यह है शीर्षकों पैदा नहीं करता बना सकते हैं?

इस समस्या के समाधान की तलाश में मुझे http://comments.gmane.org/gmane.emacs.orgmode/49545 मिला।

#+macro: printbiblio  (add extra spaces here, but cannot add comment) 

* Test 2 
    This is a test 

* {{{printbiblio}}} 
    Test text 
    \printbibliography 
* 
    asdf 
इस आप दस्तावेज़ के तल पर एक खाली शीर्षक के साथ खत्म की तरह

:

उत्तर

1

निम्नलिखित हल्के से परीक्षण किया, लेकिन मेरे लिए काम करता छिपाने के लिए और प्रदर्शन बातें करने के लिए टैब और शिफ्ट-टैब का उपयोग करके किया गया है। वे केवल छुपा रहे हैं और कमांड दिखा रहे हैं जो मैं उपयोग करता हूं, इसलिए यदि आप अन्य कमांड का उपयोग करते हैं तो उन्हें सलाह दी जानी चाहिए या किसी अन्य तरीके से तय किया जाना चाहिए।

आप निश्चित रूप से कुछ भी आप चाहते हैं org-footer-regexp बदल सकते हैं। मैं किसी भी सलाह का उपयोग करने की उम्मीद नहीं कर रहा था, लेकिन org-end-of-subtree सलाह देने के बिना आखिरी शीर्षक टैब के साथ चक्र कभी नहीं था क्योंकि ऐसा लगता है कि यह छिपी नहीं है, इसलिए यह इसे छुपाता है और फिर org-cycle-hook इसे छुपाता है। यह org-pre-cycle-hook चलाने से पहले org-end-of-subtree पर कॉल करता है ताकि यह कोई विकल्प न हो।

(defvar org-footer-regexp "^\\\\printbibliography\\[.*\\]$" 
    "Regexp to match the whole line of the first line of the footer which should always be shown.") 

(defun show-org-footer (&rest ignore) 
    (save-excursion 
    (goto-char (point-max)) 
    (when (re-search-backward org-footer-regexp nil t) 
     (outline-flag-region (1- (point)) (point-max) nil)))) 

(add-hook 'org-cycle-hook 'show-org-footer) 
(add-hook 'org-occur-hook 'show-org-footer) 

(defadvice org-end-of-subtree (after always-show-org-footer 
            () 
            activate) 
    (when (>= (point) (1- (point-max))) 
    (re-search-backward org-footer-regexp nil t) 
    (setq ad-return-value (point)))) 
+0

से संबंधित है लगता है कि टैब और शिफ्ट-टैब के लिए भी मेरे लिए काम करना प्रतीत होता है। जैसा कि आप इंगित करते हैं, यह दुर्लभ पेड़ों के साथ काम नहीं करता है। क्या यह स्पैस पेड़ों के साथ काम करने के लिए बनाया जा सकता है? –

+0

हां, ऐसा लगता है कि इसे 'ऑर्ग-हो-हुक' में जोड़ना चाल है। –

+0

जैसा कि आप [बाइबेलेट मैनुअल] में पढ़ सकते हैं (http://mirror.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf) '\ printbibliography' फ़ॉर्म \ \ printbibliography [कुंजी 'में तर्क लेता है = मान, ...] 'और, इस प्रकार, आपके उत्तर को और भी बेहतर बनाने के लिए आप 'org-footer-regexp' को संपादित करना चाहते हैं ताकि' \ printbibliography' को' [', किसी भी वर्ण, '' '। –

1

एक समाधान निम्नलिखित होगा। ताकि आप

\section{Test 2} 
\label{sec-1} 

This is a test 
\section{} 

Test text 
\printbibliography 
\section{} 

asdf 

साथ खत्म हो यह भी सुनिश्चित आप गलती से अपनी पुस्तक सूची के बाद सुर्खियों में नहीं जोड़ सकते हैं, क्योंकि यह यह खुद (खाली) शीर्षक है मैक्रो पाठ का एक खाली ब्लॉक करने के लिए फैलता है। यह सामग्री की तालिका में शामिल (वास्तव में प्रतीत होता है) हो सकता है, जो दुर्भाग्यपूर्ण है, लेकिन मुझे संदेह होगा कि समाधान फ़ाइल से खाली शीर्षक को हटाने के लिए पोस्ट-निर्यात को सबसे खराब चला जाएगा (या मैन्युअल रूप से कनवर्ट करने से पहले ऐसा करें पीडीएफ)।

+1

इसके साथ, जैसा कि आप नोट करते हैं, '* {{{printbiblio}}}' 'अनुभाग \} {}' और '*' '\ section {}' बन जाता है। लाटेक्स एक अनुभाग के रूप में एक खाली तर्क के साथ '\ section' का इलाज करता है, और इस प्रकार आपका परीक्षण केस '\ printbibliography' से पहले किसी नाम के बिना एक अनुभाग का उत्पादन करता है और इसके बाद बिना किसी नाम के एक अनुभाग। मुझे क्या चाहिए कि '\ printbibliography' एक संगठन शीर्षक से निगल नहीं है और वह संगठन निर्यात नहीं करता है ताकि यह इसे शीर्षक में रखे क्योंकि लाटेक्स में यह अपना शीर्षक उत्पन्न करेगा। –

+0

इसने मुझे इनलाइन टिप्पणियों के बारे में @ एनएन के प्रश्न के लिए एक विचार दिया: http://stackoverflow.com/questions/9212737/how-to-make-inline-comments-in-org-mode/9307681#9307681 मुझे आशा है कि आप बुरा मत मानो - मैंने इस जवाब को वोट दिया है। –

+0

कोई समस्या नहीं, मैंने उस अन्य प्रश्न के लिए इसका उपयोग करने का विचार नहीं किया था। –

3

इस समस्या का संभावित हल \printbibliography एक LaTeX शीर्षक वापस नहीं इतना है कि यह उचित रूप से एक संगठन-मोड शीर्षक के अंतर्गत रखा जा सकता है बनाने के लिए है।

biblatex के साथ \printbibliographyheading=none विकल्प के साथ इसे उचित शीर्षक के तहत रखकर किया जा सकता है।

* Heading 

* References 

    \printbibliography[heading=none] 

इस तरह के संदर्भ के लिए अपने स्वयं और \printbibliography की एक शीर्षक में रखा जा सकता एक शीर्षक द्वारा निगल लिया जा रहा है एक समस्या है क्योंकि यह अपने आप शीर्षक द्वारा निगल लिया जा रहा है नहीं: यहाँ एक उदाहरण है।

+0

ध्यान दें कि यदि संदर्भ शीर्षक पर अनुभाग संख्याकरण एक संख्या भी होगी .. मैंने एक [उत्तर] लिखा है (http://stackoverflow.com/a/27165105/1346426) जो इस मामले को भी संभालता है। –

0

एक अन्य समाधान ग्रंथ सूची एक शीर्षक के अंतर्गत नामित "संदर्भ" इतनी तरह डाल करने के लिए होगा:

* Heading 
Some text 
* References 
\printbibliography 

और अपने Emacs को यह जोड़ने init फाइल

(defun org-export-latex-remove-references-heading (contents backend info) 
    (if (not (eq backend 'latex)) 
     contents 
     (replace-regexp-in-string "\\\\section\\*?{References}\\s-*\\\\label{.*?}" "" contents) 
    )) 

(add-hook 'org-export-filter-final-output-functions 'org-export-latex-remove-references-heading) 
से जिसके परिणामस्वरूप लेटेक्स फ़ाइल से \section{References} को दूर

ध्यान दें कि यह मानता है कि आपके पास केवल एक शीर्षक है जिसका नाम "संदर्भ" है, क्योंकि यह सभी घटनाओं को प्रतिस्थापित करता है। यह भी मान लिया गया वर्गों इस प्रारूप में हैं:

\section{References} 
\label{<any_string>} 
\printbibliography 

अन्य प्रारूपों के लिए आप org-export-latex-remove-references-heading समारोह में नियमित अभिव्यक्ति बदलने की जरूरत है।

0
* References 
    :PROPERTIES: 
    :UNNUMBERED: t 
    :END: 

    \printbibliography[heading=none] 

इसे हल करने का एक आसान तरीका है। शीर्षक के लिए बस एक "अनगिनत" गुण जोड़ें और इसे बिना किसी संख्या के निर्यात किया जाएगा।

संबंधित मुद्दे