Das folgende Codebeispiel zeigt zwei Vergleiche mit unterschiedlichem Ergebnis. \documentclass{article} \usepackage{expl3} \begin{document} Vergleich mit plain-\TeX: \ifx{\ss}\ss gleich\else ungleich\fi Vergleich mit expl3: \ExplSyntaxOn \token_if_eq_meaning:NNTF {\ss} \ss {gleich} {ungleich} \ExplSyntaxOff \end{document} Der erste Vergleich ergibt „ungleich“. Dies entspricht meiner Erwartung, da ich davon ausgehe, dass hier nicht Der zweite Vergleich ergibt „gleich“. Dies scheint zwar semantisch sinnvoll, ist aber überraschend, denn erstens ist Wieso ergeben beide Vergleiche unterschiedliche Ergebnisse? Ich komme aus folgendem Grund auf die Frage:
Eine Funktion mit N-Argument könnte missbräuchlich mit einem Argument in geschweiften Klammern aufgerufen werden. Dann würde aber der \documentclass{article} \usepackage{expl3} \begin{document} \ExplSyntaxOn \cs_new:Npn \meinbefehl:N #1 { \token_if_eq_meaning:NNTF #1 \ss {Eszett~gelesen} {kein~Eszett~gelesen} } \meinbefehl:N a \par \meinbefehl:N \ss \par \meinbefehl:N {ab} \ExplSyntaxOff \end{document} Der dritte Aufruf von \token_if_eq_meaning:NNTF {#1} \ss {Eszett~gelesen} {kein~Eszett~gelesen} Das scheint zu funktionieren, die Frage ist nur, ob man sich darauf verlassen kann. gefragt 14 Apr '20, 13:14 Cletus |
Die scheinbar unterschiedlichen Ergebnisse ergeben sich aus der Tatsache, dass Du hast recht: \ifx{\ss}\ss ...\else...\fi dass 1: \ifx{\ss}\ss gleich\else ungleich\fi % ungleich 2: \ifx\ss\ss gleich\else ungleich\fi % gleich \end Warum funktioniert's dann mit \long\def\firstoftwo#1#2{#1} \long\def\secondoftwo#1#2{#2} \def\tokenifeqmeaning#1#2{% \ifx#1#2\expandafter\firstoftwo\else\expandafter\secondoftwo\fi } 1: \tokenifeqmeaning{\ss}\ss{gleich}{ungleich} % gleich 2: \tokenifeqmeaning\ss\ss{gleich}{ungleich} % gleich 2: \tokenifeqmeaning{\ss}{\ss}{gleich}{ungleich} % gleich \end Noch was zu expl3: ein Man könnte nun zwar mit einigem Recht behaupten, dass
Das heißt nichts anderes als, dass beantwortet 14 Apr '20, 19:21 cgnieder Danke, das hilft mir. Um missbräuchliche Nutzung von N-Argumenten zu unterbinden, scheint
(14 Apr '20, 21:09)
Cletus
|