Latex和R之间的工作流程已拧紧

试图写我的第二个Latex文件

documentclass{article}
title{simple Sweave script}
usepackage{/Users/Brenden/Documents/R/R-2.15.1/share/texmf/tex/latex/Sweave}
begin{document}
maketitle
 This is a simple script to demonstrate Sweave. Let's
 begin by generating some results
<<>>=
x=rnorm(30)
y=rnorm(30)
mean(x)
cor(x,y)
@
and follow that up with some random text
end{document}

以.Rnw作为扩展名保存的文件。 然后我可以使用R下的Sweave将文件转换为tex。 然后我在cmd下运行pdflatex来获取我的.pdf文件。 R存储在/ Users / Brenden / Documents下。 MiKTex存储在/ Users / Brenden / Desktop下。

据说通常不需要使用“usepackage”这一行,因为当我在R下运行Sweave时,一行“usepackage {Sweave}”将被添加到存储在/ Users / Brenden / Documents下的tex文件中。 但是,如果我没有放入用户包行,当我在cmd下运行pdflatex(无论是在/ Documents还是/ Desktop下)时,我收到了一个消息说“Sweave.sty not found”。 所以我总是通过添加一行usepackage和一个详细路径来帮助规避问题,从而解决了这个问题。 虽然“Sweave.sty找不到”问题已被规避,但我注意到,当我在cmd下运行pdflatex时,得到了响应

LaTeX Warning: You have requested package '/Users/Brenden/Documents/R/R- 
2.15.1/share/texmf/tex/latex/Sweave', but the package provides "Sweave'.

然后它通过MiKTex下的.sty文件运行几个文件

(C:UsersBrendenDesktopMiKTextexlatexbaseifthen.sty)
(C:UsersBrendenDesktopMiKTextexlatexgraphicsgraphicx.sty)
(C:UsersBrendenDesktopMiKTextexlatexgraphicskeyval.sty)
(C:UsersBrendenDesktopMiKTextexlatexgraphicsgraphics.sty)
(C:UsersBrendenDesktopMiKTextexlatexgraphicstrig.sty)
...

最终创建一个.pdf

在Stackoverflow的另一篇文章中,有人说:“安装LaTeX时会自动设置该路径;它是您的个人texmf树,您可以放置​​任何希望LaTeX在其中找到的样式或类文件,目录名称无关紧要,它在它们中递归地搜索Sweave.sty“。 然而,对我来说,显然我的MiKTex找不到Sweave.sty,除非我指定路径。 即使在路径规范中,LaTex仍然给我一个警告。 有人可以向我解释我弄错了什么(在安装MiKTex的时候,或许?),以便我可以帮助MiKtex在没有指定路径的情况下找到Sweave的方式?

谢谢。


在MiKTeX Settings程序中,有一个名为“Roots”的选项卡。 在那里您可以指定可以找到附加的.sty文件的位置。 就你而言,我相信你会想添加C:UsersBrendenDocumentsRR-2.15.1sharetexmf作为额外的根目录。 做到这一点,任何TeX程序都能够找到Sweave.sty无论是从R内还是从命令行运行。


令人讨厌的是,总是被像这样的小恶魔分心(新概念texmf tree ,无尽的环境变量TEXINPUTSSWEAVE_STYLEPATH_DEFAULT ,...)。 如果你使用knitr ,你永远不会担心LaTeX包,如果你喜欢Sweave风格,你可以简单地把render_sweave()放在文档中,如:

documentclass{article}
title{simple Sweave script}
<<setup, include=FALSE>>=
render_sweave()
@

begin{document}
maketitle
 This is a simple script to demonstrate Sweave. Let's
 begin by generating some results
<<>>=
x=rnorm(30)
y=rnorm(30)
mean(x)
cor(x,y)
@
and follow that up with some random text
end{document}

将它保存为test.Rnw并用它进行编译

library(knitr); knit('test.Rnw') # or knit2pdf('test.Rnw')

我想你可能会更好没有render_sweave() (即在knitr使用默认的LaTeX风格)。


我怀疑另一篇文章中提到的路径是你的个人texmf树的路径,这不是Sweave所说的路径。 一种选择是将它移动到您的个人texmf树,但我相信现在通常的方法是从R内运行pdflatex,如下所示:

texi2dvi("foo.tex", pdf = TRUE)

我想你也可以让Sweave通过添加来自动添加完整路径

export SWEAVE_STYLEPATH_DEFAULT="TRUE"

到你的.bashrc文件,或者你的系统上的任何等价物。

链接地址: http://www.djcxy.com/p/26915.html

上一篇: workflow between Latex and R screwed

下一篇: ESS + AUCTeX + Sweave. SyncteX integration from .Rnw <