텍스트 모드 또는 수학 모드에서 사용되는지 여부에 따라 매크로를 조건부로 정의하는 방법은 무엇입니까?

텍스트 모드 또는 수학 모드에서 사용되는지 여부에 따라 매크로를 조건부로 정의하는 방법은 무엇입니까?

\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
}

\ensuremathTeX에는 텍스트와 수학을 구별하는 기능이 내장되어 있고 실제로 작성자는 문서가 텍스트 모드인지 수학 모드인지 항상 알아야 하기 때문에 일반적으로 이 작업을 수행하거나 유사한 명령을 사용하는 것은 나쁜 생각이라고 말하고 싶습니다 . 각 경우에 적합한 명령을 사용하십시오.

악센트 명령을 고려하십시오. \hat텍스트 또는 수학 모드에서 작동하도록 위와 같이 정의할 수 있지만 대신 일반 TeX(및 LaTeX)가 \hat수학 모드 및 \^텍스트 모드를 정의합니다. 두 명령의 구현과 의미는 매우 다르며 표면적으로는 텍스트와 수학에 동일한 구문을 사용하는 것이 도움이 되지 않았을 것입니다.

관련 정보