pandoc:如何在另一个Markdown文件中链接到某个部分?

6
我希望创建两个包含互相链接的markdown文件,这些文件需要能够在pandoc将它们合并为一个HTML文件或者分别转换为多个HTML文件时都能正常工作。但问题在于,如果是后一种情况,链接需要知道其他HTML文件的名称才能正常工作。
有没有一种方法让pandoc在不创建不同版本的markdown输入的情况下管理这个问题呢?
1个回答

7
以下使用Lua过滤器来修复您的链接。它假定链接是通过在定义链接的文件前缀中编写的,例如[在这里查看](some-other-file.md#topic)。一些编辑器可以轻松切换到相应的文件,因此这可能是一个额外的优势。
当转换为多个HTML文件时,我们只需要将这些链接中的.md文件扩展名替换为.html即可。
-- fix-links-multiple-files.lua
function Link (link)
  link.target = link.target:gsub('(.+)%.md%#(.+)', '%1.html#%2')
  return link
end

使用以下命令运行:

pandoc --lua-filter fix-links-multiple-files.lua file-1.md -o file-1.html

在处理单个文件时,我们只需删除链接中的文件部分:
-- fix-links-single-file.lua
function Link (link)
  link.target = link.target:gsub('.+%.md%#(.+)', '#%1')
  return link
end

开始运行

pandoc --lua-filter fix-links-single-file.lua *.md -o outfile.html

如果链接中不包含任何空格,这对我有效。当涉及到空格时,是否有特殊的处理方式? - Alex Styl

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