
저는 MacOS에서 최신 Aquamacs를 사용하고 있습니다. 그리고 왜 이러한 emacs 관련 질문이 emacs.stackexchange.com이 아닌 tex.stackexchange.com에 게시되어 있는지 궁금합니다.
내 Emacs를 올바르게 구성했으면 좋겠습니다. 적어도 이것은 다음의 관련 정의입니다 .emacs
.
(setq reftex-extra-bindings t)
(require 'reftex)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
(require 'bibtex)
(bibtex-set-dialect 'biblatex)
(setq LaTeX-biblatex-use-Biber t)
(setq TeX-command-BibTeX "Biber")
(setq reftex-bibliography-commands
'("bibliography" "nobibliography" "addbibresource"))
(setq reftex-bibpath-environment-variables
'(".:~/lib/texmf/bibtex/bib//:/usr/local/texlive/texmf-local/bibtex/bib//:/usr/local/texlive/2018/texmf-dist/bibtex/bib//"))
; (reftex-use-external-file-finders t)
(setq reftex-external-file-finders
'(("tex" . "kpsewhich -format=.tex %f")
("bib" . "kpsewhich -format=.bib %f")))
Emacs는 불만 없이 시작됩니다.
다음으로 이 MWE(완료를 위해 ...)를 파일로 설정했습니다 test.tex
.
\documentclass{scrbook}
\usepackage[T1]{fontenc}
\usepackage[backend=biber,style=numeric]{biblatex}
\addbibresource{computer.bib}
\begin{document}
% Waiting to insert \cite{} here
\end{document}
나는 \addbibresource{computer.bib}
일반적인 방법으로 다음 줄을 추가했습니다: C-cRET addbi
TABRET. 이 시점에서 를 누르면 TABEmacs는 명령을 완료 \addbibresource
하고 이 LaTeX 명령을 버퍼에 삽입합니다. 여전히 미니버퍼에 있는 동안 옵션을 묻는 메시지가 나타납니다. 다시 눌러 해당 질문을 건너뛰었습니다 RET. 이제 Emacs는 사용할 참고문헌 파일을 요청합니다(여전히 미니버퍼에 있음). 나는 타이핑을 했고 Emacs는 내가 삽입한 com
TAB전체 파일 이름을 다시 완성했습니다 .computer.bib
RET
나는 (위에서 볼 수 있듯이) 내가 정의했기 때문에 Emacs가 파일 이름의 존재를 알고 있었고 ~/lib/texmf/bibtex/bib/JB/computer.bib
따라서 파일 이름을 완성할 수 있었다고 생각합니다.reftex-bibpath-environment-variables
Emacs는 또한 LaTeX 파일을 자동으로 검사하도록 지시받습니다. 따라서 현재 자동 생성된 파일에는 다음이 auto/test.el
표시됩니다.
(TeX-add-style-hook
"test"
(lambda ()
(TeX-add-to-alist 'LaTeX-provided-package-options
'(("fontenc" "T1") ("biblatex" "backend=biber" "style=numeric")))
(add-to-list 'LaTeX-verbatim-environments-local "semiverbatim")
(add-to-list 'LaTeX-verbatim-environments-local "minted")
(add-to-list 'LaTeX-verbatim-environments-local "Verbatim")
(add-to-list 'LaTeX-verbatim-environments-local "Verbatim*")
(add-to-list 'LaTeX-verbatim-environments-local "BVerbatim")
(add-to-list 'LaTeX-verbatim-environments-local "BVerbatim*")
(add-to-list 'LaTeX-verbatim-environments-local "LVerbatim")
(add-to-list 'LaTeX-verbatim-environments-local "LVerbatim*")
(add-to-list 'LaTeX-verbatim-environments-local "SaveVerbatim")
(add-to-list 'LaTeX-verbatim-environments-local "VerbatimOut")
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperref")
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperimage")
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperbaseurl")
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "nolinkurl")
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "path")
(add-to-list 'LaTeX-verbatim-macros-with-braces-local "url")
(add-to-list 'LaTeX-verbatim-macros-with-delims-local "path")
(add-to-list 'LaTeX-verbatim-macros-with-delims-local "Verb")
(add-to-list 'LaTeX-verbatim-macros-with-delims-local "url")
(TeX-run-style-hooks
"latex2e"
"scrbook"
"scrbook10"
"fontenc"
"biblatex")
(LaTeX-add-bibliographies
"computer"))
:latex)
다행스럽게도 마지막 두 번째 항목에 올바른 참고문헌 파일이 표시되어 있습니다 "computer"
. 터미널/셸에서의 빠른 테스트는 다음을 제공합니다.
<funnyprompt>:~$ kpsewhich bib computer.bib
/Users/tmjb/Library/texmf/bibtex/bib/JB/computer.bib
<funnyprompt>:~$ grep texstudio `kpsewhich bib computer.bib`
@Online{texstudio,
url = {http://texstudio.sourceforge.net/manual/current/usermanual_en.html},
이는 파일이 존재하고 원하는 키 "texstudio"가 있는 항목을 포함하고 있음을 증명해야 합니다.
편집: ~/lib/
내 경우에는 /Users/tmjb/Library/
.
다음으로 커서를 아래로 이동 \begin{document}
하고 -command를 삽입하기 시작합니다 \cite
(다시 일반적인 방법으로). C-cc(이것은 와 같은 단축키입니다 C-c[.) 미니버퍼에 있는 동안 RefTeX는 정규식을 삽입하라고 요청합니다. 나는 texstudio
해당 참고문헌 파일에 존재하는 것으로 알고 있는 을 삽입합니다 . RETEmacs를 누른 후 불평합니다 Sorry, no matches found
. 커서는 미니버퍼를 떠나 여전히 메인 버퍼에서 기다리고 있지만 텍스트는 삽입되지 않으며 이미 정의된 명령도 삽입되지 않습니다 \cite
.
-buffer *Message*
는 다음과 같이 말합니다.
Making completion list...
(?=Help)
Scanning bibliography database test.bib
Sorry, no matches found
도대체 왜 Emacs는 스캔을 하려고 합니까 test.bib
? 이 파일은 어디에도 존재하지 않습니다. 어디에도 정의되어 있지 않습니다(LaTeX 파일이나 emacs 구성 파일 포함)!
내 구성에서 내가 놓친 점은 Emacs가 참고문헌 파일을 스캔하도록 하여 파일 이름을 완성할 수 있다는 것이었습니다.
업데이트
~
Arash Esbati가 제안한 대로 확장된 경로로 교체했고 /Users/tmjb
마침내 Emacs를 다시 시작했는데 제대로 작동했습니다!
내 파일의 항목을 삭제 \addbibliography{...}
하고 참고문헌 파일을 다시 입력했습니다. 하나의 큰 \bibliography{tuc-thesis,latex-base,typographie,computer}
줄을 추가하고(나열된 각 파일은 미니버퍼에서 완료되었습니다) \addbibresource{}
다시 4줄을 추가했습니다. C-cC-nLaTeX 파일을 다시 스캔하려고 입력했습니다 . 나는 자동 파일을 확인했다. 놀랍게도 그 안에는 참고문헌 파일 4개 중 3개만 들어 있었습니다. 파일 설정 방법에 관계없이 자동 파일에 나열된 로컬 디렉토리에 없는 참고문헌 파일만 표시됩니다.
\cite{}
마스터 파일에 명령을 삽입할 수 있었습니다 . 이것은 지금까지 올바른 방향으로 나아가는 단계입니다 :-)
마스터 파일에 a를 성공적으로 삽입한 후 하위 파일에 s를 \cite
삽입할 수도 있었습니다 .\cite
여전히 올바르게 작동하지 않는 점은 로컬 디렉토리에 없는 참고문헌에 대해서는 레이블 자동 완성이 작동하지 않는다는 것입니다. 하지만 지금은 그걸로 살아갈 수 있을 것 같아요!