
\foo
정의가 다음과 같은 매크로를 만들고 싶습니다.
\newcommand{\foo}{
\ifintextmode{abc}
\ifinmathmode{x\cdot y\otimes z}
}
~하도록 하다
\foo $\foo$
생산하다
이 TeX.SE 질문다소 관련이 있는 것 같지만 답변을 잘 이해하지 못했고 문제가 직접 해결되지 않았습니다. 미안하지만 나 자신이 진전을 이룰 수 있다는 점에서 더 이상 제공할 것이 없습니다.
답변1
\DeclareRobustCommand{\foo}{%
\ifmmode
x\cdot y\otimes z%
\else
abc%
\fi
}
\ensuremath
TeX에는 텍스트와 수학을 구별하는 기능이 내장되어 있고 실제로 작성자는 문서가 텍스트 모드인지 수학 모드인지 항상 알아야 하기 때문에 일반적으로 이 작업을 수행하거나 유사한 명령을 사용하는 것은 나쁜 생각이라고 말하고 싶습니다 . 각 경우에 적합한 명령을 사용하십시오.
악센트 명령을 고려하십시오. \hat
텍스트 또는 수학 모드에서 작동하도록 위와 같이 정의할 수 있지만 대신 일반 TeX(및 LaTeX)가 \hat
수학 모드 및 \^
텍스트 모드를 정의합니다. 두 명령의 구현과 의미는 매우 다르며 표면적으로는 텍스트와 수학에 동일한 구문을 사용하는 것이 도움이 되지 않았을 것입니다.