根据逗号分隔列表的元素命名 pgfmath 宏

根据逗号分隔列表的元素命名 pgfmath 宏

我想创建一个包含 9 个以上参数的新命令。因此,我使用 \NewDocumentComannd 和逗号分隔列表。对于这个新命令,我也使用 \pgfmathsetmacro。简化的(工作)示例代码如下所示:

\documentclass[12pt]{article}

\usepackage{pgfmath}

\ExplSyntaxOn
\NewDocumentCommand{\test}{mm}
{
\exp_args:Nne\pgfmathsetmacro{\expression} % Instead of naming the macro “\expression”, i want to give the macro a name depending on an element of a comma separated list
{
\clist_item:nn{#2}{1}
}
\expression
}
\ExplSyntaxOff

\begin{document}

\test{pa}{1,2,3}

\end{document}

我正在尝试做这样的事情:

\documentclass[12pt]{article}

\usepackage{pgfmath}

\ExplSyntaxOn
\NewDocumentCommand{\test}{mm}
{
\exp_args:Nne\pgfmathsetmacro{\clist_item:nn{#1}{1}x} % Here i try to create a macro named “\pax” (“pa” is an element of a list (see below: \test{pa}{1,2,3}) and “x” is just added to this element)
{
\clist_item:nn{#2}{1}
}
\csname\clist_item:nn{#1}{1}x\endcsname % Here i try to use/access the created macro named “\pax” (This code works, but is there another method provided by the expl3-package/LaTeX3 to use/access the macro without using \csname \endcsname?)
}
\ExplSyntaxOff

\begin{document}

\test{pa}{1,2,3}

\end{document}

如何根据逗号分隔列表的元素命名 pgfmath 宏?

编辑1:再次感谢您的回答。

答案1

\exp_args:Nne无论哪种情况,你的操作都是多余的,因为\pgfmathsetmacro无论如何都会完全扩展。

因为您所想的代码\exp_args:Nc就是您所需要的。

\documentclass[12pt]{article}

\usepackage{pgfmath}

\ExplSyntaxOn
\NewDocumentCommand{\test}{mm}
 {
  \exp_args:Nc \pgfmathsetmacro{\clist_item:nn{#1}{1}x}{\clist_item:nn{#2}{1}}
  \use:c {\clist_item:nn{#1}{1}x}
 }
\ExplSyntaxOff

\begin{document}

\test{pa}{1,2,3} \pax

\test{pa}{pi^2/6,2,3} \pax

\end{document}

在此处输入图片描述

答案2

与您的最后一个问题一样,不清楚为什么在这里使用 pgf 定义,但它定义\pax为 1 并立即扩展它,这似乎是意图。

\documentclass[12pt]{article}

\usepackage{pgfmath}

\ExplSyntaxOn
\NewDocumentCommand{\test}{mm}
{
\use:e{
\exp_not:N\exp_args:Nc\exp_not:N\pgfmathsetmacro
{\clist_item:nn{#1}{1}x} % Here i try to create a macro named “\pax” (“pa” is an element of a list and “x” is just added to this element)
{
\clist_item:nn{#2}{1}
}
}
\use:c{\clist_item:nn{#1}{1}x}
}
\ExplSyntaxOff

\begin{document}

\test{pa}{1,2,3}


\end{document}

相关内容