tikz: Platziere eine Markierung auf einer geraden Linie

tikz: Platziere eine Markierung auf einer geraden Linie

Platzieren Sie eine Markierung an einem bestimmten Punkt entlang des Pfadsbefasst sich mit der Platzierung einer Markierung auf einem komplizierten Pfad. Allerdings ist die Platzierung einer Markierung auf einer einfachen geraden Linie dennoch schwierig.

Ich versuche:

\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}

In der Ausgabe

Bildbeschreibung hier eingeben

die Markierung ist nirgends zu sehen.

Was ist falsch und wie kann ich das Problem beheben?

Antwort1

Dasselbe Ergebnis können Sie erzielen ohne 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}

Bildbeschreibung hier eingeben

Antwort2

Ich bin mir nicht sicher, woher Sie diese Syntax für die Markierung haben. Sie brauchen

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

Wie Schrödingers Katze in einem Kommentar erwähnt hat, brauchen Sie \pgfdecorationpathlengthüberhaupt keine, eine Zahl wird als Bruchteil der Entfernung entlang des Pfads interpretiert. (Wenn Sie verwenden möchten \pgfdirectionpathlength, 0.1*\pgfdecoratedpathlengthreicht einfach, nicht \dimexprerforderlich.) Und die eigentliche Markierung muss ein richtiger Pfad sein.

\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}

verwandte Informationen