我正在使用 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) {...