我的问题类似于this post,但不是相同。在使用几个相互链接的HTML文件作为输入时,我无法弄清楚正确的 pandoc命令行参数来维护/解析跨文档链接。
假设我有两个文件,chapter1.xhtml和chapter2.xhtml位于/ home / user / Documents文件夹中,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<h3>Chapter 1</h3>
<p><a href="/home/user/Documents/chapter2.xhtml">Next chapter</a><br /></p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</body>
</html>
包含指向下一个文档的链接。
和
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<h3>Chapter 2</h3>
<p><a href="/home/user/Documents/chapter1.xhtml">Previous chapter</a><br /></p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</body>
</html>
包含指向上一个文档的链接。
我使用了以下命令行参数:
$ pandoc -s --toc --verbose -o /home/user/Documents/output.markdown /home/user/Documents/chapter1.xhtml /home/user/Documents/chapter2.xhtml
我得到了以下输出:
---
---
- [Chapter 1](#chapter-1)
- [Chapter 2](#chapter-2)
### Chapter 1
[Next chapter](/home/user/Documents/chapter2.xhtml)\
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
### Chapter 2
[Previous chapter](/home/user/Documents/chapter1.xhtml)\
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
当我选择docx或latex / pdf作为输出格式时,也会出现此问题。我也尝试使用相对链接,但没有任何效果。
解决跨文档链接的正确参数是什么?
tl; dr I.e.我不想要包含原始路径的链接引用;我希望他们指向新的输出文档。
答案 0 :(得分:2)
问题是您的链接包含绝对路径(/home/user/Documents/chapter1.xhtml
)而不是相对路径(chapter1.xhtml
)。我无法想象包含绝对路径的ePUB文件,如果是这样,文件中的链接将只能在您的计算机上正常工作。因此解决方案必须在将这些ePUB文件提供给pandoc之前修复这些文件。
请注意,从markdown到epub并返回到html的pandoc往返工作正如预期的那样:
$ pandoc -o foo.epub
# foo
adfs
# bar
go [to foo](#foo)
$ unzip foo.epub
$ cat ch002.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="pandoc" />
<title>bar</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
</head>
<body>
<div id="bar" class="section level1">
<h1>bar</h1>
<p>go <a href="ch001.xhtml#foo">to foo</a></p>
</div>
</body>
</html>
$ pandoc foo.epub
<p><span id="ch001.xhtml"></span></p>
<div id="ch001.xhtml#foo" class="section level1">
<h1>foo</h1>
<p>adfs</p>
</div>
<p><span id="ch002.xhtml"></span></p>
<div id="ch002.xhtml#bar" class="section level1">
<h1>bar</h1>
<p>go <a href="#ch001.xhtml#foo">to foo</a></p>
</div>
P.S。
使用两个输入文档,如:
pandoc -o output.md chapter1.xhtml chapter2.xhtml
作为pandoc README状态:
如果给出了多个输入文件,pandoc将在解析之前将它们全部连接起来(在它们之间用空行)。
因此,对于pandoc进行的解析,它将其视为一个文档......所以难怪跨文件链接不起作用。