缺少pandoc中链接和其他类型元素的属性

nic*_*kie 11 haskell pandoc

我试图使用pandoc(有hakyll,但这可能不重要)来实现以下目的:

  1. 阅读降价文件.
  2. 将其转换为HTML.
  3. target="_blank"属性添加到自动生成的每个链接.

问题在于,in 的定义Inlinepandoc似乎只支持某些类型的Inlines的属性,例如,for SpanCode,而不是其他类型,例如for LinkImage.

这是一个任意的限制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 进行后处理,则可能不需要使用原始字符串处理。)