英文電子書使用字典查詞時選中整段的解決方法 – 書伴

昨天有位小伙伴向書伴提出一個問題,他在用 Kindle 設備閱讀 Calibre 轉換的兩本英文電子書時,發現它們查詞時的表現不一樣,其中一本可以正常查詞,而另外一本卻不能,只能選擇一整段內容。

▲ 只能選擇整段文字,無法正常查詢單詞

在獲得這兩本電子書的樣本,并仔細對比了它們的源代碼后,不論是元數據還是文本內容,并沒有發現查詞有問題的電子書存在什么異常。但是不管怎么轉換,查詞問題總會重現,這著實讓人疑惑。

最后,為了更徹底地做對比測試,我從這兩本書中各選取了一段,并將其轉換成電子書。有趣的現象出現了,居然一段無法正常查詞另一段卻能正常查詞。由此可以推測,問題一定是出在文本內容上。

但是這兩段內容看起來確實沒有什么區別。當我同時選中這兩段內容的時候,突然發現它們的空格看起來有點兒不同。我所用的編輯器是 Sublime Text,當正常的空格被選中時理應顯示為“·”,而查詞有問題的段落的空格卻顯示為空(如下圖所示)。在確認異??崭竦?HTML 實體后,終于找到了問題的癥結。

和漢字不同,英文單詞之間必須要有空格才有意義,但是在 HTML 中,空格可以分為很多種,其中最常見的就是普通的 ASCII 空格,編輯或閱讀時,當一行的空間無法容納下一個單詞時,就會自動換到下一行。此外還有一種特殊的空格,被稱為“不換行空格(Non-breaking space)”,這種空格會阻止行的自動換行,編輯或閱讀時,當一行的空間不夠顯示時候,會破壞單詞的完整性以字母為單位折行。

這種空格在某些情況下適用,比如“100 km”,可以在“100”和“km”之間加一個不換行空格,這樣當一行的行尾空間無法容納這個計量單位的時候,“100 km”就會被放到下一行的行首,而不會出現“100”在上一行“km”在下一行的情況發生。而如果把所有應該用普通空格的地方換成了不換行空格,就是對不換行空格的濫用。這種濫用的情況雖然不常見,但由于編輯器或輸入法等意外情況,還是有可能出現的。

元素名稱 Non-breaking space(不換行空格)
字符實體:  
字符數值(十進制):  
字符數值(十六進制):  

▲ 不換行空格不同形式的 HTML 字符實體

很顯然 Kindle 的字典查詢功能并沒有對不換行空格特殊處理,它會把所有被不換行空格連接起來的單詞當作一個單詞,這也就是為什么它會自動調用在線字典的原因(否則這么一大段內容它就會給自動標注了)。所以,為了解決這個問題,我們需要在轉換電子書時把內容中的不換行空格替換成普通空格。

以 Calibre 為例,在轉換電子書的設置面板中,切換到【搜索 & 替換】功能,按照下圖所示,在正則表達式中填入 xa0+ 用來查找特殊空格,在替換文本中輸入一個普通空格(按一下空格鍵):

然后點擊【添加】按鈕將設置加入規則。這樣轉換出來的電子書查詞就恢復正常了,如下圖所示:

此問題雖得以解決,但正如前面所提到的,在 HTML 中有很多類型的空格,有可能還會因為其它類型的空格導致類似的問題出現,到時只需要確認空格的實體,然后如法炮制將其替換成普通空格即可。

本文僅針對英文內容的電子書。中文內容的 AZW3 電子書也可能會出現查詢字典時選擇整段文本的情況,關于這個問題可參考《為什么 AZW3 電子書查字典取詞時會選中一整句》這篇文章。

————————–

參考資料:

未經允許不得轉載:螞蟻搬書 » 英文電子書使用字典查詞時選中整段的解決方法 – 書伴
微信公眾號:螞蟻搬書
關注我們,分享kindle電子書資源
12000人已關注
分享到:
贊(0) 打賞

評論搶沙發

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞

gpk捕鱼达人简单几点技巧 甘肃快三开奖结果走势图一定牛 新加坡2分彩平台注册 七星彩怎么包才稳赚 网上炒股配资到尚牛在线 彩票榜平台软件 股权激励书 东方6十1开奖时间 新手买股票的详细流程 河北福彩彩票恢复时间 贵州11选5前三直走势