问:如何自动调整嵌套括号的大小?

问:如何自动调整嵌套括号的大小?

例如,鉴于这一点:

((a+b)c)^d

我希望它显示:

\big((a+b)c\big)^d

但无需明确说明\big

答案1

我建议您加载mleftright包,发出指令\mleftright(以避免插入不必要的额外空格),然后发出指令\delimitershortfall-1sp。这样,自动调整大小的括号将自动增大,即使括号内的内容不“高”。

在此处输入图片描述

\documentclass{article}
\delimitershortfall-1sp
\usepackage{mleftright}
\mleftright % make \left & \right behave like \mleft & \mright 
\begin{document}
\[
\left(\left\langle\left\{\left[\left(\left(a+b%
 \right)c\right)\right]\right\}\right\rangle\right)
\]
\end{document}

如果你注释掉该指令\delimitershortfall-1sp,你会得到

在此处输入图片描述

答案2

我想添加另一种解决方案,因为负面的解决方案\delimtershortfall看起来有点不愉快。

我所做的是声明一个括号函数,该函数用于\vphantom\raisebox外部定界符添加额外的高度。

解决方案并不完美:

  • 我使用\mathop因为其他方法\vphantom不起作用然后添加负空间来抵消增加的额外空间\mathop

  • 另外,\raisebox您还需要使用\( \)进入数学模式并\displaystyle获得正确的虚拟高度

但它对我有用,你仍然可以调整\delimtershortfall\delimiterfactor满足你的喜好(如果你还调整了 中的增加\raisebox)。你也可以更改 中的值\raisebox来调整分隔符的增长。

为了进一步阅读,我推荐这篇文章: 嵌套括号的自动大小调整

\documentclass[12pt,a4paper]{article}
\usepackage{mleftright}


\global\delimitershortfall=5.5pt
\global\delimiterfactor=880
\renewcommand*{\left}{\mleft}
\renewcommand*{\right}{\mright}
\newcommand{\braced}[1]
    { \left( #1 \right) 
        \mskip-1.5mu \vphantom{ \mathop{
           \raisebox{3pt}{ \(\left(\displaystyle #1 \right)\) } } }
    }

\begin{document}
    \[
    \braced{ x + \braced{\braced{ y }} }
    \]
\end{document}

例子

答案3

更新:

我最终只是使用了一个python脚本来搜索嵌套括号并将其替换为\left, \right\pr在我的情况下,我使用了括号。

tex = re.sub(r"\(([^()\n]*?)\((.*?)\)([^()\n]*?)\)", r"\\pr{\1(\2)\3}", tex)

相关内容