2012-10-22 180 views
6

试图写我的第二个乳胶文件保存.Rnw作为扩展工作流程拧

\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} 

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

据说通常不需要使用“usepackage”这一行,因为当我在R下运行Sweave时,一行“usepackage {Sweave}”将被添加到存储在/ Users /布兰登·/文件。但是,如果我没有放入用户包行,当我在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'. 

然后,它通过与.sty几个文件MIKTEX

(C:\Users\Brenden\Desktop\MiKTex\tex\latex\base\ifthen.sty) 
(C:\Users\Brenden\Desktop\MiKTex\tex\latex\graphics\graphicx.sty) 
(C:\Users\Brenden\Desktop\MiKTex\tex\latex\graphics\keyval.sty) 
(C:\Users\Brenden\Desktop\MiKTex\tex\latex\graphics\graphics.sty) 
(C:\Users\Brenden\Desktop\MiKTex\tex\latex\graphics\trig.sty) 
... 
运行响应

,最终创建一个PDF

从#2另一篇文章,这是说,“当你安装LaTeX的这条道路是自动设置的;这是你个人的texmf目录树,你可以把你想要的任何风格或类文件LaTeX在那里找到,目录名不会消失呃,它在它们中递归地搜索Sweave.sty“。然而,对我来说,显然我的MiKTex找不到Sweave.sty,除非我指定路径。即使在路径规范中,LaTex仍然给我一个警告。有人可以向我解释我弄错了什么(在安装MiKTex的时候,或许?),以便我可以帮助MiKtex在没有指定路径的情况下找到Sweave的方式?

谢谢。

+0

链接到OP中提到的帖子:http://stackoverflow.com/a/7610315/210673 – Aaron

回答

7

在MiKTeX Settings程序中,有一个名为“Roots”的选项卡。在那里,您可以指定可以找到更多​​文件的位置。在你的情况,我相信你会想添加C:\Users\Brenden\Documents\R\R-2.15.1\share\texmf作为一个额外的根。这样做,任何TeX程序都能够找到Sweave.sty,无论是从R还是从命令行运行。

+0

非常感谢,布赖恩。有效!一个新手的后续问题,这个信息是在MiKTex的其中一个文件中提供的吗?再次感谢 –

+1

R和MiKTeX对于如何处理这些附加文件的想法略有不同。 MiKTeX有它自己的包装和分配系统,R不用于其TeX相关文件。 R通过修改环境变量(TEXINPUTS,我相信)从R中调用事物时修补所有内容,以便TeX可以找到R特定文件。但是当从R外部呼叫时,这种胶水不见了。例如,请参阅以下讨论:http://tolstoy.newcastle.edu.au/R/e14/help/11/05/2061.html –

4

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

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

我想你也可以有Sweave添加完整路径加入

export SWEAVE_STYLEPATH_DEFAULT="TRUE" 

.bashrc文件,或任何自动相当于将您的系统上。

+0

非常感谢,亚伦。我其实之前尝试过texi2dvi并失败(新手的错误)。但后来我发现我需要首先上传工具包。 –

2

在命令行,R CMD建立与适合在Windows上运行R,对于实例变量环境

C:\Users\mtmorgan> "c:\Program Files\R\R-2.15.1\bin\R" CMD set 

包括(此没有发现如果在命令行一个类型set

TEXINPUTS=.;c:/PROGRA~1/R/R-215~1/.1/share/texmf/tex/latex; 

C:\Users\mtmorgan> "c:\Program Files\R\R-2.15.1\bin\R" CMD pdflatex myfile.tex 

会找到Sweave.sty。此外,tools::texi2dvi可以从内部R.

6

调用它是烦人的小鬼子总是分心这样的(新概念texmf tree,无尽的环境变量TEXINPUTSSWEAVE_STYLEPATH_DEFAULT,...)。你永远不会担心LaTeX的包,如果您使用knitr,如果你喜欢的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的默认乳胶风格)更好。