如何给 Kindle 电子书中的汉字添加拼音注音 – 书伴 您所在的位置:网站首页 如何设置汉字带拼音 如何给 Kindle 电子书中的汉字添加拼音注音 – 书伴

如何给 Kindle 电子书中的汉字添加拼音注音 – 书伴

2024-07-10 09:35| 来源: 网络整理| 查看: 265

最近有小伙伴留言问如何给 Kindle 电子书添加拼音注音,就花了点儿时间研究了一下。给 Kindle 电子书添加拼音标注,需要解决两个问题:一个是如何像一般的纸质书那样上面显示拼音,下面显示汉字;另一个就是如何批量给每个汉字生成拼音,很显然手动录入效率会很低。

好在这两个问题都可以解决。上面显示拼音下面显示汉字可以使用 HTML5 的新标签 实现,还好 Kindle 的 KF8 标准的电子书也支持这个新标签。批量给汉字生成拼音可以使用 GitHub 上的一个用 Ruby 语言写的开源项目 ruby-pinyin 来实现。这两个基本问题实现之后就可以通过几个小软件和一段脚本结合,把电子书(一般应该是给孩子看的)转换成如下图所示的效果。

kindle-pinyin_1 kindle-pinyin_2

不过需要注意的是,虽然这种批量处理的方式可以省去大量重复工作,但受限于软件自身的缺陷,还是需要人工对生成的内容校正一下,避免多音字、音标标注之类的错误。这类错误对于成人的阅读或许没有太大障碍,但对于正处于识字阶段的孩子看的东西,仔细校正就显得尤为重要。

下面是具体的实现步骤。虽然可能会涉及到一段代码,但无需担心,按照步骤来即可。

1、安装 Ruby 和 ruby-pinyin

下载 Ruby:https://www.ruby-lang.org/zh_cn/downloads/ 下载 ruby-pinyin:https://github.com/janx/ruby-pinyin

首先安装 Ruby(官方文档),然后在“终端”或“命令提示符”上输入命令 ruby -v 确认一下是否已安装。另外,还需要安装 DevKit 才能正常使用 gem 安装 ruby-pinyin。

DevKit 的安装也很简单。在 RubyInstaller 下载页面底部找到和你的系统相匹配的 DevKit 压缩包,下载之后解压缩。使用命令提示符定位到解压缩的目录,先输入 ruby dk.rb init,然后使用代码编辑器编辑生成的 config.yml 文件,在三个中划线下面添加 Ruby 的安装路径,如 - C:\Ruby23-x64,最后在命令提示符中输入命令 ruby dk.rb install 完成安装。

安装完 Ruby 之后,运行命令行(或命令提示符)用 Gem 命令安装 ruby-pinyin。

$ gem install ruby-pinyin 2、拆解电子书并添加拼音注音

下载 KindleUnpack:https://bookfere.com/tools#ku(依赖 Python) 下载 KindleGen:https://bookfere.com/tools#KindleGen

准备好需要处理的电子书文件,然后用 KindleUnpack 将其拆解成源文件备用(如果不知道如何使用 KindleUnpack 请点击这里查看教程)。

把下面这段代码复制下来,用代码编辑器(如 Sublime Text、Editplus)保存为 html2pinyin.rb 文件(文件名称随意)。

* 提示:下面的代码只在 macOS 中测试可用,Windows 系统请等待测试后再修改。

#!/usr/bin/ruby # -*- coding: UTF-8 -*- # --------------------------------------- # html2pinyin.rb - 给电子书内容添加拼音注音 # https://bookfere.com/post/444.html # # 1. 安装 Ruby # 2. 安装 ruby-pinyin # 3. 运行 ruby html2pinyin.rb # ---------------------------------------- require 'ruby-pinyin' print '请输入要处理文件或目录的完整路径:' path = gets.strip if path == "\n" puts '|||||请输入文件或目录路径|||||' elsif File.file?( path ) file_process( path ) elsif File::directory?( path ) if path[-1] != '/' path = path + '/' end dir_process( path ) else puts '|||||文件或文件夹不存在|||||' end BEGIN { def dir_process ( entry ) files = Dir[ entry + '*' ] for f in files ext = File.extname( f ) if ext == '.xhtml' or ext == '.html' file_process f end end end def file_process ( entry ) File.open(entry, "r:utf-8") do |file| File.open(entry + '.tmp', "w") do |f| while line = file.gets par = /(.*?)/.match(line) img = //.match(line) if ! par.nil? and img.nil? str = line.split(//) for i in str if /[\u4e00-\u9fa5]/ =~ i pinyin = PinYin.of_string(i, :unicode) f.print '' + i + '' + pinyin[0] + '' else f.print i end end else f.puts line end end end puts '已完成:' + entry.split(/\//)[-1] File.delete(entry) File.rename(entry + '.tmp', entry) end end }

然后打开终端(或命令提示符),定位到 html2pinyin.rb 文件所在的目录下,输入以下命令:

$ ruby html2pinyin.rb

会提示“请输入要处理文件或目录的完整路径”。这里的路径就是电子书源文件中 XHTML 或 HTML 文件所在的目录位置,一般其目录如下所示:

/Users/YOURNAME/Desktop/电子书名称/mobi8/OEBPS/Text

然后稍等片刻,即可处理完成。接下来就是矫正了。对于处理完成的 XHTML 或 HTML 文件,可以一边用浏览器预览,一边用代码编辑器查找并修改。

* 注意,因为 ruby-pinyin 这个项目依赖 Ruby 语言,所以才使用 Ruby 语言写这段脚本。因为之前从没有使用 Ruby,是一边看文档一边摸索出来的,实现得比较笨。首先用正则提取出 p、h1~h6 以及 span 标签包裹的内容,然后遍历出每一个汉字字符,使用 ruby-pinyin 转换成拼音。因为是处理的是单个字符,所以 ruby-pinyin 的多音字识别就没利用起来。如果你熟悉 Ruby 语言的话,欢迎改进代码。

3、把源文件转换成电子书格式

因为给汉字添加注音后,会导致内容十分拥挤,所以在转换完毕后还需要修改一下样式,优化一下排版。可以直接下面这段代码添加到 CSS 文件中(一般 CSS 文件都在 Style 文件夹中),也可以根据自己的实际需求修改它们,比如字号、字体、字距或行距。

ruby { font-size: 1.2em; font-family: sans-serif; line-height: 2.6em; padding: 0 0.1em; letter-spacing: 0; } rt { font-family: Futura; font-size: 100%; }

全部处理完毕后,用 KindleGen 通过 content.opf 文件把源文件转换成 mobi 格式即可(如果你还不知道如何使用 KindleGen 可以点击这里查看教程)。现在你就得到了一个添加了拼音注音的电子书了。

如果你在按照本文步骤操作的过程中遇到了什么问题,或者有什么改进意见,请留言。

© 「书伴」原创文章,转载请注明出处及原文链接:https://bookfere.com/post/444.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有