LaTeX 数组变量

LaTeX 数组变量

似乎无法弄清楚如何创建包含多个数字的变量。

\def\numbers{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}}

\numbers[1][1]

预期输出

1

实际产量

1,2,3,4,5,...,[1][1]

答案1

TeX 不会创造奇迹。

\def\numbers{...}定义一个扩展为的...

\numbers[1][1]

\numbers仅打印后跟的定义[1][1]

你可以通过以下方式编程数组。令人高兴的是,expl3它提供了必要的基础设施,即 clist。

我们定义一个 clist,其项目为 clist,并且可以通过行和列索引轻松检索项目。

\documentclass{article}

\ExplSyntaxOn

\NewDocumentCommand{\setarray}{mm}
 {% #1 = name, #2 = items
  \clist_clear_new:c { l_swepz_array_#1_clist }
  \clist_set:cn { l_swepz_array_#1_clist } { #2 }
 }

\NewExpandableDocumentCommand{\getarrayitem}{mmm}
 {% #1 = name, #2 = row index, #3 = column index
  \clist_item:en
   {
    \clist_item:cn { l_swepz_array_#1_clist } { #2 }
   }
   { #3 }
 }
\cs_generate_variant:Nn \clist_item:nn { e }

\ExplSyntaxOff

\begin{document}

\setarray{numbers}{
  {1,2,3,4,5},
  {6,7,8,9,10},
  {11,12,13,14,15},
  {16,17,18,19,20},
  {21,22,23,24,25}
}

\getarrayitem{numbers}{1}{1}

\getarrayitem{numbers}{4}{3}

\end{document}

在此处输入图片描述

中不需要换行符\setarray,但为了清晰起见,换行符更好。

相关内容