从R 3.0开始,在CRAN包中包含静态PDF文件作为“晕影”的正确方法是什么?
使用空存根Rnw
的{{3}}中描述的技巧似乎在R 3.0中不起作用。该文档表明现在有一种基于\VignetteEngine{}
的更好的方法,但是对于静态PDF文件的效果还不是很清楚。
答案 0 :(得分:13)
使用R.rsp(> = 1.19.0),您可以添加一个包含以下内容的微小“vignettes / main.pdf.asis”文本文件,以包含静态PDF“vignettes / main.pdf”。 p>
%\VignetteIndexEntry{My amazing package}
%\VignetteEngine{R.rsp::asis}
并确保拥有:
Suggests: R.rsp
VignetteBuilder: R.rsp
在您的包的DESCRIPTION文件中。这也适用于静态HTML插图。其中一个R.rsp插图也解释了这一点。
答案 1 :(得分:2)
更新2014-06-08:有关在R包中包含静态PDF和HTML文件的更好解决方案,请参阅此主题中有关如何使用R.rsp的其他答案(> = 0.19) .0)及其R.rsp::asis
小插图引擎。
您只需要一个<name>.Rnw
文件,其名称与您的静态<name>.pdf
文件相匹配,例如
vignettes/
static.pdf
static.Rnw
其中<name>.Rnw
(此处static.Rnw
)是最小有效的Sweave文件,例如
%\VignetteIndexEntry{<title to be displayed on the R vignette index page>}
\documentclass{article}
\begin{document}
\end{document}
这个小插图源文件(<name>.Rnw
)欺骗R CMD build
来构建它,即R tools::buildVignettes()
将像往常一样将<name>.Rnw
轻扫<name>.tex
。但是,由于buildVignettes()
的设计方式,它将检测我们的静态<name>.pdf
文件已经由Sweave引擎创建,因此它不会将该伪TeX文件编译成PDF文件(这会覆盖我们的文件)静态文件)。
重要的是要理解的是(i)在R CMD build
,(ii)期间,小插曲是“构建”的,并且在构建时,它们被复制到inst/doc/
目录(如果遗漏的话)内置包。此外,(iii)vignettes/
目录将不成为构建包的一部分,即<pkgname>_<version>.tar.gz
文件。因此,请务必查看inst/doc/
。
所以,要明确这一点,如果某人决定阻止这种策略,使用虚拟<name>.Rnw
可能会被视为可能破坏的黑客攻击。但是,如果发生这种情况,则完全可以创建非Sweave插图引擎,其唯一目的是将<name>.pdf
文件编译为... <name>.pdf
文件。由于R中添加了非Sweave支持(> = 3.0.0),因此这是有效的。我一直在考虑将这种引擎添加到R.rsp包中,例如\ {VignetteEngine :: R.rsp} StaticPDF。有了它你甚至不必拥有那个虚拟的Rnw文件 - 只有PDF文件。
希望这有帮助
答案 2 :(得分:1)
这可用于in this blog post中所述的普通LaTeX技巧。
我最近改用当前的R版本(即现在为3.6.0)进行此操作,请参见this wrapper .Rnw file,其中仅包含:
\documentclass{article}
\usepackage{pdfpages}
%\VignetteIndexEntry{Using Annoy in C++}
%\VignetteKeywords{Rcpp, Annoy, R, Cpp, Approximate Nearest Neighbours}
%\VignettePackage{RcppAnnoy}
\begin{document}
\includepdf[pages=-, fitpaper=true]{UsingAnnoyInCpp.pdf}
\end{document}
优点是,它使用Sweave进行了完全传统的小插图构建,并且没有附加依赖项。