조직 모드 파일에서 bibtex 파일로드


16

나는 org-mode거의 모든 것을하기 위해 사용하려고합니다 . 과학 작문 활동에서는 전체 종이를 .org파일 로 스케치 한 다음 LaTeX로 내보내고 싶습니다 . 여러 .bib파일을 init.el가질 수 있으므로 bibtex 파일 을로드하고 싶지 않습니다 . 지금은 .org파일 헤드에 이것을 추가했습니다 .

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

그러나 매번 수동으로 실행해야합니다. 자동으로 만드는 방법이 있습니까? 최적의 각각의 시작 부분에 지시해야하는 것 .org"좋아, 지금은로드해야합니다 : 이맥스 말 파일 .bib 파일을". 힌트가 있습니까? 감사.


파일 로컬 변수가 트릭을 수행하지 않습니까? 예M-x add-file-local-variable
B 올라프

답변 감사합니다. 불행히도, 내가 찾고있는 것이 아닙니다. 이런 식으로 파일을로드 할 때마다 명령을 입력해야합니다. 뭔가 거짓말 #+STARTUP: do this.
petrux

어떤 명령? 파일 로컬 변수는 한 번만 설정하면됩니다.
olaf b

당신이 옳았! 은 Using add-file-local-variable-prop-line내가하면 생성 할 수있는 # -*- reftex-default-bibliography: ("./references.bib"); -*-파일의 시작 부분에 라인을.
petrux

답변:


19

다음과 같은 줄을 추가하면 참조 org-mode.bib파일을 알 수 있습니다.

#+BIBLIOGRAPHY: refs plain

refsBibTeX 파일의 이름 ( .bib확장명 생략)이며 plain입니다 bibliographystyle.

그런 다음 참조를 삽입 org-reftex-citation하기 위해 C-c C-x [(기본적으로 바인딩 된)을 호출 할 수 있습니다 .

설명서에서 :

(org-reftex-citation)

reftex-citation버퍼에 인용을 삽입하는 데 사용 합니다. 이것은 같은 줄을 찾습니다

#+BIBLIOGRAPHY: foo plain option:-d

foo.bib이 문서와 관련된 참고 문헌 파일 인 정보 에서 파생됩니다 . 그런 다음 RefTeX가이 버퍼에서 작동하는 데 필요한 환경을 설치하고 버퍼 reftex-citation에 인용을 삽입하도록 호출 합니다.

이러한 인용을 LaTeX 및 HTML로 내보내기는 ox-bibtexTaru Karttunen 이 제공 한 패키지에 의해 처리됩니다 .

마지막 문장에서 알 수 있듯이 추가해야합니다.

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

참조 파일을 LaTeX로 올바르게 내보내도록 init 파일에 추가하십시오. 이것을 직접 설정했을 때 org-latex-pdf-processPDF 내보내기가 작동 하도록 사용자 정의해야한다는 것을 알았 습니다.

(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

@petrux 당신은 일반적으로 사용 org-reftex-citation하는 것과 동일한 키 시퀀스에 바인딩 할 수 있습니다 reftex-citation... 내 대답에 대한 업데이트를 참조하십시오.
itsjeyd

여러 참고 문헌 파일을 사용할 수있는 방법이 org-reftex-citation없습니까? 두 번째를 추가 #+BIBLIOGRAPHY하면 첫 번째 것이 무시되는 것 같습니다.
Brian Z

@BrianZ 귀하가 설명하는 유스 케이스가 기본적으로 지원되지 않는다고 생각합니다. 그러나 여기에 누군가가 손으로 굴린 솔루션이 있습니까? 내가 당신이라면 나는 새로운 질문을 할 것입니다 (이 스레드를 가리켜 서 참조하십시오). 다른 사람들도 관심을 가질만한 것 같습니다.
itsjeyd 2015 년

1
평가 (setq reftex-default-bibliography '("./a.bib" "./b.bib"))는 트릭을 수행하는 것 같습니다. 그렇게 # -*- reftex-default-bibliography: ("./refs1.bib" "./refs2.bib"); -*-는이 변수가 로컬로 정의되어서는 안된다는 경고를 던졌습니다하지만.
Brian Z

4

ox-bibtex는 최신 조직 패키지 (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하려면 조직 파일의 끝에 비슷한 것을 넣으십시오 . 더 많은 옵션은의 도움말 문서를 참조하십시오ox-bibtex.el

  3. HTML 내보내기 부분이 제대로 작동하려면 최신 bibtex2html (예 : 1.98)이 필요할 수 있습니다. 소스에서 빌드하려면 github에서 다운로드 한 다음 'README'도움말 문서의 지침을 따르십시오.

나와 같은 창을 사용하는 경우 모든 devel 패키지와 함께 Cygwin64를 사용하십시오. Cygwin64를 사용하여 bibtex2html의 dir로 cd하고 ./configure, wait finish, type make, wait finish 를 입력하십시오 . 이제이 디렉토리에서 bib2bib.exe, bibtex2html.exe및 을 얻게됩니다 aux2bib. 그것들을 환경의 일부 디렉토리에 복사하십시오 var PATH. bibtex2htmlcmd 를 입력하여 테스트하십시오 .

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
나는 그 jeyd의 답변을 보완하고 싶습니다. itsjeyd는 org-reftex-citation의 문서를 따르는 것이 좋습니다. 나는했고, 위의 문제를 얻었다. 다른 사람들이 같은 상황에 처한 경우 여기에서 조사를 공유했습니다.
empenguin

IIRC org-mode의 ELPA 패키지 contrib/lisp에는 ox-bibtex를 포함하는 의 파일 이 포함되어 있지 않습니다 . 당신은 소스에서 조직 모드를 설치해야 할 것이다 그래서 포함 contrib/lisp 하거나 복사 ox-bibtex.el부하 경로에.
파프리카

1
예. 조직의 베타 버전을 복제했습니다. 이제는 잘 작동합니다.
empenguin

6
@paprika 디렉토리 org-mode를 얻기 위해 소스에서 설치할 필요가 없습니다 contrib. 여기 에 설명 된대로 조직에는 자체 ELPA 아카이브가 있습니다. 그 아카이브를 추가하기 만하면됩니다 package-archives. 그런 다음 org-plus-contrib패키지 관리자를 사용하여 설치 및 업데이트 할 수 있습니다 . 물론 이것은 당신이 제안한 접근법이 효과가 없다고 말하는 것은 아닙니다. 방금 (이 토론을 통해 다른 사람들을 위해)을 org-mode통해 별도로 업데이트 해야하는 오버 헤드와 관련이없는 또 다른 접근법이 있다고 언급하고 싶었습니다 git.
itsjeyd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.