從優秀答案複製程式碼後,我遇到了 TikZ 圖的問題這裡:
\documentclass[11pt,a4paper]{article}
\usepackage{blindtext}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usepackage{color}
\begin{document}
\begin{center}
\begin{tikzpicture}
\tkzDefPoint(0,0){M}
\tkzDefPoint(1.5,0){A}
\tkzLabelPoints[below](A)
\tkzDefPoint(12,0){N}
\tkzDefPoint(10.5,0){B}
\tkzLabelPoints[below](B)
\tkzDrawSegment(M,N)
\tkzDefPoint(9.0,7){L}
\tkzDefPoint(7,5.1){C}
\tkzLabelPoints[above](C)
\tkzDrawSegment(A,L)
\tkzDefLine[bisector](B,A,C)\tkzGetPoint{a}
\tkzDrawSegment(A,a)
\tkzDefPointWith[linear,K=0.6](A,a) \tkzGetPoint{D}
\tkzDefPointBy[projection=onto A--C](D)
\tkzGetPoint{h}
\tkzDrawSegment(D,h)
\tkzMarkRightAngle[fill=lightgray](A,h,D)
%
\tkzDefPointBy[projection=onto A--B](D)
\tkzGetPoint{g}
\tkzDrawSegment(D,g)
\tkzMarkRightAngle[fill=lightgray](A,g,D)
\end{tikzpicture}
\end{center}
\end{document}
我的第一個問題是在嘗試編譯程式碼時出現的。我需要評論 \usetkzobj{all}
。否則,我會收到一條錯誤訊息。我嘗試使用 MikTeX 套件管理器更新 tkz-euclide 包,但問題仍然存在。如果有幫助的話,這是 MikTeX 的螢幕截圖:
當文檔被編譯時(使用上述命令評論了)我得到下面的圖片。
我不明白為什麼標籤會被移位。我沒有對原始程式碼進行任何更改。
為了進行比較,這是連結答案中的圖像。https://i.stack.imgur.com/VUFYR.png
另外,我想知道如何添加表示全等的行,如下所示:
非常感謝您的任何反饋。
答案1
- 我使用了 AndréC 的程式碼並做了一些修改。我刪除了不需要的東西。在您的程式碼中,我刪除了它,
\usepackage{tikz}
因為tkz-euclide
它會自行加載。
在安德烈的程式碼中,我更改了這一行\tkzDefPointWith[linear,K=0.6](A,a) \tkzGetPoint{D}
。它仍然有效,但\tkzDefPointWith[linear normed,K=8](A,a) \tkzGetPoint{D}
更好,因為這樣我們就知道 AD 的確切長度。
最後,最好先定義和確定點,然後作為最後一步,追蹤、標記和標記它們。
對於標籤位置,可以使用 .cfg 設定檔。根據使用者的不同,可能會有所不同,從而導致不同的位置。最好的解決方法是重新定義自己的風格。
\documentclass[11pt,a4paper]{article}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
% definition
\tkzDefPoint(0,0){M}
\tkzDefPoint(12,0){N}
\tkzDefPoint(1.5,0){A}
\tkzDefPoint(9,7){L}
% calculate
\tkzDefLine[bisector](N,A,L) \tkzGetPoint{a}
\tkzDefPointWith[linear normed,K=8](A,a) \tkzGetPoint{D}
\tkzDefPointBy[projection=onto A--L](D) \tkzGetPoint{C}
\tkzDefPointBy[projection=onto A--N](D) \tkzGetPoint{B}
% drawing
\tkzDrawSegments(D,B D,C A,a A,L M,N)
% labeling
\tkzLabelPoints[below](A,B)
\tkzLabelPoints[above](C)
% marking
\tkzMarkRightAngles[fill=lightgray](A,C,D A,B,D)
\tkzMarkSegments[mark=||](C,D D,B)
\tkzMarkAngles[mark=|,size=2](B,A,D)
\tkzMarkAngle[mark=|,size=2.1](D,A,C)
\end{tikzpicture}
\end{document}
- 這是 tkz-elements 和 tkz-euclide 的版本。編譯是用 lualatex 完成的。
定義部分僅在語法上變更。我們定義三角形 T.ANL。這可以避免創建直線 L.AN 和 L.AL,它們將由 T.ANL.ab 和 T.ANL.ca 定義(ab、bc 和 ca 是三角形的三邊)。
bisector 定義 A 的平分線。
za 是線 L.Aa 的第二點。 L.Aa.pa 指定第一個點,L.Aa.pb 指定第二個點。
zD = L.Aa:報告 (6)` 將 D 點置於 A 6 公分的位置。
\documentclass[11pt,a4paper]{article}
\usepackage{tkz-euclide,tkz-elements}
\begin{document}
\begin{tkzelements}
-- definition
z.M = point : new (0,0)
z.N = z.M : east (12)
z.A = point : new (1.5,0)
z.L = point : new (9,7)
T.ANL = triangle : new (z.A,z.N,z.L)
-- calculate
L.Aa = T.ANL : bisector ()
z.a = L.Aa.pb
z.D = L.Aa : report (6)
z.B = T.ANL.ab : projection (z.D)
z.C = T.ANL.ca : projection (z.D)
\end{tkzelements}
\begin{tikzpicture}
\tkzGetNodes
% drawing
\tkzDrawSegments(B,D D,C A,a A,L M,N)
% labeling
\tkzLabelPoints[below](A,B)
\tkzLabelPoints[above](C)
% marking
\tkzMarkRightAngles[fill=lightgray](A,C,D A,B,D)
\tkzMarkSegments[mark=||](C,D D,B)
\tkzMarkAngles[mark=|,size=2](B,A,D)
\tkzMarkAngle[mark=|,size=2.1](D,A,C)
\end{tikzpicture}
\end{document}
答案2
我減少了不必要的指令碼。該程式碼不必要地定義了 B、D、h 和 g 點。我刪除了 h 和 g,並用 B 和 D 替換了它們。但你可以改變這一點。
\documentclass[11pt,a4paper]{article}
\usepackage{blindtext}
\usepackage{tkz-euclide}
\usepackage{color}
\begin{document}
\begin{center}
\begin{tikzpicture}
\tkzDefPoint(0,0){M}
\tkzDefPoint(1.5,0){A}
\tkzLabelPoints[below](A)
\tkzDefPoint(12,0){N}
\tkzDrawSegment(M,N)
\tkzDefPoint(9.0,7){L}
\tkzDrawSegment(A,L)
\tkzDefLine[bisector](N,A,L)\tkzGetPoint{a}
\tkzDrawSegment(A,a)
\tkzDefPointWith[linear,K=0.6](A,a) \tkzGetPoint{D}
\tkzDefPointBy[projection=onto A--L](D)
\tkzGetPoint{C}
\tkzLabelPoints[above](C)
\tkzMarkRightAngle[fill=lightgray](A,C,D)
\tkzDefPointBy[projection=onto A--N](D)
\tkzGetPoint{B}
\tkzLabelPoints[below](B)
\tkzDrawSegments(D,B D,C)
\tkzMarkSegments[mark=||](C,D D,B)
\tkzMarkAngle[mark=|,size=2](B,A,D)
\tkzMarkAngle[mark=|,size=2.1](D,A,C)
\tkzMarkRightAngle[fill=lightgray](A,B,D)
\end{tikzpicture}
\end{center}
\end{document}