自訂命令

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}

會產生:

  • 選擇 2:'One' 和 'Two'
  • 選擇 3:'One'、'Two' 和 'Three'
  • 選擇 3:'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. */


前往下一節或返回索引