我曾经在《Die Texnische Komödie 1/2011》中读到,可以将圆形分隔符()
激活,因此您不再需要使用它们\left(\right)
。代码如下:
\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
\setlength\delimitershortfall{-1pt}
\makeatletter
\catcode`\_\active
\def_#1{\sb{\operator@font#1}}
\makeatother
不要问我细节,我对此不感兴趣。
现在我想知道是否可以改变[]
并且采用\{\}
相同的方式,这样您就不需要再使用\left...\right...
“正常”分隔符了。
感谢您的帮助!
梅威瑟:
\documentclass{scrartcl}
\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
\setlength\delimitershortfall{-1pt}
\makeatletter
\catcode`\_\active
\def_#1{\sb{\operator@font#1}}
\makeatother
\begin{document}
\begin{align}
((((a+b)(a-b))))=a^2-b^2
\end{align}
\end{document}
答案1
(
您可以重复使用with的定义[
,但实际上您不应该这样做,设置 with\delimitershortfall
和过度使用\left
and\right
会产生非常糟糕的设置,其中分隔符和水平空间过大。自动化此布局应该不是目标!
\documentclass{scrartcl}
\usepackage{amsmath}
\makeatletter
\edef\zzz{\the\mathcode`\[}
\def\resetMathstrut@{%
\setbox\z@\hbox{%
\mathchardef\@tempa\zzz\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
\begingroup
\catcode`[\active \xdef[{\left\string[}
\catcode`]\active \xdef]{\right\string]}
\endgroup
\mathcode`[="8000 \mathcode`]="8000
\setlength\delimitershortfall{-1pt}
\begin{document}
\begin{align}
((((a+b)(a-b))))=a^2-b^2 \\ \relax
[[[[a+b][a-b]]]]=a^2-b^2
\end{align}
\end{document}