Pandoc:是否有一种方法可以从Markdown在PDF中包含链接附录?

3
我经常使用Markdown和Pandoc。然而,我希望生成一个包含嵌入式链接的PDF文档(像往常一样),但在文档被打印的情况下,我也想在文档末尾包括一个链接表。有没有自动完成这个任务的方法?
例如:
Title
-----


[Python][] is cool!

...

## Links ##
[Python]: http://python.org
[Pip]: https://pip.readthedocs.org

我会在PDF中获得额外的一页,上面会显示以下内容:

Python: http://python.org
Pip: https://pip.readthedocs.org

谢谢!

1个回答

4

使用过滤器很容易实现这一点。

这里是linkTable.hs。一个添加链接表格到文档末尾的过滤器。

import Text.Pandoc.JSON
import Text.Pandoc.Walk
import Data.Monoid

main :: IO ()
main = toJSONFilter appendLinkTable

appendLinkTable :: Pandoc -> Pandoc
appendLinkTable (Pandoc m bs) = Pandoc m (bs ++ linkTable bs)

linkTable :: [Block] -> [Block]
linkTable p = [Header 2 ("linkTable", [], []) [Str "Links"] , Para links]
  where
    links = concatMap makeRow $ query getLink p
    getLink (Link txt (url, _)) = [(url,txt)]
    getLink _ = []
    makeRow (url, txt) = txt ++ [Str ":", Space, Link [Str url] (url, ""), LineBreak]

使用ghc linkTable.hs编译过滤器。输出结果如下。

> ghc linkTable.hs 
[1 of 1] Compiling Main             ( linkTable.hs, linkTable.o )
Linking linkTable ...

> cat example.md 
Title
-----


[Python][] is cool!

[Pip] is a package manager.

...

[Python]: http://python.org
[Pip]: https://pip.readthedocs.org

然后使用筛选器运行pandoc

> pandoc -t markdown --filter=./linkTable example.md
Title
-----

[Python](http://python.org) is cool!

[Pip](https://pip.readthedocs.org) is a package manager.

...

Links {#linkTable}
-----

Python: <http://python.org>\
Pip: <https://pip.readthedocs.org>\

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接