1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
% encoding : utf8
% tkz-elements.sty v2.30c
% 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.
\ProvidesPackage{tkz-elements}[2024/07/16 version 2.30c Graphic Object Library]
\RequirePackage{luacode}
\directlua{require "tkz_elements_main"}
\newenvironment{tkzelements}
{ \directlua{scale=1}
\directlua{tkz_epsilon=1e-8}
\directlua{tkz_dc=2}
\directlua{indirect = true}
\directlua{z={}
C={}
E={}
L={}
M={}
P={}
Q={}
R={}
RP={}
S={}
T={}
V={}}
\luacode}
{\endluacode}
% new version of the next macro proposed by Sanskar Singh
\def\tkzGetNodes{\directlua{%
for K,V in pairs(z) do
local n,sd,ft
n = string.len(K)
if n >1 then
_,_,ft, sd = string.find( K , "(.+)(.)" )
if sd == "p" then K=ft.."'" end
_,_,xft, xsd = string.find( ft , "(.+)(.)" )
if xsd == "p" then K=xft.."'".."'" end
end
tex.sprint("\string\\coordinate ("..K..") at ("..V.re..","..V.im..") ; \string\r")
end}}
\def\tkzUseLua#1{\directlua{tex.print(tostring(#1))}}
\makeatletter
\def\tkzDrawLuaEllipse{\pgfutil@ifnextchar[{\tkz@DrawLuaEllipse}{\tkz@DrawLuaEllipse[]}}
\def\tkz@DrawLuaEllipse[#1](#2,#3,#4){%
\begingroup
\draw[#1](#2) ellipse [x radius=\tkzUseLua{length(z.#3,z.#2)}, y radius = \tkzUseLua{length(z.#4,z.#2)},rotate=\tkzUseLua{math.deg(slope_ (z.#3,z.#2))}];
\endgroup
}
\def\tkzDN{\pgfutil@ifnextchar[{\tkz@DN}{\tkz@DN[2]}}%
\def\tkz@DN[#1]#2{%
\begingroup
\pgfkeys{/pgf/number format/.cd,std,precision=#1}%
\pgfmathprintnumber{#2}
\endgroup
}
\makeatother
\endinput
|