【问题标题】:Reducing the output file size of tikzDevice减小 tikzDevice 的输出文件大小
【发布时间】:2017-04-23 00:00:22
【问题描述】:

我正在编写一个大型乳胶文档,其中包含 R 的 tikzDevice 包生成的大量图。目前,我遇到 LaTeX 错误“超出 TeX 容量”。

我已经设法通过遵循 Leo Liu 的回答 here 的补救措施暂时解决了这个问题(我也尝试了来自同一来源的接受的答案),但正如我所说,这个解决方案是暂时的,因为最终,我将在我的文档中添加更多的图,每个图至少 1 兆。有人说 LuaTex 动态分配内存,所以 LuaTex 从来都不是问题(同一来源);但是,我有一个很大的文档并且可用的时间有限,因此转换为 LuaTex 不是一种选择(除非有自动转换软件)。

在搜索过程中,我偶然发现this post 谈到了同样的问题,但使用的是 matlab 的 matlab2tikz 包。解决方案是减少图中的样本数量,从而减小结果文件的大小。我在 R 的 tikzDevice 文档(here 和 here)中查找了类似的选项,但不幸的是找不到。

所以问题是:如何控制 tikzDevice 生成的图(tikzpictures)的大小?

【问题讨论】:

  • 2 cmets: i) 没有代码和数据,无法判断您可以在 R/ggplot2 中使用什么策略来“简化”(聚合/bin/smaple/summarise,...)数据绘图前; ii) 您可以使用 luatex 处理各个数字,并将生成的 pdf 包含在您的最终文档中。我发现它比调试嵌入在更大文档中的 tikz 代码更容易。另一种选择,尽管实用性不大,是转换数据layer as embedded raster。

标签: r ggplot2 tikz pgf tikzdevice


【解决方案1】:

一种解决方法是使用选项standAlone = TRUE 导出tikzDevice 生成的文件。使用lualatex 编译生成的文件以避免错误消息“TeX 容量超出”。这可以直接从 R 完成,例如使用

tikz(figure.tex, standAlone = TRUE)
...
dev.off()
system("lualatex figure.tex; rm *.aux; rm *.log")

然后,使用 \includegraphics 将文件作为图形包含在 LaTeX 中。

要减小生成的 pdf 的大小,您可能希望将图像转换为有损压缩格式,例如 JPEG。转换为 postscript 并返回也可以创建更小的文件,尽管以损失分辨率为代价。

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 2021-07-01
    • 2017-05-05
    • 2011-12-27
    • 2010-10-08
    • 2012-05-10
    • 2019-03-03
    相关资源
    最近更新 更多