我试图确定一个问题与grobWidth
适用于gtable
对象(见gtable:::widthDetails.gtable
);当将大小指定为单元的总和时(unit.arithmetic
对象),
library(grid)
u = unit(1,"npc") + unit(2,"mm")
grid:::absolute.units(u)
#Error in UseMethod("absolute.units") :
# no applicable method for 'absolute.units' applied to an object of class #"c('unit.arithmetic', 'unit')"
值得注意的是,absolute.size
工作,即使它调用grid:::absolute.units
,
grid::absolute.size(u)
#[1] 1null+2mm
这怎么可能?
OK,浏览网格源代码,我发现方法是定义的,
grid:::absolute.units.unit.arithmetic(u)
但没有导出。所以absolute.size()
知道它,因为它在包命名空间中,但是从外部调用它(例如gtable)失败。