2013年8月15日 星期四

天城體的羅馬轉寫(windows 中的 office)

在佛學相關的文章或出版品中,只要使用到梵文、巴利文等印度的語文一般上都會使用羅馬轉寫。然而,對於 Linux 和 Windows的使用者來說,並沒有相關的輸入法可以讓使用者直接輸入ā、ī、ū、ṛ、ṝ、ḷ、ḹ、ṃ、ḥ、ṅ、ñ、ṭ、ḍ、ṇ、ś 和 ṣ。一般人的處理方式有

1. 使用軟體或網頁工具:如 Itranslator。不過使用這類軟體需要再複製貼上,多了一層步驟。另外,軟體的話就有相容性的問題,就像Itranslator 安裝在 Win7 上會有問題;網頁工具的話則會有瀏覽器的相容性問題。網頁工具還有 diCrunch 、learnsanskrit 所開發的 sansripttransliterate 和 kamleong .

2. 使用字型。對於一些少見的字,的確有人會使用字型轉換來輸入特殊的文字。這樣的做法比較特別,就是要記清楚每個步驟。轉寫字型的網站如:http://www.sanskritweb.net/fonts/ 和 Virginia 整理的 diacritic fonts

3. 使用快速鍵。做法即是在文書處理軟體中為相關的字設定相對應的鍵盤,例如『ā』的輸入法設為『Alt』+『a』之類的。不過這樣的設定方式就是要記憶鍵盤,有助於防止老人癡呆症!設定方法可參考慧峰法師 的 blog

(1、2、3 的許多方法是 Facebook 裡『佛學與資訊』的成員Lai KamLeong 所提供的。)

以上方法各有市場,沒有優劣之分。本文提供的解決方法是針對在Windows 下使用 Microsoft Office 來編輯檔案的族群。只要安裝了這個巨集就能夠利用現有的鍵盤來輸入相對應的梵文羅馬撰寫。
  • 檔案下載Normal.dotm
  • 存放地方:C:\Users\{使用者名稱}\AppData\Roaming\Microsoft\Templates
  • 使用版本:Office 2007 與 2010
  • 安裝方法:先把所有的word 檔關掉,然後再到存放位置覆蓋掉原本同樣檔名之檔案。**(已經有個人巨集的人可以參考文末的程式碼)



使用方法很簡單,就是按照國際標準的對應鍵盤來輸入。此次的巨集做的是 Velthius 和 Harvard-Kyoto 的輸入法,相關的對照表可以參考 Wikipedia 上的說明。另外,此次的巨集有按照 Velthius 的輸入法製作了大寫的對應表。對應的方法非常簡單,就是小寫變成大寫。*

Velthius 轉寫的快速鍵為『Ctrl』+『t』;Harvard-Kyoto轉寫的快速鍵為『Ctrl』+『h』。若是要自己設定的話,可以在 Word 中自己設定。設定路徑為:
檔案→『選項→『自訂功能選區→『快速鍵: 自訂→『巨集→『RM_Velthius_transliteration』 or RM_Harvard_Kyoto _transliteration』來指定。
或可參照下圖:





安裝完畢後,使用方法非常簡單,以下就以 Velthius 的轉寫方式為例子:
1. 在word檔中用Velthius 輸入

2. 選取需要轉成羅馬化的字『karu.naa』,然後按『Ctrl』+『t』。


3. 之後就會看到 『karu.naa』被轉成『karuṇā』這個詞了。

為什麼是只轉換選取的範圍呢?
原因很簡單,那就是絕大多數人的寫作中,梵文不是主要的語言。若是整篇文章一起轉換的話,會造成其中的英文與一些其他的符號會混雜,使到編輯者需要再花一次的檢查時間。因此才會讓這個巨集在選取的範圍中進行替換。若是要對整篇文章進行替換,就先全選整篇文章後再進行轉寫。

據惠敏法師描述,網路上有很多利用 Harvard-Kyoto 轉寫的梵文經典(還沒羅馬化)。這些還沒進行羅馬化的轉寫只要在 Word 中,利用這個巨集處理之後就能變成漂亮的羅馬化。

程式背景:在法鼓網資室進行印順法師佛學著作集的工作過程中需要處理很多的梵文羅馬轉寫。一般在輸入梵文時,工作人員都是從word 中的『插入符號』選取需要的字,在將之複製到標記檔案中。唯在進行了一年多之後,個人才想到如此的方法是可以簡化工作。(此專案是由印順文教基金會與法鼓佛教學院數位典藏組合作進行)

此巨集絕大部分都是由法鼓佛教學院數位典藏組的周邦信先生(法名:果睿。英文名字:Ray)撰寫,個人只是在旁提出需求和找出相關的對照表。另外,也感謝法鼓佛教學院校長惠敏法師協助初期的測試與給許多寶貴的建議。

