Re: Dimensione arrows in TikZ

#73606
Liverpool
Partecipante
    Up
    0
    Down
    ::


    Il codice che segue è stato realizzato modificando la definizione dello stile [tt]open triangle 45[/tt]. La lunghezza della punta della freccia non dipende più dallo spessore di linea, ma viene passata direttamente all’interno del comando [tt]\draw[/tt] tramite la chiave [tt]/punta[/tt] (nota la barra dritta). Puoi assegnare esplicitamente un valore, oppure usare quello di default o non invocare proprio [tt]/punta[/tt] (in quest’ultimo caso viene utilizzato il valore assegnato nella riga che incomincia con [tt]\pgfsetarrowoptions[/tt]. Penso che gli esempi siano chiari.
    `
    \documentclass{article}
    \usepackage{tikz}

    % Codice per lo stile della freccia
    \pgfarrowsdeclare{freccia45}{freccia45}
    {
    \pgfarrowsleftextend{0pt}
    \pgfarrowsrightextend{+\pgfgetarrowoptions{freccia45}}
    }
    {
    \pgfmathsetlengthmacro{\lun}{\pgfgetarrowoptions{freccia45}/cos(22.5)}
    \pgfsetdash{}{+0pt}
    \pgfsetmiterjoin
    \pgfpathmoveto{\pgfpointadd{\pgfqpoint{\pgfgetarrowoptions{freccia45}}{0pt}}{\pgfqpointpolar{157.5}{\lun}}}
    \pgfpathlineto{\pgfqpoint{\pgfgetarrowoptions{freccia45}}{0pt}}
    \pgfpathlineto{\pgfpointadd{\pgfqpoint{\pgfgetarrowoptions{freccia45}}{0pt}}{\pgfqpointpolar{-157.5}{\lun}}}
    \pgfpathclose
    \pgfusepathqstroke
    }
    \def\miodef{0.4cm} % imposta il valore di default
    \pgfsetarrowoptions{freccia45}{\miodef} % valore utilizzato se /punta non viene invocato
    \pgfkeys{/punta/.default=\miodef, /punta/.code={\pgfsetarrowoptions{freccia45}{#1}}}

    \begin{document}
    \begin{tikzpicture}
    \draw [-freccia45, /punta=3pt] (0,3) — (3,3);
    \draw [-freccia45, /punta] (0,2) — (3,2);
    \draw [-freccia45, /punta=1cm] (0,1) — (3,1);
    \draw [-freccia45] (0,0) — (3,0);
    \end{tikzpicture}
    \end{document}`
    Ciao

    Go to top