Это мой первый вопрос на этом сайте. Должен сказать, что для меня очень полезно посещать этот сайт, чтобы узнать, как работает LaTeX, так что поздравляю.
Итак, вопрос в том, как это сделать? Я хотел бы решение не в tikz, потому что я никогда им не пользовался. Я ищу что-то вроде макроса или чего-то подобного. Это должно быть в среде уравнений.
Спасибо!
решение1
На основании моего ответа наКак связать два термина в математическом режиме, использовать
\ubar{left}{middle}{right}{undertext}
где каждый термин берется в математическом режиме, включая undertext
. Параметры \rldp
, \rlht
, \rlwd
, и \rlbr
могут быть изменены для влияния на внешний вид.
\rldp
глубина первичного горизонтального подшпиля
\rlht
высота вертикальных стоек, как над, так и под основным горизонтальным подкосом.
\rlwd
ширина (толщина) правила
\rlbr
— это высота вторичных вертикальных линеек, которые опоясывают фактические математические термины.
\documentclass{article}
\usepackage{stackengine}
\stackMath
\def\rldp{1.4ex}
\def\rlht{.8ex}
\def\rlwd{.8pt}
\def\rlbr{2pt}
\setstackgap{L}{\rldp}
\def\uvbarR#1{%
\def\stackalignment{r}\def\stacktype{S}\stackunder[-\rlwd]{%
\def\stackalignment{c}\def\stacktype{L}\stackunder{\ubr{#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{\ubr{#1}}{\rule{\rlwd}{\rlht}}%
}{\setbox0\hbox{$#1$}\rule{.5\wd0}{\rlwd}}%
}
\def\uvbar#1#2{%
\def\stacktype{S}\def\stackalignment{c}\def\useanchorwidth{T}\stackunder[0pt]{%
\def\stacktype{L}\setbox0\hbox{${}#1{}$}%
\stackunder[\rldp]{{}#1{}}{\rule{\wd0}{\rlwd}}%
}{\def\stacktype{S}\stackunder[1pt]{\rule{\rlwd}{\rlht}}{\scriptscriptstyle#2}}%
}
\def\ubr#1{\setbox2=\hbox{$#1$}\stackunder[\dimexpr\rldp-\rlht\relax]{#1}{%
\llap{\rule{\rlwd}{\rlbr}}\rule{\wd2}{\rlwd}\rlap{\rule{\rlwd}{\rlbr}}}}
\newcommand\ubar[4]{\uvbarR{#1} \uvbar{#2}{#4} \uvbarL{#3}}
\begin{document}
$\ubar{ax}{+ by +}{cz}{h} =d$
\end{document}
Как предполагает egreg, может быть желательно утончить линии с помощью \rlwd
. Вот с \rlwd
настройкой 0.4pt.
решение2
Вот вариант использования \underbrace
:
\documentclass{article}
\usepackage{amsmath}
\newlength{\lwidth}
\newlength{\rwidth}
\begin{document}
\begin{align*}
\underbrace{\mathstrut zabc}{} + defg + \underbrace{\mathstrut hijklm} &= n \\[-4\jot]
\settowidth{\lwidth}{zabc}% Left \underbrace width
\settowidth{\rwidth}{hijklm}% Right \underbrace width
\underbrace{\hspace{.6\lwidth} \phantom{{} + defg + {}}\hspace{.6\rwidth}}_{opqr}
\hspace{.4\rwidth}% Due to right-alignment in align
\mkern 6mu% Adjustment for missing =
\end{align*}
\end{document}
Длина содержимого левой и правой нижних скобок хранится в \lwidth
и \rwidth
и используется для целей интервала в нижней части \underbrace
. Здесь и там требуются незначительные корректировки для позиционирования вещей.
\mathstrut
заставляет математическое содержимое без нижних выносных элементов иметь одинаковую глубину.
решение3
Не идеально, но близко к:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{equation*}
\begin{aligned}
&\underbracket{ax} + by + \underbracket{cz} = d \\[-14pt]
&\hphantom{a\!}%
\underbracket{\hphantom{a+ by+ c}}
\end{aligned}
\end{equation*}
\end{document}
Удачи