Wenn使用交叉文档链接将markdown文件转换为html,docs或pdf链接在此过程中被破坏。 我使用pandoc 1.19.1和MikTex。 这是我的测试用例:
File1: doc1.md
[link1](/doc2.md)
File2: doc2.md
[link2](/doc1.md)
调用pandoc的html结果: pandoc doc1.md doc2.md -o test.html 看起来像这样:
<p><a href="/doc2.md">link1</a> <a href="/doc1.md">link2</a></p>
作为pdf,链接已创建,但不起作用。导出为docx看起来是一样的。
我认为当处理多个文件并将其连接到同一个输出文件时,结果应该包含页面内部链接,例如html-output的锚链接。但是它在输出文件中创建的链接就像在输入文件中一样。甚至原始文件扩展名.md也会保留在创建的链接中。 我做错了什么?
我的问题看起来有点像这样: pandoc command line parameters for resolving internal links 在这个问题的评论中,据说5月份的拉动请求会修复该错误。但这个bug似乎仍然存在。 问候 乔治
答案 0 :(得分:1)
正如pandoc README所述:
如果给出了多个输入文件,pandoc将在解析之前将它们全部连接起来(在它们之间用空行)。
因此,对于pandoc进行的解析,它将其视为一个文档...因此,您必须在多个文件中构建链接,就好像它们都在一个文件中一样,另请参阅{{3}有关详细信息。
答案 1 :(得分:0)
尝试将Gitlab Wiki导出为PDF时,我遇到了类似的问题。页面之间的链接看起来像filename-of-page#anchor-name
,页面内的链接看起来像#anchor-name
。我写了一个(棘手又脆弱的)pandoc过滤器,该过滤器为我解决了这个问题,谁知道它对其他人有用。
为了解释我的解决方案,我将有两个测试文件,101-first-page.md
:
# First page // Gitlab automatically creates an anchor here named #first-page
Some text.
## Another section // Gitlab automatically creates an anchor here named #another-section
A link to the [first section](#first-page)
和102-second-page.md
:
# Second page // Gitlab automatically creates an anchor here named #second-page
Some text and [a link to the first page](101-first-page#first-page).
将它们串联起来以在pandoc中呈现为一个文档时,页面之间的链接会随着锚点的变化而中断。在串联文件的下方,带有注释的锚点。
# First page // anchor=#first-page
Some text.
## Another section anchor=#another-section
A link to the [first section](#first-page)
# Second page // anchor=#second-page
Some text and [a link to the first page](101-first-page#first-page). // <-- this anchor no longer exists.
由于链接目标不正确,因此第二页到第一页的链接断开。
通过先通过pandoc过滤器分别预处理所有markdown文件,然后将生成的json文件连接起来,我就能使所有链接正常工作。
101-A file on the wiki.md
应该具有名为A file on the wiki
的第一级头。this gist中提供了过滤器本身(以及pandoc脚本)。
它的作用是:
first-page
first-page-another-section
。#first-page-first-page
101-first-page#first-page
成为#first-page-first-page
。通过该过滤器分别运行每个markdown文件并将其转换为json文件后,它会连接json文件并将 that 转换为PDF。