命令中的新宏和词汇表条目

命令中的新宏和词汇表条目

我想使用该包将宏的创建和新条目添加到词汇表中统一到一个命令中glossaries。理想情况下,对该命令的调用应该是这样的

\mycommand{powerset}{\operatorname{Pow}(#1)}{A}{Power set of A}

第一个参数指定新宏的名称:\powerset,第二个参数是此宏的定义。在本例中,\powerset需要一个参数并产生结果\operatorname{Pow}(#1)

最后两个参数与词汇表条目相关。第一个参数是新创建的宏的默认参数。词汇表条目的名称应该是使用默认参数调用的宏 - 在数学模式下。在本例中为。\powerset{A}最后,最后一个参数是词汇表条目的描述。在此示例中,词汇表条目应如下所示

\newglossaryentry{powerset}
{
     name=\ensuremath{\operatorname{Pow}(A)},
     description=Power set of A
}

有什么想法吗?此外,扩展此过程以包含指定数量的参数有多难,例如

\mycommand{complement}{2}{#1 \setminus #2}{A}{B}{The complement of B in A}?

该问题的动机是提供定义宏的能力,这些宏将在首次使用后添加到词汇表中,并提供指向首次使用它们的页面的正确链接。

答案1

这可能会有用(我glossaries以前从未使用过该包,所以不知道要测试什么):

\documentclass[]{article}

\usepackage{glossaries}
\usepackage{xparse}

\NewDocumentCommand{\mycommand}{m m m m}{%
    \expandafter\newcommand\expandafter{\csname #1\endcsname}[1]{#2}%
    \newglossaryentry{#1}{%
        name=\ensuremath{\csname #1\endcsname{#3}},%
        description=#4%
    }%
}

\makeglossaries

\mycommand{powerset}{\operatorname{Pow}(#1)}{A}{Power set of A}

\begin{document}
\printglossary[style=altlist,title=Glossar]
\gls{powerset}
$\powerset{c}$
\end{document}

下面提供了可选添加的可能性更多参数(但您可能会在该命令之后遇到分组问题;而且代码可能不太漂亮)

\NewDocumentCommand{\mycommand}{m m m m g g}{%
    \IfNoValueTF{#6}{%
        \IfNoValueTF{#5}{%
            \expandafter\newcommand\expandafter{\csname #1\endcsname}[1]{#2}%
            \newglossaryentry{#1}{%
                name=\ensuremath{\csname #1\endcsname{#3}},%
                description=#4%
            }%
        }%
        {%
            \expandafter\newcommand\expandafter{\csname #1\endcsname}[2]{#2}%
            \newglossaryentry{#1}{%
                name=\ensuremath{\csname #1\endcsname{#3}{#4}},%
                description=#5%
            }%
        }%
    }%
    {%
        \expandafter\newcommand\expandafter{\csname #1\endcsname}[3]{#2}%
        \newglossaryentry{#1}{%
            name=\ensuremath{\csname #1\endcsname{#3}{#4}{#5}},%
            description=#6%
        }%
    }%
}

相关内容