试着写我的第二个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}”将被添加到tex文件中,该文件存储在/ Users / Brenden / Documents下。但是,如果我没有输入userpackage行,当我在cmd下运行pdflatex时(在/ Documents或/ Desktop下),我得到了一个“Sweave.sty not found”的消息。所以我总是通过添加一行usepackage以及详细的路径帮助规避问题来解决这个问题。虽然“Sweave.sty not found”问题被规避了,但我注意到当我在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:\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
从Stackoverflow上的另一篇文章中可以看出,“当您安装LaTeX时,该路径会自动设置;它是您的个人texmf树,您可以将任何想要LaTeX的样式或类文件放在那里。目录名称无关紧要,它以递归方式搜索Sweave.sty“。然而,对我而言,除非我指定路径,否则我的MiKTex显然无法找到Sweave.sty。即使有了路径规范,LaTex仍然会给我一个警告。有人可以向我解释一下我搞砸了吗(在安装MiKTex期间,也许?)这样我就可以帮助MiKtex在没有指定路径的情况下找到Sweave的方式?
谢谢。
在MiKTeX设置程序中,有一个名为“Roots”的选项卡。您可以在那里指定可以找到其他.sty
文件的位置。在你的情况下,我相信你会想要添加C:\Users\Brenden\Documents\R\R-2.15.1\share\texmf
作为额外的根。这样做,任何TeX程序都能找到Sweave.sty
,无论是从R内部还是从命令行运行。
总是被像这样的小鬼子(新概念texmf tree
,无尽的环境变量TEXINPUTS
,SWEAVE_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
文件,或者你的系统上的等价文件。
在命令行中,R CMD
使用适合运行R的变量设置环境,例如在Windows上
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内调用。
我最终得到了以下解决方案:
install.packages("tinytex")
require("tinytex")}
install_tinytex(force = TRUE)
Sweave( "Report.Rnw" , encoding = "utf8" )
xelatex('Report.tex')
此代码安装TinyTex,然后您可以使用pdflatex(),xelatex()或lualatex()进行编译。