我在 TikZ 中遇到了节点内文本垂直对齐的问题。
举一个非常简单的例子:
\usetikzlibrary{arrows,positioning,shapes.geometric}
\begin{tikzpicture}[%
->,
thick, shorten >=1pt,
>=latex,
node distance=7mm,
noname/.style={%
rectangle, rounded corners=9pt,
text width=11em,
text centered,
minimum height=3em,
draw=black!50,fill=black!20
}
]
\node[noname] (configload) {Loads config};
\node[noname] (varsdec) [right=of configload] {New variables};
\path (configload) edge node {} (varsdec);
\end{tikzpicture}
我得到这个图表:
由于第一个框中的字母,文本对齐错误g
。如果我们剪切此图,仅显示文本,可以更好地看到它:
为了正确对齐文本,我必须设置哪个参数?
答案1
这种情况在第 5.1 节中描述节点样式pgfmanual 的一个可能的解决方案是明确声明height
和depth
节点:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,shapes.geometric}
\begin{document}
\begin{tikzpicture}[%
->,
thick, shorten >=1pt,
>=latex,
node distance=7mm,
noname/.style={%
rectangle, rounded corners=9pt,
text height=1.5ex,
text depth=.25ex,
text width=11em,
text centered,
minimum height=3em,
draw=black!50,fill=black!20
}
]
\node[noname] (configload) {Loads config};
\node[noname] (varsdec) [right=of configload] {New variables};
\path (configload) edge node {} (varsdec);
\end{tikzpicture}
\end{document}
这里我添加了一个图像,显示文本的基线现在已对齐:
显示对齐的红线是通过添加
\draw[help lines,red,<->] let \p1 = (configload.base), \p2 = (varsdec.base) in (-1.5,\y1) -- (6.5,\y1)
(-1.5,\y2) -- (6.5,\y2);
上面的示例代码。
答案2
您可以通过添加anchor=mid
节点的定义来解决这个问题。
\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,calc,positioning,shapes.geometric}
\begin{document}
\begin{tikzpicture}[%
->,
thick, shorten >=1pt,
>=latex,
node distance=7mm,
noname/.style={%
rectangle, rounded corners=9pt,
text width=11em,
text centered,
minimum height=3em,
draw=black!50,fill=black!20
}
]
\node[noname,anchor=mid] (configload) {Loads config};
\node[noname,anchor=mid] (varsdec) [right=of configload] {New variables};
\draw[help lines,red,<->] ($(configload.base)-(2,0)$)--($(varsdec.base)+(2,0)$);
\path (configload) edge node {} (varsdec);
\end{tikzpicture}
\end{document}
答案3
添加一些与其他文本高度相同的幻像文本。例如
\node[noname,anchor=mid] (configload) {Loads config};
\node[noname,anchor=mid] (varsdec) [right=of configload] {\vphantom{g} New variables};