我想知道如何对方程式做出嵌套注释(见图)。
诚挚问候 SL
答案1
改编自我的回答如何在数学模式中链接两个术语,不过我必须做出一些改变。首先,当标签比下部材料宽时,您帮助我发现了一个错误(我已修复)。但此外,我必须引入一个新的维度。
编辑以改进语法,但基本宏是\ubar{left term}{middle stuff}{right term}{label}
。为了嵌套它们,我现在提供\addlevel
和\subtractlevel
。
要更改嵌套级别(括号深度),请在调用之前先调用\addlevel
(可以多次执行)。然后,在中间部分,您可以调用\subtractlevel
以减少括号深度。在这两个宏中,我仅调整支柱高度。
但是,如果您希望调整\addlevel
或\subtractlevel
改变任何尺寸,您可以使用以下方法:
\rldp
水平线的垂直下移
\rlht
数学下方垂直支柱的高度
\rlwd
规则宽度,以及
\rlstub
通向底文的底部(中心)规则的高度
\documentclass{article}
\usepackage{stackengine,graphicx,amsmath}
\stackMath
\newlength\rldp
\rldp1.3ex
\newlength\rlht
\rlht.8ex
\newlength\rlstub
\rlstub.8ex
\newlength\rlwd
\rlwd.8pt
\setstackgap{L}{\rldp}
\def\uvbarR#1{%
\def\stackalignment{r}\def\stacktype{S}\stackunder[-\rlwd]{%
\def\stackalignment{c}\def\stacktype{L}\stackunder{#1}{\rule{\rlwd}{\rlht}}%
}{\setbox0\hbox{$#1$}\rule{.5\wd0}{\rlwd}}%
}
\def\uvbarL#1{%
\def\stackalignment{l}\def\stacktype{S}\stackunder[-\rlwd]{%
\def\stackalignment{c}\def\stacktype{L}\stackunder{#1}{\rule{\rlwd}{\rlht}}%
}{\setbox0\hbox{$#1$}\rule{.5\wd0}{\rlwd}}%
}
\newlength\tmplen
\def\uvbar#1#2{%
\def\stacktype{S}\def\useanchorwidth{T}\def\stackalignment{c}\stackunder[0pt]{%
\def\stacktype{L}\setbox0\hbox{${}#1{}$}%
\stackunder[\rldp]{{}#1{}}{\rule{\wd0}{\rlwd}}%
}{\def\stacktype{S}\stackunder[1pt]{\rule{\rlwd}{\rlstub}}{\scriptscriptstyle#2}}%
}
\newcommand\ubar[4]{\uvbarR{#1}\uvbar{#2}{#4}\uvbarL{#3}}
\newcommand\addlevel[1][.9\baselineskip]{%
\addtolength\rlht{#1}%
\addtolength\rldp{#1}%
}
\newcommand\subtractlevel[1][.9\baselineskip]{%
\addtolength\rlht{-#1}%
\addtolength\rldp{-#1}%
}
\begin{document}
\[\addlevel
a\ubar{b}
{
\subtractlevel
\ubar{}{c}{}{\scalebox{.3}{inner}}
d
}
{e}{\text{outer}}
f + ghick = lmn\]
\[\addlevel\addlevel\ubar
{}
{\subtractlevel\subtractlevel \ubar{a}{^2 + b}{^2}
{\text{sides}} = \addlevel \ubar{}{c^2}{}{\text{\makebox[3ex][r]{hypotenuse}}}}
{\,\,}
{\text{The Pythagorean Theorem}}\]
\end{document}