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);}

Schrödinger's cat のコメントで述べられているように、 はまったく必要ありません\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}

関連情報