How can I use pandoc-filters to transform relative links like [foo](act1.jpg)
to absolute links [foo](pathtoact1/act1.jpg)
. I want to produce html5 document
Preferred with lua because its minimal footprint. Perhaps we could use this example for extracting document links info.
答案 0 :(得分:1)
让我们一步一步地尝试。您已经找到了一个非常相关的示例,这意味着您大致了解如何使用lua过滤器,并且知道过滤器函数对同名元素起作用。您还知道您将要修改链接,以便您的过滤器看起来像这样:
function Link (element)
-- fix link targets
return element
end
我们还不知道链接element
的样子,所以我们通过在页面中搜索链接来查看文档。经过一些搜索,我们找到了description for the Link
constructor。文档中Somewhere表示pandoc也使用它来创建Link
元素,因此理解这一点将回答我们的大部分问题。
可以使用构造函数中的参数名称访问元素的属性。要获得链接目标,我们只需要编写element.target
。
function Link (element)
element.target = fix_path(element.target)
return element
end
因此,让我们首先考虑修复路径需要做些什么。显然,我们只需要concatenate two strings,即。链接路径和路径前缀。
function fix_path (path)
return 'path/prefix/' .. path
end
所以我们基本上完成了。但这只能修复链接。但是,文档中通常有其他路径。最值得注意的是指向图像的路径。快速搜索图像 reveals的文档,保存图像路径的属性名为src
。我们可以使用它来过滤图像,因此完整的过滤器如下所示:
function fix_path (path)
return 'you/path/prefix' .. path
end
function Link (element)
element.target = fix_path(element.target)
return element
end
function Image (element)
element.src = fix_path(element.src)
return element
end
Voilà,你的过滤器。