嵌套宏表达式中最内层纯文本参数(标记序列)的长度(通过 expl3)

嵌套宏表达式中最内层纯文本参数(标记序列)的长度(通过 expl3)

我想确定传递给最内层宏的原始标记序列的长度,如下所示

\compl{\indexset{J}}

在哪里

\NewDocumentCommand{\indexset}{m}{\mathsf{#1}}
\NewDocumentCommand{\compl}{m}{{#1}^{\complement}}

在数学上下文中,结果是衬线 J 带有上标相应的 C。

J现在我想获取传递给的参数的整数长度\indexset,而不是扩展的长度\mathsf{J}。目的是决定是否使用括号以及如何格式化它们。

我想我可以简单地提取最后一项。

\tl_head:n {\tl_reverse:n {#1}}

或者

\tl_item:nn {#1} {\tl_count:n {#1}}

怎么办?不过,在这种情况下,我认为像\mx{1,2,3}'(带有终止撇号,类似于 MATLAB/Octave 语法和含义---转置) 这样的表达式会产生错误的最后一项。

我仍然对扩展的概念感到困惑,也就是说我还没有正确地学习它,这可能是我遇到的问题的根源。


我想对这个问题进行如下延伸。

我如何正确(规范地?)测量最内层下标或上标表达式,如i_{n-k},考虑到上述限制?也就是说,如果最内层的表达式不是纯文本字符序列,而是本身就是一个表达式,尽管不是宏。我对下标和上标的具体情况特别感兴趣。

例如,

\compl{\indexset{I}_{n-k}}

或者

\compl{\indexset{I_{n-k}}}

在这种情况下,我只关心的长度I

相关内容