tikz 中不可见背景的问题

tikz 中不可见背景的问题

我一直在尝试绘制像下图这样的箭头。

在此处输入图片描述

我生成的代码如下所示。

\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage[compat=1.0.0]{tikz-feynman}
\title{}
\author{ }
\date{}
\begin{document}

\maketitle

\begin{center}
\begin{tikzpicture}[scale=1]
\draw[] (0,0) -- (0,1.5) -- (-0.2, 1.5) -- (0.25,2.5) -- (0.7,1.5) -- (0.5,1.5) -- 
(0.5,0) -- (0,0) ;
\filldraw [gray] (0.25,0.5) circle (0.4cm);
\end{tikzpicture}    
\end{center}
\end{document}

我找不到让箭头内的圆圈不可见的方法。有人能帮忙解决这个问题吗?

答案1

只需从后到前绘制事物,因为无论如何你都想填充箭头。

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[thick]
  \draw [black, line width=3mm] (-0.75,0.5) -- (1.25,0.5);
  \filldraw [gray,draw=black] (0.25,0.5) circle (0.4cm);
  \draw [draw=red!80!gray, top color=red!35, bottom color=red] (0,0) -- (0,1.5) -- (-0.2, 1.5) -- (0.25,2.5) -- (0.7,1.5) -- (0.5,1.5) -- 
  (0.5,0) -- cycle ;
\end{tikzpicture}    
\end{document}

请注意,如果将圆心放在,您可能会发现更容易,(0,0)因为它可以直接确保对称性。

线上圆圈上的箭头

答案2

您可以按照 pgf 手册的“分层图形”部分所述使用图层。其思路是先声明一些图层(使用宏\pgfdeclarelayer),然后对它们进行排序(使用\pgfsetlayers)。main加载tikz/pgf包时会声明图层。它是默认图层。要使用声明的图层,只需将您的代码放在环境中即可pgfonlayer

(代码改编自@cfr 不错的回答)

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
% Ordered layers (bottom to top)
\pgfsetlayers{background, main, foreground}
\begin{document}
\begin{tikzpicture}[thick]
  \draw[draw = red!80!gray, top color = red!35, bottom color = red] (0, 0) -- (0, 1.5) -- (-0.2, 1.5) -- (0.25, 2.5) -- (0.7, 1.5) -- (0.5, 1.5) -- (0.5, 0) -- cycle;
  \begin{pgfonlayer}{background}
    \draw[black, line width = 3mm] (-0.75, 0.5) -- (1.25, 0.5);
    \filldraw[gray, draw = black] (0.25, 0.5) circle (0.4cm);
  \end{pgfonlayer}
\end{tikzpicture}
\end{document}

相关内容