
Ich möchte ein Makro erstellen können, \foo
dessen Definition ungefähr so aussieht
\newcommand{\foo}{
\ifintextmode{abc}
\ifinmathmode{x\cdot y\otimes z}
}
so dass
\foo $\foo$
produziert
Diese TeX.SE-Fragescheint irgendwie damit zusammenzuhängen, aber ich habe die Antwort nicht ganz verstanden und sie löst mein Problem nicht direkt. Es tut mir leid, ich habe nichts weiter beizutragen, um selbst Fortschritte zu machen.
Antwort1
\DeclareRobustCommand{\foo}{%
\ifmmode
x\cdot y\otimes z%
\else
abc%
\fi
}
Ich muss allerdings sagen, dass dies (oder die Verwendung eines ähnlichen \ensuremath
Befehls) grundsätzlich keine gute Idee ist, da TeX eine eingebaute Unterscheidung zwischen Text und Mathematik hat und der Autor eigentlich immer wissen muss, ob sich das Dokument im Text- oder Mathematikmodus befindet und in jedem Fall die entsprechenden Befehle verwenden muss.
Bedenken Sie die Akzentbefehle. \hat
Sie hätten wie oben definiert werden können, um im Text- oder Mathematikmodus zu funktionieren, aber stattdessen definiert einfaches TeX (und LaTeX) sowohl \hat
den Mathematikmodus als auch \^
den Textmodus. Die Implementierung und Semantik der beiden Befehle sind sehr unterschiedlich und oberflächlich betrachtet wäre es nicht hilfreich gewesen, dieselbe Syntax für Text und Mathematik zu verwenden.