我的problem of inserting a pdf graphic with a special character in a Sweave document已经通过在Sweave本身之外创建pdf图然后导入它来解决。
根据Sweave文档,我编写了一个自定义图形设备,它应该以完全相同的方式构建pdf图形。但它不起作用。你能解释一下为什么下面的Sweave文档的第二个图形不起作用,而它应该与第一个完全相同吗?我错了相信它应该吗?
\documentclass{article}
\begin{document}
\SweaveOpts{concordance=TRUE}
<<setup, echo=FALSE>>=
mycairo <- function(name, width = 7, height = 7, ...) {
grDevices::cairo_pdf(name, width = width, height = height)
}
mycairo.off <- function() {
cat("shutting down mycairo\n")
invisible(grDevices::dev.off())
}
@
\section{Export plot}
<<Export_plot, echo=FALSE>>=
cairo_pdf("exported_plot.pdf")
par(mar=c(6,7,0,6))
ylab <- expression(paste("", bar(italic("\u2113")), "(",phi[0], "|", italic(list(x,y)), ")"))
plot(0,0, ylab=ylab, xlab=NA, cex.lab=3)
invisible(dev.off())
@
% insert exported plot
\includegraphics[width=6cm]{exported_plot.pdf}
\section{Direct plot}
<<mycairo_plot, echo=FALSE, fig=TRUE, pdf=TRUE, grdevice=mycairo, width=4, height=4>>=
par(mar=c(6,6,0,6))
ylab <- expression(paste("", bar(italic("\u2113")), "(",phi[0], "|", italic(list(x,y)), ")"))
plot(0,0, ylab=ylab, xlab=NA, cex.lab=1)
@
\end{document}
答案 0 :(得分:3)
@ user20650恳请我将他/她评论中给出的答案转换为官方评论。
在pdf
函数中包含cairo_pdf
文件扩展名就足够了。然后将mycairo
函数替换为:
mycairo <- function(name, width = 7, height = 7, ...) {
grDevices::cairo_pdf(sprintf("%s.pdf", name), width = width, height = height)
}
作为旁注,您可以将其设置为全局选项,而不是在每个图块中指定grdevice=mycairo
:
\SweaveOpts{grdevice=mycairo}