![如何在对齐的方程式周围创建括号?](https://linux22.com/image/352439/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%AF%B9%E9%BD%90%E7%9A%84%E6%96%B9%E7%A8%8B%E5%BC%8F%E5%91%A8%E5%9B%B4%E5%88%9B%E5%BB%BA%E6%8B%AC%E5%8F%B7%EF%BC%9F.png)
我的页面上显示的是我想要的效果,但请告诉我如何使用更好的代码来实现这一点。我\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
,该包大大简化了输入(偏)导数的过程。无需加载amsmath
mathtools 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}