我有一本书,由几个有序的 Markdown 文件组成。我正在使用 Pandoc 将它们转换为 epub 文件,一切都很好。我可以嵌入我喜欢的字体并提供我自己的 CSS 等。问题是输出文件包含 Markdown 中不存在的元素(作为“#”标头元素)。然后,ToC 功能会选取该元素并将其插入到目录中。我没有要求该元素存在,而且我找不到将其关闭的选项。
这是如何重现的,使用比我的实际情况简单得多的情况,但足以证明问题。我有以下文件结构:
- pandoctest/
- src/
- file1.md
- file2.md
- epub.yml
内容如下:
file1.md:
Here is some text.
file2.md:
# Chapter one
The chapter goes here.
epub.yml:
---
title:
- type: main
text: A Book
creator:
- role: author
text: Some Dude
---
我正在运行的 pandoc 命令是:
pandoc -o output.epub epub.yml --toc src/*
最终结果是这样的:
第 1 页: 使用来自
epub.yml
的标题和作者元素的适当标题页
第 2 页: 目录页面。顶部是来自
epub.yml
的标题。下面是两个目录条目。第一个是书的标题,指的是我不想出现在下一页上的元素。第二个是“第一章”,它指的是我的 Markdown 中的 # Chapter One
元素(这是合适的)。
第 3 页: 首先,不需要的元素,在原始 XML 中如下所示:
<h1 class="unnumbered" data-number="">A Book</h1>
然后,“这是一些文字”,我确实告诉它放在那里的一段文字。
第 4 页: 正确呈现的“第一章”页面。
这里的问题是如何让 pandoc 不渲染 Markdown 中不存在的“未编号”标题元素。它搞砸了目录,我从来没有要求它在那里。
作为参考,这里是我在这里的小测试中呈现的 epub:https://www.dropbox.com/s/dj4jo08g7q4f9i2/output.epub?dl=0
这发生在我身上,但我正在从 HTML 文件生成 EPUB。每个 HTML 文件都有一个
<h1>
元素,但它被隐藏在其他元素之下。对我来说,解决方法是创建一个顶级 <h1>
并将其添加到 body
之后。之后,pandoc 似乎停止创建额外的元素。
我不确定 Markdown,但我确实看到您的第一个 Markdown 页面 (file1.md) 没有任何 H1 元素。所以你可以尝试添加一个,例如
# Title
看看会发生什么。