Doxygen 提供了大量的特殊命令、XML 命令和HTML 命令,可用於增強或組織註解區塊內的文檔。如果您因為某些原因需要定義新的命令,可以使用別名定義來實現。
別名的定義應使用 ALIASES 組態標籤在組態檔中指定。
最簡單形式的別名是簡單的替換,格式如下:
name=value
例如,定義以下別名:
ALIASES += sideeffect="\par Side Effects:^^"
這將允許您在文件中使用命令 \sideeffect
(或 @sideeffect
),這將產生一個帶有標題 副作用: 的使用者定義段落。
請注意,您不能在別名的值部分放置 \n
來插入換行符(在結果輸出中)。您可以在別名的值部分放置 ^^
來插入換行符,就像原始檔案中有實體換行符一樣。
請注意,當您需要在別名的值部分使用文字 {
或 }
或 ,
(或非預設分隔符) 時,您必須使用反斜線 (\
) 來跳脫它,這可能會導致與命令 \{
和 \}
產生衝突,對於這些命令,建議使用版本 @{
和 @}
或使用雙重跳脫 (\\{
和 \\}
)
另請注意,如果您願意,可以重新定義現有的特殊命令。
某些命令(例如 \xrefitem)的設計目的是與別名結合使用。
別名也可以有一個或多個參數。在別名定義中,您需要在花括號之間指定參數的數量。在定義的值部分,您可以放置 \x
標記,其中 'x
' 表示參數編號,從 1 開始。
以下是帶有單個參數的別名定義的範例:
ALIASES += l{1}="\ref \1"
在註解區塊內,您可以如下使用它:
/** See \l{SomeClass} for more information. */
這與寫入以下內容相同:
/** See \ref SomeClass for more information. */
請注意,您可以透過具有多個參數的版本來重載別名,例如:
ALIASES += l{1}="\ref \1" ALIASES += l{2}="\ref \1 \"\2\""
請注意,別名定義中的引號必須使用反斜線跳脫。
使用這些別名定義,我們可以在註解區塊中寫入:
/** See \l{SomeClass,Some Text} for more information. */
它將展開為:
/** See \ref SomeClass "Some Text" for more information. */
其中帶有單個參數的命令仍會如之前所示運作。
別名也可以用其他別名來表示,例如,新的命令 \reminder
可以透過中間的 \xreflist
命令表示為 \xrefitem,如下所示:
ALIASES += xreflist{3}="\xrefitem \1 \"\2\" \"\3\" " ALIASES += reminder="\xreflist{reminders,Reminder,Reminders}"
請注意,如果對於具有多個參數的別名,使用逗號作為分隔符,如果您想在命令中放入逗號,則需要使用反斜線跳脫它,即:
\l{SomeClass,Some text\, with an escaped comma}
假設上面範例中 \l
的別名定義。
預設情況下,別名中參數的分隔符是逗號。但是,對於帶有大量逗號的參數(例如函數定義的範本),跳脫每個逗號可能會很麻煩。為了解決這個問題,可以直接在參數計數後指定不同的分隔符,例如,要使用分號作為分隔符,可以將命令定義如下:
ALIASES += xreflist{3;}="\xrefitem \1 \"\2\" \"\3\" " ALIASES += reminder="\xreflist{reminders;Reminder;Reminders}"
請注意,也允許使用多字元分隔符,即可以使用雙管符號作為分隔符來寫入相同的範例:
ALIASES += xreflist{3||}="\xrefitem \1 \"\2\" \"\3\" " ALIASES += reminder="\xreflist{reminders||Reminder||Reminders}"
允許使用以下字元來建立分隔符:
!#$%&,.?|;:'+=~`/
請注意,對於每個命令和參數數量,都可以使用不同的分隔符。不建議為同一個命令選擇不同的分隔符,因為這可能會導致要使用哪個命令定義的歧義。Doxygen 會透過選擇與最多參數匹配的命令來解決此歧義。考慮以下有點牽強的範例:
ALIASES += v{2+}="Choose 2: '\1' and '\2'" ALIASES += v{3;}="Choose 3: '\1', '\2', and '\3'"
然後:
- \v{One+Two} - \v{One;Two;Three} - \v{One+Two;Three;Four}
會產生:
對於最後一個命令,v
的兩個定義都匹配,但會選擇具有 3 個參數的定義,因為它匹配更多參數。
您可以使用命令作為別名的參數,包括使用別名定義的命令。
例如,考慮以下別名定義:
ALIASES += Bold{1}="<b>\1</b>" ALIASES += Emph{1}="<em>\1</em>"
在註解區塊內,您現在可以使用:
/** This is a \Bold{bold \Emph{and} Emphasized} text fragment. */
這將展開為:
/** This is a <b>bold <em>and</em> Emphasized</b> text fragment. */