矩形标签不会出现在矩形内部,而是出现在矩形的角落。
\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}