我正在使用\widebar
已实现的重音这里,因为我不想使用 mathabx;但是当我在图形标题中使用重音符号时,出现编译器错误。
以下是有问题的代码:
\caption{(Blah blah) and $(\widebar{N},\widebar{X})$.
\label{fig:Markov_pf_notation}}
错误如下:
\Hy@tempa 的参数有一个额外的 }.\par ...n 右边 $(\widebar{N},\widebar{X})$。} 段落在 \Hy@tempa 完成之前结束。\par ...n 右边 $(\widebar{N},\widebar{X})$。}
\widebar
我在文档正文中使用它没有任何问题,而且当我在标题中注释掉这个实例时,一切都能正确编译。
这个实现能修复吗?有没有类似的、\widebar
没有这个问题的实现?
答案1
代码在Hendrik Vogt 的回答有线
\newcommand*\widebar[1]{%
[...code...]
}
但该定义对于移动参数(例如标题和分段标题)的使用而言是“不安全的”。因此\widebar
应考虑脆弱的。 看脆弱命令和坚固命令之间有什么区别?了解更多信息。
您可以保留原有的定义并\protect\widebar
在移动参数中使用,也可以通过将该行更改为完全消除问题
\newcommand{\widebar}{}% initialize
\DeclareRobustCommand*\widebar[1]{%
[...code...]
}
“初始化”行只是为了确保\widebar
尚未定义,因为\DeclareRobustCommand
会默默覆盖先前的定义。