关于EPUB电子书脚注穿插在正文中间影响阅读的问题探究
肆玖爱做白日梦
2026年03月06日 17:44
收录于文集
共9篇
电子爱好者

问题的发现:

喜欢看电子书的朋友可能知道,现在很多比较新的EPUB电子书都有注释内容出现在实际注释位置的前一段,造成内容混乱,影响阅读的情况,就像这样:

这些脚注照理来说应该是隐藏的,点击注释时才通过弹窗显现。

不知道这批epub源头是哪里,怎么都有这些毛病。

看书的时候勉强可以通过字体、格式之类的区分,但还是很烦。特别是我喜欢用tts朗读听书,朗读就无法跳过了,基本没法正常听书。

所以我决定研究一下这个问题,看能不能解决。虽然我对编程和epub制作知之甚少,但接触多了还是能判断一些简单问题。

我研究了一番,发现这个问题有两个可能的原因: 1.阅读软件对最新的epub3标注支持性不好的兼容性问题 2.epub文件为了兼容不同阅读器的注释代码写法造成的兼容性问题


问题的成因:

用sigil打开上图中的这本书,可以看到第一条脚注的代码是这样的:

在这个epub中,每一条注释都像这样,出现了三次。

下面的两条应该是为了兼容多看和掌阅的注释写法(实际上后面我测试用的所有app包括多看没有掌阅,这两天注释都没有生效),上面的那条就是epub3标准的弹窗式脚注。

看到有人说,对epub3支持比较好的阅读器,上面那个<aside type="footnote"这个语句内写的注释内容应该是被隐藏的,不会出现在正文中间,只会有弹窗注释。

这个aside下面有嵌套了<ol……<li之类的元素,这又是其他的注释写法,可能也是为了兼容不同阅读器的注释写法。我不知道aside脚注后面是否就应该这样写,会不会出现互相冲突的问题。

但这显然是不是最优的写法,而是epub为了兼容不同阅读器的妥协办法,搞不好哪款阅读器支持这里的多种注释写法,就会出现问题。而且这样写也让文件多了很多冗余信息。


问题的解决方法与不同阅读软件的表现:

我实在不知道如何解决这个问题,搜了一圈发现贴吧里有一篇贴子讨论,有人是把aside的弹窗脚注删掉,然后在我上面提到的可能是用于兼容多看和掌阅的注释上面改,还有就是把脚注批量搬运到文后,这样就不会影响正文阅读了,赤霓的《EPUB指南——从入门到放弃》里也提到了搬运注释的方法,但似乎和贴吧里的不一样。

不管这么样,这些方法对我来说都比较复杂,需要好好研究一番。所以我暂时还是不考虑,而是想既然脚注内容本来是该被隐藏的,但阅读器不支持,那我手动在css文件里脚注对应的样式里面加入隐藏的代码,会不会就能让脚注正常显示了?

具体怎么操作就不细讲了,大概就是在css文件里脚注样式里插入display: none,或者在html文件里对应的位置插入style="display:none;"。

还要考路到epub2和epub3的区别,还有epub2的html文件头部缺少一些信息似乎也会影响到弹窗的兼容性。

由此我用同一本书制作了多个epub文件,并在多个阅读软件上测试。

最后发现,在我测试的这些软件中,epub2和3并没有区别,epub2的html头是否补全也没有区别,因此最后只大概讲一下软件的表现诧异。

1.PC端koodo reader,原文件显示无问题,在css中隐藏脚注后无问题,表现不错。但如果不是在css中改而是直接在html中改,注释弹窗会是空的。这个软件本身比较新,bug还比较多,小功能也不太齐全,不然真就挺完美的,对epub3支持挺好。评价为可用。

2.PC端calibre自带阅读器。隐藏脚注后正文中虽然没脚注了,但弹窗里也没了。它的弹窗内显示的是注释位置前后的文字,而不是正好链接到脚注,改不改css都不正常。评价为不可用。

3.安卓端静读天下,css中隐藏脚注后显示正常,弹窗正常。但要注意如果脚注原来的css样式里本来就定义了display属性,那就用none把它覆盖掉,不要新加一行不然会冲突,使脚注在正文中无法隐藏。评价为可用。

4.安卓端koreader,原文件正文中会显示脚注,正文下方还会向纸质书一样显示正常的脚注,如果正文中的脚注隐藏那它的效果也是不错的。代码隐藏脚注后,脚注不再显示,也不能跳转或弹窗。评价为不可用。

5.kindle(推送),注释显示方式为跳转页面,由于脚注穿插在正文间,所以基本上是原地跳转。代码隐藏脚注后,脚注不显示,点击注释位置仍然原地跳转。评价为不可用。

6.安卓端lithium,为了测试特意去下载的,表现和kindle一样,还非常卡。评价为不可用。

7.安卓端fbreader,代码隐藏脚注后显示正常,弹窗正常。也是为了测试特意下载的,看起来不错,不过不符合我的使用习惯。评价为可用。

8.文石boox原生阅读器,表现和fbreader一样。评价为可用。

9.安卓端多看,代码隐不隐藏脚注表现没区别,所有epub测试样本一样,正文不显示脚注,但也无法点击唤出弹窗,可能和kindle一样是跳转注释。评价为不可用。


结语:

经过我一夜测试,我发现了,这个问题最好的解决方法就是:催促阅读软件开发者提高兼容性,修改bug。

但这不太现实,靠这个方法可能就遥遥无期了。

所以,次好的解决方法应该就是:将注释全部移到正文后方。

但这个方法有点复杂,而且也不是十全十美,比如有的书注释没没有序号标记,或者有重复序号的,注释放一起就很乱了。不过既然它能弹窗,又放到了最后,就当这些注释隐藏了吧。

至于我这次研究的这个非常简单的隐藏注释的方法,显然是有问题的,不太建议使用。如果选择合适的app,自己应急用用还可以,要是流到网络上,就是一坨兼容性问题的垃圾epub。


耗费太多精力研究这个问题,最后发现没什么意义。累了。注释如何批量迁移位置下次再研究吧。

若果有好办法解决这个问题,希望各位懂epub的大佬多多指教。