APP下载

基于Word VBA的藏文排版规范及技术实现

2015-02-21丁海兰祁坤钰

关键词:藏文空格段落

丁海兰,祁坤钰

(西北民族大学中国民族信息技术研究院,甘肃兰州730030)

基于Word VBA的藏文排版规范及技术实现

丁海兰,祁坤钰

(西北民族大学中国民族信息技术研究院,甘肃兰州730030)

在藏文文档排版中,实现文章统一化排版的关键技术在于格式的调整.目前,在Word2010办公软件中进行藏文排版时出现左右边界无法对齐的现象,导致藏文文档板式不符合传统藏文行文规范,给办公编辑、古籍整理等工作带来一定的局限性.文章以Word软件为开发平台,采用Word VBA技术,结合VBA编程,实现了对藏文文档进行合理的排列调整并符合藏文版式的书写规范系统.对藏文文档排版的规范化有重要的意义.

藏文排版;Word VBA 模板;技术实现

0 引言

在Microsoft Word中输入符合藏文书写规范的藏文各类文档如诗歌、藏经、散文、论文书籍和报刊等,按照Word排版格式利用页面菜单工具进行格式的调整,使版面达到需求化、使用化和便捷化的目的.基于藏文排版中出现的无法右对齐现象,我们可以借于Word VBA技术进行编程并达到藏文排版的规范化.Word VBA( Visual Basic for Application)是一种由微软公司开发并附属在Office办公软件包中执行通用的自动化任务的编程语言[1].VBA的主要作用是自定义应用程序中的功能,帮助使用者根据自身需求在Office环境中进行功能模块的制定和开发.虽然Word 提供了强大的文字处理能力和文档控制能力 , 但在喜马拉雅输入法编辑的环境中,藏文文档只使用Word的基本功能时还会涉及很多繁琐的排版工作,因此需要一种自动排版的功能使藏文在排版中达到文档的规范化.Word VBA是一种面向对象的、可视化的、事件驱动的高级语言,是在Visual Basic的框架上建立起来的.它的语法、功能甚至开发环境跟 Visual Basic 都基本相同. 通过Word VBA编程, 可以实现Word文档的自动化.文章通过该方法,对Word VBA辅助标准编写工作进行了研究,实现了标准编写工作的部分自动化.

1 藏文字排版应用现状

计算机藏文系统研发开始于上世纪80年代,国内很多科研院所和高校均开发并研制了多个文字处理软件,其中方正书版系统和华光藏文是基于DOS的专业级排版系统.2000年后随着Windows系统的推广应用,相继出现了基于Windows 的同元、班智达、琼迈、桑布扎等藏文字处理软件,但是这些都是非国际标准编码的文字系统,互不兼容.2007年微软发布基于Windows 的复杂文本引擎,使藏文字有了标准的国际编码,2007Word办公软件也完全支持统一编码的藏文输入系统.目前全球通用的Microsoft Himalaya这个藏文字体是基于Unicode标准的藏文字体,所以国际上任何符合Unicode字体都可以相互切换.随着互联网信息技术的发展和Microsoft Office办公软件的普及,加之Office办公软件的优越性,使得许多藏文字处理工作由Office办公软件取代.同时,同元、班智达等软件逐步退出其应用领域.

2 Word中的藏文版式问题

藏文字在Word2010文档中用喜马拉雅输入法编辑时会出现一段藏文句子在段落格式选择分散对齐时出现右边无法对齐的现象.这种现象使得藏文学者在编辑文稿、书籍出版、论文写作、录入大量文稿及藏文资料时出现文章版式无法统一化和整齐化,影响文章整体版式,因此,藏文文档的排版极其重要.针对藏文排版中出现的无法对齐现象,我们经过探析发现,可以基于Word VBA 自动化任务的编程语言自定义应用程序中的功能,使藏文文档进行排版并达到一定的规范化.

2.1 藏文排版

排版,是指将文字、图像、图形等可视化信息元素在版面布局上调整位置、大小,使版面布局条理化的过程.在藏文报刊、书籍、论文、藏经等许多信息化文稿在输入Word文档时都需按照统一性版式进行排版,如其字号、字体、段落、样式、排列、页面背景、主题及对齐方式进行细致性排版.排版是为了在出版时达到统一性和有序性,使其文章版式能让读者在阅读或翻阅时一目了然.

2.2 藏文排版的局限性

