词汇表包不适用于复杂符号,如下例所示。有解决方法吗?
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{glossaries}
\makeglossaries
\newglossaryentry{symb}
{
name={\ensuremath{\overset{\rightarrow}{A}}},
description={Description},
}
\begin{document}
works: $\overset{\rightarrow}{A}$\\
doesn't work: \gls{symb}
\printglossary[type=main]
\end{document}
答案1
以下是两种可能的解决方案:
转换\overset
成\vec
将第一个命令替换为标准矢量符号会给出不同的、不可定制的箭头格式;因此,给定的箭头符号可以在您的文档中用于指示矢量(根据您的判断,甚至是用户定义的参数约定)。
以下是 MWE:
\documentclass{scrartcl}
%
\usepackage{amsmath}
\usepackage{glossaries}
%
\makeglossaries
\newglossaryentry{symb}{%
name={\ensuremath{\vec{A}}},
description={Description}%
}
%
\begin{document}
%
Works: $\vec{A}$ \\
Now even this one works: \gls{symb}
\printglossary[type=main]
%
\end{document}
输出:
保护命令\overset
如果您希望在覆盖参数中进行更多自定义,只需在考虑的代码行之前\ensuremath{}
添加即可保护此命令的定义\protect
仅有的在名称字段内。
以下是 MWE:
\documentclass{scrartcl}
%
\usepackage{amsmath}
\usepackage{glossaries}
%
\makeglossaries
\newglossaryentry{symb}{%
name={\ensuremath{\protect\overset{\rightarrow}{A}}}, % this is now protected
description={Description}%
}
%
\begin{document}
%
Works: $\overset{\rightarrow}{A}$\\
Now even this one works: \gls{symb}
\printglossary[type=main]
%
\end{document}
期望的输出如下: