Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

09 Apr '17, 15:27

cgnieder's gravatar image

cgnieder
22.1k253463

Der Test `\clist_if_in:NnTF` ist nicht expandierbar, weshalb es auch kein *predicate* gibt. Aber Du kannst den Test ja einfach von den anderen abtrennen: abtrennen. Die Code-Verdopplung vermeidest Du dann am einfachsten, indem Du einfach ein neues Conditional definierst: \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} \prg_new_protected_conditional:Npnn \meinmodul_testfunktion:nn #1#2 {T,F,TF} { \clist_if_exist:cTF {c_meinmodul_#2_clist} { \clist_if_in:cnTF {c_meinmodul_#2_clist} {#1} { % andere Bedingungen: \bool_if:nTF { \c_true_bool } { \prg_return_true: } { \prg_return_false: } } { \prg_return_false: } } { \prg_return_false: } } \NewDocumentCommand \IstEnthalten {m m} { \meinmodul_testfunktion:nnTF {#1} {#2} {ja} {nein} } \ExplSyntaxOff \begin{document} \IstEnthalten{f}{A} % Nein \IstEnthalten{f}{B} % Ja \IstEnthalten{f}{C} % Nein, Liste C nicht definiert \end{document} Ergebnis: > nein ja nein
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

09 Apr '17, 14:51

cgnieder's gravatar image

cgnieder
22.1k253463

Der Test `\clist_if_in:NnTF` ist nicht expandierbar, weshalb es auch kein *predicate* gibt. Aber Du kannst den Test ja einfach von den anderen abtrennen: \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} \prg_new_protected_conditional:Npnn \meinmodul_testfunktion:nn #1#2 {T,F,TF} { \clist_if_exist:cTF {c_meinmodul_#2_clist} { \clist_if_in:cnTF {c_meinmodul_#2_clist} {#1} { % andere Bedingungen: \bool_if:nTF { \c_true_bool } { \prg_return_true: } { \prg_return_false: } } { \prg_return_false: } } { \prg_return_false: } } \NewDocumentCommand \IstEnthalten {m m} { \meinmodul_testfunktion:nnTF {#1} {#2} {ja} {nein} } \ExplSyntaxOff \begin{document} \IstEnthalten{f}{A} % Nein \IstEnthalten{f}{B} % Ja \IstEnthalten{f}{C} % Nein, Liste C nicht definiert \end{document} Ergebnis: > nein ja nein