有時候為了方便對文章進行修改,希望在每個段落的每個句子前加上編號以方便定位,但不能破壞段落。最終需要實現的效果如下圖所示。
對於一篇好幾萬字的文檔,如何快速實現這個需求呢?這個需求的關鍵有兩個方面,一個是能夠實現在文檔任意位置自動編號的域,一個是能夠實現查找每一句話的通配符表達式。
一、能夠實現在文檔任意位置自動編號的域
在word中能夠實現自動編號的域有AutoNum、AutoNumLgl、AutoNumOut、ListNum和SEQ等。前三個域僅可以實現在每個段落的開頭連續編號,不能實現段落內每個句子的連續編號,且不能調整編號開始的數字。
ListNum是多級列表域,可以實現文檔段內每個句子的自動連續編號。使用之前需要事先定義一個多級列表,指定一個listnum域列表名,便於listnum引用該列表的編號,稍微麻煩一點。
SEQ域也可以實現文檔段內每個句子的自動連續編號,且使用起來比較listnum域方便一些。SEQ Identifier [Bookmark] [Switches],SEQ域有三個參數,第一個為標識符Identifier,必填,可以任意定義,比如定義為「A」;後面兩個可選參數,書籤和開關,開關可用於指定編號的類型。如果希望編號帶圓括號,可以手動在SEQ域兩邊輸入。輸入SEQ域的方法如下:
單擊「插入」——「文檔部件」——「域」,在彈出的域對話框中,「類別」處選「編號」,在「域代碼」處輸入標識符「A」,然後單擊「選項」,選擇一種編號樣式,單擊「添加到域」,最後確定。選中域,按F9,可以刷新域並顯示域結果,按Shift+F9可以切換到域代碼狀態。
如果文檔內容較少,那麼可以手動複製這個域到其他位置,全選文檔按F9刷新,即可實現連續自動編號。但文檔內容多,我們需要將此域用於查找替換對話框中,以實現批量替換。由於不能直接複製域代碼放入替換框中,所以輸入了第一個域代碼後,需要將其剪切,然後在替換框中使用「^c」(剪貼板內容)來代替它。注意:剪切域後,不要再執行複製或剪切其他內容的操作,否則剪貼板內容將發生變化。
二、能夠實現查找每一句話的通配符表達式
接下來,只要求在「查找和替換」對話框中,查找每一個句子,並在其前面加上這個域代碼即可。根據每個句子總是以文字開頭,並以特定的幾個標點結尾,寫出如下表達式:
查找內容:([!^13^l]*[.\?\!。!?……])
替換:^c\1
勾選「使用通配符」,將光標置於文章開頭處,點擊「全部替換」即可完成整篇文檔每個句子的自動連續編號。查找和替換的界面如下圖所示。
操作過程如下。
以上方法,並不局限於文首所說的需求,也可以將文檔中任意指定字符或內容替換為或加上自動連續編號。大家編輯文檔的時候有沒有類似的需求呢?