Проблема с tkz-euclide

Проблема с tkz-euclide

У меня возникли проблемы с фигуркой 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}. В противном случае я получаю сообщение об ошибке. Я попытался обновить пакет tkz-euclide с помощью диспетчера пакетов MikTeX, но проблема осталась. Если это поможет, вот скриншот MikTeX:

введите описание изображения здесь

Когда документ скомпилирован (с помощью вышеупомянутой командыпрокомментировал) У меня получается следующая картина.

введите описание изображения здесь

Не могу понять, почему метки сместились. Я не менял ни на йоту исходный код.

Для сравнения, это изображение из связанного ответа.https://i.stack.imgur.com/VUFYR.png

Кроме того, я хотел бы знать, как добавлять линии, указывающие на конгруэнтность, как показано ниже:

введите описание изображения здесь

Большое спасибо за любые отзывы.

решение1

  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}

введите описание изображения здесь

  1. Вот версия с tkz-elements и tkz-euclide. Компиляция производится с помощью lualatex.

Часть определения меняется только в синтаксисе. Мы определяем треугольник T.ANL. Это позволяет избежать создания прямых линий L.AN и L.AL, которые будут определены T.ANL.ab и T.ANL.ca (ab, bc и ca — три стороны треугольника).

биссектриса определяет биссектрису из A. биссектриса (2) определяет биссектрису из B и т.д.

za — вторая точка линии L.Aa. L.Aa.pa обозначает первую, а L.Aa.pb — вторую точку.

zD = L.Aa: отчет (6)` размещает точку D на расстоянии 6 см от A.

\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}

введите описание изображения здесь

Связанный контент