最後,若在研究、撰寫中有大量使用到此巨集,懇請註明巨集工具來自『法鼓佛教學院數位典藏組』。有關於法鼓佛教學院數位典藏組之計劃,請參考數位典藏專案之網站

若有任何的問題,還請不吝給意見。


* 模仿 Velthius 而來的大寫對照表如下:
AA Ā;IIĪUUŪ.R.RR.L.LL.MṂ;.HḤ; "NṄ;~NÑ;.TṬ;.DḌ;.NṆ;"SŚ;.SṢ。

**進階使用者只要將下面的指令貼在個人的巨集中即可直接使用。

VBA 程式碼:

Sub RM_Velthuis_transliteration()
' Devanagari_Romanization macro
' Velthius transliteration from Devanagari to the Roman script
' Transliteration Comparison reference: https://en.wikipedia.org/wiki/Devanagari_transliteration
'
' Copyright 2013 Department of Buddhist Informatics, Dharma Drum Buddhist College
' by Ray (zhoubx@gmail.com) 20130814
' the transliteration of upper case is created by Kwok Jie Li
'
    Call replace_inrange("aa", ChrW(&H101))
    Call replace_inrange("ii", ChrW(&H12B))
    Call replace_inrange("uu", ChrW(&H16B))
    Call replace_inrange(".ll", ChrW(&H1E39))
    Call replace_inrange(".l", ChrW(&H1E37))
    Call replace_inrange(".rr", ChrW(&H1E5D))
    Call replace_inrange(".r", ChrW(&H1E5B))
    Call replace_inrange(".m", ChrW(&H1E43))
    Call replace_inrange(".h", ChrW(&H1E25))
    Call replace_inrange("""n", ChrW(&H1E45))
    Call replace_inrange("""s", ChrW(&H15B))
    Call replace_inrange("~n", ChrW(&HF1))
    Call replace_inrange(".t", ChrW(&H1E6D))
    Call replace_inrange(".d", ChrW(&H1E0D))
    Call replace_inrange(".n", ChrW(&H1E47))
    Call replace_inrange(".s", ChrW(&H1E63))

' transliteration below is create by own definition

    Call replace_inrange("AA", ChrW(&H100))
    Call replace_inrange("II", ChrW(&H12A))
    Call replace_inrange("UU", ChrW(&H16A))
    Call replace_inrange(".LL", ChrW(&H1E38))
    Call replace_inrange(".L", ChrW(&H1E36))
    Call replace_inrange(".RR", ChrW(&H1E5C))
    Call replace_inrange(".R", ChrW(&H1E5A))
    Call replace_inrange(".M", ChrW(&H1E42))
    Call replace_inrange(".H", ChrW(&H1E24))
    Call replace_inrange("""N", ChrW(&H1E44))
    Call replace_inrange("~N", ChrW(&HD1))
    Call replace_inrange(".T", ChrW(&H1E6C))
    Call replace_inrange(".D", ChrW(&H1E0C))
    Call replace_inrange(".N", ChrW(&H1E46))
    Call replace_inrange("""S", ChrW(&H15A))
    Call replace_inrange(".S", ChrW(&H1E62))


End Sub
Sub RM_Harvard_Kyoto_transliteration()
'
' devanagari_romanization macro
' use Harvard-Kyoto transliteration from Devanagari to the Roman script
' Transliteration Comparison reference: https://en.wikipedia.org/wiki/Devanagari_transliteration
' by Ray (zhoubx@gmail.com) 20130814
'
'
    Call replace_inrange("A", ChrW(&H101))
    Call replace_inrange("I", ChrW(&H12B))
    Call replace_inrange("U", ChrW(&H16B))
    Call replace_inrange("lRR", ChrW(&H1E39))
    Call replace_inrange("lR", ChrW(&H1E37))
    Call replace_inrange("RR", ChrW(&H1E5D))
    Call replace_inrange("R", ChrW(&H1E5B))
    Call replace_inrange("M", ChrW(&H1E43))
    Call replace_inrange("H", ChrW(&H1E25))
    Call replace_inrange("G", ChrW(&H1E45))
    Call replace_inrange("z", ChrW(&H15B))
    Call replace_inrange("J", ChrW(&HF1))
    Call replace_inrange("T", ChrW(&H1E6D))
    Call replace_inrange("D", ChrW(&H1E0D))
    Call replace_inrange("N", ChrW(&H1E47))
    Call replace_inrange("S", ChrW(&H1E63))
End Sub

Sub replace_inrange(c1 As String, c2 As String)
    Set myrange = Selection.Range
    myrange.Find.ClearFormatting
    myrange.Find.Replacement.ClearFormatting
    With myrange.Find
        .Text = c1
        .Replacement.Text = c2
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    myrange.Find.Execute Replace:=wdReplaceAll
End Sub


沒有留言:

張貼留言