Um eine Code-Verdopplung zu vermeiden, benötige ich etwas wie Öffne in Overleaf
\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} gefragt 08 Apr '17, 21:20 Cletus |
Der Test Öffne in Overleaf
\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:
beantwortet 09 Apr '17, 14:51 cgnieder Die weiteren Bedingungen, die ich oben ausgelassen habe, sollen mit der genannten Bedingung verodert, nicht verundet werden (daher das
(09 Apr '17, 19:52)
Cletus
|
Ich glaube es ist am einfachsten, wenn du die beiden Tests, ob die Liste existiert und ob etwas enthalten ist, vor dem Öffne in Overleaf
\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 { %% man kann (sollte?) auch einen anderen boolean als \l_tmpa_bool verwenden. \clist_if_exist:cTF { c_meinmodul_#2_clist } { \clist_if_in:cnTF { c_meinmodul_#2_clist } {#1} { \bool_set_true:N \l_tmpa_bool } { \bool_set_false:N \l_tmpa_bool } }{ \bool_set_false:N \l_tmpa_bool } \bool_lazy_any:nTF { { \l_tmpa_bool } %% etc. } { 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} Ich kenne deinen Code nicht genau, aber du könntest noch eine Warnung oder Ähnliches einbauen falls die Liste nicht definiert ist (hilft gegen Tippfehler). beantwortet 09 Apr '17, 10:41 Epllus |