使用AltSearch格式化Kindle读书笔记
AltSearch是LibreOffice Writer的一个用于自动化执行复杂文本替换操作的扩展,能够在不需要复杂编程的条件下进行一些文档格式的手动与批量转换和调整。该扩展除了支持普通文本与正则表达式的查找与替换外,还能够进行文本与段落样式的匹配与替换,这是其他的排版软件,包括微软的Office,所不具备的。利用这些功能,将其写为简单的批处理脚本,就可以自动地格式化文件,满足常见的学习与工作需求,大大提高工作效率。本文以格式化由Kindle 导出的笔记为例,介绍AltSearch的基本使用方法。
由Kindle iPad版导出的芝加哥格式的笔记直接存为LibreOffice Writer文件,其格式基本与纯文本无异,并不适合结构化的浏览或发布为豆瓣笔记。所以,需要对文本格式进行调整。对此,首先在LibreOffice Writer中点击绿色望远镜按钮,打开AltSearch对话框:

然后依次执行如下步骤:
删除“标注(黄色)”之类的标记和后面的(原版书)页码:
搜索:^标注\(.*\)\s*-\s*第\s*\d+\s*页·
替换为空字符
搜索“笔记”并删除后面的(原版书)页码:
搜索:^(笔记\s*-\s*)第\s*\d+\s*页·
替换:\1
将“位置”替换为“P”并将其与下一行合并:
搜索:位置\s*(\d+)\s*\p
替换: P\1
将所有段落设为“Quotations”样式:
搜索:.*
替换:\P{Quotations}
将所有以“笔记”开头的段落设为“Text Body”样式:
搜索:^\s*笔记
替换:\P{Text Body}
上述步骤手动操作起来比较繁琐,我们可以利用AltSearch的批处理模式将其写为脚本。点击AltSearch对话框中的“Batch”按钮:

在如下打开的批处理模式对话框中点击“Edit”,打开文本编辑器编辑脚本。需要注意的是,如果是第一次运行AltSearch,点击“Edit”后会提示使用什么编辑器进行编辑,直接输入编辑器的命令名确认即可(在Linux下可以使用kate,在Windows下用notepad)。

然后,将下面的脚本拷贝到文件末尾“[End]”的前一行即可。
[Name] Process the selected Kindle notes in Chicago format
[Parameters] MsgOff Regular CurrSelection [Find]^标注\(.*\)\s*-\s*第\s*\d+\s*页·
[Replace]
[Command] ReplaceAll [Find]^(笔记\s*-\s*)第\s*\d+\s*页·
[Replace]\1
[Command] ReplaceAll [Find]位置\s*(\d+)\s*\p
[Replace]P\1
[Command] ReplaceAll [Find].*
[Replace]\P{Quotations}
[Command] ReplaceAll [Find]^\s*笔记
[Replace]\P{Text Body}
[Command] ReplaceAll
可以看出,这个脚本的语法非常简单:方括号中的单词表示需要执行的命令,括号之后则为该命令执行所需的参数。目前用到命令有:
Name:定义脚本功能名称。
Parameters:指定脚本功能执行时的参数,包括:
MsgOff:关闭提示信息。
Regular:使用正则表达式查找与替换。
CurrSelection:仅操作当前选中的文本。
Find:指定待查找的文本或正则表达式。
Replace:指定需替换的文本或样式
\1:反斜线后加一个数字N,表示正则表达式中第N括号中匹配的部分。
\P{Paragraph style name}:将名称为“Paragraph style name”的段落样式应用于查找到的文本。该段落样式需事先在LibreOffice Writer中定义好。
Command:指定需要执行的命令。ReplaceAll则表示对所有匹配的文本执行替换。
更多AltSearch的功能可以查阅其说明书。
接下来,点击“Refresh”钮,则可以看到刚才新添加进去的脚本功能:

