
다음과 같이 좌표 이름을 지정하여 TikZ의 경로 끝에 액세스할 수 있다는 것을 알고 있습니다.
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{svg.path}
\begin{document}
\begin{tikzpicture}
\draw [green] svg {M201.1,673.2c1.4-39.8,2-52.2,18.2-70.8c11.7-13.5,18.3-24.3-7.7-49.4
c-39.3-38-43.2-59.2,1-90.2c18.1-12.7,67.1-20.2,25.4-36.6c-18.2-7.2-23.5-9.7-26.9-39.2c-3-26.7-17.7-28.2-37.7-35
c-20-6.9-87.7-28.8-50.2-78.2c23.5-31,58.6-73.9,83.1-118.2c13.3-24,22.4-56.5,38.6-85.9} coordinate (End);
\fill [red] (End) circle (4pt);
\end{tikzpicture}
\end{document}
같은 방식으로 경로의 시작 부분에 어떻게 액세스할 수 있나요?
답변1
그건 까다로운 일이군요! 구문 svg
은 TikZ 경로 구성 메커니즘의 대부분을 단축하므로 확실한 솔루션인 는 coordinate[pos=0] (Start)
작동하지 않는 것 같습니다.
따라서 이 메서드는 경로가 생성되면 경로를 가져오고 초기 좌표를 제거합니다. 그런 다음 해당 지점에 TikZ 좌표를 생성합니다.
\documentclass{standalone}
%\url{http://tex.stackexchange.com/q/364315/86}
\usepackage{tikz}
\usetikzlibrary{svg.path}
\makeatletter
\def\tikz@startcoord#1#2#3#4\pgf@stop#5{%
\begingroup
\pgftransformreset
\pgftransformshift{\pgfpoint{#2}{#3}}%
\pgfnode{coordinate}{center}{}{#5}{}%
\endgroup
}
\tikzset{
coordinate at start/.code={
\tikz@addmode{%
\pgfsyssoftpath@getcurrentpath\@temp
\expandafter\tikz@startcoord\@temp\pgf@stop{#1}
}%
}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{scope}[xshift=1cm]
\draw [coordinate at start=Start,green,yshift=2cm] svg {M201.1,673.2c1.4-39.8,2-52.2,18.2-70.8c11.7-13.5,18.3-24.3-7.7-49.4
c-39.3-38-43.2-59.2,1-90.2c18.1-12.7,67.1-20.2,25.4-36.6c-18.2-7.2-23.5-9.7-26.9-39.2c-3-26.7-17.7-28.2-37.7-35
c-20-6.9-87.7-28.8-50.2-78.2c23.5-31,58.6-73.9,83.1-118.2c13.3-24,22.4-56.5,38.6-85.9} coordinate (End);
\end{scope}
\fill [red] (End) circle (4pt);
\fill [blue] (Start) circle (4pt);
\end{tikzpicture}
\end{document
}
이 작업을 수행하는 더 간단한 방법이 있을 수 있습니다.
현재 좌표 변환을 무시하도록 업데이트되었습니다(그렇지 않으면 두 번 적용됩니다).
답변2
아마도 OP 요구 사항보다 약간 더 조잡할 수 있지만 svg 경로를 분할하는 것이 허용된다면 첫 번째 moveto 뒤에 좌표를 입력하는 것이 작동할 수 있습니다.
\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{svg.path}
\begin{document}
\begin{tikzpicture}
\draw [green, xshift=25]
svg {M201.1,673.2}
coordinate (Start)
svg {c1.4-39.8,2-52.2,18.2-70.8c11.7-13.5,18.3-24.3-7.7-49.4
c-39.3-38-43.2-59.2,1-90.2c18.1-12.7,67.1-20.2,25.4-36.6
c-18.2-7.2-23.5-9.7-26.9-39.2c-3-26.7-17.7-28.2-37.7-35
c-20-6.9-87.7-28.8-50.2-78.2c23.5-31,58.6-73.9,83.1-118.2
c13.3-24,22.4-56.5,38.6-85.9}
coordinate (End);
\fill [blue] (Start) circle [radius=.1];
\fill [red] (End) circle [radius=.1];
\end{tikzpicture}
\end{document}