数学新命令作为 newglossaryentry 中的名称

数学新命令作为 newglossaryentry 中的名称

如何获取使用 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}}

在此处输入图片描述

您看得出来差别吗?

相关内容