这时,在LibreOffice Writer选中所有需要处理的文本,在AltSearch对话框中选中需要执行的脚本功能,点击“Execute”,便可以完成自动化处理工作。最后,根据个人需要,可以再手动设置Kindle图书中各个章节的标题样式。至此,就可以得到一份漂亮的读书笔记了。
使用AltSearch格式化Kindle读书笔记的更多相关文章
- SQL 横转竖 、竖专横 (转载) 使用Dapper.Contrib 开发.net core程序,兼容多种数据库 C# 读取PDF多级书签 Json.net日期格式化设置 ASPNET 下载共享文件 ASPNET 文件批量下载 递归,循环,尾递归 利用IDisposable接口构建包含非托管资源对象 《.NET 进阶指南》读书笔记2------定义不可改变类型
SQL 横转竖 .竖专横 (转载) 普通行列转换 问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《javascript权威指南》读书笔记——第一篇
<javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...
- TJI读书笔记17-字符串
TJI读书笔记17-字符串 不可变的String 重载”+”和StringBuilder toString()方法的一个坑 String上的操作 格式化输出 Formatter类 字符串操作可能是计算 ...
- Linux Shell脚本攻略 读书笔记
Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...
- 读书笔记-Coding faster(英文版)
读书笔记-Coding faster(英文版) Getting More Productive with Microsoft visual Studio Author: Zain Naboulsi S ...
- 读书笔记 之 《阿里巴巴Java开发手册》
一.前言 这本书主要定义了一些代码的规范以及一些注意事项.我只根据我自己的不足,摘录了一些内容,方便以后查阅. 二.读书笔记 命名 1.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符 ...
- MacTalk·人生元编程 - 读书笔记
简介 <MacTalk·人生元编程>是一本随笔文集,主要内容来自作者的微信公众平台"MacTalk By 池建强".本书撰写于2013年,书中时间线却不止于此.作者以一 ...
- 《玩转Django2.0》读书笔记-Django配置信息
<玩转Django2.0>读书笔记-Django配置信息 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 项目配置是根据实际开发需求从而对整个Web框架编写相应配置信息. ...
随机推荐
- ElasticSsarch汇总
用途: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索: 实时分析的分布式搜索引擎: 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据. 点击查看安装.基本增删改查操作REST ...
- 使用bat脚本永久激活Windows系统(摘抄)
使用bat脚本永久激活Windows系统 每次重装完系统后,右下角会提示系统未激活,无法进行一些个性化设置. 在这里我自己写了一个bat脚本用于激活Windows系统.(仅供学习) 文件下载: 链 ...
- nuxt.js实战之引入jquery
head: { title: 'nuxt', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-widt ...
- centos7搭建gitlab服务器、汉化
1.下载rpm安装包 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.8.5-ce.1.el7.x86_64.rp ...
- Tomcat设计模式
omcat 系统架构与设计模式,第 2 部分 设计模式分析 系列内容: 此内容是该系列 2 部分中的第 2 部分: Tomcat 系统架构与设计模式 门面设计模式 门面设计模式在 Tomcat 中有多 ...
- C#设计模式(17)——观察者模式
1.观察者模式介绍 观察者模式又叫发布-订阅模式,它定义了对象间的一种一对多关系,当一个对象的状态发生改变时,所有依赖于它的对象都会收到通知并被自动更新.观察者模式就四个角色:抽象主题,具体主题,抽象 ...
- ACM-ICPC 2018 徐州赛区网络预赛 H Ryuji doesn't want to study (树状数组差分)
https://nanti.jisuanke.com/t/31460 题意 两个操作.1:查询区间[l,r]的和,设长度为L=r-l+1, sum=a[l]*L+a[l+1]*(L-1)+...+a[ ...
- Git Gerrit使用
Git Gerrit 操作都用 git bash操作: 如果想用 cmd 或者 PowerShell,系统环境变量 Path 添加 Git 安装路径,如: C:\Program Files (x86) ...
- python 错误捕获机制分析
python语言是编程中使用率在Top 3之内的语言.python语言以灵活与简单著称,那么越是灵活的语言越需要判断出错的功力. 简单示例 以下是一个简单的错误程序,被除数不可为0,那么看看该代码的执 ...
- java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。
java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...