我正在尝试在 l3prop 属性列表中查找家谱树中的某些数据,并根据其中的内容执行特殊操作。
在这个 MWE 中,它被精简为一些不太有用的东西,但希望它能清楚地表明我想要实现的目标。人们的“uuid”值用于在他们的名字前面放置一些东西。在“测试”部分,我使用字符串和存储在那里的值进行明确测试berta
。child
在树中,我不明白如何使用 \gtrDBuuid` 的值进行类似的查找。我只得到“Not”,表示没有找到它。我尝试了不同的签名,但我对 L3 非常不习惯,没有成功。
\documentclass{article}
\usepackage[all]{genealogytree}
\begin{document}
\ExplSyntaxOn
\prop_new:N \my_properties
\int_new:N \my_counter
\prop_put:NnV \my_properties { berta } \my_counter
\int_incr:N \my_counter
\prop_put:NnV \my_properties { child } \my_counter
% Testing:
\prop_if_in:NnTF \my_properties {berta} {Found} {Not}
\tl_new:N \thisval
\prop_get:NnN \my_properties {child} \thisval
\par Child~has~\thisval
\newcommand\testsomething{%
\prop_if_in:NnTF \my_properties {\gtrDBuuid} {There} {Not}
}
\ExplSyntaxOff
\bigskip
\begin{genealogypicture}
[
template=database portrait,
name code={\testsomething\quad \gtrDBname},
]
child{
g{male,name=Hans Test,
uuid=hans,
}
p{female,name=Berta,
uuid=berta,
}
c{name=Unknown,
uuid=child,
}
}
\end{genealogypicture}
\end{document}
答案1
在
\prop_if_in:NnTF \my_properties {\gtrDBuuid} {There} {Not}
您正在属性列表中查找字符串\gtrDBuuid
。相反,您想查找当前存储在的值\gtrDBuuid
:
\prop_if_in:NVTF \my_properties \gtrDBuuid {There} {Not}