我正在尝试使用pandoc
(使用hakyll
,但这可能并不重要)以实现以下目标:
target="_blank"
属性。问题是pandoc
中的definition of Inline
似乎只支持某些类型Inline
的属性,例如Span
和Code
,而不是其他人,例如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
答案 0 :(得分:1)
图片和链接属性在Pandoc vs Multimarkdown Wiki页面上记录为“不在Pandoc中”的功能。
围绕此问题存在未解决的问题,例如Permit adding attributes to all Markdown elements #684。当我查看时,我没有看到附加的代码/拉取请求来实现它们。
如果您想为自动生成的链接添加target="_blank"
属性,我认为您需要在此期间使用解决方法。 (请注意,如果使用非Pandoc HTML解析器对HTML进行后处理,则可能不需要使用原始字符串处理。)
答案 1 :(得分:0)
您应该可以使用pandoc filter执行此操作。
pandoc-attributes过滤器可以在markdown
和html
中读取和写入属性