我厌倦了代码这回答安排加载的图像includegraphics
但出现一些我无法修复的错误。以下代码
module(...,package.seeall)
local function get_boxes(parent)
local boxes = {}
for n in node.traverse(parent.head) do
if n.width or n.height or n.depth then
table.insert(boxes, {
w = n.width,
h = n.height + n.depth,
box = node.copy(n),
})
end
end
return boxes
end
产生此错误:
generativelayout.lua:9: attempt to perform arithmetic on a nil value (field 'height')
stack traceback:
./generativelayout.lua:9: in upvalue 'get_boxes'
./generativelayout.lua:100: in function 'generativelayout.process'
[\directlua]:1: in main chunk.
\endgenlayout ->\egroup \directlua {gen.process()}
有没有办法来解决这个问题?
该代码不适用于建议的fbox
节点(在链接的示例中),也不适用于由生成的节点includegraphics
。由哪种节点类型生成的节点includegraphics
以及它们具有宽度和高度吗?
答案1
由于您优化了二维对象的放置,因此您只对真正延伸到二维的对象感兴趣,因此需要水平(width
)和垂直(height
和depth
)维度。仅在一个方向上延伸的对象(例如空白)不相关。因此,您可以让您的测试更具体:
代替
if n.width or n.height or n.depth then
和
if n.width and n.height and n.depth then
仅查看包含所有三个字段的节点,例如 hlists、vlists 和规则(在 LuaTeX 中,图像在内部被视为规则)。