例子

例子

我正在尝试得到这样的东西:

在此处输入图片描述

\underbrace这与或不同\underbracket。它说a.c=3。是否已经有这样的命令?我还没有找到。或者应该定义它?如果是,有人能帮我定义它吗?

谢谢。

答案1

此处已完成堆叠。我添加了下降器以确保下部支柱不会干扰。支柱/规则参数是可调的。 \rldp是水平杆的垂直下部,\rlht是垂直支柱的高度,\rlwd是规则厚度。

由于答案已被接受,我正在对其进行编辑以提供对此处所做工作的更完整解释。至于堆叠命令的语法如何工作,显然阅读手册是最好的。但除此之外,简而言之,对齐方式是r右、c中、l左(默认为c)。S或短堆叠垂直放置两个项目,项目之间有指定的间隙,而L长堆叠垂直放置两个项目,两个项目的基线之间有指定的距离。的可选参数\stackunder是堆叠间隙(短或长,取决于类型)。当堆栈嵌套时(\stackunder{...\stackunder{}{}...}{}),最简单的方法是从内向外尝试破译它。

例如,在\uvbarR创建对象左侧的 中,内部\stackunder将居中对齐的垂直规则放置在首字母下方,其底部放置\rldp在该字母基线下方一定距离处(长堆栈)。外部\stackunder获取该堆叠对象,并将右对齐的水平规则块放置在其下方,规则仅为字母宽度的 1/2。它将其放置在规则宽度的负垂直间隙(重叠)处(短堆栈),以便有限规则宽度的线条齐平。

解决方案的另一个可能不太明显的方面是,\setbox0\hbox{${}#1{}$}它用于将中心部分(的第二个参数\ubar)排版为非打印框。我这样做只是为了测量该框的宽度(\wd0),以便我知道水平下划线的长度。{}参数两侧的(${}#1{}$)指示数学模式排​​版\cdots第二个参数的前导和尾随,就好像它们左侧和右侧有其他内容一样(当然,它们确实有)。

已编辑,以允许标签内容比下支架的扩展更宽。

\documentclass{article}
\usepackage{stackengine}
\stackMath
\def\rldp{1.3ex}
\def\rlht{.8ex}
\def\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}}%
}
\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}}%
}
\newcommand\ubar[4]{\uvbarR{#1} \uvbar{#2}{#4} \uvbarL{#3}}
\begin{document}
$\ubar{a}{\cdot b\cdot d\cdot e\cdot f\cdot}{g}{a\cdot g=3} \cdot h = 1$
\end{document}

在此处输入图片描述

答案2

使用 TikZxparse我定义了一个宏\linkterms,其用法如下

\linkterms[pin length]{left term}[middle term]{right term}{term underneath}

其中括起来的参数[]是可选的,可以省略。

例子

\documentclass{article}
\pagestyle{empty}% for cropping
\usepackage{tikz,xparse}
\NewDocumentCommand{\linkterms}{ O{1ex} m O{} m m }{
  \tikz[remember picture,baseline=(A.base)]{\node[inner xsep=0pt] (A) {$#2$};}
  #3
  \tikz[remember picture,baseline=(C.base)]{\node[inner xsep=0pt] (C) {$#4$};}
  \tikz[remember picture,overlay]{
    \draw (A.south) -- ([yshift=-#1]A.south) -- coordinate (Z) ([yshift=-#1]C.south) -- (C.south);
    \draw (Z) -- +(0,-#1) node[below] {$#5$};
  }
}
\begin{document}
\noindent
$\linkterms{a}[\cdot b \cdot]{c}{a \cdot c = 3} \cdot d = 1$ \\[1cm]
$\linkterms{a}{c}{a \cdot c = 3} \cdot d = 1$ \\[1cm]
$\linkterms[1mm]{a}[\cdot b \cdot]{c}{a \cdot c = 3} \cdot d = 1$
\end{document}

输出

在此处输入图片描述

答案3

一种利用环境的低重量方法picture

\documentclass{article}
\usepackage{picture}% great package to use dimensions in picture environment


\newsavebox{\linkboxleft}
\newsavebox{\linkboxright}
\newsavebox{\linkboxall}
\newsavebox{\linkboxunder}

\makeatletter 

\newcommand{\linktwoterms}[4]{%
% #1=left term, #2=middle term, #3=right term
% #4=stuff to be put underneath
    \sbox{\linkboxleft}{\m@th$#1$}%
    \sbox{\linkboxright}{\m@th$#3$}%
    \sbox{\linkboxall}{\m@th$#1#2#3$}%
    \sbox{\linkboxunder}{$#4$}%
    \raisebox{-\height}
    {\begin{picture}(0,\ht\linkboxunder+3ex)(0,-\ht\linkboxunder-3ex)
      \linethickness{.2ex}
      \put (.5\wd\linkboxleft,-.5ex){\line(0,-1){1ex}}
      \put (\wd\linkboxall-.5\wd\linkboxright,-.5ex){\line(0,-1){1ex}}
      \put (.5\wd\linkboxleft-.1ex,-1.5ex){\line(1,0)
               {\wd\linkboxall-.5\wd\linkboxleft-.5\wd\linkboxright+.1ex}}
      \put (.5\wd\linkboxall,-1.5ex){\line(0,-1){1ex}}
      \put (.5\wd\linkboxall,-3ex){\makebox(,)[t]{\usebox{\linkboxunder}}}
    \end{picture}}
    \usebox{\linkboxall}%
}%

\makeatother

\begin{document}\thispagestyle{empty}

$\linktwoterms{a}{\cdot b \cdot}{c}{\scriptstyle (a\cdot c = 3)}\cdot d = 1$

% aahuiauhdaihda for testing depth above.

\end{document}

底架

答案4

语法是

\linkterms{left}[optional middle]{right}{underset}

运行以下命令xelatex

\documentclass{article}
\usepackage{pst-node}
\parindent=0pt
\makeatletter
\def\linkterms#1{\@ifnextchar[{\linkterms@i#1}{\linkterms@i#1[]}}
\def\linkterms@i#1[#2]#3#4{%
  \rnode{@A}{\mathstrut#1}#2\rnode{@B}{\mathstrut#3}\pcline[linestyle=none](@A)(@B)%
  \nbput[labelsep=7mm]{\rnode{@C}{#4}}%
  \ncangles[angleA=-90,angleB=90,arm=1.5ex,nodesep=1pt]{@A}{@C}%
  \ncangles[angleA=-90,angleB=90,arm=1.5ex,nodesep=1pt]{@B}{@C}}
\makeatother
\begin{document}
$\linkterms{a}[\cdot b \cdot]{c}{a \cdot c = 3} \cdot d = 1$ \\[1cm]
$\linkterms{a}{c}{a \cdot c = 3} \cdot d = 1$ \\[1cm]
$\linkterms{a}[\cdot b\cdot d\cdot e\cdot f\cdot]{g}{a\cdot g=3} \cdot h = 1$
\end{document}

在此处输入图片描述

相关内容