如果我做
\draw (1,1) circle (1pt)
1pt
tikz 绘制一个直径为 的小圆圈(1,1)
。
我如何定义cross
这样的路径
\draw (1,1) cross (1pt)
画一个有直径的小十字1pt
(像圆形一样可以调整大小)?
答案1
cross
相当于的命令circle
不存在,TiKZ
但您可以使用库cross out
中的节点shapes.misc
。这种节点会添加交叉节点的文本,但很容易对其进行调整以执行您想要的操作。
\tikzset{cross/.style={cross out, draw,
minimum size=2*(#1-\pgflinewidth),
inner sep=0pt, outer sep=0pt}}
因为circle (1pt)
绘制一个半径为 1pt 的圆,它的总大小将为 2pt,则cross
节点的大小定义为minimum size=2*(#1-\pgflinewidth)
和inner
,且outer
间隔固定为0pt
。
如果十字角不是您想要的,您可以使用rotate
选项进行更改。接下来是一些示例。我还将circles
它们放在上面,只是为了显示圆和十字具有相同的大小。
\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{shapes.misc}
\tikzset{cross/.style={cross out, draw=black, minimum size=2*(#1-\pgflinewidth), inner sep=0pt, outer sep=0pt},
%default radius will be 1pt.
cross/.default={1pt}}
\begin{document}
\begin{tikzpicture}[]
\draw (0,0) circle (1pt);
\draw (.5,0) node[cross,rotate=10] {};
\draw (.5,0) circle (1pt);
\draw (0,.5) circle (1pt);
\draw (0,.5) node[cross,red] {};
\draw (.5,.5) node[cross,rotate=30] {};
\draw (0.25,.25) circle (2pt);
\draw (0.25,.25) node[cross=2pt,rotate=45,green]{};
\end{tikzpicture}
\end{document}
答案2
替代解决方案使用pic
:
\documentclass[]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\tikzset{
cross/.pic = {
\draw[rotate = 45] (-#1,0) -- (#1,0);
\draw[rotate = 45] (0,-#1) -- (0, #1);
}
}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1pt);
\path (.5,0) pic[rotate = 10] {cross=1pt};
\draw (.5,0) circle (1pt);
\draw (0,.5) circle (1pt);
\path (0,.5) pic[red] {cross=1pt};
\draw (.5,.5) pic[rotate = 30] {cross=1pt};
\draw (0.25,.25) circle (2pt);
\draw (0.25,.25) pic[rotate=45,green] {cross=2pt};
\end{tikzpicture}
\end{document}
答案3
您可以在相应位置写一个“x”:
\draw (1,1) node {x};
然后,您可以使用字体大小调整大小,如下所示:
\draw (1,1) node {\Huge x};
“x” 的中心实际上正好位于给定的坐标处。