回到首頁過去文章最新消息FAQ相關討論 | 關於我們

Emacs Wiki 後一章 -- 專案、遠端連線與註腳模式


黃俊傑 jjhuang AT cm-nctu-edu-tw

前言

在上一期中, 我們學習了如何用 Emacs Wiki 來快速產生網頁, 本期我們將會介紹 Emacs Wiki 相關的工具; 使用 Emacs Wiki 的專案功能來管理不同的網頁, 將網頁傳到遠端的網頁伺服器上, 以及使用 Emacs 內建的註腳次要模式(footnote-mode) 來幫助我們輸入註腳。

Emacs Wiki 專案

如果你像筆者這樣有好幾個獨立的 Wiki 要編輯, 那麼你很可能需要使用到 Emacs Wiki 專案來管理這些檔案。 新增專案的方法如下, 首先你要先進入 Emacs 的 customization

 M-x customize-group <RET> emacs-wiki <RET> 
然後再進入 Emacs Wiki Project 這個目錄, 進入之後把 Emacs Wiki Projects 這個變數打開來。 一開始 Emacs Wiki 是沒有任何專案的, 只有 default 這個專案, 而這個專案是沒有列在這個變數中。 若要新增一個專案, 首先要按 INS 這個按鈕, 然後輸入專案名稱於 Project name: 一欄, 接下來在 Project name: 的下方中間也有一個 INS 按鈕, 請按下這個按鈕, 然後輸入開啟這個專案時要改變的變數。 筆者所知道需要改變的變數至少有下列幾個:
emacs-wiki-publishing-directory
這個專案的網頁放置目錄
emacs-wiki-directories
這個專案的 Wiki 檔案放置目錄

記得 emacs-wiki-directories 是複數名詞, 代表這是一個 list, 所以在 Value 那一欄必需將你的目錄用括號刮起來, 如:

 ("~/Documents/MyWebPage") 

增加完成之後, 記得按 State 這個按鈕把這次改變的專案設定儲存起來。 以後要使用專案, 可以直接開啟該專案的檔案, 或是在 Emacs Wiki Mode 中以 C-c C-v 的命令來改變專案。

傳送網頁至遠端伺服器

目前 Emacs Wiki 要編輯遠端的網頁, 可以放在本地端, 然後再用 rsync 等同步程式來做同步, 或是把專案發行目錄放置在遠端的機器上。 要把專案發行目錄放置在遠端的機器上, 可以把 emacs-wiki-directories 放在本地端, 並且把 emacs-wiki-publishing-directory 填上

 "/user@host:/path/to/your/web/page" 
如此, 當你下 C-c C-p (或是 M-x emacs-wiki-publish) 時, Emacs 就會透過 Tramp1 程式把檔案送到遠端的伺服器上。 M-x emacs-wiki-publish 會將專案內所有的 Wiki 檔案都轉換成 html, 並且傳送到遠端, 在頻寬較小的情況下, 相當的耗費時間, 讀者可以利用 M-x emacs-wiki-publish-this-page 來傳送目前編輯的頁面, 以節省傳輸時間。

如果你嫌每次都要按 M-x emacs-wiki-publish-this-page 打太多字, 可以參考 Emacs Wiki 專案首頁的建議2, 將 C-x C-p 按鍵定義成 M-x emacs-wiki-publish-this-page, 只要你在 ~/.emacs 加入以下幾行即可:

 (add-hook 'emacs-wiki-mode-hook (lambda () (global-set-key "\C-x\C-p" 'emacs-wiki-publish-this-page))) 
這樣就會在每一次進入 Emacs Wiki 模式時將此按鍵加入。 你就可以在每一次編輯完一個檔案, 想要上ԋ3;時, 按 C-x C-p 來上傳目前編輯的這一個檔案, 以節省傳輸時間。

註腳模式

說明

註腳模式(footnote-mode) 是一個次要模式(minor mode), 與 Emacs Wiki 並無直接關聯, 是 Emacs 內建的次要模式。 筆者通常用這個模式配合 gnus 使用, 在編輯文章的時候加一些註腳用。 Emacs Wiki 採用的註腳格式與註腳模式產生出來的格式完全一樣, 所以我們也可以利用註腳模式來協助編輯 Emacs Wiki 檔案。

