换个姿势读《资治通鉴》?
起屠维大渊献。
读过《通鉴》的朋友看到这个起手式会会心一笑。这就跟「地振高冈,一派溪山千古秀」一样,是《通鉴》里的黑话。
作为一个通读过《史记》(《书》《表》除外)的程序员,《资治通鉴》这样的大部头我读起来还是觉得非常不方便。首先是时间上的开销很大 —— 一页纸往往要读上半小时到一小时,其中免不了查阅词典,了解生僻字词的读音和释义;其次是难以深度阅读 —— 大量的地名人名和时间的关系,无法很快厘清,因而对错综复杂的历史事件读之依旧是懵懵懂懂;再次,无论是实体书的阅读,还是电子书的阅读,笔记都很难处理,比如人物的图像,事件(主要是战争)的地图,无法和原文很好地一一对照。最后,三百万字,二百九十四卷的内容,往往令读者还未开始阅读便自我放弃了。
可惜啊!隽美的文字,生动的典故,博大精深的出世入世之道,可以让人知兴替,明是非,鉴未来的浩瀚巨著,因为各种「不方便」便被我们放弃了!
于是我便萌生了制作《资治通鉴》胶片版的念头。我可阅读的时间往往比较碎片化,所以希望闲暇时可以读上一小段,这样不必抱着大部头望而兴叹;我希望文档本身是活的,帮助理解内容的佐料(注释,图片,地图等)可以不断以一种简单轻量的方式被添加进来;此外,文档本身应该是精美的,看着舒服。这便是这个胶片版的最初的目标。
程序员干这种事情一定是效率为先:能用代码搞定的,一定不用蛮力。于是这个目标被细化成:
- 选取质量上乘的《资治通鉴》 txt 版本
- 将文档切分成 294 卷,每卷一个胶片
- 自动生成符合 marp 格式的胶片,做一些格式上的处理
- 为引文生成不同的格式
- 每页胶片都自动放置一个 audio tag,可以播放本页的语音素材,比如:臣光曰
找相熟的小伙伴们创作每一张胶片的语音素材为每一张胶片自动生成语音素材- 通读之,添加注释,相关图片和地图
切分文档这种活,csplit 可以很好胜任,连代码都不用写;为了进一步把文字做成语音素材和胶片,需要花些心思 —— 得写个简单的 script 把切出来的一卷卷内容转成一个 JSON 数组,供后续生成胶片或生成语音素材之用。
这个 JSON 数组长这个样子,除了内容本身,还有是否生成 audio 素材的字段:
[
{
"text": "# 周纪 第三章 周纪三"
},
...
{
"text": "魏惠王薨,子襄王立。孟子入见而出,语人曰:“望之不似人君,就之而不见所畏焉。卒然问曰:‘天下恶乎定?’吾对曰:‘定于一。’‘孰能一之?’对曰:‘不嗜杀人者能一之。’‘孰能与之?’对曰:‘天下莫不与也。王知夫苗乎?七八月之间旱,则苗槁矣。天油然作云,沛然下雨,则苗浡然兴之矣。其如是,孰能御之?’”",
"audio": "6.mp3"
},
...
]
语音素材我一开始考虑集网友之力来做,后来发现科大讯飞的 TTS 质量已属不错,几乎绝大多数的场景读音和断词都是对的,就决定自动生成。
胶片用一个叫 marp 的工具制作 —— 因其支持丰富的 markdown 语法和扩展,满足我对图片排版,注释和脚注等的需求。
最终做出来的 slides 效果如下:



视频:
目前前十卷的整理工作已经初步完成,大家可以自行翻阅。语音的生成因为有 API 数量的限制,目前仅完成到七十四卷。欢迎大家边贡献边阅读,贡献可参考:github.com/tyrchen/tongjian;阅读可直接在 https://tyrchen.github.io/tongjian 下完成。
未来我会一卷卷往下翻阅,顺手整理相关笔记。itunes 和 google play 的 podcast 的自动生成也在计划之中,大家看了之后有什么想法可以和我分享。毕竟,独乐乐,不如众乐乐。
禅定时刻
臣光曰:《易》曰:“君子多识前言往行,以畜其德。”孔子曰:“辞达而已矣。”然则史者儒之一端,文者儒之余事;至于老、庄虚无,固非所以为教也。夫学者所以求道;天下无二道,安有四学哉!