无需使用 `\left`、`\right` 即可自动调整分隔符大小

无需使用 `\left`、`\right` 即可自动调整分隔符大小

当我寻找一种无需使用即可自动调整分隔符对大小的解决方案时\left\right我发现了这个主题:数学公式中自动调整括号大小align。它按预期工作,但由于&和,无法在例如内部使用\\。有什么方法可以让它与align类似环境一起工作吗?

我尝试使用mathtools手册中的一些解决方法以愚蠢的方式解决此问题:

\documentclass[a4paper,12pt]{article}

\usepackage{mathtools,unicode-math,xparse}

\newcommand*\autoop{\lrparen(}
\newcommand*\autoob{\lrbrack[}

\AtBeginDocument{
    \mathcode`( 32768
    \mathcode`[ 32768
    \begingroup
        \lccode`\~`(
        \lowercase{%
    \endgroup
    \let~\autoop}
    \begingroup
        \lccode`\~`[
        \lowercase{%
    \endgroup
    \let~\autoob}
}

\delimiterfactor 1001

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

\NewDocumentCommand\lrparen{d()}{
\mathopen{\left(\vphantom{\MTkillspecial{#1}}\kern-\nulldelimiterspace\right.}
#1
\mathclose{\left.\kern-\nulldelimiterspace\vphantom{\MTkillspecial{#1}}\right)}}

\NewDocumentCommand\lrbrack{o}{
\mathopen{\left[\vphantom{\MTkillspecial{#1}}\kern-\nulldelimiterspace\right.}
#1
\mathclose{\left.\kern-\nulldelimiterspace\vphantom{\MTkillspecial{#1}}\right]}}

\begin{document}
    \begin{align*}
        [[ ( a,\\ b ) ]]
    \end{align*}
\end{document}

但它只修复了换行符问题。 提到的主题中的最后一个答案使用某种队列或堆栈,所以我想知道这个问题是否可以通过expl3luatex因为我看不到重写原始答案来和align朋友一起玩的方法来解决。

相关内容