丁海蘭,祁坤鈺
(西北民族大學(xué)中國(guó)民族信息技術(shù)研究院,甘肅蘭州730030)
基于Word VBA的藏文排版規(guī)范及技術(shù)實(shí)現(xiàn)
丁海蘭,祁坤鈺
(西北民族大學(xué)中國(guó)民族信息技術(shù)研究院,甘肅蘭州730030)
在藏文文檔排版中,實(shí)現(xiàn)文章統(tǒng)一化排版的關(guān)鍵技術(shù)在于格式的調(diào)整.目前,在Word2010辦公軟件中進(jìn)行藏文排版時(shí)出現(xiàn)左右邊界無(wú)法對(duì)齊的現(xiàn)象,導(dǎo)致藏文文檔板式不符合傳統(tǒng)藏文行文規(guī)范,給辦公編輯、古籍整理等工作帶來(lái)一定的局限性.文章以Word軟件為開(kāi)發(fā)平臺(tái),采用Word VBA技術(shù),結(jié)合VBA編程,實(shí)現(xiàn)了對(duì)藏文文檔進(jìn)行合理的排列調(diào)整并符合藏文版式的書(shū)寫(xiě)規(guī)范系統(tǒng).對(duì)藏文文檔排版的規(guī)范化有重要的意義.
藏文排版;Word VBA 模板;技術(shù)實(shí)現(xiàn)
在Microsoft Word中輸入符合藏文書(shū)寫(xiě)規(guī)范的藏文各類(lèi)文檔如詩(shī)歌、藏經(jīng)、散文、論文書(shū)籍和報(bào)刊等,按照Word排版格式利用頁(yè)面菜單工具進(jìn)行格式的調(diào)整,使版面達(dá)到需求化、使用化和便捷化的目的.基于藏文排版中出現(xiàn)的無(wú)法右對(duì)齊現(xiàn)象,我們可以借于Word VBA技術(shù)進(jìn)行編程并達(dá)到藏文排版的規(guī)范化.Word VBA( Visual Basic for Application)是一種由微軟公司開(kāi)發(fā)并附屬在Office辦公軟件包中執(zhí)行通用的自動(dòng)化任務(wù)的編程語(yǔ)言[1].VBA的主要作用是自定義應(yīng)用程序中的功能,幫助使用者根據(jù)自身需求在Office環(huán)境中進(jìn)行功能模塊的制定和開(kāi)發(fā).雖然Word 提供了強(qiáng)大的文字處理能力和文檔控制能力 , 但在喜馬拉雅輸入法編輯的環(huán)境中,藏文文檔只使用Word的基本功能時(shí)還會(huì)涉及很多繁瑣的排版工作,因此需要一種自動(dòng)排版的功能使藏文在排版中達(dá)到文檔的規(guī)范化.Word VBA是一種面向?qū)ο蟮?、可視化的、事件?qū)動(dòng)的高級(jí)語(yǔ)言,是在Visual Basic的框架上建立起來(lái)的.它的語(yǔ)法、功能甚至開(kāi)發(fā)環(huán)境跟 Visual Basic 都基本相同. 通過(guò)Word VBA編程, 可以實(shí)現(xiàn)Word文檔的自動(dòng)化.文章通過(guò)該方法,對(duì)Word VBA輔助標(biāo)準(zhǔn)編寫(xiě)工作進(jìn)行了研究,實(shí)現(xiàn)了標(biāo)準(zhǔn)編寫(xiě)工作的部分自動(dòng)化.
計(jì)算機(jī)藏文系統(tǒng)研發(fā)開(kāi)始于上世紀(jì)80年代,國(guó)內(nèi)很多科研院所和高校均開(kāi)發(fā)并研制了多個(gè)文字處理軟件,其中方正書(shū)版系統(tǒng)和華光藏文是基于DOS的專(zhuān)業(yè)級(jí)排版系統(tǒng).2000年后隨著Windows系統(tǒng)的推廣應(yīng)用,相繼出現(xiàn)了基于Windows 的同元、班智達(dá)、瓊邁、桑布扎等藏文字處理軟件,但是這些都是非國(guó)際標(biāo)準(zhǔn)編碼的文字系統(tǒng),互不兼容.2007年微軟發(fā)布基于Windows 的復(fù)雜文本引擎,使藏文字有了標(biāo)準(zhǔn)的國(guó)際編碼,2007Word辦公軟件也完全支持統(tǒng)一編碼的藏文輸入系統(tǒng).目前全球通用的Microsoft Himalaya這個(gè)藏文字體是基于Unicode標(biāo)準(zhǔn)的藏文字體,所以國(guó)際上任何符合Unicode字體都可以相互切換.隨著互聯(lián)網(wǎng)信息技術(shù)的發(fā)展和Microsoft Office辦公軟件的普及,加之Office辦公軟件的優(yōu)越性,使得許多藏文字處理工作由Office辦公軟件取代.同時(shí),同元、班智達(dá)等軟件逐步退出其應(yīng)用領(lǐng)域.
藏文字在Word2010文檔中用喜馬拉雅輸入法編輯時(shí)會(huì)出現(xiàn)一段藏文句子在段落格式選擇分散對(duì)齊時(shí)出現(xiàn)右邊無(wú)法對(duì)齊的現(xiàn)象.這種現(xiàn)象使得藏文學(xué)者在編輯文稿、書(shū)籍出版、論文寫(xiě)作、錄入大量文稿及藏文資料時(shí)出現(xiàn)文章版式無(wú)法統(tǒng)一化和整齊化,影響文章整體版式,因此,藏文文檔的排版極其重要.針對(duì)藏文排版中出現(xiàn)的無(wú)法對(duì)齊現(xiàn)象,我們經(jīng)過(guò)探析發(fā)現(xiàn),可以基于Word VBA 自動(dòng)化任務(wù)的編程語(yǔ)言自定義應(yīng)用程序中的功能,使藏文文檔進(jìn)行排版并達(dá)到一定的規(guī)范化.
2.1 藏文排版
排版,是指將文字、圖像、圖形等可視化信息元素在版面布局上調(diào)整位置、大小,使版面布局條理化的過(guò)程.在藏文報(bào)刊、書(shū)籍、論文、藏經(jīng)等許多信息化文稿在輸入Word文檔時(shí)都需按照統(tǒng)一性版式進(jìn)行排版,如其字號(hào)、字體、段落、樣式、排列、頁(yè)面背景、主題及對(duì)齊方式進(jìn)行細(xì)致性排版.排版是為了在出版時(shí)達(dá)到統(tǒng)一性和有序性,使其文章版式能讓讀者在閱讀或翻閱時(shí)一目了然.
2.2 藏文排版的局限性
在Microsoft Word軟件中實(shí)現(xiàn)藏文排版規(guī)范化就必須使輸入法達(dá)到統(tǒng)一.在輸入法統(tǒng)一化的Word 編輯窗口中輸入符合藏文書(shū)寫(xiě)規(guī)范的藏文各類(lèi)文檔如詩(shī)歌、藏經(jīng)、散文、論文書(shū)籍和報(bào)刊等.這些特殊的適用于各類(lèi)文體的藏文符號(hào)和其放置位置給藏文排版尤其是詩(shī)經(jīng)等文體在喜馬拉雅輸入法編輯時(shí),輸入的文檔在Word 2010 辦公軟件的排版過(guò)程中,出現(xiàn)文檔無(wú)法對(duì)齊的現(xiàn)象,同時(shí)給藏文排版規(guī)范化帶來(lái)困難.
在Microsoft Word辦公軟件中各種復(fù)雜的文檔處理問(wèn)題以單一的Microsoft Word界面工具是無(wú)法滿足的,所以微軟在用戶(hù)需求中獨(dú)立開(kāi)發(fā)了VBA、VSTO、ActiveX等技術(shù),其中有的技術(shù)需在辦公軟件的環(huán)境中進(jìn)行功能的定制和開(kāi)發(fā).
3.1 Word VBA技術(shù)
Word VBA技術(shù)能使常用的過(guò)程或進(jìn)程自動(dòng)化,可以創(chuàng)建自定義的解決方案,適用于已有的Office辦公軟件.Office中的四個(gè)軟件都有了自己的程序設(shè)計(jì)語(yǔ)言,分別稱(chēng)WordBasic、ExcelBasic、AccessBasic、PowerPointBasic ( 在Outlook 中的開(kāi)發(fā)語(yǔ)言為Visual Basic Scripting Edi-tion).通常統(tǒng)一稱(chēng)為VBA( VB for Application)[1].文章中針對(duì)藏文排版出現(xiàn)的問(wèn)題我們可以基于Word VBA技術(shù)進(jìn)行編程并實(shí)現(xiàn)藏文排版的規(guī)范化.
3.2 VSTO技術(shù)
VSTO(Visual Studio Tools for Office )是VBA的替代,使得開(kāi)發(fā)Office應(yīng)用程序更加簡(jiǎn)單,并且用VSTO來(lái)開(kāi)發(fā)Office應(yīng)用程序可以使用Visual Studio開(kāi)發(fā)環(huán)境中的眾多功能和CLR提供的內(nèi)存管理、垃圾回收等功能.VSTO是一套用于創(chuàng)建自定義Office應(yīng)用程序的Visual Studio工具包.VSTO使用戶(hù)可以用Visual Basic 或者Visual C#擴(kuò)展Office應(yīng)用程序(例如Word、Excel、InfoPath和Outlook).VSTO還提供了增強(qiáng)的Office對(duì)象,用戶(hù)可以用他們來(lái)編程.比如說(shuō),用戶(hù)還可以找到VSTO版的Excel工作簿、工作表和范圍(range).
3.3 ActiveX技術(shù)
ActiveX是Microsoft提出的一組使用COM(Component Object Model,部件對(duì)象模型),使得軟件部件在網(wǎng)絡(luò)環(huán)境中進(jìn)行交互的技術(shù)集.它與具體的編程語(yǔ)言無(wú)關(guān).作為針對(duì)Internet應(yīng)用開(kāi)發(fā)的技術(shù),ActiveX被廣泛應(yīng)用于Web服務(wù)器以及客戶(hù)端的各個(gè)方面.同時(shí),ActiveX技術(shù)也被用于方便地創(chuàng)建普通的桌面應(yīng)用程序.另外,ActiveX也是開(kāi)放技術(shù)的集合,它涵蓋了所有流行的Internet標(biāo)準(zhǔn)、語(yǔ)言和平臺(tái).
3.4 Word VBA技術(shù)的優(yōu)越性
VBA技術(shù)是按需求在辦公軟件的環(huán)境中進(jìn)行功能模塊的定制和開(kāi)發(fā),使復(fù)雜的工作簡(jiǎn)單化,重復(fù)的工作便捷化.用戶(hù)可自定義界面環(huán)境,創(chuàng)建自定義函數(shù),實(shí)現(xiàn)辦公軟件內(nèi)置函數(shù)未提供的功能.利用 Word VBA程序處理 Word文檔的優(yōu)點(diǎn)主要有:①一個(gè)簡(jiǎn)單的VBA程序可以實(shí)現(xiàn)大量重復(fù)性的操作.②VBA集成在Office軟件中,可以直接使用Office中的函數(shù).③VBA編輯器提供了大量的控件和完備的語(yǔ)言系統(tǒng),用戶(hù)可以根據(jù)自己的需求編寫(xiě)VBA程序,從而創(chuàng)建功能完備的系統(tǒng).④相對(duì)于其他程序語(yǔ)言,VBA屬于簡(jiǎn)單的編程工具,超過(guò)60%的代碼可以由錄制宏產(chǎn)生,并且提供了可視化的設(shè)計(jì)工具[5].VBA也叫做宏程序,兩者具有相似性,宏是一串指令,可以使Office組件自動(dòng)完成用戶(hù)指定的各項(xiàng)動(dòng)作組合使復(fù)雜的操作自動(dòng)化[3].總之,通過(guò)使用VBA程序,用戶(hù)可以依據(jù)所需并進(jìn)行操作文檔中的內(nèi)容,而且可以使這些操作自動(dòng)化、通用化、規(guī)范化、交互化.而 VBA程序另一方面的優(yōu)點(diǎn)是稍做改動(dòng)即可在 VB中運(yùn)行.
按照藏文的書(shū)寫(xiě)規(guī)范,將段末的光標(biāo)移至段落起始位置,選擇當(dāng)前段落的文本,判斷當(dāng)前插入點(diǎn)是否落入表格,如果進(jìn)入表格則不執(zhí)行格式調(diào)整,因?yàn)椴匚奈臋n中的表格可手動(dòng)調(diào)整其標(biāo)準(zhǔn)格式較為便捷,段落排版只排版純文字格式,其步驟如下:
第一步:刪除行首的分音節(jié)符號(hào),判斷當(dāng)前行是否是段落結(jié)束行,緊接著移動(dòng)到該行的首,插入點(diǎn)到行尾,并選定整行,找到此段文本敲回車(chē)符號(hào),如果向前找到不可執(zhí)行的程序,則當(dāng)前段落結(jié)束.
第二步:接著移動(dòng)到該行的首位,插入點(diǎn)到行尾,并選定整行,敲回車(chē)符號(hào),則當(dāng)前段落結(jié)束.
第三步:接著判斷當(dāng)前行能否右對(duì)齊,對(duì)齊條件是包含空格符號(hào),右對(duì)齊后結(jié)束,查找這一行中是否有空格,如果有空格則這一行文本右邊對(duì)齊.
第五步:連續(xù)處理無(wú)法右對(duì)齊的情況.如果一行中沒(méi)有終結(jié)符,則該行的句尾可插入點(diǎn)到行尾.具體來(lái)說(shuō),光標(biāo)右移動(dòng)一個(gè)字符,取行尾字,插入10個(gè)分音節(jié)符號(hào),達(dá)到行尾要求,左移的數(shù)量要大于添加字符的長(zhǎng)度,下移一行 連續(xù)處理.其操作步驟具體以圖1流程圖明示.
按程序編程并執(zhí)行程序后,撤銷(xiāo)段落排版時(shí),如果光標(biāo)不在段落之首,則移動(dòng)到段落起始位置,獲取當(dāng)前字符.如果發(fā)現(xiàn)分音節(jié)符號(hào),則刪除其后面的空格和標(biāo)點(diǎn)符號(hào),刪除分音節(jié)符號(hào)之后的多余重復(fù)的字符,處理分句符號(hào)后面的情況;如果發(fā)現(xiàn)回車(chē)符號(hào),則結(jié)束運(yùn)行,向右移動(dòng)一個(gè)字符;如果發(fā)現(xiàn)分句符號(hào),則處理分句符號(hào)后面的情況;如果發(fā)現(xiàn)回車(chē)符號(hào),則結(jié)束運(yùn)行,向右移動(dòng)一個(gè)字符,獲取當(dāng)前字符,實(shí)現(xiàn)編程程序撤銷(xiāo)段落的排版.實(shí)施編程的核心代碼如下:
程序分步工作用于逐步執(zhí)行程序,代碼如下:
第一步工作:刪除行首的分音節(jié)符號(hào)
char_set = ChrW$(3851) 分音節(jié)符號(hào)
DeleteInBegin (char_set) 刪除行首的分音節(jié)符號(hào)
第二步工作:判斷當(dāng)前行是否是段落結(jié)束行
HomeKey unit:=wdLine 移動(dòng)到該行的首
EndKey unit:=wdLine, Extend:=wdExtend 插入點(diǎn)到行尾,并選定整行
Find.Text = ChrW$(13) 回車(chē)符號(hào) vbCr=ChrW$(13)
If (.Find.Execute(Forward:=False) = True) Then
bLoopContrl = False
MsgBox "當(dāng)前段落結(jié)束"
Exit Do
End If
第三步:判斷當(dāng)前行能否右對(duì)齊,對(duì)齊條件是包含空格符號(hào),右對(duì)齊后結(jié)束
Find.Text = " " 查找這一行中是否有空格,如果有空格則文本右對(duì)齊
If (.Find.Execute(Forward:=False) = True) Then
ParagraphFormat.Alignment = wdAlignParagraphJustify '這一行文本右邊對(duì)齊
GoTo MyNext
End If
第四步:分句符號(hào)后沒(méi)有空格的情況. 處理分句符號(hào)之后添加空格, 再實(shí)現(xiàn)右對(duì)齊
Find.Text = ChrW$(3853) '0x0F0D 查找這一行中的藏文分句符號(hào)
If (.Find.Execute(Forward:=False) = True) Then
.MoveRight wdCharacter, 1 '光標(biāo)右移動(dòng)一個(gè)字符
.InsertAfter " " '在分句符號(hào)后面添加一個(gè)空格
.ParagraphFormat.Alignment = wdAlignParagraphJustify '這一行文本右邊對(duì)齊
GoTo MyNext
End If
第五步:處理連續(xù)行(無(wú)法右對(duì)齊的情況)
.EndKey unit:=wdLine 插入點(diǎn)到行尾
MoveLeft wdCharacter, 1 光標(biāo)右移動(dòng)一個(gè)字符
char_end =.Range.Characters(1) '取行尾字
If (char_end = ChrW$(3851)) Then '
InsertAfter str_end 插入10個(gè)分音節(jié)符號(hào),達(dá)到行尾要求
MoveLeft wdCharacter, Len(str_end) + 1 左移的數(shù)量要大于添加字符的長(zhǎng)度
End If
MyNext:
MoveDown unit:=wdLine '下移一行
Loop
End With
End Sub
通過(guò)Word VBA 編程使藏文排版規(guī)范化也可實(shí)現(xiàn)標(biāo)準(zhǔn)編寫(xiě)工作的部分自動(dòng)化.文章依據(jù)標(biāo)準(zhǔn)編寫(xiě)要求,編程實(shí)現(xiàn)了標(biāo)準(zhǔn)編寫(xiě)工作的“一鍵式”,也可快速實(shí)現(xiàn)藏文文檔的排版整齊化,同時(shí)可“一鍵式”快速實(shí)現(xiàn)藏文文檔排版后立即還原并撤銷(xiāo)此程序,實(shí)現(xiàn)了在藏文報(bào)刊、書(shū)籍、論文、藏經(jīng)等許多信息化文稿在輸入Word2010文檔后在排版中出現(xiàn)的右邊無(wú)法對(duì)齊的現(xiàn)象,使藏文文檔基本實(shí)現(xiàn)了排版中的統(tǒng)一化.但是在基于VBA技術(shù)并進(jìn)行程序編譯的過(guò)程中也出現(xiàn)了許多漏洞,例如在符合藏文寫(xiě)作規(guī)范的基礎(chǔ)上,如若輸入的一行藏文中不出現(xiàn)藏文的終結(jié)符號(hào)時(shí)編譯的程序也無(wú)法解決右對(duì)齊.再者,在藏語(yǔ)詩(shī)歌排版中,句尾兩個(gè)終結(jié)符號(hào)的不一致以及兩個(gè)終結(jié)符號(hào)間有無(wú)空格的爭(zhēng)議給標(biāo)準(zhǔn)化藏文排版帶來(lái)了一定的局限性,希望在以后的研究中能基于Word VBA技術(shù)編譯相關(guān)程序予以解決.
[1] 熊川,陳勝權(quán),楊端.基于 Word-VBA 的試卷管理系統(tǒng)的實(shí)現(xiàn)[J].桂林航天工業(yè)高等專(zhuān)科學(xué)校學(xué)報(bào),2008,4.
[2] 龍馬高新教育.Office VBA從新手到高手[M].北京:人民郵電出版社,2015.3.
[3] 楊曉亮.Word VBA 高效排版范例應(yīng)用[M].北京:中國(guó)青年出版社,2005.
2015-11-02
國(guó)家自然科學(xué)基金項(xiàng)目“基于依存關(guān)系的藏文語(yǔ)義角色標(biāo)注研究”(61363057).
丁海蘭(1990—),女(藏族),甘肅天祝人,碩士研究生,主要從事藏文信息處理方面的研究.
TP317.2
A
1009-2102(2015)04-0037-05