如何获取使用 newcommand 定义的数学表达式作为 {name} \newglossaryentry
?我有这个
\newcommand{\equivdef}{{\overset{\text{def}}{\equiv\joinrel\equiv}}}
并想要这个词汇表条目:
\newglossaryentry{equivdefi}{name={$\equivdef$},
description={define as equivalent to}
}
但出现错误:
"! Argument of \@tempc has an extra }.
<inserted text>
\par
l.10 }"
我的 MWE:
\documentclass[ebook,openany]{memoir}
\usepackage{amssymb}
\usepackage[sort=use,toc,style=long3col]{glossaries}
\newcommand{\equivdef}{{\overset{\text{def}}{\equiv\joinrel\equiv}}}
\newglossaryentry{equivdefi}{name={$\equivdef$},
description={define as equivalent to}
}
\makeglossaries
\normalfont
\begin{document}
Use symbol \gls{equivdefi} and define $p\veebar q$ as
\begin{equation}
p\veebar q\equivdef (p\vee q)\wedge\bigl(\neg(p\wedge q)\bigr).
\end{equation}
\printglossaries
\end{document}
答案1
不要忽略处理过程中收到的错误消息。在本例中,错误指向移动参数中的脆弱命令:
! Argument of \@tempc has an extra }.
<inserted text>
\par
l.10 }
解决方法:添加\protect
。
\documentclass[ebook,openany]{memoir}
\usepackage{amssymb}
\usepackage[sort=use,toc,style=long3col]{glossaries}
\newcommand{\equivdef}{{\overset{\text{def}}{\equiv\joinrel\equiv}}}
\newglossaryentry{equivdefi}{
name={$\protect\equivdef$},% <---- \protect
description={define as equivalent to},
}
\makeglossaries
\normalfont
\begin{document}
Use symbol \gls{equivdefi} and define $p\veebar q$ as
\begin{equation}
p\veebar q\equivdef (p\vee q)\wedge\bigl(\neg(p\wedge q)\bigr).
\end{equation}
\printglossaries
\end{document}
但是,您的定义\equivdef
有一对错误的括号;而且,您想要\textnormal
而不是\text
(在定理陈述中尝试它以了解原因。
\newcommand{\equivdef}{\overset{\textnormal{def}}{\equiv\joinrel\equiv}}
您看得出来差别吗?