Kuruluş modu dosyasına bibtex dosyası yükleme


16

org-modeNeredeyse her şeyi yapmak için kullanmaya çalışıyorum . Bilimsel yazma etkinliğimde, bir .orgdosyadaki tüm makaleyi çizmek ve daha sonra LaTeX'e aktarmak istiyorum. Birden fazla olanı olabilir gibi .bibbibtex dosyasını yüklemek istemiyorum init.el. Şimdilik bunu dosyamın başına ekledim .org:

#+BEGIN_SRC elisp
(setq reftex-default-bibliography '("./references.bib"))
#+END_SRC

Ama her seferinde manuel olarak yürütmek zorundayım. Otomatik hale getirmenin bir yolu var mı? En .orgiyisi her dosyanın başında emacs yazan bir yönerge olması olabilir : "tamam, şimdi bu .bib dosyayı yüklemelisiniz ". İpucu var mı? Teşekkürler.


Bir dosya yerel değişkeni hile yapmaz mı? Ör.M-x add-file-local-variable
olaf b

Cevap için teşekkürler. Ne yazık ki, aradığım şey bu değil. Bu şekilde, dosyayı her yüklediğimde komutu yazmam gerekiyor. Bir şey lile #+STARTUP: do this.
petrux

Hangi komut? Dosya yerel değişkenini yalnızca bir kez ayarlamanız gerekir.
olaf b

Haklıydın! Dosyayı kullanarak satırı add-file-local-variable-prop-lineoluşturabilirim # -*- reftex-default-bibliography: ("./references.bib"); -*-.
petrux

Yanıtlar:


19

org-modeHangi .bibdosyaya başvuracağınızı söylemek için aşağıdakine benzer bir satır eklemek yeterlidir :

#+BIBLIOGRAPHY: refs plain

refsBibTeX dosyası (adıdır .bibuzantısı ihmal) ve plainbir bibliographystyle.

Daha sonra referans eklemek org-reftex-citationiçin ( C-c C-x [varsayılan olarak bağlı ) arayabilirsiniz .

Belgelerden:

(org-reftex-citation)

reftex-citationArabelleğe bir alıntı eklemek için kullanın . Bu gibi bir çizgi arar

#+BIBLIOGRAPHY: foo plain option:-d

ve foo.bibbu belgeyle ilgili bibliyografya dosyasıdır. Daha sonra RefTeX'in bu arabellekte çalışması için gerekli ortamı kurar ve ara belleğe reftex-citationbir alıntı eklemeyi çağırır .

Bu tür alıntıların hem ox-bibtexLaTeX'e hem de HTML'ye dışa aktarılması Taru Karttunen tarafından katkıda bulunan paket tarafından gerçekleştirilir.

Son cümlenin önerdiği gibi,

(require 'org)
(require 'ox-bibtex)

referansların LaTeX'e düzgün bir şekilde aktarıldığından emin olmak için init dosyanıza aktarın. Bunu kendim için ayarladığımda, org-latex-pdf-processPDF dışa aktarmalarının çalışması için özelleştirmem gerektiğini de buldum :

(setq org-latex-pdf-process '("texi2dvi -p -b -V %f"))

ek

İçin varsayılan bağlayıcıyı kullanmak istemiyorsanız org-reftex-citation, bunun için özel bir anahtar bağlayıcı ayarlayabilirsiniz. Örneğin, aşağıdakiler org-reftex-citationiçin varsayılan bağlayıcıya bağlanır reftex-citation:

(define-key org-mode-map (kbd "C-c [") 'org-reftex-citation)

Cevap için teşekkürler. Ben sadece # -*- reftex-default-bibliography: ("./references.bib"); -*-yeni bir referans eklemek için her zamanki RefTeX anahtar bağlama kullanabilirsiniz avantajı ile eşdeğer kullanımını görüyorum çünkü doğru olarak işaretlemiyorum . Bir şey mi kaçırıyorum? Gelecekteki herhangi bir okuyucu için daha eksiksiz hale getirmek için cevabı düzenleyelim mi? Teşekkürler.
petrux

@petrux Normalde kullanılan org-reftex-citationaynı tuş dizisine bağlanabilirsiniz reftex-citation... Cevabımın güncellemelerine bakın.
itsjeyd

Birden fazla bibliyografya dosyası kullanmanın bir yolu yok org-reftex-citationmu? Bir saniye #+BIBLIOGRAPHYeklersem, birincisi yok sayılır.
Brian Z

@BrianZ Açıkladığınız kullanım durumunun kutunun dışında desteklendiğini düşünmüyorum. Ama belki buradaki birinin elle yuvarlanmış bir çözümü var mı? Ben olsaydım yeni bir soru sorardım (referans için bu konuya işaret ederek); kesinlikle başkalarının da ilgilenebileceği bir şey gibi geliyor.
itsjeyd

1
Değerlendirmek (setq reftex-default-bibliography '("./a.bib" "./b.bib"))hile gibi görünüyor. Öyle ki # -*- reftex-default-bibliography: ("./refs1.bib" "./refs2.bib"); -*-, bu değişkenin yerel olarak tanımlanmaması gerektiği konusunda bir uyarı verir.
Brian Z

4

Öküz-bibtex'in en son kuruluş paketine dahil olmadığı anlaşılıyor (8.2.10-34-gc41bbc-elpa). Bu yüzden çevrimiçi olarak aradım ve indirildikten sonra / org / lisp / dizinine koydum. Ancak bazı bibtex içeren bir ihracat yapmaya çalışırken aşağıdaki hatayla karşılaştım.

Sembolün işlev tanımı geçersiz: org-element-insert-before

Sonra 'org-element.el' dosyasını kontrol ediyorum, elbette önceden tanımlanmış böyle bir işlev yok. Ama neden yok? Org-element'in çevrimiçi API belgesi bir kerede bundan bahsetti .

Bu yüzden şu anda beta sürümüne veya daha eski bir sürüme geçmek istemiyorsanız RefTeX'i belgenin açıklandığı gibi kullanmak imkansızdır. Görmek

Burada beta sürümünü kullanma yolumu paylaşıyorum

  1. git clone git://orgmode.org/org-mode.git

  2. Klasörü şuraya taşıyın ~/.emacs.d/ve şu şekilde adlandırın:org-beta

  3. Değiştirin load-path, beta sürümünün diğer sürümü gölgelemesine izin verin ve kullanıcı katkı dizinini ekleyin

    (add-to-list 'load-path (expand-file-name "org-beta\\lisp" user-emacs-directory))

    (add-to-list 'load-path (expand-file-name "org-beta\\org-contrib\\lisp" user-emacs-directory))

(isteğe bağlı) kaynak dosyayı derlemek ve doc oluşturmak için make komutunu kullanabilirsiniz

  1. Şimdi yapabilirsiniz (require 'ox-bibtex). Ben böyle yazmayı tercih ederim:(eval-after-load 'org (require 'ox-bibtex))

  2. Doğru yerde referans listesi oluşturmak #+BIBLIOGRAPHY: your_bib_lib_name plain option:-diçin org dosyasının sonuna benzer bir şey koyun . Daha fazla seçenek için lütfen yardım belgesine bakın.ox-bibtex.el

  3. HTML dışa aktarma bölümünün doğru çalışması için en son bibtex2html'ye (yani 1.98) ihtiyacınız olabilir. Kaynaktan oluşturmak için, github'dan indirin ve 'README' yardım belgesindeki talimatları izleyin.

Benim gibi pencereler kullanıyorsanız, tüm devel paketleriyle Cygwin64 kullanın. Cygwin64'ü kullanarak bibtex2html dizinine cd yazın ve yazın ./configure, bekleyin, ardından yazın make, bekleyin. Şimdi dizin içindeki, alacağınız bib2bib.exe, bibtex2html.exeve aux2bib. Bunları ortamınızdaki bazı dizinlere kopyalayın PATH. bibtex2htmlCmd yazarak test edin .

Yukarıdaki işi yapmak zorundayım çünkü texlive2014 kullanıyorum. Bir miktek kullanıcısıysanız, bibtex2html 1.95 iyi çalışır, bu da bir windows yükleyici ile kolayca kurulabilir.

  1. PDF dışa aktarma parçasının düzgün çalışmasını sağlamak için kuruluş modunuzu başlatmak üzere aşağıdaki kodu kullanın:

    (setq org-latex-pdf-process
          '("xelatex -shell-escape -interaction nonstopmode -output-directory %o %f"
            "bibtex %b"
            "xelatex -shell-escape -interaction nonstopmode -output-directory %o %f"
            "xelatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
    

Bu işi yapan 'bibtex' kısmıdır. Darbeli lateks paketi için shell escape komutunu kullanıyorum.


Bana öyle geliyor ki cevabınız sadece org-mode ve ox-bibtex ile ilgili olduğu anlamıyla ilgilidir. Sorununuz farklı olduğu için, başkalarının hedefli cevaplar verebileceği ayrı bir soru açarsanız en iyisi budur.
paprika

1
Sadece cevabını jeyd'in tamamlayıcısı yapmak istiyorum. itsjeyd org-reftex-citation belgesinin takip edilmesini önerir. Ben yaptım ve yukarıdaki sorunu aldım. Başkalarının da aynı duruma girmesi durumunda, araştırmamı burada paylaştım.
empenguin

IIRC'nin org modunun ELPA paketi contrib/lisp, ox-bibtex içeren dosyaları içermez . Bu nedenle, kuruluş yolunuzu da dahil olmak üzere org modunu yüklemeniz contrib/lispveya ox-bibtex.elyükleme yolunuza kopyalamanız gerekir.
kırmızı biber

1
Evet. Kuruluşun beta sürümünü klonladım. Şimdi iyi çalışıyor.
empenguin

6
@paprika Dizini org-modealmak için kaynaktan yüklemeye gerek yoktur contrib. As açıkladı Burada Org kendi ELPA arşivi var. Tek yapmanız gereken bu arşivi eklemek package-archives; daha sonra org-plus-contribpaket yöneticisini kullanarak yükleyebilir (ve güncelleyebilirsiniz) . Tabii ki, bu önerdiğiniz yaklaşımın işe yaramadığı anlamına gelmez; Sadece (bu tartışmayla karşılaşan herkes için) org-modeayrı olarak güncelleme yapma yükünü içermeyen başka bir yaklaşım olduğunu belirtmek istedim git.
itsjeyd
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.