![如何定义一个允许换行并自动调整大小的括号函数?](https://linux22.com/image/400778/%E5%A6%82%E4%BD%95%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E5%85%81%E8%AE%B8%E6%8D%A2%E8%A1%8C%E5%B9%B6%E8%87%AA%E5%8A%A8%E8%B0%83%E6%95%B4%E5%A4%A7%E5%B0%8F%E7%9A%84%E6%8B%AC%E5%8F%B7%E5%87%BD%E6%95%B0%EF%BC%9F.png)
我想定义一个括号函数允许换行和自动调整大小像普通方法一样使用 。 普通方法是指使用\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}