使用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框架编写相应配置信息. ...
随机推荐
- js 实现数据结构 -- 队列
原文: 在 Javascript 中学习数据结构与算法. 概念: 与栈相反,队列是一种遵循先进先出 (FIFO / First In First Out) 原则的一组有序的项:队列在尾部添加新元素,并 ...
- Spring MVC 使用介绍(四)—— 拦截器
一.概述 1.接口定义 拦截器由HandlerInterceptor接口定义: public interface HandlerInterceptor { // 预处理方法 boolean preHa ...
- 帝国cms 不能正常显示最新文章
后台能正常刷新,但前台就是不能正常显示, 把网站从c盘换到d盘,好了,原来是权限的问题
- java入门--学习地址
发现java很多地方都在用,纠结很久该学python还是java. 目前先已python为主,java可以有初步了解能看懂代码就行. --------------------------------- ...
- Mac新手必看教程—让你离熟练操作mac只差十分钟
本文收录于:风云社区(提供各类mac软件资源下载) 本文源自:什么值得买 无论轻薄办公本.还是赶超台式性能的游戏本,关注#笔记本攻略#栏目,解决笔记本电脑从选购到使用的各种问题. 引子 大部分用户接触 ...
- 启动多个logstash脚本
一台服务器上启动多个logstash脚本 # more logstash_click #!/bin/sh # Init script for logstash # Maintained by Elas ...
- Entity Framework入门教程(5)---EF中的持久化场景
EF中的持久性场景 使用EF实现实体持久化(保存)到数据库有两种情况:在线场景和离线场景. 1.在线场景 在线场景中,context是同一个上下文实例(从DbContext派生),检索和保存实体都通过 ...
- 关于缓存和 Chrome 的“新版刷新”
在读本文前你要确保读过我的上篇文章<扼杀 304,Cache-Control: immutable>,因为本文是接着上文写的.上文说到,在现代 Web 上,“条件请求/304 响应”绝大多 ...
- Best Practice API
# 建议直接使用的第三方类 Common Lang =>StringUtils =>Validate Guava =>Cache =>Ordering JDK7(LTS JDK ...
- pyqt5-按钮基类-QAbstractButton
QAbstractButton 是抽象类 from PyQt5.QtWidgets import QApplication, QWidget,QAbstractButton import sys f ...