如何让Pandoc保存我的参考链接?

时间:2019-03-15 02:40:24

标签: markdown pandoc

我正在Visual Studio Code中使用Pandoc格式的扩展名来格式化我的降价文件。

我以类似于Stack Overflow的样式编写参考链接,如下所示:

$("#you").attr("data-you","New Value");

Pandoc确实破坏了这些引用。我尝试了各种选项和命令行实验的组合,例如:

This is a test file, created by Tim at [Tigra Astronomy][tigra].

This is another line.

[tigra]: http://tigra-astronomy.com "Tigra home page"

该命令实际上产生以下输出:

  

这是一个测试文件,由Tim [Tigra Astronomy] []创建。

     

这是另一行。

     

[Tigra天文学]:http://tigra-astronomy.com“ Tigra主页”

...非常接近,但仍不完全存在。那么,有什么办法可以说服Pandoc保持参考文献的“原样”?

2 个答案:

答案 0 :(得分:1)

  

那么有没有办法说服Pandoc将我的参考文献“保持原样”?

简而言之,,因为Pandoc不会保留该信息。

使用命令pandoc --from markdown --to native,可以使Pandoc输出Abstract Syntax Tree(AST),这是Pandoc对文档的内部本机表示。对于您的示例文档,AST如下所示(另请参见online demo):

[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Space,Str "file,",Space,Str "created",Space,Str "by",Space,Str "Tim",Space,Str "at",Space,Link ("",[],[]) [Str "Tigra",Space,Str "Astronomy"] ("http://tigra-astronomy.com","Tigra home page"),Str "."]
,Para [Str "This",Space,Str "is",Space,Str "another",Space,Str "line."]]

如您所见,该链接未保留您为其分配的“名称”。因此,当Pandoc将AST转换回Markdown时,它无法使用您的“名称”,因为它不可用。最初,我以为您也许可以使用filtercustom writer来包含您的参考名称,但由于该名称根本不可用,因此也不起作用。

最后,这不足为奇。 Pandoc不承诺保留文档中包含的所有元数据。实际上,文档warns

  

因为pandoc对文档的中间表示较少   比它所转换的许多格式更具表现力,   不要期望每种格式之间都能完美转换。   Pandoc尝试保留文档的结构元素,但是   不格式化诸如边距大小之类的详细信息。还有一些文件   元素(例如复杂表格)可能不适合pandoc的简单元素   文档模型。从pandoc的Markdown转换为全部   格式追求完美,将格式转换成更具表现力的格式   比pandoc的Markdown可能有损。

当然,参考名称是Markdown的特定功能。但是,Markdown支持以多种方式表示链接,并且维护有效的Markdown文档不需要维护引用名称。因此,引用名称是Pandoc失去的东西之一。

但是,如果Pandoc仅输出相同格式,为什么还要通过AST运行它。因为这就是它的架构方式。有关更多信息,请参见API documentation

答案 1 :(得分:0)

有一种本地方法可以将链接标题保留在Pandoc markdown中,例如:I'm an inline-style link with title

[I'm an inline-style link with title](https://www.noproblemo.ca "No Problemo")

如您所见,标题用括号括起来,与引号中的URL隔开一个空格。