diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex new file mode 100644 index 00000000000..216bc15fcb9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex @@ -0,0 +1,281 @@ +% tkz-obj-eu-draw-lines.tex +% Copyright 2023 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.00c} +\def\filedate{2023/01/23} +\typeout{2023/01/23 5.00c tkz-obj-eu-draw-lines.tex} +\makeatletter + +%<--------------------------------------------------------------------------–> +% Setup Line +%<--------------------------------------------------------------------------–> +\pgfkeys{% + tkzsuline/.cd, + line width/.code = \def\tkz@line@width{#1}, + color/.code = \def\tkz@line@color{#1}, + style/.code = \def\tkz@line@style{#1}, + add/.code args = {#1 and #2} {\def\tkz@line@left{#1} + \def\tkz@line@right{#2}}, + /tkzsuline/.search also = {/tikz} +} +%<--------------------------------------------------------------------------–> +\def\tkzSetUpLine{\pgfutil@ifnextchar[{\tkz@SetUpLine}{\tkz@SetUpLine[]}} +\def\tkz@SetUpLine[#1]{% +\pgfkeys{% + tkzsuline/.cd, + line width = \tkz@euc@linewidth, + color = \tkz@euc@linecolor, + style = \tkz@euc@linestyle, + add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}} +\pgfqkeys{/tkzsuline}{#1} +\tikzset{% + line style/.append style ={% + line width = \tkz@line@width, + color = \tkz@line@color, + style = \tkz@line@style, + add = {\tkz@line@left} and {\tkz@line@right}, + line cap = round, + #1} + } +}% end setup +%<--------------------------------------------------------------------------–> +% Drawing a line +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% \pgfkeys{/tkzdrawl/.cd, +% /tkzdrawl/.search also={/tikz} +% } +\def\tkzDrawLine{\pgfutil@ifnextchar[{\tkz@DrawLine}{\tkz@DrawLine[]}} +\def\tkz@DrawLine[#1](#2,#3){% +\begingroup + % \pgfqkeys{/tkzdrawl}{#1} + \draw[line style,#1] (#2) to (#3); +\endgroup +} +%<-------------------------------------------------------------------------– +% tkzDrawLines +%<-------------------------------------------------------------------------– +\def\tkz@@multiLines#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzDrawLine[\tkz@optline](#1)}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzDrawLines{\pgfutil@ifnextchar[{\tkz@DrawLines}{\tkz@DrawLines[]}} +\def\tkz@DrawLines[#1](#2){% +\xdef\tkz@optline{#1} +\begingroup + \let\next\tkz@@multiLines + \next#2 \@nil % +\endgroup +}% +%<-------------------------------------------------------------------------–> +% Label +%<-------------------------------------------------------------------------–> +\def\tkzLabelLine{\pgfutil@ifnextchar[{\tkz@AddLabelLine}{\tkz@AddLabelLine[]}} +\def\tkz@AddLabelLine[#1](#2,#3)#4{\path (#2) to node[#1]{#4}(#3);} + + +%<--------------------------------------------------------------------------–> +% draw segment (s) +%<--------------------------------------------------------------------------–> +\pgfkeys{/tkzdraws/.cd, + /tkzdraws/.search also={/tikz}, +} +\def\tkzDrawSegment{\pgfutil@ifnextchar[{\tkz@DrawSegment}{% + \tkz@DrawSegment[]}} +\def\tkz@DrawSegment[#1](#2,#3){% +\scope + \pgfqkeys{/tkzdraws}{#1} + \draw[line style,add=0 and 0,#1] (#2) to (#3); +\endscope +}% + +\def\tkz@multiDrawSeg#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzDrawSegment[\tkz@optseg](#1)}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +\def\tkzDrawSegments{\pgfutil@ifnextchar[{\tkz@DrawSegments}{% + \tkz@DrawSegments[]}} +\def\tkz@DrawSegments[#1](#2){% +\def\tkz@optseg{#1} +\begingroup + \let\next\tkz@multiDrawSeg + \next#2 \@nil % +\endgroup +} +%<--------------------------------------------------------------------------–> +% Mark Segment +%<--------------------------------------------------------------------------–> +\pgfkeys{ + /@tkzmarkoptions/.cd, + pos/.store in = \tkz@mkpos, + color/.store in = \tkz@mkcolor, + mark/.store in = \tkz@markseg, + size/.store in = \tkz@mksize, + size = 4pt, + color = \tkz@mk@color, + pos = .5, + mark = |, + /@tkzmarkoptions/.search also={/tikz}, +} +\def\tkzMarkSegment{\pgfutil@ifnextchar[{\tkz@MarkSegment}{\tkz@MarkSegment[]}} +\def\tkz@MarkSegment[#1](#2,#3){% +\begingroup + \pgfqkeys{/@tkzmarkoptions}{#1} +\def\tkz@mymark{\pgfsetplotmarksize{\tkz@mksize}\pgfuseplotmark{\tkz@markseg}} +\begin{scope} + [decoration={markings,mark=at position \tkz@mkpos with {\tkz@mymark}}] + \path [\tkz@mkcolor,/@tkzmarkoptions/.cd,#1,postaction={decorate}] (#2) -- (#3); +\end{scope} +\endgroup +} +%<--------------------------------------------------------------------------–> +% multiple +\def\tkz@multiMS#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzMarkSegment[\tkz@optsg](#1)}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzMarkSegments{\pgfutil@ifnextchar[{\tkz@MarkSegments}{\tkz@MarkSegments[]}} +\def\tkz@MarkSegments[#1](#2){% +\def\tkz@optsg{#1} + \begingroup + \let\next\tkz@multiMS + \next#2 \@nil % +\endgroup +} +%<-------------------------------------------------------------------------–> +% Label on segment +%<-------------------------------------------------------------------------–> +\def\tkzLabelSegment{\pgfutil@ifnextchar[{\tkz@LabelSegment}% + {\tkz@LabelSegment[]}} +\def\tkz@LabelSegment[#1](#2,#3)#4{% +\begingroup + \path (#2) to node[label style,#1]{#4} (#3) ; +\endgroup +} +%<--------------------------------------------------------------------------–> +% multiple +\def\tkz@multiLS#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzLabelSegment[\tkz@optls](#1){\tkz@labelseg}}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzLabelSegments{\pgfutil@ifnextchar[{\tkz@LabelSegments}{\tkz@LabelSegments[]}} +\def\tkz@LabelSegments[#1](#2)#3{% +\def\tkz@optls{#1} +\def\tkz@labelseg{#3} + \begingroup + \let\next\tkz@multiLS + \next#2 \@nil % +\endgroup +} +%<--------------------------------------------------------------------------–> +% PolySeg +%<--------------------------------------------------------------------------–> +\def\tkzDrawPolySeg{\pgfutil@ifnextchar[{\tkz@DrawPolySeg}{\tkz@DrawPolySeg[]}} +\def\tkz@DrawPolySeg[#1](#2,#3){% +\begingroup +\draw[line style,#1] (#2) + \foreach \pt in {#2,#3}{--(\pt)};% +\endgroup +} + + +%<--------------------------------------------------------------------------–> +% add dim + % \draw[dim={5,7pt,}] (A) -- (B); + % \draw[dim={7,10pt,transform shape}] (B) -- (C); + % \draw[dim={X,,}] (A) -- (C); +%<--------------------------------------------------------------------------–> +% new code from muzimuzhi Z +%https://tex.stackexchange.com/questions/553430/change-color-and-style-of-dimension-lines-in-tkz-euclide/553441 + +\pgfkeys{/pgf/decoration/.cd, distance/.initial = 10pt} + +\pgfdeclaredecoration{add dim}{final}{ +\state{final}{% +\pgfmathsetmacro{\dist}{\pgfkeysvalueof{/pgf/decoration/distance}} + \pgfpathmoveto{\pgfpoint{0pt}{0pt}} + \pgfpathlineto{\pgfpoint{0pt}{1.2*\dist}} + \pgfpathmoveto{\pgfpoint{\pgfdecoratedpathlength}{0pt}} + \pgfpathlineto{\pgfpoint{(\pgfdecoratedpathlength}{1.2*\dist}} + % start of patch + \pgfusepath{stroke} + \pgfsetarrowsstart{latex} + \pgfsetarrowsend{latex} + \expandafter\pgfsetdash\tkz@dim@dashpattern + \pgfsetstrokecolor{\tkz@dim@color} + % end of patch + \pgfpathmoveto{\pgfpoint{0pt}{\dist}} + \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{\dist}} + \pgfusepath{stroke} + \pgfpathmoveto{\pgfpoint{0pt}{0pt}} + \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{0pt}} +}} + + +\tikzset{ + dim/.style args={#1,#2,#3}{% + postaction={ + decoration={ + show path construction, + lineto code={ + % dim fence + \draw[dim fence style/.try] + (\tikzinputsegmentfirst) -- + ($ (\tikzinputsegmentfirst)!1.2*(#2)!90:(\tikzinputsegmentlast) $) + (\tikzinputsegmentlast) -- + ($ (\tikzinputsegmentlast)!1.2*(#2)!-90:(\tikzinputsegmentfirst) $); + % dim + \draw[dim style/.try] + ($ (\tikzinputsegmentfirst)!#2!90:(\tikzinputsegmentlast) $) -- + node[inner sep=0pt, font=\footnotesize, fill=\tkz@fillcolor, pos=.5, #3] {#1} + ($ (\tikzinputsegmentlast)!#2!-90:(\tikzinputsegmentfirst) $); + } + }, + decorate, + } + }, + dim/.default={,0pt,}, + dim style/.style={ + latex-latex, + }, +} + +%<--------------------------- style line ---------------------------------> +\tikzset{add/.style args={#1 and #2}{to path={% + ($(\tikztostart)!-#1!(\tikztotarget)$)--($(\tikztotarget)!-#2!(\tikztostart)$)% + \tikztonodes}} +} +\makeatother +\endinput
\ No newline at end of file |