
점선 모양의 화살표를 그리려고 합니다. 이를 위해 저는 tikz 매크로를 작성하고 있습니다.
루틴은 화살표를 그린 다음 화살표 위에 흰색으로 채워진 직사각형을 그리는 방식으로 작동합니다.
다양한 길이의 화살표를 처리할 수 있기를 원하므로 길이를 기준으로 흰색 직사각형의 수와 간격을 계산하고 싶습니다.
상한선에 대한 숫자가 있으면 코드가 제대로 작동합니다. 그러나 상한값을 계산하면 "불완전함 \iffalse; 모든 텍스트가 무시되었습니다."라는 메시지가 나타납니다.
나는 제공될 수 있는 어떤 도움이라도 환영합니다. 아래는 MWE입니다.
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[x=1mm,y=1mm]
\def\w{2.5}
\def\d{.25}
\def\lt{12}
\def\la{6}
\def\s{.25}
\def\l{50}
\def\sw{1.5}
\def\dw{.65}
\def\sw{1.5}
\def\dw{.65}
\def\nd{int((\l-2*\la)/(\sw+\dw)) }
\def\intervals{\pgfmathparse{\nd}\pgfmathresult }
\def\offs{(\l-2*\la)/\nd}
\def\limit{\intervals-1}
%\def\limit{16} % Uncomment this to see the picture I want
\draw [color=green,fill=green]
(0,0) -- (\la+\d/2,\w/2)
.. controls (\la+\d/4,3*\w/8) .. (\la,\s)
.. controls (\l/2-\lt, \s) .. (\l/2,\w/2)
.. controls (\l/2+\lt, \s) .. (\l-\la,\s)
.. controls (\l-\la-\d/4,3*\w/8) ..(\l-\la-\d/2, \w/2)
-- (\l,0)
-- (\l-\la-\d/2, - \w/2)
.. controls (\l-\la-\d/4,-3*\w/8) .. (\l-\la,-\s)
.. controls (\l/2+\lt, -\s) .. (\l/2,-\w/2)
.. controls (\l/2-\lt, -\s) .. (\la,-\s)
.. controls (\la+\d/4,-3*\w/8) .. (\la,-\w/2)
-- cycle;
\foreach \i in {0,1,...,\limit} {
\fill[color=white] ( {\la+\offs*(.5+\i)-\dw/2}, {-\w/2} )
rectangle ({\la+\offs*(.5+\i)+\dw/2} , \w/2 );
}
\end{tikzpicture}
\end{document}
답변1
평가된 결과를 다음 에 \pgfmathsetmacro{<macro>}{<expression>}
저장하려면 사용해야 합니다 .<expression>
<macro>
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[x=1mm,y=1mm]
\def\w{2.5}
\def\d{.25}
\def\lt{12}
\def\la{6}
\def\s{.25}
\def\l{50}
\def\sw{1.5}
\def\dw{.65}
\def\sw{1.5}
\def\dw{.65}
\def\nd{int((\l-2*\la)/(\sw+\dw)) }
\pgfmathsetmacro{\intervals}{\nd}
\pgfmathsetmacro{\offs}{(\l-2*\la)/\nd}
\pgfmathsetmacro{\limit}{\intervals-1}
\draw [color=green,fill=green]
(0,0) -- (\la+\d/2,\w/2)
.. controls (\la+\d/4,3*\w/8) .. (\la,\s)
.. controls (\l/2-\lt, \s) .. (\l/2,\w/2)
.. controls (\l/2+\lt, \s) .. (\l-\la,\s)
.. controls (\l-\la-\d/4,3*\w/8) ..(\l-\la-\d/2, \w/2)
-- (\l,0)
-- (\l-\la-\d/2, - \w/2)
.. controls (\l-\la-\d/4,-3*\w/8) .. (\l-\la,-\s)
.. controls (\l/2+\lt, -\s) .. (\l/2,-\w/2)
.. controls (\l/2-\lt, -\s) .. (\la,-\s)
.. controls (\la+\d/4,-3*\w/8) .. (\la,-\w/2)
-- cycle;
\foreach \i in {0,1,...,\limit} {
\fill[color=white] ( {\la+\offs*(.5+\i)-\dw/2}, {-\w/2} )
rectangle ({\la+\offs*(.5+\i)+\dw/2} , \w/2 );
}
\end{tikzpicture}
\end{document}