代码之家  ›  专栏  ›  技术社区  ›  Tim Long

我怎样才能让Pandoc保存我的参考链接?

  •  0
  • Tim Long  · 技术社区  · 6 年前

    我正在使用visual studio代码中的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"
    

    潘多克真的弄坏了这些参考资料。我尝试过各种选项和命令行实验的组合,例如:

    pandoc .\input.md --from markdown --to markdown-shortcut_reference_links --reference-links --reference-location=document
    

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

    这是一个测试文件,由tigra天文学公司的tim创建。

    这是另一条线。

    [提格拉天文学]: http://tigra-astronomy.com “蒂格拉主页”

    ……很接近,但仍然不太接近。那么,我有没有办法说服潘多克让我的推荐信保持“写好的”?

    0 回复  |  直到 6 年前
        1
  •  1
  •   Waylan    6 年前

    所以我有办法说服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时,它不能使用您的“name”,因为它不可用。起初我以为也许你可以用 filter custom writer 包括您的引用名称,但这也不起作用,因为名称根本不可用。

    最后,这一点也不奇怪。pandoc不承诺保留文档中包含的所有元数据。事实上,文件 warns :

    因为pandocs文档的中间表示形式较少 比它之间转换的许多格式更有表现力 不要期望每种格式之间都有完美的转换。 pandoc试图保留文档的结构元素,但是 不格式化详细信息,如边距大小。还有一些文件 元素,比如复杂的表,可能不适合pandocs simple 文档模型。而从pandoc的markdown转换为all 格式追求完美,格式转换更具表现力 比预期的有可能有损。

    当然,引用名称是一个特定于标记的功能。但是,标记支持以多种方式表示链接,并且维护引用名称对于维护有效的标记文档是不必要的。因此,引用名是pandoc的一个缺点。

    但如果只是输出相同的格式,为什么pandoc需要运行ast。因为这就是它的架构。见 API documentation 了解更多信息。

    推荐文章