劉友洪+肖文杰+胡彪+鄒澤順+駱鳳姣
摘要:在Eclipse環境下,利用實現了VBA接口的Jacob word接口,對Microsoft Word軟件進行二次開發,開發了一款能夠識別模板論文的文字,圖片,表格等格式,并且將其應用到待排版論文中去的自動調整系統,進而實現了學位論文格式的規范化。
關鍵詞:論文排版;二次開發;格式識別;自動調整
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)02-0065-03
本科學位論文作為評價高校本科生學習質量的重要指標,對于高校和大學生都非常重要。隨著高等教育的不斷發展,本科學位論文除了在內容和創新方面有很高的要求之外,論文的格式同樣也備受關注。目前學位論文的格式調整工作還是由學生本人完成,指導教師糾正。一方面,學生調整論文的格式需要不少時間,從而導致在內容創新上花費的精力相對更少,不僅如此,調整格式時也難免會出現錯誤;另一方面,指導教師發現論文中存在的格式錯誤也同樣不易。因此,如果能根據論文格式規范標準,利用當今發達的軟件技術來自動完成論文格式的規范工作,將會為學生和指導教師減少不必要的工作量,讓他們將更多精力集中在內容創新方面,進而提高學術論文的質量。目前市場上雖然有排版軟件,但是針對學位論文的卻并不多,而能夠自動識別格式規范并自動調查論文格式的軟件鳳毛麟角。因此就市場需求來說,開發一款專業的學位論文格式規范自動調整系統也顯得很有必要。
1 開發環境
1.1 VBA
Visual Basic for Applications(VBA)是Visual Basic的一種宏語言,是微軟開發出來在其桌面應用程序中執行通用的自動化(OLE)任務的編程語言1。主要用于擴展Windows的應用程序功能,特別是Microsoft Office軟件。它能夠通過語言中的對象及對象的屬性來對Office文檔等對象的各類屬性進行讀取和修改,從而實現應用軟件的可編程化。同時Microsoft Office軟件也為VBA語言提供了很好的開發環境,在軟件中不僅可以直接執行VBA宏代碼,并且還能通過錄制VBA宏代碼的方式實現從操作到代碼的逆向轉換,更為程序開發提供了方便。本系統在開發過程中將VBA開發手冊與錄制宏的方式結合起來,從而大大提高開發的效率。
1.2 Jacob
Jacob接口通過在Java中調用com接口自動組件(VBA),實現了一種簡單,靈活的Java與COM的通信方式。在實現了Jacob接口的Java系統中,絕大多數事物和事物的屬性都可以采用不同類型的對象來表示1,其中包括:
1) word應用對象 ActiveXComponent word
2) word文檔集對象 Dispatch Documents
3) word文檔對象 Dispatch wordFile
4) 光標及區域對象 Dispatch selection,range
5) 其他文檔屬性對象
而對于對象的操作采用的是鏈式操作法:
Dispatch 論文文檔 = Dispatch.get(word,”Document”).toDispatch();
Dispatch 段落 = Dispatch.call(論文文檔,”Item :1”).toDispatch();
因而可以利用Jacob接口和Java代碼中調用文檔的各個屬性和和方法,可以實現對文檔格式的讀取和應用,進而滿足了本系統的開發需求。
2 系統整體結構設計
為了能夠提高系統的可讀性和可維護性,系統按照自頂向下的方法對系統功能結構進行了設計。按照模塊的功能來分,系統可以被分為三個模塊,分別是格式的讀取和存儲模塊,格式設置模塊,自動生成目錄模塊。其中,格式讀取和存儲模塊可分為讀取頁面屬性、讀取正文格式、讀取頁眉頁腳等功能;格式設置模塊可分為設置文檔頁面屬性、刪除文檔多余符號、設置文檔正文格式、設置文檔頁眉頁腳格式等功能。具體的系統模塊劃分如圖1所示。
針對word中格式的多樣性和不定長性,系統采用的數據存儲結構是全局變量String數組+鏈表的存儲結構。讀取和存儲模塊通過導入word文檔,獲得文檔的控制和修改權限,進而對文檔的屬性和內容格式進行讀取,并且將其轉換為String類型,最終基本有序的存放在數組當中。格式設置模塊首先打開需要進行排版的文檔,通過定位算法查找到文檔的可調整部分,并對可調整部分中被認定的無用符號進行刪除,最后再按照指定的順序對文檔屬性和文檔內容的格式進行自動調整。
3 核心算法及優化
3.1 關鍵位置定位
被調整格式的論文內容可能包含有不需要進行調整的部分,如封面、保密協議等,因而在進行格式讀取或調整之前,需要尋找合適分界點,來對文檔的待調整內容進行劃分1。經過對文檔結構的分析,系統需要尋找到分界點就是“目錄”。由于沒有對待排版文檔做任何的要求,因而文檔的內容有很大的復雜性。通過歸納,待排版文檔內容可能存在如下兩種情況:第一種情況是待排版文檔包含“目錄”段落,在上述情況下,定位算法在目錄的上方尋找到“目錄”段;第二種情況即待排版文檔不包含“目錄”,由于摘要段落是一篇完整論文所必備的成分,針對上述情況,定位算法借助“摘要”段落進行查找。第一種算法結構描述如下:
將光標定位到摘要段落起始位置;
While(遍歷摘要段落之前的每一段)
{
獲取該段落的區域;
進行區域的文字分析;
If(包含“目”并且包含“錄”并且不包含其他文字)
{
記錄當前段落位置,退出循環;endprint
}}
上述尋找文檔關鍵位置算法的前提是“目錄”段落的存在,然而通常文檔可能并不具有這個條件。為了使系統具有更強的適用性,系統在關鍵位置查找失敗后將觸發自動插入算法,在合適的位置插入“目錄”段落。該算法的關鍵點在于尋找一個合適的插入點,通過文檔的必要的部分(摘要段)可以實現。
3.2 段落格式調整
根據論文段落調整格式的屬性值不同,可將段落分為兩種類型,第一種是文檔中的非正文部分,如摘要、關鍵詞等,調整的屬性包括Font(字體)、Bold(加粗)、Size(大小)等;第二種是文檔中的正文段落進行調整,調整的屬性包括Font(字體)、Bold(加粗),Size(大小)、Alignment(對齊方式)、FirstLineIndent(首行縮進)、SpaceBefore(段前)、SpaceAfter(段后)等10種屬性。由于正文段落中可能包含標題、表格、圖片以及正文內容,而上述幾種形式的屬性都不一致,因此需要區別對待。考慮到表格和圖片格式與文字的不同,可另處理。因此本節所述的段落格式調整只考慮正文段落中的標題和正文內容。段落正文與標題有一定字符數的限制,據統計,段落正文字符數至少是40個字,而標題所包含字符則要求少于40個字,因此對于標題與段落正文的區分可通過所包含的字符數來分析。
具體而言,段落格式調整的步驟如下:系統首先通過上節提到的定位算法,定位文檔的起始點;接著對起始點之后的每個段落進行分析。在對段落進行分析過程中,系統通過Rang對象獲得待分析段落區域相對于待排版文檔起始點的起始位置(start)和結束位置(end)。接著根據區域包含的內容和字符數進行判定。如果段落區域包含表格區域或者圖片區域(特殊區域另做處理),則跳過當次循環。否則統計待分析段落區域所包含的字符數,如果超過40個字,則直接判定為段落正文,可根據段落正文屬性進行調整;否則判定為標題,至于是標題級別可根據下節的標題級別判定算法進行分析。具體的算法流程如圖2所示:
3.3 標題等級識別
在段落格式的調整過程中,標題等級識別的正確性不僅影響到段落的格式,而且還會導致后期自動生成目錄的錯誤,因此這是整個系統的關鍵步驟。本系統在進行標題等級識別時,首先進行的字符數判定,而對于字符數判定合格的段落,則判定為標題。對于標題等級的識別,有兩種算法。第一種識別算法是對段落的大綱等級(OutlineLevel)進行識別和讀取,由于論文作者常常忽略了段落大綱級別的設置,因此第一種算法在很多時候往往準確度不高,因此系統采用第二種識別方案,即對段落的前置序號如(1.1.2)2進行識別,系統根據前置序號的“.”字符與數字字符的數量來綜合分析。為了消除正文中可能出現與前置序號類似的字符序列,系統對前置序號的區域進行了嚴格的限定。第二種算法的具體描述如下。
將光標定位到段落的起始位置
While(遍歷段落區域的字符)
If(當前字符為數字)
數字字符數加一;
標記若下一個字符為“.”則有效;
Else if(如果當前字符為“.”并且字符有效)
“.”字符數加一;
標記若下一個字符為“.”則無效;
Else if(如果當前字符為“ ”)
跳過此次循環;
Else
序號區域結束,結束循環;
通過上述算法,系統可以獲得有效的數字字符個數p和“.”字符個數n。由于一級標題在格式調整方面有著一定特殊性,因此將一級標題進行單獨處理,系統規定當 p=1并且n<2的情況為一級標題。其余當n!=0&&p>1的情況為 n+1級標題。
4 系統實現效果
本系統是為了方便本科生對畢業論文進行格式調整而開發的系統,因而我們采用的簡潔的軟件用戶使用界面,用戶只需要選擇模板文檔和待排版的文檔即可自動進行排版。經過測試,待字數10000字左右的待排論文,排版過程平均耗時為3.5分鐘。論文格式調整前與調整后的效果圖如圖3、圖4所示。
5 結束語
本系統不是僅能對一類論文進行論文格式調整,而是對于大部分類型的論文,在用戶提供模板的前提下,均能準確的進行自動調整。本系統系統不僅極大地解放了人工勞動,而且相對于人工,其具有更高的準確性。
目前,本系統已經投入使用,雖然其設計思路和代碼仍有一定的優化空間,但已經能夠基本實現論文排版要求,在提高自動排版的準確率同時減少花費的時間,使其更加智能化、人性化。
參考文獻:
[1] 李愛玲, 李湘江. 基于VBA的Word文檔自動評閱技術研究[J]. 科學技術與工程, 2008, 8(17).
[2] 金保華, 李金旭. 基于JACOB的Java通用WordWriter組件設計[J]. 鄭州輕工業學院學報:自然科學版, 2001, 26(3).
[3] 何偉平, 張曉東. 學位論文自動規范化排版系統的設計[J]. 廣東化工, 2015, 1(42).
[4] 潘若瑛, 張忠能. 多模板多格式論文校驗與自動排版系統的研究[J]. 微型電腦應用, 2013, 29(3).endprint