如何以图表形式标记特定单词

如何以图表形式标记特定单词

我想要为特定的单词添加描述,如下lsfoo.bar所示。

在此处输入图片描述

答案1

一个简单但不太灵活的解决方案是使用mathtools包及其\underbracket宏。

您可以使用两个可选参数来改变括号的结果\underbracket

\underbracket[<rule thickness>][<bracket height>]{<arg>}

另一种解决方案是使用 TikZ(如果您希望绘图的灵活性较低,出于性能原因,最好使用 PGF)。

代码

\documentclass{article}
\usepackage{mathtools,tikz}
\newcommand*{\underDesc}[2]{%
  $\underbracket{\smash[b]{\text{\,#1\,}}}_{\text{#2}}$}

\tikzset{
  underDesc line/.style={draw,rounded corners=\pgflinewidth, line cap=round},
  underDesc node/.style={
    anchor=base, text depth=+0pt, inner ysep=+0pt, inner xsep=.1667em, outer sep=+0pt},
  underDesc node*/.style={
    inner xsep=+0pt, inner ysep=+1pt, font=\scriptsize},
  underDesc path/.style={
    underDesc line, to path={-- ++(down:.7ex) -|
      node[below, near start, underDesc node*] {#1} (\tikztotarget)}}}
\newcommand*{\underDescTikZ}[3][]{%
  \tikz[baseline, #1]
    \node[underDesc node, append after command={
        (\tikzlastnode.south west) edge[underDesc path={#3}] (\tikzlastnode.south east)}
      ] {#2};}
\begin{document}
\underDesc{Is}{word}
\underDesc{foo.bar}{word}
\bigskip

\underDescTikZ{Is}{word}
\underDescTikZ[underDesc line/.append style={draw=red}]{foo.bar}{word}
\end{document}

输出

在此处输入图片描述

答案2

此解决方案使用stackengine包。在这里,我使用两个嵌套\stackunder宏将括号和下划线放置在主参数下方。括号的规则粗细、颜色以及主参数下方的垂直间距均可使用\def此 MWE 中给出的 s 进行重置。

\documentclass{article}
\usepackage{stackengine}
\usepackage{xcolor}
\def\thk{.4ex}%       RULE THICKNESS
\def\vsep{1pt}%       SEPARATION BETEEN PRIMARY WORD AND UNDERBRACE
\def\bracecolor{red}% BRACE COLOR
\def\bracestrut{\hsmash{\rule{\thk}{1ex}}}
\newcommand\ubrace[2]{%
  \stackunder[-2pt]{%
    \stackunder[\vsep]{#1}{%
      \color{\bracecolor}\bracestrut\rule{\widthof{#1}}{\thk}\bracestrut%
    }%
  }{\strut\scriptsize#2}
}
\begin{document}
\ubrace{foo}{word} ~ \ubrace{foo.bar}{macro}
\end{document}

在此处输入图片描述

相关内容