expl3: Wie kann ich \clist_if_in als Wahrheitswert verwenden?
Um eine Code-Verdopplung zu vermeiden, benötige ich etwas wie `\clist_if_in_p:cn`. `expl3` sieht die Variante mit `_p` aber nicht vor, d. h. die Funktion kann nicht in booleschen Ausdrücken verwendet werden.
Wie sollte ich vorgehen, um folgendes Beispiel lauffähig zu machen?
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\clist_const:Nn \c_meinmodul_A_clist {a, b, c, d, e}
\clist_const:Nn \c_meinmodul_B_clist {c, d, e, f, g}
\cs_new:Npn \meinmodul_testfunktion:nn #1#2
{
\bool_lazy_any:nTF
{
{ \bool_lazy_and_p:nn { \clist_if_exist_p:c {\c_meinmodul_#2_clist} {c_meinmodul_#2_clist} }
{ \clist_if_in_p:cn {\c_meinmodul_#2_clist} {c_meinmodul_#2_clist} {#1} } }
% Es folgende weitere Bedingungen, die hier nicht relevant sind.
}
{
Ja.
}
{
Nein.
}
}
\NewDocumentCommand \IstEnthalten {m m}
{
\meinmodul_testfunktion:nn {#1} {#2}
}
\ExplSyntaxOff
\begin{document}
\IstEnthalten{f}{A} % Nein
\IstEnthalten{f}{B} % Ja
\IstEnthalten{f}{C} % Nein, Liste C nicht definiert
\end{document}