当我寻找一种无需使用即可自动调整分隔符对大小的解决方案时\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}
但它只修复了换行符问题。 提到的主题中的最后一个答案使用某种队列或堆栈,所以我想知道这个问题是否可以通过expl3
或luatex
因为我看不到重写原始答案来和align
朋友一起玩的方法来解决。