我正在尝试使用 ESS、AUCTex、TeXLive 和 natbib 在 knitr Rnw 文档中获取参考资料。
这是一个简单的例子:
\documentclass{article}
\usepackage{natbib}
\begin{document}
<<setup, include=FALSE, cache=FALSE>>=
library(knitr)
@
<<normal-sample, echo=FALSE>>=
x <- rnorm(100)
plot(x)
@
The moon in June is like a big balloon \citep{smith2012}.
\bibliographystyle{apalike}
\bibliography{/path/to/my/references/refs}
\end{document}
当我使用 then 运行theness-swv-knit
时,我看到如下错误:ess-swv-PDF
M-n r
M-n P
软件包 natbib 警告:第 23 页的引用 Smith2014 在输入行 374 上未定义
我认为这是正在发生的事情。运行ess-swv-PDF
只需调用pdflatex
,但是为了获得正确的引用,需要运行 正确数量的bibtex
和命令。pdflatex
M-n r
有没有办法通过简单运行来实现这一点M-n P
?
答案1
未经测试的解决方案(我不使用 ESS):
init.el
将其写入您的(或其他 emacs 文件)中:
(defun compile-ESS ()
"compilation"
(ess-swv-PDF)
(tex-bibtex-file)
(ess-swv-PDF)
(ess-swv-PDF)
)
(global-set-key "the shortcut you want to use" 'compile-ESS)
the shortcut you want to use
用您想要使用的替换。尽量不要使用已经绑定的。
然后M-n r
做the shortcut you want to use
你想做的事。
答案2
将变量设置ess-swv-pdflatex-commands
为latexmk
,以便运行ess-swv.el
(M-n P
)调用latexmk
而不是pdflatex
似乎有效,尽管我还没有进行广泛的测试。
更新:我已经使用了几天,它latexmk
做得正确,因为它只运行生成最终文档所必需的内容。