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

08 Apr '17, 21:23

Cletus's gravatar image

Cletus
1.6k75867

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}
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

08 Apr '17, 21:20

Cletus's gravatar image

Cletus
1.6k75867

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} } { \clist_if_in_p:cn {\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}

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×