
Estoy tratando de dibujar una flecha discontinua con forma. Para hacer esto, estoy trabajando en una macro tikz.
La rutina funciona dibujando la flecha y luego dibujando algunos rectángulos rellenos de blanco encima de la flecha.
Quiero poder manejar flechas de varias longitudes, por eso quiero calcular el número y el espaciado de los rectángulos blancos en función de la longitud.
El código funciona bien cuando tengo un número para el límite superior. Pero cuando tengo un cálculo para el límite superior, aparece "Incompleto \iffalse; se ignoró todo el texto".
Agradecería cualquier ayuda que me puedan brindar. A continuación se muestra el 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}
Respuesta1
Debe utilizar \pgfmathsetmacro{<macro>}{<expression>}
si desea almacenar el resultado evaluado de an <expression>
en a <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}