考虑到通用表\mytable
,为了从中获取元素,我正在使用\pgfplotstablegetelem{\row}{[index]\column}\of\mytable
。
但如果我没有表而有一个数组呢?
情况是这样的:\def\array{alba, prova, 13, CO\ped{2}}
我想创建\singleElement
取数组第三个元素的数组。
我能怎么做?
答案1
一种定义方式可能是这样:
\def\singleElement#1,#2,#3,#4\close{#3}
然后使用以下命令调用它:
\expandafter\singleElement\array,,,\close
这种方式\singleElement
有四个参数,以逗号分隔,以#4
结尾\close
(当然,您可以选择任何\
您喜欢的 -sequence,只需替换\close
为,例如,\foo
上面的任何地方)。我调用它的方式是:你的\array
包含一个逗号分隔元素的列表,所以我让它扩展(\expandafter
使 TeX\array
在 之前读取\singleElement
,因此\array
用逗号分隔的列表替换前 \singleElement
尝试完成其工作),然后\singleElement
查找其参数,逗号确保它找到它们,因为如果\array
没有足够的元素,您将收到一个错误,因为\singleElement
找不到参数的逗号,而这种方式如果\array
有少于 4 个元素(即少于 3 个逗号),它会随后找到所有必要的逗号并\close
完成参数 4。
当然,这会强制\array
用逗号分隔其元素,但你可以用任何你想要的标记替换逗号。如果你想用点作为分隔符,你可以这样做:
\def\singleElement#1.#2.#3.#4\close{#3}
并通过以下方式调用它:
\expandafter\singleElement\array...\close
您可以使用数字、标点符号甚至字母序列:
\def\singleElement#1abc#2abc#3abc#4\close{#3}
\expandafter\singleElement\array abc abc abc\close
将作为元素分隔符abc
,但这绝对不可取:)。
当然,这是一个不使用 的解决方案pgfplots
,所以可能不是你所期望的,但即使不加载 ,它也能工作pgfplots
。事实上,它甚至不需要LaTeX
: PlainTeX
就足够了。