\documentclass{article}
\usepackage{lmodern}
\usepackage{tikz,times}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[scale=.3]
\draw [thick] (0,6) rectangle (18,4) node [pos=.5] {like this};
\draw [thick] (0,2) -- (18,2) -- (18,0) -- (0,0) -- cycle;
%\draw [thick] (0,2) -- (18,2) -- (18,0) -- (0,0) -- cycle node [pos=.5] {A};
\draw [thick] (0,-3) -- (4, -3) -- (5, -5) -- (-1, -5) -- (3, -4) -- cycle;
%\draw [thick] (0,-3) -- (4, -3) -- (5, -5) -- (-1, -5) -- (3, -4) -- cycle node [pos=.5] {B};
\end{tikzpicture}
\end{document}
在此文档中,我有三条路径。第一条是一个简单的矩形,其中将节点定位在中心很容易(node [pos=.5] {like this}
)。但是,当要对任何路径执行此操作时,我都无法做到这一点。
如何获取位于中心的节点。也可以获取位于路径内的节点,尽管这并不那么重要。
答案1
选项pos
(或)始终指的是最后两个给定的坐标,即,在以节点结尾的midway
路径中,它将位于和之间的线上:(0,0) -- (1,2) -- (3,-1)
(1,2)
(3,-1)
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (1,2) -- (3,-1) node [pos=0.5, fill=red] {x};
\end{tikzpicture}
\end{document}
要将节点置于具有更多边的形状的中心,您可以使用提示:创建路径,然后让节点拥有fit
其所有坐标(使用fit
库)。此节点的内容将位于一个矩形的中心(添加draw=red
到节点以查看它),该矩形围绕所有给定的坐标:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
\draw (-1,2) -- (5,2) -- (3,0) -- (0,0) -- cycle;
\node [fit={(-1,2) (5,2) (3,0) (0,0)}] {x};
\end{tikzpicture}
\end{document}
在某些情况下,可以使用shape
库并将尺寸设置为节点,而不是使用坐标。要获得精确的尺寸,请使用inner sep=0pt
另外的尺寸,否则尺寸将增加 的值inner sep
,默认值为 0.3333em
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\node [minimum width=2cm, minimum height=1cm,draw] {x};
\node at (3,0) [minimum width=2cm, minimum height=1cm,draw,trapezium] {x};
\node at (6,0) [minimum width=2cm, minimum height=1cm,draw,ellipse] {x};
\end{tikzpicture}
\end{document}
当你使用一个节点时,甚至可以通过给第一个节点命名来将另一个节点对齐在其上方:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\node (my node) [minimum width=2cm, minimum height=1cm,draw] {x};
\node at (my node) [minimum width=1cm, minimum height=1cm,draw,circle] {X};
\end{tikzpicture}
\end{document}
答案2
我尝试做类似的事情并最终发现了这个问题。
但是,如果您的路径是多边形(即由连接点的直线形成),我找到了另一种解决方案:为路径中的每个顶点命名(例如使用coordinate
),然后使用重心坐标系并为路径中的每个点创建一个权重为 1 的节点。这就是重心。下面是一个最小的例子。
\documentclass{standalone}
\usepackage{pgf,tikz}
\begin{document}
\begin{tikzpicture}
\draw(0,0) coordinate (P1) -- (1,2) coordinate(P2) -- (3,-1) coordinate(P3) -- (2,-1) coordinate (P4) -- cycle;%%the cycle here does not affect the position of X.
\coordinate (center) at (barycentric cs:P1=1,P2=1,P3=1,P4=1) {};
\node at (center) {X};
\end{tikzpicture}
\end{document}