與其他的次要模式一樣, 註腳模式的命令可以開啟或關閉註腳模式。 註腳模式的命令是

 M-x footnote-mode 
當註腳模式開啟的時候, Emacs 視窗下方的模式列會顯示 FN 的字樣。 當我們要新增一個註腳的時候, 只要在想要新增的位置鍵入
 M-x footnote-add-footnote 
接下來註腳模式會自動在新增的位置填上一個數字前後加上方括號, 並且跳到文章的最後, 加上註腳(Footnote) 字樣, 游標會停在要編輯的註腳後面等待使用者輸入註腳的說明文字。 輸入完之後, 我們可以輸入
 M-x footnote-back-to-message 
然後游標會回到剛剛新增註腳的位置, 使用者可以繼續本文的編輯。 其餘的註腳模式功能請參考快速鍵列表。 Emacs Wiki 可以完全處理註腳模式產生的格式; 這篇文章就是利用註腳模式來產生註腳的。

快速鍵列表

註腳模式的快速鍵不多, 只有六個, 表列如下:

按鍵命令(鍵入之前先按 M-x)說明
C-c ! aM-x footnote-add-footnote增加註腳
C-c ! bM-x footnote-back-to-message由註腳說明處回到引用處
C-c ! dM-x footnote-delete-footnote刪除註腳
C-c ! gM-x footnote-goto-footnote跳到註腳解釋
C-c ! rM-x footnote-renumber-footnotes重新編排註腳號碼
C-c ! cM-x footnote-cycle-style變換註腳形式

在 GNU Emacs 22.1(目前 CVS 上的程式碼), 這些命令都已經變成 Footnote 開頭, 請使用最新 CVS 的程式碼的讀者注意這一點。

檢視線上說明文件

每當你忘記 footnote-mode 的快速鍵的時候, 你可以利用 Emacs 的線上說明文件來看該模式的說明, 這個線上文件系統也可以應用在其他的命令上, 用法如下:

 C-h f footnote-mode <RET> 
這樣你就可以看到這個版本上關於 footnote-mode 的說明。 隨時檢視線上說明是一個 Emacs 很重要的習慣, 因為沒有人能夠把 Emacs 全部的功能與快速鍵都記起來, 如果忘記或有疑問(包括命令執行的結果不符合你的預期), 別忘了使用線上說明來確認自己所使用的命令用法是否正確。 當然, 這個習慣與使用 UNIX 的習慣是一樣的, 只是 UNIX 是使用 man, 而 Emacs 是按 C-h f 而已。

結語

在本期文章中, 筆者介紹了 Emacs Wiki 的專案功能, 以及如何將網頁傳送到遠端的網頁伺服器。 專案功能可以有效的把網頁分開, 也可以將這兩個功能結合起來管理遠端的個人網頁。 雖然 Emacs 有 html-helper-mode3, 但是筆者使用了 Emacs Wiki 之後, 已經很久沒有直接編輯 html 語法了, 因為 Emacs Wiki 產生的網頁看起來有簡潔之美, 媲美 LaTeX4 所轉換產生的網頁。 筆者另外介紹了一個收錄進正式的 GNU Emacs 程式碼很久的註腳模式, 這是一個簡單, 但是相當有用的次要模式, 讀者如果願意, 可以把註腳模式與其他任何一種文字模式配合, 比如說寫信件、新聞、文章的時候與這個模式配合, 可以省去需要自己來排序註腳編號的麻煩。


[1] Tramp, 一個透過 ssh/rsh 來協助編輯遠端檔案的 Emacs 背景模式, http://www.emacswiki.org/cgi-bin/wiki/TrampMode

[2] Emacs Wiki 專案, http://www.emacswiki.org/cgi-bin/wiki

[3] Emacs HTML Helper Mode, http://www.emacswiki.org/cgi-bin/wiki/HtmlHelperMode

[4] LaTeX, 一個幕後排版系統, 架構在 Donald E. Knuth 教授發展的 TeX 系統之上, 可以產生高品質的科學、數學等文件, 但不限於此類文件。