在Microsoft Word软件中实现藏文排版规范化就必须使输入法达到统一.在输入法统一化的Word 编辑窗口中输入符合藏文书写规范的藏文各类文档如诗歌、藏经、散文、论文书籍和报刊等.这些特殊的适用于各类文体的藏文符号和其放置位置给藏文排版尤其是诗经等文体在喜马拉雅输入法编辑时,输入的文档在Word 2010 办公软件的排版过程中,出现文档无法对齐的现象,同时给藏文排版规范化带来困难.

3 Word应用技术

在Microsoft Word办公软件中各种复杂的文档处理问题以单一的Microsoft Word界面工具是无法满足的,所以微软在用户需求中独立开发了VBA、VSTO、ActiveX等技术,其中有的技术需在办公软件的环境中进行功能的定制和开发.

3.1 Word VBA技术

Word VBA技术能使常用的过程或进程自动化,可以创建自定义的解决方案,适用于已有的Office办公软件.Office中的四个软件都有了自己的程序设计语言,分别称WordBasic、ExcelBasic、AccessBasic、PowerPointBasic ( 在Outlook 中的开发语言为Visual Basic Scripting Edi-tion).通常统一称为VBA( VB for Application)[1].文章中针对藏文排版出现的问题我们可以基于Word VBA技术进行编程并实现藏文排版的规范化.

3.2 VSTO技术

VSTO(Visual Studio Tools for Office )是VBA的替代,使得开发Office应用程序更加简单,并且用VSTO来开发Office应用程序可以使用Visual Studio开发环境中的众多功能和CLR提供的内存管理、垃圾回收等功能.VSTO是一套用于创建自定义Office应用程序的Visual Studio工具包.VSTO使用户可以用Visual Basic 或者Visual C#扩展Office应用程序(例如Word、Excel、InfoPath和Outlook).VSTO还提供了增强的Office对象,用户可以用他们来编程.比如说,用户还可以找到VSTO版的Excel工作簿、工作表和范围(range).

3.3 ActiveX技术

ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型),使得软件部件在网络环境中进行交互的技术集.它与具体的编程语言无关.作为针对Internet应用开发的技术,ActiveX被广泛应用于Web服务器以及客户端的各个方面.同时,ActiveX技术也被用于方便地创建普通的桌面应用程序.另外,ActiveX也是开放技术的集合,它涵盖了所有流行的Internet标准、语言和平台.

3.4 Word VBA技术的优越性

VBA技术是按需求在办公软件的环境中进行功能模块的定制和开发,使复杂的工作简单化,重复的工作便捷化.用户可自定义界面环境,创建自定义函数,实现办公软件内置函数未提供的功能.利用 Word VBA程序处理 Word文档的优点主要有:①一个简单的VBA程序可以实现大量重复性的操作.②VBA集成在Office软件中,可以直接使用Office中的函数.③VBA编辑器提供了大量的控件和完备的语言系统,用户可以根据自己的需求编写VBA程序,从而创建功能完备的系统.④相对于其他程序语言,VBA属于简单的编程工具,超过60%的代码可以由录制宏产生,并且提供了可视化的设计工具[5].VBA也叫做宏程序,两者具有相似性,宏是一串指令,可以使Office组件自动完成用户指定的各项动作组合使复杂的操作自动化[3].总之,通过使用VBA程序,用户可以依据所需并进行操作文档中的内容,而且可以使这些操作自动化、通用化、规范化、交互化.而 VBA程序另一方面的优点是稍做改动即可在 VB中运行.

4 段落排版与技术路线

按照藏文的书写规范,将段末的光标移至段落起始位置,选择当前段落的文本,判断当前插入点是否落入表格,如果进入表格则不执行格式调整,因为藏文文档中的表格可手动调整其标准格式较为便捷,段落排版只排版纯文字格式,其步骤如下:

第一步:删除行首的分音节符号,判断当前行是否是段落结束行,紧接着移动到该行的首,插入点到行尾,并选定整行,找到此段文本敲回车符号,如果向前找到不可执行的程序,则当前段落结束.

第二步:接着移动到该行的首位,插入点到行尾,并选定整行,敲回车符号,则当前段落结束.

第三步:接着判断当前行能否右对齐,对齐条件是包含空格符号,右对齐后结束,查找这一行中是否有空格,如果有空格则这一行文本右边对齐.

第五步:连续处理无法右对齐的情况.如果一行中没有终结符,则该行的句尾可插入点到行尾.具体来说,光标右移动一个字符,取行尾字,插入10个分音节符号,达到行尾要求,左移的数量要大于添加字符的长度,下移一行 连续处理.其操作步骤具体以图1流程图明示.

5 技术实现

