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}

Связанный контент