張 旭,常蕓瑜,穆蘭芬,劉明明
(中國核動力研究設計院 核反應堆系統設計技術重點實驗室,成都 610213)
在企業經營過程中,需定期進行內外部審查,確保質量保證體系的有效運行。審查的內容會包括企業文件的“標準化”管理,即相關文件是否按程序文件規定的文件格式、編號要求,經過了規定的校審核和簽署,并達到了規定的質量要求等。
企業在內外部審查的過程中,發現了文件的一些問題,包括簽署的時間錯誤、工程號錯誤、字體錯誤、物理量單位的誤用、格式混亂等。這些文件標準化的問題在一定程度上給企業產品的質量帶來了影響,為產品帶來質量隱患。
基于上述情況,有必要開發一種文件質量檢查的軟件來輔助提高文件的質量,保證文件的一致性、準確性。
通過調研,文件標準化包含以下方面的內容:文件封面、簽署頁、頁面頁腳的標識,各級設計人員的資格是否符合有關規定,是否按規定進行編制、校對和審批,文件編號、名稱、版本、密級、保存期限等標識,各章、節的標題與正文中相應章節的標題是否一致,正文中的字體、字號、圖表等是否符合統一等。
經統計,在檢查上述內容時,常見的文件質量問題有:
1)字體字號錯誤。
2)圖表順序號錯誤或格式錯誤。
3)縮進行距等格式有誤。
4) 物理單位使用錯誤,比如“4 ~20mA 電流信號”應寫作“4mA ~20mA 電流信號”等。
5)根據語境判斷英文字母與數字是否混用(如“o”“l”與數字“0”“1”)等。
除了要解決上述問題外,軟件工具還應操作簡單,盡可能簡化使用流程與人機界面,能快速地查找出文件的標準化問題。
目前有一些文件格式排版工具類產品,如“Word 自動排版軟件”“排版大師”等,不同的軟件工具實現的功能略有差異,但基本大同小異,其功能有:自動處理段落、表格、圖形、頁眉頁碼、自動檢查編號順序等。上述軟件都是基于Windows 平臺的Word 文檔進行排版操作,適用于論文、標書、設計文件等的自動排版。上述功能基本可免費下載使用,部分功能還需付費使用,如:整理上下標m2、H2O;統一kg、km,Pa,kPa、kw、kWh、kV 等單位符號,規程規范標準名稱對比等。
上述各種軟件有兩方面的欠缺。其一,檢查規則不完全可配置,針對不同的格式規則的靈活性不夠;其二,一些種類的檢查工具需要將文件上傳至互聯網,對于不能上傳至互聯網的內部文件,不能使用該軟件。這兩個問題都是不可避免的嚴重問題。

圖1 軟件總體處理流程圖Fig.1 Software overall processing flowchart
另有一種格式排版軟件,其設計思路是,該工具的人機界面包含多個文本框,分別代表一級標題、二級標題、正文等,用戶將文字寫入該工具的各種文本框,再由該工具將每個文本框按其類型制作成Word 文檔。該方法對文檔格式識別不是由軟件讀取Word 文檔實現的,所以具備很高的準確性,但是這也給用戶使用帶來了不方便,既不直觀,也帶來了附加工作量。同時,在文件升版過程中,由于局部的增刪影響文件章節順序時,用戶需重新向該工具的人機界面文本框粘貼文檔內容,帶來了使用的不便。
目前在該領域的學術研究方面,主要包括基于XML方法及使用VBA 方式對Microsoft Word 軟件進行開發的研究[1-3]。
為實現上述功能需求,軟件功能分為兩部分,即頁面基本信息檢查和智能檢查。其中,頁面基本信息檢查內容包括:字體字號的檢查、圖表順序號和格式的檢查、頁眉頁腳的檢查、正文中縮進、行間距的檢查等;智能檢查內容較為繁雜,而且可以隨時更新標準庫,包括:常見的英文縮略語檢查,通過上下文語境,進行英文字母“o”“l”與數字“0”“1”的誤用情況的檢查,km 為單位數值達10萬以上的提醒等。
軟件的總體流程如圖1 所示。
在文件表觀檢查工具中制訂文件表觀樣式,形成標準Word 樣式庫,其中涉及模糊判斷的標準,形成正則表達式集合。文件編寫人員編寫完文件,選擇合適的樣式庫,進行文件的標準化檢查,檢查包括頁面基本信息檢查與正則匹配檢查,錯誤結果將批注提醒作者修改。
1.4.1 技術路線
VSTO(Visual Studio Tools for Office)是一套可創建自定義Office 應用程序的Visual Studio 工具包。基于VSTO 技術,可使用Visual Basic 或C#語言擴展Office 程序的功能。基于更加專業和強大的Visual Studio 開發環境,可實現比Office 中的Visual Basic Editor 界面更友好、功能更全面的程序開發。VSTO 具有可視化的設計器、更安全的托管代碼擴展等一系列優點。因此,選用VSTO 作為文件標準化檢查工具的技術路線。

