10 tkz-euclide 宏包中如何获取未知角的度数并用在另一个角的绘制中

发布于 2025-08-22 11:12:27

在这个问题获取某线段长度用于绘制新的线段长度等于某线段中,@u70550 热情地回复了关于线段绘制的疑惑。

今天遇到了新的类似问题 —— 获取未知角的度数并用在另一个角的绘制中。

原草图如下:

image.png

绘制了一多半的代码如下:

\documentclass[border=5pt]{standalone}
\usepackage{tkz-euclide}

\begin{document}
    \begin{tikzpicture}[scale=1, font=\small]
        
        % ===== 定义点 =====
        \tkzDefPoints{0/0/C, 4/0/E}
        \tkzDefTriangle[two angles=23 and 37](C,E)
        \tkzGetPoint{B}
        
        \tkzDefPointBy[rotation=center B angle -90](C)
        \tkzGetPoint{A}
        \tkzDefPointBy[rotation=center B angle 90](E)
        \tkzGetPoint{D}
        
        \tkzCalcLength(B,D)
        \tkzGetLength{BDlen} 
        \tkzDefPointWith[linear normed, K=\BDlen](B,A) 
        \tkzGetPoint{G}
        
        \tkzFindAngle(A,D,G)
        \tkzGetAngle(angleADG)
        \tkzDefPointBy[rotation=center B angle \angleADG](A)
        \tkzGetPoint{f}
        \tkzInterLL(B,f)(A,D)
        \tkzGetPoint{F}
        

        % ===== 绘制图形 =====
        \tkzDrawPolygon[thick](B,C,E)
        \tkzDrawSegments[thick](A,B D,B A,C D,E A,D D,G B,F G,F)
        
    \end{tikzpicture}
\end{document}

获取未知角的度数并用在另一个角的绘制中出现了报错,查看了宏包的汉化说明,还是没有找到问题。再求助下大佬们。

image.png

报错信息为:

! Undefined control sequence.
\tkzangle ->\angleADG
                      
l.23 ...ntBy[rotation=center B angle \angleADG](A)

?

查看更多

关注者
0
被浏览
59
Sagittarius Rover
Sagittarius Rover 10小时前
我要成为Typst糕手/(ㄒoㄒ)/~~

先解决原始问题

image.png

注意

\tkzGetAngle(angleADG)

\tkzGetAngle{angleADG}

看文档的例子:

image.png

所以,你只要把\tkzGetAngle(angleADG)替换为\tkzGetAngle{angleADG}即可

\documentclass[border=5pt]{standalone}
\usepackage{tkz-euclide}

\begin{document}
    \begin{tikzpicture}
        
        % ===== 定义点 =====
        \tkzDefPoints{0/0/C, 4/0/E}
        \tkzDefTriangle[two angles=23 and 37](C,E)
        \tkzGetPoint{B}
        
        \tkzDefPointBy[rotation=center B angle -90](C)
        \tkzGetPoint{A}
        \tkzDefPointBy[rotation=center B angle 90](E)
        \tkzGetPoint{D}
        
        \tkzCalcLength(B,D)
        \tkzGetLength{BDlen} 
        \tkzDefPointWith[linear normed, K=\BDlen](B,A) 
        \tkzGetPoint{G}
        
        \tkzFindAngle(A,D,G)
        \tkzGetAngle{angleADG}%<-注意花括号
        \tkzDefPointBy[rotation=center B angle \angleADG](A)
        \tkzGetPoint{f}
        \tkzInterLL(B,f)(A,D)
        \tkzGetPoint{F}
        

        % ===== 绘制图形 =====
        \tkzDrawPolygon[thick](B,C,E)
        \tkzDrawSegments[thick](A,B D,B A,C D,E A,D D,G B,F G,F)
        
    \end{tikzpicture}
\end{document}

一个workaround:

如果只要用一次,那么也可以直接用\tkzAngleResult,这样可以不用再\tkzGetAngle多写一行...

image.png

\documentclass[border=5pt]{standalone}
\usepackage{tkz-euclide}
\begin{document}
    \begin{tikzpicture}[font=\small]
        % ===== 定义点 =====
        \tkzDefPoints{0/0/C, 4/0/E}
        \tkzDefTriangle[two angles=23 and 37](C,E)
        \tkzGetPoint{B}
        
        \tkzDefPointBy[rotation=center B angle -90](C)
        \tkzGetPoint{A}
        \tkzDefPointBy[rotation=center B angle 90](E)
        \tkzGetPoint{D}
        
        \tkzCalcLength(B,D)
        \tkzGetLength{BDlen} 
        \tkzDefPointWith[linear normed, K=\BDlen](B,A) 
        \tkzGetPoint{G}
        
        \tkzFindAngle(A,D,G)
        % \tkzGetAngle(angleADG)
        \tkzDefPointBy[rotation=center B angle \tkzAngleResult](A)
        \tkzGetPoint{f}
        \tkzInterLL(B,f)(A,D)
        \tkzGetPoint{F}
        

        % ===== 绘制图形 =====
        \tkzDrawPolygon[thick](B,C,E)
        \tkzDrawSegments[thick](A,B D,B A,C D,E A,D D,G B,F G,F)
    \end{tikzpicture}
\end{document}

image.png

2 个回答
M
M 5小时前
这家伙很懒,什么也没写!

@u10189 好奇这题答案是什么,$\frac{12}{10-3\sqrt{3}}$?奇奇怪怪的结果就有点慌。。。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览