有没有办法在@code
... @endcode
区块内显示代码行号?从doxygen手册中的截图看来,似乎有,但我无法找到doxygen本身的选项,或者标签语法来完成此任务。
我需要这个能够在代码块之后写出“在上面的代码中,第3行”。
还测试了受防护的代码块,仍然没有数字。
答案 0 :(得分:1)
似乎至少在当前版本(1.8.9)中添加了行号:
\includelineno
tag 时 Python代码格式化程序包括g_sourceFileDef
评估为TRUE
时的行号:
/*! start a new line of code, inserting a line number if g_sourceFileDef
* is TRUE. If a definition starts at the current line, then the line
* number is linked to the documentation of that definition.
*/
static void startCodeLine()
{
//if (g_currentFontClass) { g_code->endFontClass(); }
if (g_sourceFileDef)
(https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/pycode.l#L356 )
如果FileDef *fd
/ parseCode
已提供(非零),则会从parsePythonCode
初始化,否则会从new FileDef(<...>)
初始化:
g_sourceFileDef = fd;
<...>
if (fd==0)
{
// create a dummy filedef for the example
g_sourceFileDef = new FileDef("",(exName?exName:"generated"));
cleanupSourceDef = TRUE;
}
(https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/pycode.l#L1458) 所以似乎所有Python代码都包含行号
C代码格式化程序有一个额外的变量g_lineNumbers
,并且如果g_sourceFileDef
和g_lineNumbers
都评估为TRUE
,则包含行号:
/*! start a new line of code, inserting a line number if g_sourceFileDef
* is TRUE. If a definition starts at the current line, then the line
* number is linked to the documentation of that definition.
*/
static void startCodeLine()
{
//if (g_currentFontClass) { g_code->endFontClass(); }
if (g_sourceFileDef && g_lineNumbers)
(https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/code.l#L486)
它们按以下方式初始化:
g_sourceFileDef = fd;
g_lineNumbers = fd!=0 && showLineNumbers;
<...>
if (fd==0)
{
// create a dummy filedef for the example
g_sourceFileDef = new FileDef("",(exName?exName:"generated"));
cleanupSourceDef = TRUE;
}
(https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/code.l#L3623)
请注意,如果g_lineNumbers
值为0,则FALSE
仍为fd
在parseCode
中的HtmlDocVisitor::visit
次调用中,只有一个(对于DocInclude::IncWithLines
,对应于\includelineno
)通过非零fd
:
https://github.com/doxygen/doxygen/blob/Release_1_8_9/src/htmldocvisitor.cpp#L540
所以这似乎是唯一会导致行号包含在C代码列表中的命令