
我希望能夠製作一個宏,\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
數學模式和\^
文字模式。這兩個命令的實現和語義非常不同,表面上對文字和數學使用相同的語法不會有幫助。