如何在knitr绘图中禁用透明度?

3

我有一个LaTeX/knitr文档需要转换为PDF/A格式,但是出现了关于使用透明度的错误(PDF/A不允许使用透明度)。经过追踪,我发现这是由于我通过knitr在R中生成的盒形图的背景填充引起的。无论我使用"pdf"、 "cairo_pdf"或"tikzDevice"作为输出设备,都会出现相同的错误。

Tikz输出包括以下内容:

\definecolor{fillColor}{RGB}{255,255,255}
\path[use as bounding box,fill=fillColor,fill opacity=0.00] (0,0) rectangle (505.89,325.21);

手动删除fill opacity=0.00这部分并重新运行pdflatex可以消除特定图形的信息,因此我相信这就是原因。然而,我更希望在源文件(R代码)中进行更改,这样每次源文件更改并重新生成中间文件时,我就不必手动进行修复。
有人知道如何在R中传递一个神奇选项来将bxppar转换为1.0的不透明度,或者更好的是指定没有填充吗?(考虑到它是放置在页面空白部分上的白色背景,填充是完全不必要的。)
(顺便说一句,我尝试在bxp调用中使用bg=NA和在之前使用par(bg=NA),但两者都没有任何作用。同样地,使用"red"也没有效果,所以那似乎不是正确的选项。)
1个回答

4

显然,图形参数(par=)中的bg仅适用于绘图中的对象(如箱线图中的方框)。整个图的背景是由knitr的dev.args块选项设置的,例如全局设置:

opts_chunk$set(dev='tikz', dev.args=list(bg="white"))

在特定块的开头或者特定块的前面,填充选项好像无法被删除(在tikzDevice源代码中有一个“TODO”项),但将其更改为“white”可以消除PDF/A验证错误,并且不会对文档造成可见影响。等我的论文提交完之后,也许我可以为此提交一个补丁。 :-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接