• Github 中文镜像
Sign inSign up
Watch966
Star102.4k
Fork61.8k
Tag: beex
Switch branches/tags
Branches
Tags
K / 如何做 Kindle 电子书笔记.md
移动浏览 Clone
加载中...
到移动设备上浏览
164 lines 8.73 kB
First commit on 31 Mar 2021

    背景

    阅读、标记、在 Kindle 里简单写几句笔记都属于比较高效的时间,最后整理笔记则是一个比较低效的时间,主要是排版,工具不好使会耗时很久,简单重复性劳动令我不快。可不整理的话又不方便未来回顾查阅,所以我在不断完善自己的笔记流程。

    提出问题

    最耗时的活动有两项:

    1. 💢 不断地“复制 -> 粘贴 -> 复制 -> 粘贴”。
    2. 💢 格式化、排版笔记。

    除此之外,在 PC 上复制 Kindle 笔记附带了一个严重的问题:

    1. 💢 Kindle PC 版,无论是复制粘贴文字,还是批量导出标注,都会在中文之间穿插空格,还有冗余的版权信息,一个一个删除非常麻烦。

    解决问题

    1. 复制粘贴耗时
      • ✔️ 只要标亮内容没有超过全书的 10%,Kindle PC 版就可以一键导出。
    2. 格式化耗时
      • ❌ 类似 Word 的富文本排版方式只能放弃排版,凑合看,否则就只能熬时间一点一点改。
      • ✔️ 如果纯文本使用 Markdown 来排版,则可以快速完成。
    3. 空格的问题
      • ✔️ 使用 VS Code 里的正则替换可以解决。

    实践经历

    我的电子读书笔记经历三个时期:

    1. 印象笔记
      • ❌ 格式化:要么富文本方式,要么使用印象的 Markdown 排版,二者不能结合,也不能使用全部 HTML 代码。
      • ❌ 空格:无解。
      • ☹️ 我选择了删除所有格式,当 .txt 用,其他的就不做什么笔记了。
    2. OneNote
      • ❌ 格式化:只能以富文本方式排文字,而且不能自定义样式。
      • ❌ 空格:无解。
      • ☹️ 这个时期看纯文字类的书依然用印象笔记,理工类的书因为有图片或者公式,用 OneNote。
    3. Beex + VS Code
      • ✔️ 格式化:Markdown + HTML 对于简单的纯文本排版基本属于完美的方案。虽然我更喜欢 reStructuredText,不过受众太小了。
      • ✔️ 空格:VS Code 可以使用正则表达式来进行批量替换。
      • 附加好处:
        • ✔️ VS Code 可以使用列编辑[1],可以将导出的段落批量转为列表。
        • ✔️ 使用 Beex 组织成一个笔记网站,在本地使用浏览器查看,方便快捷美观。
        • ✔️ 需要分享的内容,无需任何修改就可以上传到服务器作为网页分享(比如你现在正在看的这个网站 🧐)。
      • 😃 不需要印象笔记了,理工类的书还是用 OneNote。

    最终方案

    只需三步:

    1. 阅读时直接在 Kindle 标高亮和写笔记,之后导出为 HTML,作为纯文本复制到 VS Code 中。
    2. 用正则表达式删除空格和冗余版权。(VS Code 快捷键:Ctrl + H
      1. 删除中文之间的空格(多点几次批量替换即可替换干净):
        • 匹配栏:([^a-zA-Z0-9, -:<>\(\)\[\]\.+`章篇]) ([^a-zA-Z0-9, -:<>\(\)\[\]\.+`])
        • 替换栏:$1$2
        • 这个正则无法处理正文中类似这篇 文章 写得真好的片段,如要完美需再人工检查。
      2. 导出文件的位置信息在内容前面,所以改为一个列表项当作小标题使用:
        • 匹配栏:^Highlight \([a-zA-Z]*\) - (.*>? ?Location \d+)$
        • 替换栏:\n- $1\n,如果想用小标题,也可以这样:\n## $1\n
          • 如果想让位置信息不那么明显,可以用自定义的样式:\n<div class="loc">$1</div>\n
            <style>
                .loc{
                    color: #aaa;
                    text-align: right;
                }
            </style>
            
      3. 章节:
        • 匹配栏:^(【?第[\d一二三四五六七八九十百 ]+(章|部分|篇)】?[^\r\n]*|Chapter \d.*|前言|序言?)$
        • 替换栏:\n# $1
      4. 手动复制粘贴每条都会插入书籍信息,删掉,只保留位置:
        • 匹配栏:\n\n[^\n\(]+(\(Kindle Locations? [0-9]*(-[0-9]*)?\))[^\n]+$
        • 替换栏: $1
      5. 数字中间的空格(注意可能跟 Markdown 的有序列表冲突):
        • 匹配栏:((\d+[-\./~])|[,(),。?]) (\d+)
        • 替换栏:$1$3
      6. 为中英文之间添加空格:
        • 匹配栏 1:([\u4E00-\u9FFF])([a-zA-Z0-9])
        • 替换栏 1:$1 $2
        • 匹配栏 2:([a-zA-Z0-9%])([\u4E00-\u9FFF])
        • 替换栏 2:$1 $2
    3. 给自己的笔记加上颜色以做区分。

    至此,已经基本消灭了整理纯文字笔记耗时的问题,我只有需要做练习题和画图的笔记依然在依赖 OneNote 了。

    其他

    下面几个问题没有什么好办法,只能手动修改或者“别那么追求完美”:

    • Kindle PC 版导出的笔记有些地方首尾截断不准,可能会多截了个标点符号或者文字出来。
    • 导出时角标没有样式,看起来就是句子末尾多了一个无意义的数字,这对教材类影响较大。

    相关文章