我正在尝试像下图这样对齐 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}
生产: