如何在文本中的单词顶部添加连线(如音乐符号中)?

如何在文本中的单词顶部添加连线(如音乐符号中)?

我搜索了这个论坛并在这里发现了类似的问题:在文本中添加诽谤语句

这描述了如何使用 tikz 包在一组文本字符的底部添加连线。我想在文本组的顶部执行相同的操作。

[后续]:如何在表格环境中扩展连线以覆盖多列条目,即我想要执行 &\slur{P &M &G},其中 3 列包含条目 P、M 和 G,连线则覆盖它们?Juan 和 Steve 的解决方案都不起作用,因为我在编译时遇到错误。

谢谢

答案1

我建议 TiZ 解决方案。使用一个\slur宏,该宏接受两个参数,即连线符下方的文本和所述连线符的颜色。此宏计算并填充文本上方的两个弧线,高度可自定义。

像这样:

\documentclass{article}
\usepackage   {tikz}

% some parameters
\def\H {0.5ex} % height, higher arc
\def\h {0.3ex} % height, lower  arc
\def\vs{1.7ex} % vertical shift

% the slur
\newcommand{\slur}[2][] % color (optional), text to be slurred
{% <-- we don't want a space here
  \begin{tikzpicture}
    \node[inner sep=0,text depth=0,text height=\vs] (a) {#2};
    \coordinate (A) at (a.north east);
    \path (A);
    \pgfgetlastxy{\x}{\y};
    \pgfmathsetmacro\R{\x*\x+\H*\H)/2/\H} % radius, higher arc
    \pgfmathsetmacro\r{\x*\x+\h*\h)/2/\h} % radius, lower  arc
    \pgfmathsetmacro\A{asin(\x/\R)}       % angle,  higher arc
    \pgfmathsetmacro\a{asin(\x/\r)}       % angle,  lower  arc
    \fill[#1] (A) arc (90-\A:90+\A:\R pt) arc (90+\a:90-\a:\r pt);
  \end{tikzpicture}% <-- we don't want a space here either
}

\begin{document}
\slur{Slurred} text, more \slur{slurred text}, and a little slur: \slur{ab}.

\bigskip
\Huge

\color{magenta} \slur[green]{Slurred} text, \color{blue} more \slur{slurred text}.
\end{document}

在此处输入图片描述

编辑:下列的campa 的评论我把颜色改成了可选参数。当然这样更好。

答案2

\documentclass{article}
\usepackage{scalerel,stackengine}
\newcommand*{\slur}[1]{%
  \sbox0{#1}%
  \sbox2{\rotatebox[origin=bl]{90}{\stretchto{)}{\wd0}}}%
  \stackengine{0pt}{\vphantom{X}#1}%
  {\smash{\abovebaseline[0pt]{\copy2}}}{O}{c}{F}{F}{S}%
}

\begin{document}

See \slur{this}, or \slur{this one}.

\end{document}

在此处输入图片描述

相关内容