如何将文本节点放置在绘制矩形的中心

如何将文本节点放置在绘制矩形的中心

矩形标签不会出现在矩形内部,而是出现在矩形的角落。

  \tikzstyle{every node} = [align=center]
   \begin{tikzpicture}
    \draw (0, 0) rectangle (2, 2) node [center] {label}; 
     %center is unknown but was my best guess
  \end{tikzpicture}

我如何移动标签节点以便与矩形拥有一个共同的中心?

结果应该是这样的

  \tikzstyle{every node} = [align=center]
  \begin{tikzpicture}
    \draw (0, 0) rectangle (2, 2);
    \node at (1,1) {label};
  \end{tikzpicture}

但无需手动指定中心。

答案1

你应该这样写:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle (2,2) node[pos=.5] {Test};
\end{tikzpicture}
\end{document}

node通过在没有选项的路径中使用,它会将节点定位到最后一个点。

图片描述

答案2

您可以在连接(本例中为矩形)后写入应居中的文本。它也适用于线条等。

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture}
    \draw (0,0) rectangle node{Test} (2,2);
  \end{tikzpicture}
\end{document}

答案3

看来 OP 想要在固定坐标上绘制一个矩形,然后在其中心插入标签。

默认情况下,anode是一个矩形,其中心有一个文本,因此我们可以使用它作为替代。

不幸的是,节点的解决方案需要一些minimum width|height|size(并不总是被尊重)并且似乎 OP 不想计算它们。

另一种替代node方法是使用fit节点。在这种情况下,我们可以输入两个角坐标并插入带有标签的文本center。此解决方案的优点是,我们创建了正确的尺寸node,稍后可以在图表中使用。

\node[draw, fit={(0,0) (2,2)}, inner sep=0pt, label=center:Test] (A) {};

矩形角可以是绝对坐标或相对坐标。在这种情况下,我们可以使用选项shift将其放置在我们想要的位置。

以下代码显示了两种选项,蓝色表示 Lionel 或 dexteritas 解决方案,黑色表示节点fit

\documentclass[tikz, border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{fit}

\begin{document}
\begin{tikzpicture}

\begin{scope}
\node[draw, fit={(0,0) (2,2)}, inner sep=0pt, label=center:Test] (A) {};
\node[draw, fit={(0,0) (2,2)}, xshift=3cm, inner sep=0pt, label=center:Test] (B) {};
\draw (A)--(B);
\end{scope}

\begin{scope}[draw=blue, yshift=2.5cm]
\draw (0,0) rectangle node[draw] (A) {Test} ++(2,2); 
\draw (3,0) rectangle node[draw] (B) {Test} ++(2,2); 
\draw (A)--(B);
\end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容