垂直居中节点 TikZ

垂直居中节点 TikZ

我正在使用 TikZ 创建以下绘图:

绘画

到目前为止一切顺利,但现在我想将带有灰色背景的节点垂直居中。以下是其代码:

\setlength{\arraycolsep}{2pt}
\draw[xshift=-3cm,yshift=(current bound box.center)]
  node[align=left,right,rounded corners,fill=black!10,inner sep=1ex]
  {$
    \left\{
      \begin{array}{llc}
        h &=& \overline{AF}\\
        l &=& \overline{BF}\\
        l'&=& \overline{AB}\\
        d &=& \overline{CE}
      \end{array}
    \right.
  $};

它被推到左边xshift,因此我也可以同样使用yshift测量值来使其居中。但是,是否可以动态地执行此操作(通过检索边界框高度)?也就是说,如果绘图增大,它将保持居中。

答案1

您可以使用该positioning库,然后使用它left=of <node identifier>来定位包含数组的节点;我向数组中添加了更多文件以查看效果:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}
\setlength{\arraycolsep}{2pt}
\node[draw,fill,circle,inner sep=1pt,label=right:$C$] at (3,0) (c) {};
\node[align=left,rounded corners,fill=black!10,inner sep=1ex,left=of c]
  {$
    \left\{
      \begin{array}{llc}
        h &=& \overline{AF}\\
        l &=& \overline{BF}\\
        l'&=& \overline{AB}\\
        d &=& \overline{CE}\\
        h &=& \overline{AF}\\
        l &=& \overline{BF}\\
        h &=& \overline{AF}\\
        l &=& \overline{BF}\\
      \end{array}
    \right.
  $};
\end{tikzpicture}

\end{document}

在此处输入图片描述

更一般地(如卡拉姆迪尔建议),你可以使用left=of current bounding box.center

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}
\setlength{\arraycolsep}{2pt}
\node[draw,fill,circle,inner sep=1pt,label=right:$C$] at (3,0) (c) {};
\node[align=left,rounded corners,fill=black!10,inner sep=1ex,left=of current bounding box.center]
  {$
    \left\{
      \begin{array}{llc}
        h &=& \overline{AF}\\
        l &=& \overline{BF}\\
        l'&=& \overline{AB}\\
        d &=& \overline{CE}\\
        h &=& \overline{AF}\\
        l &=& \overline{BF}\\
        h &=& \overline{AF}\\
        l &=& \overline{BF}\\
      \end{array}
    \right.
  $};
\end{tikzpicture}

\end{document}

答案2

可以避免定位库:

1)与(C)对齐

 \node[align=left,rounded corners,
       fill=black!10,inner sep=1ex,anchor=east] at ([xshift=-2cm]c) {....

2)与(当前边界框)对齐

  \node[align=left,rounded corners,fill=black!10,
        inner sep=1ex,anchor=east] at (current bounding box.west) {...

相关内容