6

试图写我的第二个乳胶文件

\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时,会在存储在/Users/Brenden/Documents下的tex文件中添加一行“usepackage{Sweave}”。但是,如果我不输入 userpackage 行,当我在 cmd 下(在 /Documents 或 /Desktop 下)运行 pdflatex 时,我会收到一条消息,上面写着“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 的方式?

谢谢你。

4

5 回答 5

7

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

于 2012-10-22T18:50:43.153 回答
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()(即使用默认的 LaTeX 样式knitr)。

于 2012-10-29T01:49:18.383 回答
3

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

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

我认为您也可以让 Sweave 通过添加自动添加完整路径

export SWEAVE_STYLEPATH_DEFAULT="TRUE"

到您的.bashrc文件或系统上的任何等效文件。

于 2012-10-22T18:51:40.863 回答
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。此外,tools::texi2dvi可以从 R 中调用。

于 2012-10-22T20:00:44.467 回答
0

我最终得到以下解决方案:

install.packages("tinytex")   
require("tinytex")}
install_tinytex(force = TRUE)

Sweave(  "Report.Rnw" , encoding = "utf8" )  
xelatex('Report.tex')

此代码安装TinyTex,然后您可以使用pdflatex()xelatex()lualatex()进行编译。

于 2019-02-19T14:16:05.020 回答