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