我定义了一个向词汇表添加新符号的命令,如下所示:
\newcommand{\NewSymb}[4]{
\newglossaryentry{#1}{
name=#2,
description={\nopostdesc #3},
sort=#4,
type=los,
nonumberlist=true
}
}
然后可以像这样使用:
\NewSymb{s:lattice}{\ensuremath{\Lambda}}{A Lattice}{lattice}
现在,我可以在文中通过以下方式引用此条目
\gls[hyper=false]{s:lattice}
但这对我来说有点太长了。因此我定义了一个命令
\newcommand{\LA}{{\gls[hyper=false]{s:lattice}}}
但我想知道是否有可能将其集成\newcommand
到\NewSymb
命令中,这样在执行之后,
\NewSymb{s:lattice}{\ensuremath{\Lambda}}{A Lattice}{lattice}{LA}
我自动获得缩写命令的访问权限\LA
。缩写命令的名称将作为 NewSymb 命令的参数提供。
答案1
\newcommand{\NewSymb}[5]{
\newglossaryentry{#1}{
name=#2,
description={\nopostdesc #3},
sort=#4,
type=los,
nonumberlist=true
}
\newcommand#5{\gls[hyper=false]{#1}}
}
\NewSymb{s:lattice}{\ensuremath{\Lambda}}{A Lattice}{lattice}{\LA}
第五个参数是调用的控制序列\gls
。可以不使用反斜杠来表达该参数,但这样做有点过头了。
可以\newcommand
通过将其更改为来避免所做的检查\def
。但是,重新定义现有命令是一种非常危险的行为。例如,尝试重新定义\fi
。可接受的折衷方案可能是
\newcommand{\NewSymb}[6][\newcommand]{
\newglossaryentry{#2}{
name=#3,
description={\nopostdesc #4},
sort=#5,
type=los,
nonumberlist=true
}
#1#6{\gls[hyper=false]{#2}}
}
之后
\NewSymb{s:lattice}{\ensuremath{\Lambda}}{A Lattice}{lattice}{\LA}
会像以前一样工作。但是
\NewSymb[\renewcommand]{x}{y}{z}{X}{\fi}
将重新定义\fi
。(不做吧!