最近找了几本书,发现注释跳转老是翻页影响阅读,甚至有的书居然注释无跳转,严重影响看书的乐趣,于是乎有了此文。
用户可以通过单击文内脚注的图标,弹出显示脚注内容的窗口。文内注可以支持复杂的内容描述,比如多段落,带有样式的文本等等,具体描述如下:
在需要插入注的位置插入如下代码:
<a class="duokan-footnote"href="#df-1">![]( ../Images/note.png)</a>
在文章的末尾插入如下代码:
<li class="duokan-footnote-item"id="df-1"><p>这是一个注释文本。</p></li>
</ol>```
注和内容之间使用id链接,通过这样的扩展方式,可以将整个章节的所有文内注内容集中在一个有序列表中,这部分内容不会直接在页面上渲染出来,而是通过应用层的交互来呈现。
据此,我们可以在书内采用*正则查找*和*全书替换*的方式来修改注释。
1. 选中你要修改的电子书右键点击<u>*编辑书籍*</u>,然后插入文件**note.png**,你可先在网上找到无数这样的图片下载来使用,我用的是下图:
![note.png](http://upload-images.jianshu.io/upload_images/1280857-d8cdc8aa6d2c2fae.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
这样之后将`content.opf`文件中的`<item href="images/note.png" id="id" media-type="image/png"/>`修改为`<item href="Images/note.png" id="note.png" media-type="image/png"/>`
2. 修改**stylesheet.css**样式表,加入如下代码定义注释:
/** 多看注释定义 /
ol.duokan-footnote-content p {
font-size: 1em;
text-indent: 0;
}
img.duokan-footnote {
width: 0.8em;
}
li.duokan-footnote-item {
font-family: "ht","微软雅黑","黑体","zw",sans-serif;
text-align: left;
color: 0;
font-size: 1em;
line-height: 1.2;
padding: 0px;
list-style-type: none;
}
li.duokan-footnote-item a {
color: #000;
}
p.footnote-text {
font-family: "ht","微软雅黑","黑体","zw",sans-serif;
text-align: left;
color: 0;
font-size: 1em;
line-height: 1.2;
padding: 0px;
}
/ 多看注释定义结束 **/
3. 现在以《周》一书为例,显示怎样用calibre自带的正则函数快速全书自动修改注释为多看式弹出注释。首先按`Ctrl+F`弹出搜索窗口,模式选`Regex-fuction`,在**查找栏**输入正则表达式([这里](https://deerchao.net/tutorials/regex/regex.htm)有个正则30分钟入门教程):```<(sup).*?[^>]*>[^br]+?</\1>```,在**函数栏**点击创建,弹出窗口输入:
def replace(match, number, file_name, metadata, dictionaries, data, functions, *args, **kwargs):
section_number = '%d' % number
replace.file_order = 'spine'
> 以上代码参考自calibre官方正则函数帮助文档,里面有api的用法,脚本语言为Python,[点击直达](https://manual.calibre-ebook.com/function_mode.html)。
将其命名为`footnote`文件并保存,在文件选框里可以选**当前文件**也可以选**所有文本文件**,最后点击**替换所有**。如此则可以把所有注释换成图片框,并会自动从1开始递增数字添加ID号。见下图:
![注释.png](http://upload-images.jianshu.io/upload_images/1280857-2a284a4c2453c95b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
然后在页面中定位到注释文本内容处,在开头加上`<ol class="duokan-footnote-content">`,接着模式还是选`Regex-fuction`,在**查找栏**输入`<p class="annotation-text">
`,在**函数栏**点击创建,弹出窗口输入:
def replace(match, number, file_name, metadata, dictionaries, data, functions, *args, **kwargs):
section_number = '%d' % number
return '<li class="duokan-footnote-item" id="fn' + section_number + '"><p class="footnote-text">'
replace.file_order = 'spine'
将其命名为`footnotetext`文件并保存,在文件选框里可以选**当前文件**也可以选**所有文本文件**,最后点击**替换所有**。如此则可以把所有注释内容改成对应的弹出窗口,并会自动从1开始递增数字添加ID号。
最后点击`规范HTML`图标,让其自动补全未添加的闭合标签即可。