圖2 新建項目Fig.2 New project

圖3 新建可視化設計器功能區模板Fig.3 New visual designer ribbon template

圖4 可視化設計器功能區設計圖Fig.4 Visual designer ribbon design

圖5 縮進檢查功能流程圖Fig.5 Indentcheck function flowchart
1.4.2 界面設計與制作
在Visual Studio 中新建項目,選擇Office 模板中的“Word 2010 外接程序”模板。如圖2 所示。
然后增加人機界面,人機界面以Word 軟件中增加標簽頁的形式實現。添加可視化設計器功能區模板,如圖3所示。
通過拖拽控件進行菜單欄的設計,可選擇的控件包括按鈕、組、勾選框、文本框等多種。本項目的人機界面功能需求較為簡單,僅需要按鈕控件作為不同功能的選擇,將具體檢查功能的入口設置在按鈕控件的點擊事件中,另外使用組控件將功能按鈕分類。可視化設計器功能區如圖4 所示。
1.4.3 功能實現
以C#語言為例,引用動態鏈接庫的方法如下:
using Word = Microsoft.Office.Interop.Word;
using Microsoft.Office.Tools.Ribbon;
Application 對象可代表Word 應用程序,定義并獲取Application 對象的方法如下:
Word.Application app = Globals.ThisAddIn.Application;
具體檢查功能由對應的按鈕Click 事件觸發。“基礎項綜合檢查”與“高級項綜合檢查”是多項檢查功能的結合,實現方法類似。
以縮進檢查功能為例,介紹檢查功能的處理邏輯。縮進檢查功能流程圖如圖5 所示。
縮進功能指正文的每個段落要縮進2 個字符,實現該功能最主要的難度在于排除不需要考慮縮進要求的對象。不需要考慮正文縮進格式的項目包括各級標題、圖表名稱(如“圖1 圖名”)、只有一個圖片、Visio 對象或SmartArt圖形的段落等此類對象、帶有編號或項目符號的對象。

圖6 軟件效果圖Fig.6 Software rendering
在進行縮進檢查時,逐段遍歷段落對象,源碼示例如下:
foreach (Word.Paragraph para in app.ActiveDocument.Paragraphs){……}
考慮到非首次使用檢查功能的情況(如已檢查出錯誤,再次檢查修改后的文件),為避免用戶需要在修改格式后還必須手動刪除報錯的批注,在進行檢查前,應刪除文件中此類報錯批注,然后再進行檢查。
排除不需要考慮縮進要求的對象時,圖表名稱可使用正則表達式判斷,源碼示例如下:
public static bool CheckPictureTableNameReg(string text)
{
Regex Re = new Regex("[圖|表][0-9]+[ ]");return Re.IsMatch(text);
}
在確定該段落應進行首行縮進檢查后,進行檢查,對于判斷縮進不符合規范的段落對象增加批注“縮進錯誤”,源碼示例如下:
if (para.Format.FirstLineIndent != 24)
{
object comment = "縮進有誤";
para.Range.Comments.Add(para.Range, ref comment);
}

圖7 檢查結果示意圖Fig.7 Schematic diagram of inspection results
加載后Word 軟件標簽欄會增加一個標簽,效果如圖6所示,點擊下面各種按鈕,對應執行各組功能。
檢查結束后,格式錯誤之處會被批注提醒,如圖7 所示。
基于VSTO 技術的文件標準化檢查工具,能夠以Microsoft Word 軟件中標簽頁插件的形式呈現檢查功能的人機界面,既能實現基本頁面格式的檢查,也可實現部分能智能化檢查功能。該工具實現了標準化檢查的需求,同時滿足了使用簡便、人機界面簡潔的要求。對于提高文件質量、文件嚴肅性、工程安全具有重要意義。