如何定义一个允许换行并自动调整大小的括号函数?

如何定义一个允许换行并自动调整大小的括号函数?

我想定义一个括号函数允许换行自动调整大小像普通方法一样使用 。 普通方法是指使用\left\{\right\}

根据此主题,可以定义一个set函数来允许换行,但需要添加 size 选项\set[\big]来手动指定大小。这不是我想要的。

现在根据原文mathtools 文档,该\abs功能显然运行良好。所以我做了同样的事情:

\usepackage{mathtools}
\newcommand\MTkillspecial[1]{% helper macro
  \bgroup
  \catcode‘\&=9
  \let\\\relax%
  \scantokens{#1}%
  \egroup
  }
\DeclarePairedDelimiter\Bqty\{\}
\reDeclarePairedDelimiterInnerWrapper\Bqty{star}{
  \mathopen{#1\vphantom{\MTkillspecial{#2}}\kern-\nulldelimiterspace\right.}
  #2
  \mathclose{\left.\kern-\nulldelimiterspace\vphantom{\MTkillspecial{#2}}#3}
  }

我使用以下示例来测试它:

\begin{align*}
  A=\Bqty*{\frac{B}{E}+\frac{C}{E}\\+\frac{D}{E}}
\end{align*}

但我得到的是Missing number, treated as zero错误。背面项目是为了方便需要 MWE 的测试而创建的。

我应该如何正确定义这个功能?

答案1

问题出在代码的第 4 行:您需要的是grave accent,而不是引号:

    \documentclass{article}
    \usepackage{mathtools}

    \newcommand\MTkillspecial[1]{% helper macro
    \bgroup
    \catcode`\&=9 %% problem was here
    \let\\\relax%
    \scantokens{#1}%
    \egroup
    }

\DeclarePairedDelimiter\Bqty\{\}%% ou \brkbraces
\reDeclarePairedDelimiterInnerWrapper\Bqty{star}{
  \mathopen{#1\vphantom{\MTkillspecial{#2}}\kern-\nulldelimiterspace\right.}
  #2
  \mathclose{\left.\kern-\nulldelimiterspace\vphantom{\MTkillspecial{#2}}#3}
  }%}

    \begin{document}

And I use the following example to test it:

\begin{align*}
 A & =
\begin{aligned}[t]\Bqty*{\frac{B}{E} & +\frac{C}{E}\\ & +\frac{D}{E}}
 \end{aligned}
\end{align*}

\end{document} 

在此处输入图片描述

相关内容