ruby.js - 讓 Hexo 更方便輸入旁註標記 <ruby>

(最近更新:2014-08-12)
緣起

對於使用漢字的語言,因為漢字並無法完美的表達發音,有些時候需要加拼注音(旁註標記,日語稱為ルビ)在字詞上或右方,以方便讀者閱讀或知道字音。由於日本漢字詞一字(詞)多音的情況挺複雜,因此有些日本小說有時會在一些字詞標音(如青空文庫太宰治《人間失格》)。HTML 中可使用 <ruby>、<rb>、<rp>、<rt> 等標籤,來支援加注音的效果,雖然有些瀏覽器如 Firefox 預設不支援。
現在 Holo 話(閩南語)或是客語的書寫體系有三大種:全漢字、全羅馬拼音、和漢拼混合(漢羅)。鑑於排版的整齊以及 Holo 話用字不一、形音對應複雜的現況,個人目前比較喜歡使用全漢為主、羅馬字為輔,但仿效日本的作品,加上大量旁註標記以表達生難字、多音詞等等的發音或意思。然而 <ruby> 的標籤插入複雜,光是輸入「中區[Tiong-khu]」就得插入「<ruby><rb>中區</rb><rp>[</rp><rt>Tiong-khu</rt><rp>]</rp></ruby>」,key in 標籤就要打 20 個左右的字母,容筆者說難聽的,code 花貓貓[hue-niau-niau],光讀就夭壽煩,日後編改更加予人起[siáu]
因此,在寫 Holo 話文章〈我 ê 故鄉--北溝 (Pak-kau)〉時,筆者先自訂{rb|文字|標音}這個語法,再於命令列逐行用 cat 吐出原檔內容,用三個 sed ‘s/取代後文字/取代前文字/‘ 尋找取代(/ 指半形斜線 /)成 <ruby> 等標籤,輸出取代結果到新檔案,如下方 code:

[user@pc ~]$ cat “orig.md” | sed ‘s/{rb|/<ruby><rb>/g’ | \

> sed ‘s/|/</rb><rp>[</rp><rt>/g’ |\

> sed ‘s/}/</rt><rp>]</rp></ruby>/g’ > “result.md”

最後只把輸出結果 result.md 用 hexo generate 生成部落格。可這個寫法很髒,因為其餘處的 |、} 也被替換掉,需要人工校正回去,而且需另跑指令,很不方便。
好在 Kuanyui 大在前提文章的回覆中,提到他利用 Hexo 的 script 自訂功能做了一個能夠產生 <ruby> 的 script。而筆者不會寫 Javascript,只能表達感謝,並介紹之,以利想替漢字標音的 Hexo 用者。

安裝、使用法

免責聲明:以下僅為測試使用心得,讀者照下法操作之任何結果和風險,筆者恕不負責。

  • ruby.js 基本資訊:
  • 測試環境:
    • 作業系統:Linux Mint 15
    • ruby.js:20140518 版
    • Hexo:2.4.5(作者說舊版的 hexo 跑這個會有怪現象,但筆者目前沒遇過)
    • node.js:0.8.26(為使用 hexo-renderer-discount 外掛,不得不用舊版)
  • 下載、安裝:
    1. 下載壓縮檔 (tar.gz)。
    2. 解開壓縮檔,將「裡面的」ruby.js 解壓縮或複製到 hexo主目錄/scripts 裡。
  • 使用法:
    1. 用「{rb|文字|注音}」標注音,如:{rb|機巧少女|machine doll}。
    2. 若是不想要自動轉換 {rb|......} 為加注音形式,請在 rb 和 | 間插入 HTML 空白註解,如:{rb<!-- -->|機巧少女|machine doll}。
    3. 直接使用 hexo generate 產生部落格,其過程會自動載入該 script,轉換為 <ruby> 等標籤。
    4. 打開加注音文章的產出頁面。支援 <ruby> 的瀏覽器(如:Google Chrome)會看到注音在文字上,如:機巧少女[machine doll];但預設不支援的(如:Firefox)看到左例會變成:機巧少女[machine doll]。然而,已知 Firefox 有 HTML Ruby 能解決此問題。
  • 已知問題:在首頁和 archives 中,{rb|......} 不會自行轉成 <ruby> 等。