我想在数学模式下提供一个上面带有字符的符号 - 例如\tilde{...}
或\hat{...}
。我有时会将该符号与下标索引以及上标索引一起使用。使用上面字符的想法是它们不会与索引发生光学干扰。
我的第一个解决方案\overset{\omega}{\phi}
没有奏效,因为上标的垂直对齐包括整个结构,而它应该只考虑下部大字符。经过一番互联网搜索,我发现 accent 包是一个解决方案\accentset{\omega}{\phi}
,它确实提供了正确的对齐方式。但当我想将它打包到 glossaries 包中的 glossaryentry 中时,
\newglossaryentry{foo} {
name={\ensuremath{\accentset{\omega}{\phi}}},
description={foo}
}
它无法编译——“未定义的控制序列”错误。
我如何才能使两个包兼容或者如何模拟命令的行为\accentset
?
这里显示了两种行为,以“2”为索引:
这是一个最小的不是工作示例
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{accents}
\usepackage{glossaries}
\newglossaryentry{foo} {
name={\ensuremath{\accentset{\omega}{\phi}}},
description={foo}
}
\makeglossaries
\begin{document}
$\overset{\omega}{\phi}^2$ wrong alignment \\
$\accentset{\omega}{\phi}^2$ correct alignment \\
$\gls{foo}$ not possible
\end{document}
答案1
\accentset
是一个脆弱的命令,因此用于\protect\accentset
将过程写入外部文件。
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{accents}
\usepackage{glossaries}
\newglossaryentry{foo} {
name={\ensuremath{\protect\accentset{\omega}{\phi}}},
description={foo}
}
\makeglossaries
\begin{document}
$\overset{\omega}{\phi}^2$ wrong alignment \\
$\accentset{\omega}{\phi}^2$ correct alignment \\
$\gls{foo}^2$ is possible now.
\end{document}
如果需要更多出现\accentset
,可能值得考虑强化,即
\usepackage{etoolbox}
\robustify{\accentset}
这意味着,\protect\accentset
不再需要了。