% tkz-obj-eu-draw-circles.tex % Copyright 2024 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. \def\fileversion{5.10c} \def\filedate{2024/04/19} \typeout{2024/04/19 5.10c tkz-obj-eu-draw-circles.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzSetUpCircle %<--------------------------------------------------------------------------–> \pgfkeys{% /tkzsetupcirc/.cd, color/.code = \def\tkz@circle@color{#1}, line width/.code = \def\tkz@circle@linewidth{#1}, style/.code = \def\tkz@circle@style{#1}, /tkzsetupcirc/.search also = {/tikz} } %<--------------------------------------------------------------------------–> \def\tkzSetUpCircle{\pgfutil@ifnextchar[{\tkz@SetUpCircle}{\tkz@SetUpCircle[]}} \def\tkz@SetUpCircle[#1]{% \pgfkeys{% tkzsetupcirc/.cd, line width = \tkz@euc@circlelw, color = \tkz@euc@circlecolor, style = \tkz@euc@circlestyle } \pgfqkeys{/tkzsetupcirc}{#1} \tikzset{% circle style/.append style = { % color = \tkz@circle@color, line width = \tkz@circle@linewidth, style = \tkz@circle@style, #1} } }% end setup %<--------------------------------------------------------------------------–> \def\tkzDrawCircle{\pgfutil@ifnextchar[{\tkz@DrawCircle}{\tkz@DrawCircle[]}} \def\tkz@DrawCircle[#1](#2,#3){% \begingroup \node [draw,circle through=(#3), circle style,#1] at (#2) {}; %perhaps I need to use the last method % \tkzCalcLength(#2,#3) \tkzGetLength{tkz@ncradius} % \draw[circle style,#1](#2) circle (\tkz@ncradius); \endgroup } %<--------------------------------------------------------------------------–> \def\tkz@multicircles#1 #2\@nil{% \protected@edef\tkz@temp{ \noexpand \tkzDrawCircle[\tkz@optcircle](#1)}\tkz@temp% \def\tkz@nextArg{#2}% \ifx\tkzutil@empty\tkz@nextArg \let\next\@gobble \fi \next#2\@nil }% %<--------------------------------------------------------------------------–> \def\tkzDrawCircles{\pgfutil@ifnextchar[{\tkz@DrawCircles}{\tkz@DrawCircles[]}} \def\tkz@DrawCircles[#1](#2){% \xdef\tkz@optcircle{#1} \begingroup \let\next\tkz@multicircles \next#2 \@nil % \endgroup }% %<--------------------------------------------------------------------------–> % #2 #3 rayon \def\tkzDrawSemiCircle{\pgfutil@ifnextchar[{\tkz@DrawSemiCircle}{% \tkz@DrawSemiCircle[]}} \def\tkz@DrawSemiCircle[#1](#2,#3){% \begingroup \pgfpointdiff{\pgfpointanchor{#2}{center}}% {\pgfpointanchor{#3}{center}}% \tkz@ax=\pgf@x% \tkz@ay=\pgf@y% \path(#2)--++(-\tkz@ax,-\tkz@ay) coordinate (tkz@pt); \tkzDrawArc[#1,delta=0](#2,#3)(tkz@pt) \endgroup }% %<--------------------------------------------------------------------------–> \def\tkz@multisemicircles#1 #2\@nil{% \protected@edef\tkz@temp{ \noexpand \tkzDrawSemiCircle[\tkz@optsemicircle](#1)}\tkz@temp% \def\tkz@nextArg{#2}% \ifx\tkzutil@empty\tkz@nextArg \let\next\@gobble \fi \next#2\@nil }% %<--------------------------------------------------------------------------–> \def\tkzDrawSemiCircles{\pgfutil@ifnextchar[{\tkz@DrawSemiCircles}{% \tkz@DrawSemiCircles[]}} \def\tkz@DrawSemiCircles[#1](#2){% \xdef\tkz@optsemicircle{#1} \begingroup \let\next\tkz@multisemicircles \next#2 \@nil % \endgroup }% %<---------------------------- Fill Circle --------------------------------–> \def\tkzFillCircle{\pgfutil@ifnextchar[{\tkz@FillCircle}{\tkz@FillCircle[]}} \def\tkz@FillCircle[#1](#2,#3){% \begingroup \node [fill,circle through=(#3),#1] at (#2) {}; \endgroup }% \def\tkz@multifillcircles#1 #2\@nil{% \protected@edef\tkz@temp{ \noexpand \tkzFillCircle[\tkz@optfillcircle](#1)}\tkz@temp% \def\tkz@nextArg{#2}% \ifx\tkzutil@empty\tkz@nextArg \let\next\@gobble \fi \next#2\@nil }% \def\tkzFillCircles{\pgfutil@ifnextchar[{\tkz@FillCircles}{% \tkz@FillCircles[]}} \def\tkz@FillCircles[#1](#2){% \xdef\tkz@optfillcircle{#1} \begingroup \let\next\tkz@multifillcircles \next#2 \@nil % \endgroup }% %<--------------------------- Clip Circle ---------------------------------–> \pgfkeys{/tkzclipc/.cd, out code/.is if = tkzClipOutCircle, out/.code = \tkzClipOutCirclefalse }% %<--------------------------------------------------------------------------–> \def\tkzClipCircle{\pgfutil@ifnextchar[{\tkz@ClipCircle}{\tkz@ClipCircle[]}} \def\tkz@ClipCircle[#1](#2,#3){% \tkzClipOutCircletrue \pgfqkeys{/tkzclipc}{#1} \tkz@@CalcLength(#2,#3){tkzLengthResult} \iftkzClipOutCircle \clip (#2) circle (\tkzLengthResult pt); \else \clip (#2) circle (\tkzLengthResult pt) [tkzreverseclip] ; \fi } %<--------------------------- Label Circle --------------------------------–> \def\tkzLabelCircle{\pgfutil@ifnextchar[{\tkz@LabelCircle}{% \tkz@LabelCircle[]}} % [option] (#2,#3) #2 center #3 un point du cercle #4 angle #5 the label \def\tkz@LabelCircle[#1](#2,#3)(#4)#5{% \begingroup \tkzURotateAngle(#2,#4)(#3) \node[label style,#1] at (tkzPointResult) {#5}; \endgroup } \makeatother \endinput