如何優(yōu)雅的在word中給圖表編號(hào)

latex大佬請(qǐng)繞行

題注的缺陷

談到編號(hào),第一反應(yīng)肯定是使用題注。但是題注不是萬能的,如果一級(jí)標(biāo)題為中文,那么使用題注會(huì)出現(xiàn)下面這種情況:


題注編號(hào)

可以看出,題注直接引用中文章節(jié)編號(hào)導(dǎo)致其中出現(xiàn)中文。下面將介紹Seq域來解決這個(gè)問題。

Seq域

域是word中一個(gè)重要的功能。許多編號(hào)包括章節(jié)編號(hào)以及引用等都是通過域?qū)崿F(xiàn)的。域分為很多種,而Seq域則是其中用于編號(hào)的域。先介紹其主要用法,首先按Ctrl+F9輸入域代碼:

域代碼

其中Seq表示該域?yàn)橐粋€(gè)Seq域。figure為一個(gè)標(biāo)識(shí)符,相當(dāng)于給域取一個(gè)名字。不同標(biāo)識(shí)符的域相互不影響。域輸入完成后,選中域按F9,域會(huì)被渲染為文字:
渲染結(jié)果

可以看出,Seq域的基本功能就是產(chǎn)生連續(xù)的數(shù)字。而單單這個(gè)功能明顯是不足以滿足自動(dòng)編號(hào)的需求。例如不同章節(jié)需要重新編號(hào)。而域代碼中的開關(guān),可以實(shí)現(xiàn)這個(gè)需求。官網(wǎng)中給出了下面的開關(guān)功能:

\c: 重復(fù)前邊最近的序列號(hào)。它可用于在頁眉或頁腳中插入章節(jié)號(hào)。
\h: 隱藏域結(jié)果。使用它來引用交叉引用中的 Seq 域而不打印數(shù)。例如,您可能希望參考編號(hào)章節(jié),但不是能打印章節(jié)號(hào)。\H 開關(guān)不隱藏域結(jié)果,如果格式 (\ *) 開關(guān)。
\n: 插入指定項(xiàng)目的下一個(gè)序列號(hào)。這是默認(rèn)值。
\r n: 將序列號(hào)重置為指定的數(shù)字。 例如,{ SEQ figure \r 3 } 從 3 開始圖表編號(hào)。
\s: 在“s”之后的標(biāo)題級(jí)別處重置序列號(hào)。例如,{ SEQ figure \s 2 } 從“標(biāo)題2”樣式開始編號(hào)。

其中我們重點(diǎn)關(guān)注\s、\c以及\h這三個(gè)域。其中\s這個(gè)域可以使得域代碼在不同的章節(jié)下自動(dòng)重新編號(hào),例如需要在一級(jí)標(biāo)題下重新編號(hào),則:


可以看出跨過一級(jí)標(biāo)題之后會(huì)重新編號(hào)。
\c可以繼續(xù)上一個(gè)編號(hào),\h可以關(guān)閉域顯示。因此利用下面的方式可以完成模擬章節(jié)號(hào)的需求:

結(jié)合這兩種方式就可以完成題注的需求,如圖:

自動(dòng)化

雖然SEQ域大致完成了自動(dòng)編號(hào)的需求,但是每次都要輸入一串長的域代碼明顯也不是好的解決辦法。本著能自動(dòng)化絕不手動(dòng)的精神,我編寫了一段使用VBA自動(dòng)插入編號(hào)的代碼(第一次寫VBA,代碼風(fēng)格請(qǐng)忽略):

' 添加SEQ域
Function AddSeqFieldOnSection(seqText As String)
    Selection.Collapse Direction:=wdCollapseEnd
    Set myField = ActiveDocument.Fields.Add(Range:=Selection.Range, Type:=wdFieldSequence, Text:=seqText)
End Function
' 添加兩個(gè)域 并在中間添加短橫
Function AddDoubleFields(name As String, text1 As String, text2 As String)
    Options.ReplaceSelection = True
    Selection.TypeText name
    AddSeqFieldOnSection seqText:=text1
    Selection.InsertAfter Text:="-"
    AddSeqFieldOnSection seqText:=text2
    Selection.InsertAfter Text:=" "
End Function
' 添加不同類型的編號(hào)
Function AddFieldWithChapter(fieldType As String)
    Call AddDoubleFields(name:=fieldType, text1:="chapter \c", text2:=fieldType & " \s1")
End Function
' 添加章節(jié)分隔符
Sub AddChapterField()
    AddSeqFieldOnSection ("chapter \h")
End Sub
' 插入圖自動(dòng)編號(hào)
Sub AddFigureFied()
    Call AddFieldWithChapter("圖")
End Sub
' 插入表自動(dòng)編號(hào)
Sub AddTableFied()
    Call AddFieldWithChapter("表")
End Sub

目前可以使用圖以及表兩個(gè)前綴進(jìn)行編號(hào)。要使用其他前綴加一個(gè)函數(shù)即可。在每一章的標(biāo)題后面插入章節(jié)分隔符,然后需要編號(hào)的時(shí)候插入編號(hào)。目前使用的方式是通過調(diào)用宏的方式,當(dāng)然理想的方式是將其添加到選項(xiàng)卡中可以自定義前綴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容