安裝 hexo 的一些細節
hexo 是一個靜態網站產生器,用 markdown 寫完文章內容之後,它會自動幫你生成 html 頁面。因著這個特性,hexo 網頁可以架設在任何 http server 上,而不需要用到資料庫(如 mysql)、伺服器端程式碼(如 php)之類的東西。因為是用 markdown 寫文章,你可以用任何的文字編輯器來編輯 hexo blog,也可以用版本控制系統來紀錄 blog 的更動,比起 wordpress 或 blogger 這一類的 WYSIWYG
的編輯器來的有彈性許多。
我的這個 blog 就是用 hexo 架設的,在安裝的時候,碰到了一些問題,在這裡做個筆記,希望讓之後碰到相同問題的人可以不用再花時間做重複的事。
1. 安裝 hexo-renderer-discount 失敗
discount
是一個用 C 語言實作的 markdown compiler,功能比內建的 marked
還要強。因此,我想要安裝 discount
作為預設的 markdown renderer。然而在安裝 hexo-renderer-discount
的時候,出現以下錯誤訊息:
其實這跟 hexo-renderer-discount
這個套件本身無關,問題出在 discount
套件。在寫這篇文章的時候(2013/10/12),discount
的 build script 裡面的 linker flag
包含了 -mimpure-text
這個選項。我用 Google 查了一下,發現這個 flag 是針對
SPARC 處理器,而在我系統上的 gcc 則沒有這個選項,所以才會發生錯誤。我對這個錯誤的解決方法是,修改 discount
的 linker flag,手動安裝 discount,然後再安裝 hexo-renderer-discount
。
在開始手動安裝之前,先確定你的系統上有 node-waf
這個程式,在 openSUSE 12.3
裡面,這表示必須安裝 nodejs-devel
套件。
第一個步驟是先將 discount 的原始碼下載到 node_modules
目錄,最方便的方法是用 npm 下載,但是不要讓它安裝,一出現 Checking for program ...
訊息之後就立刻按 Ctrl-C
停止 npm:
開啟 wscript
,找到這一行
去掉 -mimpure-text
,改成這樣:
接下來,編譯 discount
:
如果沒有錯誤訊息的話,就表示 discount
已經成功安裝了。接下來切換回 hexo 的根目錄,然後安裝 hexo-renderer-discount
:
如此一來就可以在 hexo 裡面使用 discount markdown 來寫文章了。
2. 中文分行書寫問題
中文的語詞之間並沒有空格,markdown 的設計者顯然沒有考慮到這一點,因為 markdown
的語法並沒有內建分行書寫的功能,如果把中文分為兩行:
這樣會被 markdown 轉換為 中文分行 書寫
,中間被加入了空白。若是硬要用 markdown
達成分行書寫又不要在中間加空白的話,只能寫成這樣:
利用 html 註解來把分行符號吃掉,但是行數一多就變得很麻煩了。
為了解決這個問題,我加入了一個自訂的 renderer script ,將所有 *.md
裡面以 \
結尾的行與它的下一行合併,這樣就可以寫成這樣:
而輸出結果為 中文分行書寫
。要達到這個效果,把以下的 script 複製到 hexo
根目錄下的 scripts/
目錄裡面:
我會選擇使用 \
是因為我常用 reStructuredText
,所以習慣這樣寫。如果你比較常用 latex
寫文章,你或許會想要使用 %
符號來連接中文行,若是這樣的話,請將以上的 script 中的 /\\\n/g
改成 /%\n/g
即可。