組織モードファイルでのbibtexファイルの読み込み


15

私はorg-modeほとんどすべてを行うために使用しようとしています。私の科学的な執筆活動では、.orgファイル内の論文全体をスケッチしてからLaTeXにエクスポートしたいと思います。複数の.bibファイルをinit.el持つことができるため、bibtexファイルをロードしたくありません。今のところ、これを.orgファイルの先頭に追加しました。

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

ただし、毎回手動で実行する必要があります。自動化する方法はありますか?最適な方法は、各.orgファイルの先頭にemacs を示すディレクティブを付けることです。「OK、この .bibファイルをロードする必要があります」。ヒントはありますか?ありがとう。


ファイルのローカル変数はトリックをしませんか?例M-x add-file-local-variable
オラフb 14

返信いただきありがとうございます。残念ながら、それは私が探しているものではありません。この方法では、ファイルをロードするたびにコマンドを入力する必要があります。なにか#+STARTUP: do this
ペトルックス

どのコマンドですか?ファイルのローカル変数を設定する必要があるのは一度だけです。
オラフb

君は正しかった!を使用するadd-file-local-variable-prop-line# -*- reftex-default-bibliography: ("./references.bib"); -*-、ファイルの先頭に行を生成できます。
ペトルックス14

回答:


19

次のような行を追加するだけで、org-modeどの.bibファイルを参照するかがわかります。

#+BIBLIOGRAPHY: refs plain

refsは、BibTeXファイルの名前(.bib拡張子は省略)でありplainbibliographystyleです。

次にorg-reftex-citationC-c C-x [デフォルトでバインドされた)を呼び出して参照を挿入できます。

ドキュメントから:

(org-reftex-citation)

reftex-citation引用をバッファに挿入するために使用します。これは次のような行を探します

#+BIBLIOGRAPHY: foo plain option:-d

そしてfoo.bib、このドキュメントに関連する書誌ファイルであるそれから派生します。次に、このバッファーでRefTeXが動作するために必要な環境をインストールreftex-citationし、バッファーに引用を挿入するための呼び出しを行います。

LaTeXとHTMLの両方へのこのような引用のエクスポートはox-bibtex、Taru Karttunenが提供したパッケージによって処理されます。

最後の文が示唆するように、追加する必要があります

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

参照をLaTeXに正しくエクスポートするために、initファイルに追加してください。これを自分で設定したときorg-latex-pdf-process、PDFエクスポートを機能させるためにカスタマイズする必要があることもわかりました。

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

補遺

のデフォルトバインディングを使用したくない場合はorg-reftex-citation、カスタムバインディングを設定できます。たとえば、次はorg-reftex-citation、のデフォルトのバインディングにバインドしreftex-citationます。

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

答えてくれてありがとう。# -*- reftex-default-bibliography: ("./references.bib"); -*-通常のRefTeXキーバインディングを使用して新しい参照を追加できるという利点がありますが、同等の使用法が見られるからといって、正しいものとしてマークしません。何か不足していますか?将来の読者のために回答をより完全にするために、回答を編集しますか?ありがとう。
ペトルックス

@petrux 通常使用org-reftex-citationするのと同じキーシーケンスにバインドできreftex-citationます...私の答えの更新を参照してください。
itsjeyd 14年

複数の参考文献ファイルを使用する方法はありませんorg-reftex-citationか?2番目を追加すると#+BIBLIOGRAPHY、最初の1つは無視されるようです。
ブライアンZ

@BrianZあなたが説明するユースケースは、すぐにサポートされるとは思いません。しかし、おそらくここの誰かが手作業で解決策を持っているでしょうか?もし私があなただったら、新しい質問をします(参照のためにこのスレッドを指しています); 他の人も同様に興味を持っているようなもののように聞こえます。
itsjeyd

