
Если я сделаю
\draw (1,1) circle (1pt)
tikz нарисуйте маленький круг 1pt
диаметром (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)
рисует круг с радиусом = 1 пункт, его общий размер будет 2 пункта, то 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» на самом деле расположен точно в заданных координатах.