| Geht das irgendwie? Elementar (also ohne xparse, etoolbox usw.) wäre gut, sofern möglich. Ich möchte im Besonderen wissen, ob ein Minuszeichen vorkommt. Hinweis: Prüfen auf ein Zeichen reicht. Peudo-MWE: Öffne in Overleaf \documentclass[margin=5mm, varwidth]{standalone} \begin{document} Pseudocode: \ ifexists{a <oder> $-$ <Minuszeichen>} in {Hier ein Text ohne a, aber mir Minuszeichen:$-3$} ja \ else nein \ fi \end{document} 
    
        
            Ergebnis 5 von 10
        
        show 5 more comments
    
    
 | 
| Also, wenn es nicht expandierbar sein muss, kannst du dir ein temporäres Macro definieren und damit testen: Zunächst brauchen wir eine Art, wie wir testen können, ob ein bestimmter Token in einer Zeichenfolge vorkommt, das Folgende implementiert einen solchen Test für den Token  Der Test funktioniert folgendermaßen: Das Macro  Nun brauchen wir das Ganze aber ein wenig dynamischer, da das erste Argument ja angeben soll, auf welche Zeichen geprüft wird. Also definieren wir uns ein Macro, das ein Testmacro wie oben definiert. Wir geben auch direkt vor, was in welchem Fall jeweils passieren soll: Das Macro nimmt als Argument diejenige Zeichenfolge, auf die geprüft werden soll. Wir benötigen nur eine Aktion für den Fall, dass das Zeichen vorkommt, in welchem wir ein Hilfsmacro  Zusätzlich definieren wir uns noch ein Macro, das uns den Test ein wenig vereinfacht (wir benötigen es später, weil wir Argument 1 expandieren müssen): Schließlich noch das eigentliche Macro, welches über die angegebenen gesuchten Zeichen iteriert und für jedes den Test durchführt. Hierfür verwende ich  Öffne in Overleaf \long\def\ifexists #1 in #2% {% \begingroup \let\ifexists@if\iffalse \@for\zz:={#1}\do {% \expandafter\ifexists@define\expandafter{\zz}% \expandafter\ifexists@test@helper\expandafter{\zz}{#2}% }% \expandafter\endgroup\ifexists@if \ignorespaces } Das Macro ignoriert Leerzeichen nach seinem zweiten Argument. Du kannst mit dem Macro nicht auf ein Komma im String prüfen, da sich das nicht mit der Syntax von  Komplettes MWE: Öffne in Overleaf \documentclass[border=2mm]{standalone} \makeatletter \newcommand\ifexists{}% test whether there are conflicts \long\def\ifexists #1 in #2% {% \begingroup \let\ifexists@if\iffalse \@for\zz:={#1}\do {% \expandafter\ifexists@define\expandafter{\zz}% \expandafter\ifexists@test@helper\expandafter{\zz}{#2}% }% \expandafter\endgroup\ifexists@if \ignorespaces } \newcommand\ifexists@define[1] {% \long\def\ifexists@test ##1#1##2\endifexists@test {% \if\relax\detokenize{##2}\relax \else \let\ifexists@if\iftrue \fi }% } \newcommand\ifexists@test@helper[2] {% \ifexists@test#2#1\endifexists@test } \makeatother \begin{document} \ifexists{a,e,f} in {abc} yep \else nope \fi \end{document} Soll immer auf die gleichen Token geprüft werden, ist obiges ohne Probleme auch expandierbar umsetzbar. Zum Vergleich der Aufwand bei Verwendung von  Öffne in Overleaf \documentclass[border=2mm]{standalone} \usepackage{xparse} \ExplSyntaxOn \NewDocumentCommand \ifexists { +m +m } { \tl_if_in:nnTF { #2 } { #1 } } \ExplSyntaxOff \begin{document} \ifexists{a}{abc} {yep} {nope} \end{document} In beiden Fällen (Verwendung von  
                
                
                
                
                
                (13 Okt '18, 00:17)
                Skillmon
                
             Oha. Wenn ich  
                
                
                
                
                
                (13 Okt '18, 14:18)
                cis
                
             | 
 
			 
  
Elementar ist es mit expl3. Warum willst du dir das Leben schwer machen, indem du auf solche Tools verzichtest?
Ich habe ein paar Lösungen hier gefunden:
https://tex.stackexchange.com/questions/26870/check-if-a-string-contains-a-given-character
Sie beantworten vermutlich die Frage im allgemeinen - kann man im Grunde hier schließen. Helfen mir leider bei meinem speziellen Problem nicht weiter.
Testen, ob das Zeichen im Mathemodus oder nicht verwendet wird, könnte allerdings ein wenig haariger werden...
Hintergrund: In
polynom.stygibt es den\polyremainder, der Rest ist z.B.3oder-8. Für [Wie lasse ich mir nur das Ergebnis einer Polynomdivision anzeigen?] dachte ich, man könnte den\polyremainderdarauf testen, ober er positiv oder negativ ist.polynom.styist sehr professionell geschrieben, für mich schwierig zu verstehen. Es wäre so schön einfach gewesen,wenn sie einen Schalter\polyset{calc=false}eingebaut hätten-haben sie aber nichtJetzt muss man sich den Kram kompliziert zusammenbasteln. So oder so müsste eine Zeichentestmethode vermutlich sehr professionell sein, wenn die rausfinden soll, das
\polyprint{\polyremainder}ein Minus dran hat, wenn der\polyremainder-8ist. Insofern glaube ich, dass dieser Ansatz eh keine gute Idee ist. Die Lösung steht eher in der Paketdateipolynom.styaber die ist für mich eben kompliziert zu verstehen.Wenn es sich bei dem Ergebnis garantiert um eine Ganzzahl handelt, kannst du auch ganz einfach mit
\ifnum#1<0testen. Bei einer Gleitpunktzahl kannst du mit\ifdim#1pt<0ptdas Gleiche machen.An sich nein (der Rest kann auch rational sein), ich glaube aber, dass polyprint{polyremainder}
(=> z.B.-8) eh keine "Zahl" ist; vll. ein String, ich kenne mich zu wenig aus... Andererseits glaube ich, dass diese Art des Testens, beim genannten Problem im Link, eh Schmarn ist. An sich enthältpolynom.sty` alles Nötige, möchte aber das Ergebnis einer Polynomdivision nur in Verbindung mit der Rechnung ausgeben. Ich schaffe es nicht, das reine Ergebnis aus der Paketdatei herauszufiltern... :(PS: @Skillmon Du hast nicht zufällig Lust, mal in
polynom.styzu schauen? Das liest doch Du wie ein Roman... ;)@cis das sind über 1700 Zeilen Code. Ich glaube, du überschätzt meine Fähigkeiten.
Ach die relevanten Stellen, die Kommandos oder so, finde sogar ich schnell. Auch habe ich bei
tex.stackexchangekleinere Manipulationen gesehen. Bloß mein Problem bekomme ich nicht gelöst. :(