\documentclass[border=2mm,tikz]{standalone}
\usepackage{textcomp}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=0.3]
\draw
(1, 2)
node {\textopenbullet}
node[below] {$(1, 2)$}
rectangle (8, 4)
rectangle (6, 11)
rectangle (13, 13)
node {\textopenbullet}
node[above] {$(13, 13)$};
\end{tikzpicture}
\end{document}
我如何确保节点 (1,2) 只是一个空的白色圆圈?
谢谢!
答案1
我喜欢避免使用fill=white
。虽然rectangle
路径运算符不“关心”节点,但正交路径运算符-|
和-|
会关心。使用to path
,可以轻松重新创建rectangle
由两个节点组成的路径。(由于路径运算符效果不佳-|
rectangle
路径上有节点\tikztonodes
或者,我在定义中省略了它,to path
但如果需要的话,可以轻松添加它。)
如果你增加outer sep=0pt
样式的定义circ
,线条就会被绘制到圆形线的中间,这样你就可以轻松避免(几乎不引人注意的)连接问题,如下图所示。在 TiKZ 中更好地将线与节点拟合。另一个解决方案是使用line cap=round
或line cap=rect
(line cap=butt
默认)。
代码
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz}
\tikzset{rect/.style={to path={-| (\tikztotarget) -| (\tikztostart) (\tikztotarget)}}}
\begin{document}
\begin{tikzpicture}[scale=0.3,
circ/.style={shape=circle, inner sep=1pt, draw, node contents=}]
\draw node (c1) at (1, 2) [circ, label=below:{$(1,2)$}]
node (c2) at (13,13)[circ, label=above:{$(13,13)$}]
(c1) to[rect] (8,4) to[rect] (6,11) to[rect] (c2);
\end{tikzpicture}
\end{document}
答案2
我将使用节点样式而不是\textopenbullet
节点文本。
代码:
\documentclass[border=2mm,tikz]{standalone}
\usepackage{textcomp}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
scale=0.3,
mydot/.style={
circle,
fill=white,
draw,
outer sep=0pt,
inner sep=1.5pt
}
]
\draw
(1, 2)
node[mydot] {}
node[below] {$(1, 2)$}
rectangle (8, 4)
rectangle (6, 11)
rectangle (13, 13)
node[mydot] {}
node[above] {$(13, 13)$};
\end{tikzpicture}
\end{document}
答案3
您可以设置一个坐标,然后在其上绘制并填充:
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=0.3]
\draw
(1, 2)
node (here) [coordinate] {}
node[below] {$(1, 2)$}
rectangle (8, 4)
rectangle (6, 11)
rectangle (13, 13)
node (alsohere) [coordinate] {}
node[above] {$(13, 13)$};
\draw [fill=white] (here) circle[radius= 0.5 em];
\draw [fill=white] (alsohere) circle [radius= 0.5 em];
\end{tikzpicture}
\end{document}
给出: