这里是一些代码,它们生成带有不同深度缩进的嵌套括号的显示方程。
\documentclass{amsart}
\begin{document}
\begin{align*}
(\exists d)
&\biggl(
l'(u,d)
\wedge l'(v,d)
\wedge
\bigl(\forall z\bigr)
\bigl(l'(z,d)\to(z=u\vee z=v)\bigr)\\
&\hspace{34pt}\begin{array}{rl}
\wedge~
(\exists p)(\exists q)
&\Bigl(
cod(p)=d\wedge cod(q)=d
\wedge l'\bigl(dom(p),d\bigr)
\wedge l'\bigl(dom(q),d\bigr)\\
&\hspace{49pt}\begin{array}{rl}
\wedge~
(\forall t)
&\Bigl(
\bigl( cod(t)=d\wedge
l'(dom(t),d)\bigr)\\
&\hspace{33pt}\to\bigl(t=p\vee t=q\bigr)\\
&\hspace{7pt}\Bigr)
\end{array}\\
&\hspace{7pt}\Bigr)
\end{array}
\\&\hspace{7pt}\biggr)
\end{align*}
\end{document}
有没有可以自动处理这种括号缩进的环境?如果没有,有没有办法自动缩进括号,这样就不需要手动处理了?谢谢。
答案1
这不是全自动解决方案,但代码比您发帖中的代码简单得多。它仅使用一种对齐结构:aligned
。环境用于对括号和\wedge
符号执行对齐。
使用 ("math-mode kern") 指令可以微调右大括号的位置\mkern
。我还建议,如果“cod”和“dom”是“运算符”,则将它们设置为直立字体。
\documentclass{amsart}
\DeclareMathOperator{\dom}{dom}
\DeclareMathOperator{\cod}{cod}
\begin{document}
\[
(\exists d)
\begin{aligned}[t]
&\biggl(
l'(u,d)
\begin{aligned}[t]
&\wedge l'(v,d)
\wedge \bigl(\forall z\bigr)
\bigl(l'(z,d)\to(z=u\vee z=v)\bigr)\\
&\wedge (\exists p)(\exists q)
\begin{aligned}[t]
&\Bigl( \cod(p)=d
\begin{aligned}[t]
&\wedge \cod(q)=d
\wedge l'\bigl(\dom(p),d\bigr)
\wedge l'\bigl(\dom(q),d\bigr)\\
&\wedge (\forall t)
\begin{aligned}[t]
&\Bigl( \bigl( \cod(t)=d\wedge l'(\dom(t),d)\bigr)\\
&\qquad\qquad \to\bigl(t=p\vee t=q\bigr)\\
&\mkern2mu\Bigr)
\end{aligned}\\
\end{aligned}\\
&\mkern2mu\Bigr)
\end{aligned}\\
\end{aligned}\\
&\mkern2.5mu\biggr)
\end{aligned}
\]
\end{document}