これは、ノード内の複数行テキストの「タイトな」充填、行間隔に影響を与えないようにしたいという点が十分に明確ではありませんでした。
簡単に言うと、曲線に複数行のテキストを重ねる必要があります。テキストが曲線の上にあることを確認するために、テキストを含むノードに色を付けます。長さが異なる複数の行があるため、ノード全体に色を付けるとラベルが奇妙に見えます。解決この問題は解決しましたが、行間隔に影響を与えないという私の(明確に述べられていない)必要性には対処していません(図内の他の複数行のラベルとの一貫性を保つため)。
次の 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}