按程序编程并执行程序后,撤销段落排版时,如果光标不在段落之首,则移动到段落起始位置,获取当前字符.如果发现分音节符号,则删除其后面的空格和标点符号,删除分音节符号之后的多余重复的字符,处理分句符号后面的情况;如果发现回车符号,则结束运行,向右移动一个字符;如果发现分句符号,则处理分句符号后面的情况;如果发现回车符号,则结束运行,向右移动一个字符,获取当前字符,实现编程程序撤销段落的排版.实施编程的核心代码如下:

程序分步工作用于逐步执行程序,代码如下:

第一步工作:删除行首的分音节符号

char_set = ChrW$(3851) 分音节符号

DeleteInBegin (char_set) 删除行首的分音节符号

第二步工作:判断当前行是否是段落结束行

HomeKey unit:=wdLine 移动到该行的首

EndKey unit:=wdLine, Extend:=wdExtend 插入点到行尾,并选定整行

Find.Text = ChrW$(13) 回车符号 vbCr=ChrW$(13)

If (.Find.Execute(Forward:=False) = True) Then

bLoopContrl = False

MsgBox "当前段落结束"

Exit Do

End If

第三步:判断当前行能否右对齐,对齐条件是包含空格符号,右对齐后结束

Find.Text = " " 查找这一行中是否有空格,如果有空格则文本右对齐

If (.Find.Execute(Forward:=False) = True) Then

ParagraphFormat.Alignment = wdAlignParagraphJustify '这一行文本右边对齐

GoTo MyNext

End If

第四步:分句符号后没有空格的情况. 处理分句符号之后添加空格, 再实现右对齐

Find.Text = ChrW$(3853) '0x0F0D 查找这一行中的藏文分句符号

If (.Find.Execute(Forward:=False) = True) Then

.MoveRight wdCharacter, 1 '光标右移动一个字符

.InsertAfter " " '在分句符号后面添加一个空格

.ParagraphFormat.Alignment = wdAlignParagraphJustify '这一行文本右边对齐

GoTo MyNext

End If

第五步:处理连续行(无法右对齐的情况)

.EndKey unit:=wdLine 插入点到行尾

MoveLeft wdCharacter, 1 光标右移动一个字符

char_end =.Range.Characters(1) '取行尾字

If (char_end = ChrW$(3851)) Then '

InsertAfter str_end 插入10个分音节符号,达到行尾要求

MoveLeft wdCharacter, Len(str_end) + 1 左移的数量要大于添加字符的长度

End If

MyNext:

MoveDown unit:=wdLine '下移一行

Loop

End With

End Sub

6 结论

通过Word VBA 编程使藏文排版规范化也可实现标准编写工作的部分自动化.文章依据标准编写要求,编程实现了标准编写工作的“一键式”,也可快速实现藏文文档的排版整齐化,同时可“一键式”快速实现藏文文档排版后立即还原并撤销此程序,实现了在藏文报刊、书籍、论文、藏经等许多信息化文稿在输入Word2010文档后在排版中出现的右边无法对齐的现象,使藏文文档基本实现了排版中的统一化.但是在基于VBA技术并进行程序编译的过程中也出现了许多漏洞,例如在符合藏文写作规范的基础上,如若输入的一行藏文中不出现藏文的终结符号时编译的程序也无法解决右对齐.再者,在藏语诗歌排版中,句尾两个终结符号的不一致以及两个终结符号间有无空格的争议给标准化藏文排版带来了一定的局限性,希望在以后的研究中能基于Word VBA技术编译相关程序予以解决.

[1] 熊川,陈胜权,杨端.基于 Word-VBA 的试卷管理系统的实现[J].桂林航天工业高等专科学校学报,2008,4.

[2] 龙马高新教育.Office VBA从新手到高手[M].北京:人民邮电出版社,2015.3.

[3] 杨晓亮.Word VBA 高效排版范例应用[M].北京:中国青年出版社,2005.

2015-11-02

国家自然科学基金项目“基于依存关系的藏文语义角色标注研究”(61363057).

丁海兰(1990—),女(藏族),甘肃天祝人,硕士研究生,主要从事藏文信息处理方面的研究.

TP317.2

A

1009-2102(2015)04-0037-05

猜你喜欢

藏文空格段落
趣味•读写练 答案
趣填成语
敦煌本藏文算书九九表再探
空格填数
【短文篇】
西藏大批珍贵藏文古籍实现“云阅读”
心理小测试
你来补缺的数
黑水城和额济纳出土藏文文献简介
夏天,爱情的第四段落