如何在对齐的方程式周围创建括号?

如何在对齐的方程式周围创建括号?

我的页面上显示的是我想要的效果,但请告诉我如何使用更好的代码来实现这一点。我\addtolength{\jot}{0.3ex}在序言中已经说明了。

\begin{flalign*}
      L&= \left(u^S\right)^{0.5}\left(u^T\right)^{0.5} - \lambda \left(u^S+u^T-9.9\right)\\[1ex]
\smash{\raisebox{-1.4\baselineskip}{$\left\{\rule{0cm}{1.5cm}\right.$}}
0=\dfrac{\textrm d L}{\textrm d u^S}&= 0.5\left(u^S\right)^{-0.5}\left(u^T\right)^{0.5}-\lambda \tag{1} \\
\implies\ \ \ 0=\dfrac{\textrm d L}{\textrm d u^T}&= \left(u^S\right)^{0.5}0.5\left(u^T\right)^{-0.5}-\lambda \tag{2} \\
u^S + u^T &= 9.9 \tag{3}
&\end{flalign*}

在此处输入图片描述

答案1

不幸的是,这里必须做出一些让步,因为amsmath不支持这种开箱即用的部分垂直+水平对齐,而只能通过一些手动操作。所以总的来说,我会做一些和你类似的事情,即主要坚持使用的基本对齐环境amsmath,特别是如果你真的试图在等式符号上对齐所有四行。

我会做不同的事情是 a)将较大的 lbrace 移到这样的宏定义中:

\newcommand\smashedlbrace[2][0]{\ 
   \smash{\raisebox{#1\baselineskip}%
                   {\mathsurround 0pt     % <- extra
                    $\left\{\rule{0cm}{#2cm}\right.$}}\ }

并利用您有 3 个方程式需要叠加的事实,因此最好将其放在之后,\implies因为这样就不需要提高或降低任何东西 :-) 但我通过可选参数为此做出了规定。

b) 在最后一个等式中添加一些 \phantom,使其与其他等式相匹配

c) 你的扩展 \jot 是个人品味问题...我喜欢它,因为整个东西看起来相当拥挤

d)使用像 \dd 这样的 def 可能也是一个好主意,以使内容更具可读性;或者甚至更好地使用包,esdiff正如@Bernard 在他的回答中所建议的那样

这给了我们

\documentclass{article}
\usepackage{amsmath}

\newcommand\dd{\mathrm{d}}

\newcommand\smashedlbrace[2][0]{\ 
  \smash{\raisebox{#1\baselineskip}%
                  {\mathsurround 0pt     % <- extra for safety
                    $\left\{\rule{0cm}{#2cm}\right.$}}\ }

\begin{document}

\addtolength{\jot}{0.5ex}

\begin{flalign*}
     L&= \left(u^S\right)^{0.5}\left(u^T\right)^{0.5} - \lambda \left(u^S+u^T-9.9\right)\\
0=\dfrac{\textrm d L}{\dd u^S}&= 0.5\left(u^S\right)^{-0.5}\left(u^T\right)^{0.5}-\lambda \tag{1} \\
\implies
\smashedlbrace{1.3} 
   0=\dfrac{\dd L}{\dd u^T}&= \left(u^S\right)^{0.5}0.5\left(u^T\right)^{-0.5}-\lambda \tag{2} \\
u^S + u^T &= 9.9 \tag{3}
\phantom{\dfrac{L}{u^T}}         % to open up last equation
&\end{flalign*}

\end{document}

并编译

在此处输入图片描述

答案2

这是一个基于empheq和 的解决方案esdiff,该包大大简化了输入(偏)导数的过程。无需加载amsmathmathtools empheq loads,它会加载amsmath

\documentclass{article}
\usepackage{empheq, esdiff}
\usepackage[showframe]{geometry}

\begin{document}
\vspace*{3ex}
$ L= \left(u^S\right)^{0.5}\left(u^T\right)^{0.5} - \lambda\left(u^S+u^T-9.9\right)$\vspace{1ex}
\begin{empheq}[left=\implies\empheqlbrace]{flalign}
  &0=\diff{L}{u^S}= 0.5\left(u^S\right)^{-0.5}\left(u^T\right)^{0.5}-\lambda , & \\
  &0=\diff{ L}{u^T}= \left(u^S\right)^{0.5}0.5\left(u^T\right)^{-0.5}-\lambda,\\
  & u^S + u^T = 9.9.
\end{empheq}

\end{document} 

在此处输入图片描述

答案3

如果你想要对齐所有四行,但希望括号只覆盖最后三行,你可以使用带有 tikz 绘图的覆盖。命令

\tikzcoord[optional vertical shift]{label}

定义为

\usepackage{tikz}
\newcommand\tikzcoord[2][0ex]%
  {\raisebox{#1}{\tikz[remember picture]\coordinate(#2);}}

在方程中标记一个点,以便以后在 tikz 图片中引用。可以使用以下方法绘制括号

\usetikzlibrary{decorations.pathreplacing}
...
\begin{tikzpicture}[remember picture,overlay]
\draw[decorate,decoration={brace,mirror}] ...
\end{tikzpicture}

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\newcommand\dd{\mathrm{d}}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\newcommand\tikzcoord[2][0ex]{\raisebox{#1}{\tikz[remember picture]\coordinate(#2);}}
\begin{document}
\begin{flalign*}
  L & = \left(u^S\right)^{0.5}\left(u^T\right)^{0.5} - \lambda \left(u^S+u^T-9.9\right)\\[1ex]
  \tikzcoord[2.2ex]{a}\;\;
  0=\dfrac{\dd L}{\dd u^S}
    & = 0.5\left(u^S\right)^{-0.5}\left(u^T\right)^{0.5}-\lambda \tag{1} \\
  0=\dfrac{\dd L}{\dd u^T}
    & = \left(u^S\right)^{0.5}0.5\left(u^T\right)^{-0.5}-\lambda \tag{2} \\
  \tikzcoord[-0.5ex]{b}
  u^S + u^T 
    & = 9.9 \tag{3}
\end{flalign*}
\begin{tikzpicture}[remember picture,overlay]
\draw[decorate,decoration={brace,mirror},thick] (a) --node[left]{$\Rightarrow\;$} (a|-b);
\end{tikzpicture}
\end{document}

相关内容