1
評価(setq reftex-default-bibliography '("./a.bib" "./b.bib"))がトリックを行うようです。また# -*- reftex-default-bibliography: ("./refs1.bib" "./refs2.bib"); -*-、この変数をローカルで定義してはならないという警告をスローしますが。
ブライアンZ

4

ox-bibtexは最新のorgパッケージ(8.2.10-34-gc41bbc-elpa)には含まれていないようです。そこで、私はそれをオンラインで検索し、ダウンロードしたらディレクトリ/ org / lisp /に入れました。しかし、bibtexを含むエクスポートを実行しようとすると、次のエラーが発生しました。

シンボルの関数定義は無効です:org-element-insert-before

次に、「org-element.el」ファイルをチェックします。もちろん、このような関数は事前に定義されていません。しかし、なぜないのですか?org-elementのオンラインAPIドキュメントでは、一度それについて言及しまし

したがって、ベータ版または古いバージョンに切り替える意思がない限り、ドキュメントの説明としてRefTeXを使用することは現在不可能だと思います。見る

ここで、ベータ版の使用方法を共有します

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

  2. フォルダーを移動し~/.emacs.d/、名前を付けますorg-beta

  3. 変更しload-path、ベータ版で他のバージョンをシャドウし、ユーザー投稿ディレクトリを含めます

    (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))

(オプション)makeコマンドを使用してソースファイルをコンパイルし、ドキュメントをビルドできます。

  1. これでできます(require 'ox-bibtex)。私はこのように書くことを好む:(eval-after-load 'org (require 'ox-bibtex))

  2. 適切な場所で参照リストを生成するに#+BIBLIOGRAPHY: your_bib_lib_name plain option:-dは、orgファイルの最後に次のように入力します。その他のオプションは、次のヘルプドキュメントを参照してください。ox-bibtex.el

  3. HTMLエクスポートパーツを正しく機能させるには、最新のbibtex2html、つまり1.98が必要になる場合があります。ソースからビルドするには、githubからダウンロードし、「README」ヘルプドキュメントの指示に従ってください。

私のようなウィンドウを使用している場合は、すべてのdevelパッケージでCygwin64を使用してください。Cygwin64を使用して、cdをbibtex2htmlのディレクトリに移動し、を入力して./configure、wait finishを入力し、を入力してmake、wait finishを入力します。今、このディレクトリには、あなたが得るだろうbib2bib.exebibtex2html.exeaux2bib。それらを環境varのいくつかのディレクトリにコピーしますPATHbibtex2htmlcmdを入力してテストします。

texlive2014を使用しているため、上記の作業を行う必要があります。miktekユーザーの場合、bibtex2html 1.95は正常に機能する可能性があり、Windowsインストーラーで簡単にインストールできます。

  1. PDFエクスポートパーツを正しく機能させるには、次のコードを使用して組織モードを初期化します。

    (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"))
    

仕事をするのは「bibtex」の部分です。ラテックスのミントパッケージにはシェルエスケープコマンドを使用します。


あなたの答えは、org-modeとox-bibtexに関するものであるという意味で質問にのみ関連しているように思えます。問題は異なるため、他の人がターゲットを絞った回答を提供できる別の質問を開くのが最善です。
パプリカ

1
itsjeydの答えを補完したいだけです。itsjeydは、org-reftex-citationのドキュメントに従うことをお勧めします。私はそうし、上記の問題を抱えた。他の人が同じ状況に陥った場合に備えて、ここで調査を共有しました。
エンペンギン

IIRC org-modeのELPAパッケージには、contrib/lispox-bibtexを含むの下のファイルは含まれません。あなたは、ソースからのORG-modeをインストールする必要があると思いますので、含む contrib/lispか、単にコピーox-bibtex.elあなたのロードパスに。
パプリカ

1
はい。組織のベータ版を複製します。今では正常に動作します。
エンペンギン

5
@paprika ディレクトリorg-modeを取得するためにソースからインストールする必要はありませんcontribここで説明したように、Orgには独自のELPAアーカイブがあります。必要なのは、そのアーカイブをに追加することだけですpackage-archives。その後org-plus-contrib、パッケージマネージャーを使用してインストール(および更新)できます。もちろん、これは、あなたが提案するアプローチがうまくいかないと言うことではありません。(この議論に出くわした人なら誰でも)をorg-mode介して個別に更新しなければならないオーバーヘッドを伴わない別のアプローチがあることを言及したかっただけgitです。
itsjeyd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.