TikZ:让隐形装饰跟随弧线

TikZ:让隐形装饰跟随弧线

在此 MWE 中

\documentclass[border=5mm]{standalone}

\usepackage{tikz}
\usetikzlibrary{decorations.markings}

\begin{document}
\begin{tikzpicture}[path/.append style={
   decoration={
   markings,
     mark=at position 0.5 with {\arrow [scale=1.5]{stealth}},
   },
   postaction=decorate,
   thick,
 }]

   \draw[path] (-2, 0) -- (-0.5, 0);
   \draw[path] (-0.5, 0) arc [start angle=180, delta angle=-180, radius=0.5];
   \draw[path] (0.5, 0) -- (2, 0);
   \draw[path] (2, 0) arc [start angle=0, end angle=180, radius=2];
\end{tikzpicture}
\end{document}

箭头沿弧线的位置看起来不太正确。此外,箭头似乎没有放置在路径的中间(错误的锚点)。

我怎样才能解决这个问题?

答案1

看起来您可以添加一个选项来\arrow转移它。

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

\begin{document}
\begin{tikzpicture}[path/.append style={
   decoration={
       markings,
       mark=at position 0.5 with {\arrow[xshift=2.5\pgflinewidth,red,>=stealth]{>}}
   },
   postaction=decorate,
   thick,
 }]
   \draw[path] (-2, 0) -- (-0.5, 0);
   \draw[path] (-0.5, 0) arc [start angle=180, delta angle=-180, radius=0.5];
   \draw[path] (0.5, 0) -- (2, 0);
   \draw[path] (2, 0) arc [start angle=0, end angle=180, radius=2];
   \draw[help lines] (0,0) --++ (0,2) (1.25,0) --++ (0,2) (-1.25,0) --++ (0,02);
   \draw[help lines] (-2,0) --++ (4,0) (-2,0.5) --++ (4,0) (-2,2) --++ (4,0);
\end{tikzpicture}
\end{document}

示例代码输出

魔法数字2.5\pgflinewidth是箭头长度的一半stealth,从箭头尖端到箭头顶点,可以通过挖掘找到pgfcorearrows.code.tex。这是我目前能做到的最好的。

相关内容