
Me gustaría poder hacer una macro \foo
cuya definición se vería así
\newcommand{\foo}{
\ifintextmode{abc}
\ifinmathmode{x\cdot y\otimes z}
}
de modo que
\foo $\foo$
produce
Esta pregunta de TeX.SEParece algo relacionado, pero no entendí bien la respuesta y no resuelve directamente mi problema. Lamento no tener nada más que ofrecer en términos de hacer algún progreso yo mismo.
Respuesta1
\DeclareRobustCommand{\foo}{%
\ifmmode
x\cdot y\otimes z%
\else
abc%
\fi
}
Debo decir que generalmente es una mala idea hacer esto (o usar algo similar)\ensuremath
comando similar), ya que TeX tiene una distinción incorporada entre texto y matemáticas y realmente el autor necesita saber en todo momento si el documento está en modo texto o matemático. y utilizar comandos adecuados en cada caso.
Considere los comandos de acento; \hat
podría haberse definido como arriba para funcionar en modo texto o matemático, pero en lugar de eso, TeX simple (y LaTeX) se define \hat
para el modo matemático y \^
para el modo texto. La implementación y la semántica de los dos comandos son muy diferentes y, superficialmente, usar la misma sintaxis para texto y matemáticas no habría sido útil.