我正在尝试构建在 inlinemath 中被忽略的 \left、\right 和 \middle 的变体。
预期行为:
\[ \lft( 2^{2^2} \rgt) \]
-> 表现为\[ \left( 2^{2^2} \right) \]
\( \lft( 2^{2^2} \rgt) \)
-> 表现为\( ( 2^{2^2} ) \)
非常感谢您的帮助。
免责声明:
- 尝试使用 获得此行为
mathchoice
未成功。问题似乎是诸如的内容\mathchoice{\left}{}{}{}
无效,因为 TeX 期望分隔符(和相应的\right
)位于同一组中。 - 通过影响扩展顺序(例如
noexpand
)来获得所需行为的尝试没有成功,但我并不是这方面的专家。 - 我知道有些人认为不应该自动使用
\left
和\right
。无论如何我都想要这个(-: - 我知道我可以简单地定义类似的东西
\newcommand{\paren}[1]{\mathchoice{\left(#1\right)}{(#1)}{(#1)}{(#1)}}
。但是,如果参数包含,我的问题仍然会出现\middle
。
答案1
不确定这有多大用处。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\lft}{\if@display\expandafter\left\fi}
\newcommand{\mdl}{\if@display\expandafter\middle\fi}
\newcommand{\rgt}{\if@display\expandafter\right\fi}
\makeatother
\begin{document}
\begin{center}% just to make a smaller picture
\( \lft( 2^{2^2} \rgt) \)
\end{center}
\[
\lft( 2^{2^2} \rgt)
\]
\end{document}
解释:amsmath
有\everydisplay{\@displaytrue}
。