在节点中“紧密”填充多行文本而不影响行距

在节点中“紧密”填充多行文本而不影响行距

这是节点中多行文本的“紧密”填充,其中我对希望行距不受影响的意愿不够明确。

简而言之,我需要在曲线上叠加多行文本。为了确保文本位于曲线上方,我为包含文本的节点着色。由于有多条长度不同的线条,因此当整个节点都着色时,标签看起来很奇怪。解决方案解决了这个问题,但没有解决我(未明确说明)对行距不受影响的需求(为了与图中其他多行标签保持一致)。

考虑一下这个MWE:

\documentclass[class=minimal]{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}
  \draw[-] (-1,-0.5) .. controls (-1,1) and (1,0) .. 
    node[above left=-20pt and -11pt,align=center] 
    {\colorbox{yellow}{short line}\\\colorbox{yellow}{much longer line}} (1,1);
  \draw[-] (-0.105,0.576)  
    node[red,above left=-20pt and -11pt,align=center] 
    {short line\\much longer line};
\end{tikzpicture}
\end{document}

这使

在此处输入图片描述

红色文本的行距与通常相同。黑色文本的行距稍大一些,但填充了所需的“紧密”内容。

如何在不改变行距的情况下在节点中“紧密”填充多行文本?

答案1

在此处输入图片描述

我的意思是你可以将 fboxep 设置为 0(这里是 2),但我猜你更喜欢 3

\documentclass[class=minimal,border=0pt]{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\newcommand\ya[1]{\colorbox{yellow}{#1}}
\newcommand\yb[1]{{\fboxsep=0pt\colorbox{yellow}{#1}}}
\newcommand\yc[1]{\vphantom{#1}\smash{\colorbox{yellow}{#1}}}
\begin{document}
\begin{tikzpicture}
  \draw[-] (-1,-0.5) .. controls (-1,1) and (1,0) .. 
    node[above left=-20pt and -11pt,align=center] 
    {\ya{short line1}\\\ya{much longer line}} (1,1);
\end{tikzpicture}
\begin{tikzpicture}
  \draw[-] (-1,-0.5) .. controls (-1,1) and (1,0) .. 
    node[above left=-20pt and -11pt,align=center] 
    {\yb{short line2}\\\yb{much longer line}} (1,1);
\end{tikzpicture}
\begin{tikzpicture}
  \draw[-] (-1,-0.5) .. controls (-1,1) and (1,0) .. 
    node[above left=-20pt and -11pt,align=center] 
    {\yc{short line3}\\\yc{much longer line}} (1,1);
\end{tikzpicture}
\begin{tikzpicture}
  \draw[-] (-1,-0.5) .. controls (-1,1) and (1,0) .. 
    node[above left=-20pt and -11pt,align=center] 
    {short line4\llap{\rule[-.5pt]{25cm}{.5pt}}\\%
     much longer line\llap{\rule[-.5pt]{25cm}{.5pt}}} (1,1);
\end{tikzpicture}
\end{document}

相关内容