我试图使用pandoc(有hakyll,但这可能不重要)来实现以下目的:
target="_blank"属性添加到自动生成的每个链接.问题在于,in 的定义Inlinepandoc似乎只支持某些类型的Inlines的属性,例如,for Span和Code,而不是其他类型,例如for Link和Image.
这是一个任意的限制pandoc,还是因为我不理解的某些原因而故意制作的?此外,有没有办法实现我想要的,而不采用低级字符串处理或使用RawInline构造函数?
这是一个MWE:
import Text.Pandoc
import Text.Pandoc.Walk
fixLinks :: Pandoc -> Pandoc
fixLinks = walk fixLink
where fixLink (Link inlines (url, title)) =
Link inlines (url, "I want to add a target=_blank to this link!")
fixLink inline = inline
main = do
let md = "This is a link to [StackOverflow](http://stackoverflow.com/)."
(putStrLn . writeHtmlString def . fixLinks . readMarkdown def) md
Run Code Online (Sandbox Code Playgroud)
小智 3
图像和链接属性在Pandoc 与 Multimarkdown Wiki页面上被记录为“不在 Pandoc 中”的功能。
围绕此存在一些未解决的问题,例如允许向所有 Markdown 元素添加属性#684。当我查看时,我没有看到附加的代码/拉取请求来实现它们。
如果您想target="_blank"向自动生成的链接添加属性,我认为您需要同时使用解决方法。(请注意,如果您使用非 Pandoc HTML 解析器对 HTML 进行后处理,则可能不需要使用原始字符串处理。)