TikZ 和节点内文本的垂直对齐问题

TikZ 和节点内文本的垂直对齐问题

我在 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 的一个可能的解决方案是明确声明heightdepth节点:

\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};

相关内容