例如,在下面的 MWE 中,数组第一行有 12 个元素,而数组第二行有 10 个元素,所以我想要一个命令可以自动打印数组中元素数量最多的行中的元素数量:12。
梅威瑟:
\documentclass[tikz]{standalone}
\ExplSyntaxOn
\seq_new:N \l_node_row_seq
\seq_new:N \l_node_tmp_seq
\cs_set:Npn \timelist #1 {
\seq_set_split:Nnn \l_node_row_seq {;} {#1}
\int_step_inline:nn{\seq_count:N \l_node_row_seq}
{
\seq_if_exist:cF {l_node_row_##1_seq}
{
\seq_new:c {l_node_row_##1_seq}
}
\exp_args:Ncx\seq_set_from_clist:Nn {l_node_row_##1_seq} {\seq_item:Nn \l_node_row_seq{##1}}
}
}
\cs_set:Npn \PrintTime [#1][#2] {
\tl_if_empty:nTF { #1 }
{
\tl_if_empty:nTF { #2 }
{
\seq_use:Nn \l_node_row_seq {,}
}
{
\int_step_inline:nn{\seq_count:N \l_node_row_seq}
{
\seq_put_right:Nn \l_node_tmp_seq {\seq_item:cn {l_node_row_##1_seq}{#2}}
}
\seq_use:Nn \l_node_tmp_seq {,}
}
}
{
\tl_if_empty:nTF {#2}
{
\seq_use:cn {l_node_row_#1_seq}{,}
}
{
\seq_item:cn {l_node_row_#1_seq}{#2}
}
}
}
\ExplSyntaxOff
\usetikzlibrary{calc}
\begin{document}
\timelist{
3,.,1,4,1,5,9,2,6,5,3,5;
2,.,7,1,8,2,8,1,8,2}
\tikz
{
\foreach \x in {1,2,...,12}
{
\node[xshift=.5*\x in] at (-\x,1) {\texttt{\PrintTime[1][\x]}};
\node[xshift=.5*\x in] at (-\x,0) {\texttt{\PrintTime[2][\x]}};
}
}
\end{document}
现在,如果有一个命令,例如,命令的名称是count
,那么如果我输入
\count{
3,.,1,4,1,5,9,2,6,5,3,5;
2,.,7,1,8,2,8,1,8,2
}
然后它就会12
自动打印了,如何实现呢?