tikz:在直线上放置标记

tikz:在直线上放置标记

在路径上的指定点放置标记讨论在复杂的路径上做标记,但是在简单的直线上做标记仍然很困难。

我尝试:

\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
  \coordinate (A) at (0, 0);
  \coordinate (B) at (1, 3);
  \draw (A) -- (B);
  \path [
    postaction={decorate},
    decoration={
      markings,
      mark = at position {0.1\dimexpr\pgfdecoratedpathlength\relax} with {fill = red circle (0.5cm)}
    }
  ] (A) -- (B) ;
\end{tikzpicture}
\end{document}

在输出中

在此处输入图片描述

标记已无处可见。

什么地方出了问题以及如何修复?

答案1

无需执行即可获得相同的结果decorations.markings

\documentclass[tikz, border=1cm]{standalone}

\begin{document}
\begin{tikzpicture}
  \coordinate (A) at (0, 0);
  \coordinate (B) at (1, 3);
\draw  (A) -- (B) node[pos=0.1, circle,fill=red,inner sep=1.5pt] {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

不确定你从哪里得到这个标记的语法,你需要

mark = at position 0.1 with {\fill [red] circle (0.5cm);}

正如薛定谔的猫在评论中提到的那样,你根本不需要任何东西\pgfdecorationpathlength,数字被解释为沿路径的分数距离。(如果你确实想使用\pgfdirectionpathlength,就0.1*\pgfdecoratedpathlength足够了,不需要\dimexpr。)实际标记需要是一条正确的路径。

\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
  \coordinate (A) at (0, 0);
  \coordinate (B) at (1, 3);
  \draw (A) -- (B);
  \path [
    postaction={decorate},
    decoration={
      markings,
      mark = at position 0.1 with {\fill [red] circle [radius=0.1cm];}
    }
  ] (A) -- (B) ;
\end{tikzpicture}
\end{document}

相关内容