在 tikz 中装饰循环的边缘

在 tikz 中装饰循环的边缘

我想用一个小圆圈装饰这个带圆角的阴影正方形的顶部边缘。(希望我使用下面定义的装饰。我的反复尝试只得到了错误。)

\usepackage{tikz}
\usetikzlibrary{positioning, math, decorations.markings,calc,shapes.misc}
\usepgfmodule{decorations}

\begin{document}  

\begin{tikzpicture}
        \draw[fill=gray, rounded corners, decoration={markings,mark=at position .5 with {\draw[black, fill=white] circle[radius=2pt];}}]
        (0,0) -- (0,1) -- (1,1) NEED LITTLE CIRCLE HERE -- (1,0)-- cycle;
\end{tikzpicture}        

\end{document}

答案1

“在 tikz 中装饰循环的边缘” 的答案是使用edge[decorate]

在此处输入图片描述

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}  

\begin{tikzpicture}
  \draw[fill=gray, rounded corners, decoration={markings,mark=at position .5 with {\draw[black, fill=white] circle[radius=2pt];}}]
        (0,0) -- (0,1) edge[decorate] (1,1) -- 
        (1,1)  -- (1,0)-- cycle;
\end{tikzpicture}        
\end{document}

这里有一个扩展评论,因为另一篇文章指出了已经多次指出的内容,例如这里:您可以使用pic来表示箭头。我想补充一下,您需要slopedallow upside down键才能使其正常工作。

在此处输入图片描述

\documentclass[tikz,border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[circ/.style={circle, draw, fill=white, inner sep=1.5pt},
    pics/arr/.style={code={\draw[-{Stealth[length=#1,fill=black]}] (-#1/2,0) -- 
    (#1/2,0); }},pics/arr/.default=1ex]
 % https://tex.stackexchange.com/a/430486   
 \draw[fill=gray, rounded corners]
        (0,0) -- (0,1) -- node[circ]{} (1,1) --
        pic[sloped,allow upside down]{arr} (1,0) -- 
        pic[sloped,allow upside down]{arr=1.2ex} cycle;
\end{tikzpicture}
\end{document}

答案2

一个简单的解决方案,在需要的地方使用node边框:

\documentclass[border=3mm]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
        \draw[fill=gray, rounded corners]
        (0,0) -- (0,1) -- node[circle, draw, fill=white, inner sep=1.5pt] {} (1,1) -- (1,0) -- cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

附录:您还可以使用pic包含箭头等的节点来代替选定形状的节点。例如:

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\begin{document}
    \begin{tikzpicture}[
arr/.pic = {\draw[-{Straight Barb[width=3pt]}] (-1pt,0) -- (1pt,0);}
                        ]
        \draw[fill=gray, rounded corners]
        (0,0) -- (0,1) -- pic {arr} (1,1) -- (1,0) -- cycle;
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容