2014-10-16 53 views
2

我广泛使用Markdown和Pandoc。但是,我想生成一个带有嵌入式链接的PDF(与往常一样),但是如果打印文档,我想在文档的末尾添加一个链接表。有没有办法自动做到这一点?Pandoc:有没有办法在markdown中的PDF中包含链接的附录?

Ex。

Title 
----- 


[Python][] is cool! 

... 

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

在那里我会在我的PDF的东西实际上是获得一个额外的页面一样

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

谢谢!

回答

3

这是用滤波器很容易实现的。

这里是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>\ 
相关问题