\left( 和 \right) 的宏

\left( 和 \right) 的宏

我知道有人讨论过这个话题,但我还没有看到可行的解决方案。是否可以在 LaTeX 中定义一个宏,使得在数学模式中,(会产生\left(并且)会产生\right)

我知道可以定义不同的宏,比如\lparen,但它的缺点是视觉上不够清晰,也不像那么简单(。我只想(在数学模式下覆盖命令。在编写大量数学运算时,这个问题非常烦人。

答案1

无需使用amsmath

\documentclass{article}
\begingroup
  \catcode`(\active \xdef({\left\string(}  % ( is defined as \left(
  \catcode`)\active \xdef){\right\string)} % ) is defined as \right)
\endgroup
\mathcode`(="8000 \mathcode`)="8000        % active in mathmode

\begin{document}
\[ 
   (\frac{(3-\frac{1}{x})^2}{(\frac4x-1)x}) 
\]    
\end{document}

在此处输入图片描述

如果你正在使用包amsmath

\documentclass{article}
\usepackage{amsmath}
\makeatletter
\def\resetMathstrut@{%
  \setbox\z@\hbox{%
    \mathchardef\@tempa\mathcode`\[\relax
    \def\@tempb##1"##2##3{\the\textfont"##3\char"}%
    \expandafter\@tempb\meaning\@tempa \relax
  }%
  \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@}
\makeatother
\begingroup
  \catcode`(\active \xdef({\left\string(}
  \catcode`)\active \xdef){\right\string)}
\endgroup
\mathcode`(="8000 \mathcode`)="8000
\begin{document}

\begin{align}
 f(x) &= (\frac{(3-\frac{1}{x})^2}{(\frac4x-1)x}-1)x^2 
\end{align}

\end{document}

在此处输入图片描述

答案2

我强烈建议不要自动用()替换 \left(right)。当公式必须被挤压才能排成一行时,这会带来严重的缺陷。问题是 和 之间的内容\left(设置right)了自然间距,而顶级数学列表可能会被拉伸和收缩(请参阅E-TeX:未来 TeX 扩展指南由 Frank Mittelbach 撰写,第 11 部分)。看看你自己:

比较

在第一行中,第一个 ' 周围的空间+缩小为 0,而第二个 ' 周围的空间+设置为自然宽度。在第二行中,两个+' 都以相同的方式处理。

\documentclass{article}
\textwidth=4.715cm
\begin{document}
$a+\left(b+c\right)$ doesn't look good \par
$a+(b+c)$ doesn't\llap{\rule[0.6ex]{1.1em}{0.7pt}\hskip0.1em} look good
\end{document}

我要指出的是,上述内容不是适用于 AMS 环境,例如aligngather因为在这些环境中总是设置为其自然宽度。

答案3

看一下这个nath包。它会自动缩放所有分隔符。例如

\documentclass{article}
\usepackage{nath}

\begin{document}
\[ ( \sum_{i=1}^n a_i b_i ) \]
\end{document}

给出

在此处输入图片描述

答案4

我了解到,将文件做得过于“特殊”是有弊端的——尤其是当你想合作的时候。因此,你的源代码应该尽可能简单。为了使打字更快,我了解了YASNIPPETemacs;你也可以在其他编辑器中找到类似的工具,即片段。例如,为了输入

\( \left( x^2 \right) \)

我输入:

m[TAB] pare[TAB]x^2[TAB][TAB]

yasnippet根据我定义的代码片段处理我需要的内容。这样我就得到了一个标准的 .tex 文件,可以轻松输入。如果您需要更多详细信息,请告诉我。

相关内容