LaTeX 中的数字列表

LaTeX 中的数字列表

我想创建类似的东西a=array[1,2,15,6,18],然后a[0]=1, a[1]=2。是否可以在 LaTeX 中创建数组(使用pgf或其他包)?

答案1

该包listofitems就是为此而设计的。这里有一个小例子:

\documentclass{article}
\usepackage{listofitems}
\usepackage[svgnames]{xcolor}

\begin{document}

\readlist*\myarray{1,2,15, lalala, 6,18}
\myarray[3]

\myarray[]

\textcolor{Tomato}{\textsf{\myarray[-3]}} = \textcolor{Tomato}{\textsf{\myarray[4]}}

\end{document} 

在此处输入图片描述

答案2

前列腺素F

以下是如何使用数组数学包裹:

\documentclass{article}
\usepackage{pgfmath}
\newcommand\Arr[1]{#1 $\mapsto $ \pgfmathparse{\myarray[#1]}\pgfmathresult}

\begin{document}
\def\myarray{{1,2,15,6,18}}

  \Arr{0},
  \Arr{1},
  \Arr{2},
  \Arr{3},
  \Arr{4},

\end{document}

输出如下:

在此处输入图片描述

具体来说,pgfmath 数组以 0 为基数(即索引从 0 开始)。有关更多详细信息,请在前列腺素手册(3.0.1a 版第 89.2 节、第 927 页)。

LaTeX3

以下是如何使用以下方法定义和访问类似数组的变量xparse/expl3

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
% Usage: \DefineArray{array name}{data as comma separate list}
\NewDocumentCommand\DefineArray{ mm }{
  \seq_new:c {l_internal_array_#1_seq}% define an array/sequence
  \seq_set_from_clist:cn{l_internal_array_#1_seq}{#2}% set array
}
% Usage: \Array{array name}{index}
\NewDocumentCommand\Array{ mm }{
  #2 $\mapsto$ \seq_item:cn{l_internal_array_#1_seq}{#2}
}
% As clemens says in the comments, for real use the following is better:
% \NewExpandableDocumentCommand\Array{ \seq_item:cn{l_internal_array_#1_seq}{#2} }
\ExplSyntaxOff

\begin{document}

    \DefineArray{myarray}{1,2,15,6,18}

    \Array{myarray}{3},
    \Array{myarray}{1},
    \Array{myarray}{4},
    \Array{myarray}{2}.

\end{document}

在这种情况下,输出是:

在此处输入图片描述

具体来说,这些数组以 1 为基础。这是使用 expl3 中的“序列”数据类型。有关更多信息,请参阅 interface3 手册第 VIII 部分。

相关内容