% tkz-obj-eu-compass.tex % Copyright 2020 Alain Matthes % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status “maintained”. % % The Current Maintainer of this work is Alain Matthes. % utf8 encoding \def\fileversion{3.06c} \def\filedate{2020/03/18} \typeout{2020/03/18 3.06c tkz-obj-eu-compass.tex} \makeatletter %<--------------------------------------------------------------------------–> % Author Alain Matthes % idea from Y. Combe %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> % Utilisation du Compas : Compass %<--------------------------------------------------------------------------–> % Setup Compass %<--------------------------------------------------------------------------–> \pgfkeys{tkzsucompass/.cd, line width/.code = {\global\edef\tkz@compass@lw{#1}}, color/.code = {\global\edef\tkz@compass@color{#1}}, style/.code = {\global\edef\tkz@compass@style{#1}}, } %<--------------------------------------------------------------------------–> \def\tkzSetUpCompass{\pgfutil@ifnextchar[{\tkz@SetUpCompass}{% remove tkzActivOff 3.03 \tkz@SetUpCompass[]}} %<--------------------------------------------------------------------------–> \def\tkz@SetUpCompass[#1]{% \pgfkeys{tkzsucompass/.cd, line width = \tkz@euc@compasswidth, color = \tkz@euc@compasscolor, style = \tkz@euc@compassstyle, /tkzsucompass/.search also = {/tikz} } \pgfqkeys{/tkzsucompass}{#1} \tikzset{compass style/.style={color = \tkz@compass@color, line width = \tkz@compass@lw, style = \tkz@compass@style }} } %<--------------------------------------------------------------------------–> % \tkzCompass(A, B) % % Marque de compas auto-ajustée en longueur % #2 center #3 le point % Par défaut: % longueur : 1cm, mais avec un maximum d'un angle de 180° % angle calculé pour la longueur % style traits pleins %<--------------------------------------------------------------------------–> \pgfkeys{ /tkzcompass/delta/.code = {\def\tkz@delta{#1}}, /tkzcompass/length/.code = {\def\tkz@length{#1}}, /tkzcompass/ratio/.code = {\def\tkz@ratio{#1}}, /tkzcompass/.unknown/.code = {\let\searchname=\pgfkeyscurrentname \pgfkeysalso{\searchname/.try=#1, /tikz/\searchname/.retry=#1}} } \def\tkzCompass{\pgfutil@ifnextchar[{\tkz@Compass}{\tkz@Compass[]}} \def\tkz@Compass[#1](#2,#3){% \begingroup \pgfkeys{% tkzcompass/.cd, length = 1, delta = 0, ratio = .5 } \pgfkeys{tkzcompass/.cd,#1} \tkzCalcLength(#2,#3)\tkzGetLength{tkz@tempLen} \ifnum\tkz@delta=0 % \pgfmathsetmacro{\tkz@delta}{min(deg(\tkz@length cm/ \tkz@tempLen pt),180)/2} \fi \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@angle}% \draw[shift ={(#2)},/tkzcompass/.cd,compass style,#1]% (\tkz@angle-\tkz@delta:\tkz@tempLen pt)% arc (\tkz@angle-\tkz@delta:\tkz@angle+\tkz@delta:\tkz@tempLen pt); \endgroup} %<--------------------------------------------------------------------------–> \def\tkz@multiCompass#1 #2\@nil{% \protected@edef\tkz@temp{ \noexpand \tkzCompass[\tkz@optcompass](#1)}\tkz@temp% \def\tkz@nextArg{#2}% \ifx\tkzutil@empty\tkz@nextArg \let\next\@gobble \fi \next#2\@nil } \def\tkzCompasss{\pgfutil@ifnextchar[{\tkz@Compasss}{\tkz@Compasss[]}} \def\tkz@Compasss[#1](#2){% \global\edef\tkz@optcompass{#1} \begingroup \let\next\tkz@multiCompass \next#2 \@nil % \endgroup }% \makeatother \endinput