尝试编写我的第二个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下/文件。但是,如果我没有输入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的方式?
谢谢。
答案 0 :(得分:7)
在MiKTeX设置程序中,有一个名为“Roots”的标签。您可以在其中指定可以找到其他.sty
文件的位置。在您的情况下,我相信您会想要添加C:\Users\Brenden\Documents\R\R-2.15.1\share\texmf
作为额外的根。这样做,任何TeX程序都能找到Sweave.sty
,无论是从R内部还是从命令行运行。
答案 1 :(得分:6)
总是被像这样的小鬼(新概念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风格)。
答案 2 :(得分:3)
我怀疑在另一篇文章中提到的路径是你的个人texmf树的路径,这不是Sweave所说的。一种选择是将其移动到您的个人texmf树,但我认为现在常用的方法是从R中运行pdflatex,如下所示:
texi2dvi("foo.tex", pdf = TRUE)
我认为你也可以通过添加
自动添加完整路径export SWEAVE_STYLEPATH_DEFAULT="TRUE"
到您的.bashrc
文件,或者您系统上的等效文件。
答案 3 :(得分:2)
在命令行中,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。此外,可以从R中调用tools::texi2dvi
。
答案 4 :(得分:0)
我最终得到以下解决方案:
install.packages("tinytex")
require("tinytex")}
install_tinytex(force = TRUE)
Sweave( "Report.Rnw" , encoding = "utf8" )
xelatex('Report.tex')
此代码将安装TinyTex,然后您可以使用 pdflatex(), xelatex()或 lualatex()进行编译。