司存友 朱寅非 羅俐雅
(1.江蘇省水文水資源勘測局,江蘇 南京 210029;2.南京城市職業(yè)學(xué)院,江蘇 南京 210038)
《蘇北供水計量關(guān)鍵技術(shù)》共計12章,由十多位作者參與編寫,每章近100 頁,整個文檔近1000 頁。匯總上來的文檔,排版格式五花八門,由三位工作人員采用手工方式參與第一版稿件的排版,花了近5 個工作日。整個文章編寫改稿約6 次,每次排版工作量巨大,非常考驗工作人員的耐心、細(xì)心和恒心。所以,采用批量格式替換操作和程序輔助排版,顯得非常必要和迫切。
筆者主要針對工程技術(shù)長文檔,應(yīng)用Word 模板、VBA 宏、正則表達(dá)式以及高級查找和替換等技術(shù),對文檔的各級標(biāo)題、正文、題注、圖表等樣式進(jìn)行快速統(tǒng)一排版,極大地減輕人力勞動,提高排版的效率。
由于沒有事先做好文檔排版格式要求和約定,也沒有進(jìn)行相關(guān)Word排版培訓(xùn)工作,故收集上來的文稿排版格式較為混亂,特點如下:
(1)大部分章節(jié)具有大綱級別,但各大綱級別(包括各段落正文)格式不一。如:同樣的大綱2 級(標(biāo)題2),字體有宋體、仿宋,字號有四號、三號等;段落前后行間距不統(tǒng)一;多級列表編號有自動的,也有手工編制的。
(2)個別文檔,沒有大綱級別。完全手工進(jìn)行段落層次編號,如:編號“第一章”“1.1”“1.1.1”等。
(3)圖的格式不統(tǒng)一,有嵌入式、文字環(huán)繞式(上下型、浮于文字、四周型)等。
(4)圖表的題注編號不統(tǒng)一,有按大綱2 級編號的,也有按大綱1 級編號的,而且基本是手工編號,不能隨章節(jié)調(diào)整而自動更新。
(5)頁眉、頁腳格式不統(tǒng)一。頁碼格式也是各式各樣,而且存在頁碼不連續(xù)情況。
(6)上下標(biāo)問題,不少km2、m3/s中的2、3 上標(biāo)格式丟失。
(7)單位問題,如:有的用中文單位厘米,有的用英文單位cm;有的用立方米,有的用m3。
(8)引用編號錯誤問題,由于章節(jié)調(diào)整,正文中出現(xiàn)“見圖x.x-x”“見表x.x-x”等,與排版后的編號不一致。
(9)無用的空白行較多。
排版的總體目標(biāo),就是達(dá)到使收集上來的文檔按所有章節(jié)的大綱1(標(biāo)題1)至大綱6(標(biāo)題6)、正文、圖、表、公式、頁眉頁腳等樣式進(jìn)行統(tǒng)一編排,確保整個文章排版風(fēng)格整齊、統(tǒng)一、規(guī)范。所有標(biāo)題的多級列表編號自動化,方便章節(jié)間順序的調(diào)整;所有圖表題注規(guī)范化;排版后的主要樣式具備可修改性,便于通篇文章的格式調(diào)整。
為了達(dá)到上述目標(biāo),并針對提出的問題,筆者主要采用Word 模板、VBA 宏、正則表達(dá)式、域、自定義快捷鍵、高級查找與替換等技術(shù),對文檔進(jìn)行快速排版,最終達(dá)到通篇文檔排版的規(guī)范化、自動化,提高排版效率,減輕工作人員負(fù)擔(dān)。
Word 樣式是指某一段落文字的表現(xiàn)形式,對于VBA 宏來說就是一組參數(shù)的集合,如:字體類型、字體大小、字體顏色、對齊方式、制表位、段前段后行間距、各種編號格式等。一旦用戶創(chuàng)建了某種段落樣式,就可以選定某些段落使用該樣式。
Word 模板是一種特殊Word 文檔,包括:各級大綱標(biāo)題、正文、題注、頁眉頁腳、目錄等各類樣式的集合。除了樣式之外,模板還可以包含其他元素,比如:宏、自動圖文集、自定義工具欄等。自定義模板的樣式可以通過文檔模板管理器進(jìn)行導(dǎo)入,并可進(jìn)行增加、刪除等操作。
《蘇北供水計量關(guān)鍵技術(shù)》是一個典型的工程技術(shù)文檔,主要以文字為主,輔以一定量的圖片、報表和公式等。為此建立了模板文件“模板——供水計量.dotx”,定義了排版所需的標(biāo)題1 至標(biāo)題6、段落正文、表內(nèi)文字、圖題注、表題注等樣式(見圖1)。樣式主要包括:字體、字號、段落行間距、首行是否縮進(jìn)、快捷鍵以及按大綱等級進(jìn)行自動編號等內(nèi)容。模板中的各個樣式可以根據(jù)需要隨時重新調(diào)整。
下面舉例說明多級列表樣式與標(biāo)題關(guān)聯(lián)的設(shè)置方法:
圖1 模板樣式設(shè)置
(1)多級編號設(shè)置。在【開始】→【段落】→【多級列表】中,單擊【定義新的列表樣式】菜單,命名多級列表樣式為“樣式—供水”。再點擊【格式】→【編號】,設(shè)置各級編號格式,并將級別鏈接到相應(yīng)級別的標(biāo)題樣式,編號和文字之間設(shè)置空格符連接。一般習(xí)慣將1 級編號設(shè)為“第一章”,2 級編號設(shè)為“1.1”等形式??梢酝ㄟ^勾選【正規(guī)形式編號】按鈕,將其余編號改為全數(shù)字形式。
(2)標(biāo)題樣式設(shè)置。以標(biāo)題3 為例,設(shè)置如下:在【開始】→【樣式】中,點擊下拉箭頭出現(xiàn)【樣式】對話框,找到“標(biāo)題3”樣式,右鍵單擊【修改】進(jìn)行設(shè)置。將樣式名稱改為“標(biāo)題3,供水”,單擊【格式】出現(xiàn)【字體】、【段落】、【快捷鍵】等子項,可以逐一對字體類型、字體大小、首行縮進(jìn)2 個字符、段落行間距、段前是否分頁、快捷鍵等進(jìn)行一系列的格式設(shè)置。
3.4.1 樣式管理
(1)樣式加載和刪除。單擊【開發(fā)工具】中的【文檔模板】按鈕,出現(xiàn)【模板和加載項】對話框,點擊【選用】按鈕,加載自定義的“模板—供水計量.dotx”模板。如果模板樣式發(fā)生修改,可以勾選“自動更新文檔樣式”,以更新當(dāng)前文檔相關(guān)樣式??梢渣c擊【管理器】對當(dāng)前文檔的樣式進(jìn)行添加、刪除、改名等操作,也可以將模板樣式覆蓋到當(dāng)前文檔中。
(2)樣式修改。在模板文檔中,單擊【開始】中的【樣式】右下側(cè)的下拉箭頭,出現(xiàn)【樣式】管理界面,可以對其中的任何樣式通過點擊鼠標(biāo)右鍵進(jìn)行修改。
3.4.2 樣式使用
對于所需排版的文檔,加載模板后,選中某幾個段落,按相應(yīng)的快捷鍵,可以快速設(shè)置段落樣式,也可以通過VBA 宏使用樣式。
4.1.1 對于有大綱級別的文檔
盡管這些文檔具備大綱級別,但各級大綱的文字格式、段落樣式卻不統(tǒng)一。VBA 宏的代碼思路,就是逐段循環(huán),按段落大綱級別自動匹配模板中相對應(yīng)的多級列表標(biāo)題樣式。這樣既保留了大綱層次,又給相應(yīng)大綱級別設(shè)置了自動多級列表編號。代碼主要部分如下:
4.1.2 對于手工編號的文檔
個別文檔,以“第十二章”或“第12章”、“12.1”、“12.3.1”、“12.4.3.1”等形式表示段落層次,而未設(shè)置大綱(標(biāo)題)級別。本文程序主要采用正則表達(dá)式技術(shù)來查找段落首句開始為“第X章”、“12.3.1”等字樣的段落,并設(shè)置相應(yīng)大綱級別或標(biāo)題樣式。
“第十二章”或“第12章”的正則表達(dá)式匹配模式為:“第[u4E00-u9FA5]+章|第d+章”。而“12.1”、“12.3.1”、“12.4.3.1”等段落層次的匹配模式為:“(d+.){1,5}”,其 中,“d+”表示1 個數(shù)字以上,“.”表示小數(shù)點,“(d+.)”表示類似“12.1”的列表編號,“{1,5}”表示至少重復(fù)1 至5次。代碼主要如下:
4.2.1 表題注自動編號
題注編號主要采用CaptionLabels的NumberStyle、ChapterStyleLevel 等屬性值進(jìn)行設(shè)置。表題注自動編號代碼如下,圖題注編號與下述代碼類似。
4.2.2 表頭首行加粗
文檔中所有表頭的首行加粗,主要采用Rows、Font 等屬性進(jìn)行設(shè)置,主要代碼如下:
4.2.3 所有圖片居中
盡管圖片有CAD、JPG 等格式,但在Word 中VBA 卻只分為兩類:嵌入型(InLIneShape)和文字環(huán)繞型(Shape)。由于Shape 型圖片似乎不支持居中屬性,故將所有環(huán)繞型圖片轉(zhuǎn)嵌入型圖片處理。
由于篇幅有限,表格內(nèi)文字樣式統(tǒng)一,一次性替換平方公里、立方米及上下標(biāo)等代碼暫略。
“選擇和替換”的功能是非常多的。本文排版主要用到以下功能:
(1)通過查找大綱級別,分別設(shè)置其標(biāo)題樣式。在【查找和替換】→【格式】→【段落】中,設(shè)置查找的段落為大綱1 級,然后按模板定義的快捷鍵“Ctrl+1”,這樣所有大綱1 級的樣式都被設(shè)置成模板中的“標(biāo)題1,供水”樣式。大綱2 至大綱6 以及正文段落均可以進(jìn)行類似操作。
(2)批量設(shè)置嵌入式圖片居中。對于嵌入式的圖片,直接打開“查找和替換”對話框,先將“查找內(nèi)容”設(shè)置為“^g”,然后將光標(biāo)定位到“替換”的文本框中,單擊“更多”按鈕,此時可以看到搜索選項、格式、特殊格式等內(nèi)容,從格式的下拉菜單中選擇“圖文框”,將水平位置設(shè)置為居中,再返回“查找和替換”對話框,單擊“全部替換”按鈕后即可生效。
(3)一次性修改所有圖片的題注格式。先為一個圖片添加題注,然后選中那個題注按“Alt+F9”,切換到域代碼狀態(tài),按“Ctrl+C”復(fù)制這個域代碼,包括域代碼的大括號。打開查找替換框,在查找處輸入“^g”、替換處輸入“^&^p^c”全部替換?!癈trl+A”全選,按“F9”刷新,然后按“Alt+F9”切換回域值狀態(tài)。
(4)批量將“m3”替換為“m3”。這里采用剪貼板的方法,在【查找和替換】處輸入m3,在【替換為】輸入“^c”,“^c”為剛才Copy 的剪貼板內(nèi)容,然后全部替換即可。“km2”改為“km2”,可以類似操作。
Word 只能使用部分正則表達(dá)式,本文排版中主要運用如下:
(1)將文檔中所有類似5.68 厘米、25 厘米等一次性替換成5.68 cm、25 cm。在查找處輸入:“([0-9]{1,2})厘米”,在替換處輸入:“1cm”。注:必須勾選【使用通配符】按鈕,下同。
(2)將手工段落層次編號替換為無。如:12.3.4.1,可在查找處輸入:“[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}”,在替換處不需輸任何字符。
(3)一次性刪除所有連續(xù)的空白段落。在查找處輸入:“(^13)1@”,在替換處輸入:“^p”。
“節(jié)”是文檔格式化的最大單位(排版格式范圍),分節(jié)符是一個“節(jié)”的結(jié)束符號,分節(jié)符只控制它前面文字的格式。若需要在一頁之內(nèi)或多頁之間采用不同的版面布局,需插入“分節(jié)符”將文檔分成幾“節(jié)”,然后根據(jù)需要設(shè)置每“節(jié)”的格式。
通常用分節(jié)符來設(shè)置封面、目錄、正文、頁面橫排等分節(jié)格式控制和頁腳編號格式等。雙擊頁碼,點擊“鏈接到前一條頁腳”,這樣頁腳編碼可以重新編碼或連續(xù)編碼。
域是Word 中的一種特殊命令,它由花括號、域名(域代碼)及選項開關(guān)構(gòu)成。本文主要用來實現(xiàn)自動更新圖、表、公式題注的自動編號、插入目錄等功能。在圖、表或標(biāo)題等編號處插入書簽并命名,在正文中插入交叉引用剛才的書簽名。這樣,“見圖X.X-X”等樣式,在章節(jié)段落等次序調(diào)整時,通過“F9”更新域即可實現(xiàn)編號的自動更新,大大節(jié)省了人工排版工作量。
之所以要使用主控文檔,主要在于主文檔中進(jìn)行的格式設(shè)置、修改、修訂等內(nèi)容都能自動同步到對應(yīng)子文檔中,這一點對于需要進(jìn)行重復(fù)修改、拆分、合并操作特別重要。本文所涉及的子文檔過多過大,通過主控文檔合成后的終稿長達(dá)千頁,若再進(jìn)行各種排版,Word 運行和保存速度異常緩慢甚至崩潰。建議按各章節(jié)單獨排版,然后利用主控文檔技術(shù)進(jìn)行合成。
筆者總結(jié)了對超長文檔進(jìn)行事后排版的經(jīng)驗,主要采用模板與VBA相結(jié)合的方式進(jìn)行程序輔助排版,以及通過高級查找和替換功能進(jìn)行一次性替換操作排版。由于模板樣式的使用,能使各種樣式形象可見,同時簡化了大量樣式、格式的程序編碼工作,使程序設(shè)計更加清晰簡潔。經(jīng)過測試,一般100 多頁的文檔,程序排版僅需10 min 左右,而人工操作約需1 d 時間,大大提高了效益。
總的來說,對于超長技術(shù)文檔,應(yīng)事先對排版要求進(jìn)行培訓(xùn)和約定,規(guī)劃設(shè)計好各大綱級別樣式、正文樣式、相關(guān)圖表樣式,事先做好相關(guān)圖、表、公式編號的標(biāo)簽和交叉引用等,這樣可減輕通篇文檔的排版工作量,也便于各章節(jié)之間相互調(diào)整。