有没有办法强制 LaTeX 在$...$
或\begin{align}...\end{align}
环境中产生不同的符号?例如
$ \mymacro $
应该导致
A
尽管
\begin{align} \mymacro \end{align}
应该产生
乙................................................................. (1)
(没有点)。
答案1
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\def\mymacro{\ifinalign@ B\else A\fi}
\makeatother
\begin{document}
$ \mymacro $
\begin{align} \mymacro \end{align}
\end{document}
答案2
听起来好像您想检测的不是特定环境而是当前的数学风格。\mathchoice
原始方法在这里很合适:
\documentclass{article}
\usepackage{amsmath}
\newcommand*{\mymacro}{\mathchoice{A}{B}{C}{D}}
\begin{document}
$ \mymacro_{\mymacro} $
\begin{align} \mymacro \end{align}
\[ \mymacro \]
\end{document}
这四种情况分别是显示样式、文本样式、下标样式和下下标样式。对于演示来说,它们完全不同,但在实际情况下会以某种方式相关!