在 tikz 节点内格式化文本

在 tikz 节点内格式化文本

我正在尝试像下图这样对齐 tikz 节点内的文本。我尝试使用表格环境,但没有成功。有没有办法像那样对齐文本?

例子

我目前编写的代码:

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicure}
     \tikzstyle{status}=[draw,rectangle,rounded corners,fill=blue,text centered,inner sep=2pt]
     \node[status] (test) {
     \begin{tabular}{lcr}
     Word 1 & $\rightarrow$ & Value 1
     Word 2 & $\rightarrow$ & Value 2
     Word 3 & $\rightarrow$ & Value 3
     Word 4 & $\rightarrow$ & Value 4
     \end{tabular}};
\end{tikzpicture}
\end{document}

谢谢你的帮助。

编辑:代码扩展至 MWE。

答案1

像这样?

在此处输入图片描述

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{arrows.meta,
                matrix}

\begin{document}
 \begin{tikzpicture}[
 LA/.style = {line width=1mm, -{Triangle[angle=90:1pt 2]}, draw=blue!50!gray},
 BL/.style = {baseline=-0.75ex}
                    ]
\node[draw, rounded corners, fill=blue!30,
      inner ysep=3mm, inner xsep=2mm,
      font=\sffamily\bfseries, align=center,
      label={[font=\sffamily\bfseries,anchor=north west]north west:Example text}
      ]
{\\[2ex]
\renewcommand\arraystretch{1.3}
\begin{tabular}{lcr}
 Word 1 & \tikz[BL]\draw[LA] (0,0) -- ++ (1,0); & Value 1 \\
 Word 2 & \tikz[BL]\draw[LA] (0,0) -- ++ (1,0); & Value 2 \\
 Word 3 & \tikz[BL]\draw[LA] (0,0) -- ++ (1,0); & Value 3 \\
 Word 4 & \tikz[BL]\draw[LA] (0,0) -- ++ (1,0); & Value 4 \\
 \end{tabular}
};
 \end{tikzpicture}
\end{document}

答案2

我不清楚你的最终目标是什么,但我建议不要将tabular环境放在里面\node,因为通常有更好的方法可以做到这一点。当然,这实际上取决于你想做什么。

话虽如此,如果您确实想这样做,那么您需要tabular在节点内放置一个有效的环境。特别是,您需要以 结束环境的每一行\\。如果您这样做,那么您的代码将产生您想要的结果:

在此处输入图片描述

这是更正后的代码(我也将其扩展为完整的最小工作示例):

\documentclass{article}
\usepackage{tikz}
\begin{document}

  \begin{tikzpicture}
     \tikzstyle{status}=[draw,rectangle,rounded corners,fill=blue,text centered,inner sep=2pt]
     \node[status] (test) {
     \begin{tabular}{lcr}
     Word 1 & $\rightarrow$ & Value 1\\
     Word 2 & $\rightarrow$ & Value 2\\
     Word 3 & $\rightarrow$ & Value 3\\
     Word 4 & $\rightarrow$ & Value 4
     \end{tabular}};
  \end{tikzpicture}

\end{document}

编辑

受到扎尔科 (Zarko) 的箭头启发,我可能会这样做。

\documentclass[svgnames]{article}
\usepackage{tikz}
\usetikzlibrary{fit, arrows.meta, backgrounds}
\begin{document}

  \begin{tikzpicture}[
        LA/.style={line width=1mm, -{Triangle[angle=90:1pt 2]}, draw=blue!50!gray},
        box/.style={rounded corners,fill=blue!30,text centered,inner sep=2pt, draw=MidnightBlue}]
     \foreach \word/\val [count=\c] in {Word 1/Value 1,Word 2/Value 2,Word 3/Value 3,Word 4/Value 4} {
       \node(word\c) at (0,-0.6*\c) {\word};
       \node(val\c) at (2.4,-0.6*\c) {\val};
       \draw[LA] (word\c)--(val\c);
     }
     \begin{scope}[on background layer]
       \node[box, fit=(word1) (val4)]{};
     \end{scope}
  \end{tikzpicture}

\end{document}

生产:

在此处输入图片描述

相关内容