定义用于引用词汇表条目的缩写符号

定义用于引用词汇表条目的缩写符号

我定义了一个向词汇表添加新符号的命令,如下所示:

\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。(做吧!

相关内容