我对 R、Sweave 和 LaTeX 还不熟悉。我在 Windows 7 x64 操作系统上运行 StatET 和 Eclipse 3.7。StatET 还包括 Sweave 插件,我用它来尝试编译 PDF 文档。
我还安装了 MiKTeX 2.9,因为以前 R 无法执行 texi2dvi(可能是因为没有 TeX 运行器)。基本上,没有 .tex 文件可以编译成 PDF 文件。安装 MiKTeX 后,我成功地从 .tex 文件编译出 .pdf 文件。
然而,当我将 pdf() 函数引入 .Rnw 文件时,出现了“致命”错误。
尝试编译这个简单的.Rnw 文件时:
%
\documentclass[a4paper]{article}
\usepackage[OT1]{fontenc}
\usepackage{Sweave}
\begin{document}
\title{pdftest.Rnw}
\author{Egor}
\maketitle
<<echo=F, results=hide>>=
pdf(file='figure1.pdf')
plot(1:10,1:10)
dev.off()
@
\end{document}
我收到以下错误消息:
Sweave(file = "C:/Users/Egor/Desktop/R/Head-tracking/pdftest.Rnw") 写入文件 pdftest.tex 使用选项处理代码块... 1:术语隐藏
您现在可以在“pdftest.tex”上运行(pdf)latex
需要(工具)
texi2dvi(文件 = “C:/Users/Egor/Desktop/R/Head-tracking/Data/pdftest.tex”,pdf = TRUE)
错误:在‘C:/Users/Egor/Desktop/R/Head-tracking/Data/pdftest.tex’上运行‘texi2dvi’失败
LaTeX 错误:C:/Users/Egor/Desktop/R/Head-tracking/Data/pdftest.tex:13:==> 发生致命错误,未生成输出 PDF 文件!
此外:警告消息:运行命令'“C:\PROGRA~1\MIKTEX~1.9\miktex\bin\x64\texi2dvi.exe”--quiet --pdf“C:/Users/Egor/Desktop/R/Head-tracking/Data/pdftest.tex”-I“C:/Program Files/R/R-2.13.1/share/texmf/tex/latex”-I“C:/Program Files/R/R-2.13.1/share/texmf/bibtex/bst”'状态为1
我遵循 Ista Zahn 在他的指南《学习以 APA 风格编织》中描述的方法:http://www.tug.org/pracjourn/2008-1/zahn/zahn.pdf。
我在此介绍的方法是经过特别选择的,因为它可以更轻松地生成大小合适的图形,并带有大小合适的轴标签和图例(使用其他方法可能会很棘手)。具体来说,我建议创建图形并将其保存为 .pdf 文件,然后将图像插入图形环境。
不幸的是,我无法包含代码的图像文件,因为我是新用户。它位于 Ista 指南的第 14 页,但这是一个丑陋的版本:
<<echo=f a l s e , r e s u l t s=hide>>=
pdf ( f i l e=" spl o t 1 2 . pdf " , width=6, he i ght=5)
qplo t ( educat ion , income , shape=type , s i z e=women , c o l our=p r e s t i g e ,
xlab="Education " , ylab="Income ")
dev . of f ( )
@
nbeginf f i g u r e g
ncentering
n i n c l u d e g r a p h i c s [ width=6in , he i ght=5in ] f spl o t 1 2 . pdf g
ncaptionfA s c a t t e r p l o t d i s p l a y i n g the r e l a t i o n s h i p s
among Income , Education , Pr e s t i g e , Type o f occupat ion ,
and pe r c entage o f Women in the f i e l d . g
n label f f i g : f i g 1 2 g
nendf f i g u r e g
我确实尝试过不通过中间 .pdf 文件进行绘图,但仅使用 \includegraphics 的高度和宽度选项会导致图形失真。抱歉,从我提供的第一个代码中无法看出我稍后计划使用 LaTeX 代码调用此图形,因为我只想集中精力让 pdf() 函数在 <<>>=...@ 中工作。对我来说显然不行,但对 Ista 来说却行得通。
我决定在单独的 .R 文件中创建 .pdf 图像文件,然后使用 Sweave 编译综合的 .pdf 文件,但这只是一个中间解决方案。
谢谢!--Egor
答案1
您似乎混淆了两种制作 pdf 的方法。
Sweave 是基础 R 的一部分,它允许您将 R 代码包含在 .Rnw 文件中,该文件将与 R 代码的结果一起“编织”到 tex 文件中。然后,您可以使用 tex 实现将该 tex 文件渲染为 PDF 文件。
您还可以使用 R 的 pdf() 函数直接在 pdf 文件中生成图表和其他图形对象。
要将你的情节纳入 sweave 文档,请将你的情节块替换为
<<name="Figure", echo=F, figure=True>>=
plot(1:10,1:10)
@
然后保存文件并对其进行 sweave。sweave 应生成图表的 pdf 和 eps 版本以及 tex 文档。然后运行 texi2dvi 生成 pdf。