Wie definiert man ein Makro bedingt, je nachdem, ob es im Textmodus oder im Mathematikmodus verwendet wird?

Wie definiert man ein Makro bedingt, je nachdem, ob es im Textmodus oder im Mathematikmodus verwendet wird?

Ich möchte ein Makro erstellen können, \foodessen Definition ungefähr so ​​aussieht

\newcommand{\foo}{
  \ifintextmode{abc}
  \ifinmathmode{x\cdot y\otimes z}
}

so dass

\foo $\foo$

produziert

Bildbeschreibung hier eingeben

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 \ensuremathBefehls) 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. \hatSie hätten wie oben definiert werden können, um im Text- oder Mathematikmodus zu funktionieren, aber stattdessen definiert einfaches TeX (und LaTeX) sowohl \hatden 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.

verwandte Informationen