我搜索了这个论坛并在这里发现了类似的问题:在文本中添加诽谤语句
这描述了如何使用 tikz 包在一组文本字符的底部添加连线。我想在文本组的顶部执行相同的操作。
[后续]:如何在表格环境中扩展连线以覆盖多列条目,即我想要执行 &\slur{P &M &G},其中 3 列包含条目 P、M 和 G,连线则覆盖它们?Juan 和 Steve 的解决方案都不起作用,因为我在编译时遇到错误。
谢谢
答案1
我建议 Ti钾Z 解决方案。使用一个\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}