使用 arrayjobx 进行数组搜索

使用 arrayjobx 进行数组搜索

我正在使用将arrayjobx数据存储在数组中,并且我想搜索这些数组。

例如,我可能有一个姓名和地点列表,并且我想搜索这些姓名以在该数组中找到给定姓名的索引。

\newarray\Names
\newarray\Places
\readarray{\Names}{Alice,Bob,Charles,Steve,George}
\readarray{\Places}{Alberta,Bangkok,China,Saarland,Georgia}

我想要类似的东西\findindex,这样我就可以调用与该人相关的地方,例如

\Places(\findindex{\Names}{Bob})

应该输出Bangkok

我该如何做呢?

答案1

您可能需要一个属性列表,而不是两个独立的数组。

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\addperson}{mm}
 {
  \prop_gput:Nnn \g_luftbahn_person_place_plist { #1 } { #2 }
 }

\DeclareExpandableDocumentCommand{\Place}{m}
 {
  \prop_item:Nn \g_luftbahn_person_place_plist { #1 }
 }

\prop_new:N \g_luftbahn_person_place_plist
\ExplSyntaxOff

\addperson{Alice}{Alberta}
\addperson{Bob}{Bangkok}
\addperson{Charles}{China}
\addperson{Steve}{Saarland}
\addperson{George}{Georgia}

\begin{document}

Bob lives in \Place{Bob}.

\end{document}

在此处输入图片描述

相关内容