Tengo problemas con una figura de TikZ después de copiar el código de una excelente respuestaaquí:
\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}
Mi primer problema surge al intentar compilar el código.necesito comentar \usetkzobj{all}
. De lo contrario, aparece un mensaje de error. Intenté actualizar el paquete tkz-euclide usando el Administrador de paquetes MikTeX, pero el problema persiste. Si es útil, esta es una captura de pantalla de MikTeX:
Cuando se compila el documento (con el comando antes mencionadocomentó) Me sale la siguiente imagen.
No puedo entender por qué se desplazaron las etiquetas. No cambié ni un ápice del código original.
A modo de comparación, esta es la imagen de la respuesta vinculada.https://i.stack.imgur.com/VUFYR.png
Además, me gustaría saber cómo agregar líneas que indiquen congruencia, como se muestra a continuación:
Muchas gracias por cualquier comentario.
Respuesta1
- Utilicé el código de AndréC con algunas modificaciones. Eliminé lo innecesario. En su código, lo eliminé
\usepackage{tikz}
porquetkz-euclide
lo carga solo.
En el código de André, cambié la línea \tkzDefPointWith[linear,K=0.6](A,a) \tkzGetPoint{D}
. Sigue siendo válido, pero \tkzDefPointWith[linear normed,K=8](A,a) \tkzGetPoint{D}
es preferible, ya que así sabemos la longitud exacta de AD.
Finalmente, es una buena idea definir y determinar primero los puntos y luego, como último paso, trazarlos, etiquetarlos y marcarlos.
Para las posiciones de las etiquetas, hay disponible un archivo de configuración .cfg. Dependiendo del usuario, puede ser diferente, dando lugar a diferentes posiciones. La mejor solución es redefinir tus propios estilos.
\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}
- Aquí hay una versión con tkz-elements y tkz-euclide. La compilación se realiza con lualatex.
La parte de definición cambia solo en la sintaxis. Definimos el triángulo T.ANL. Esto evita crear las rectas LAN y L.AL, que quedarán definidas por TANL.ab y TANL.ca (ab, bc y ca son los tres lados del triángulo).
bisectriz define la bisectriz de A. bisectriz (2) define la bisectriz de B, etc.
za es el segundo punto de la recta L.Aa. L.Aa.pa designa el primer punto y L.Aa.pb el segundo.
zD = L.Aa: informe (6)` coloca el punto D a 6 cm de 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}
Respuesta2
He aligerado el código de comandos innecesarios. El código define innecesariamente los puntos B, D, h y g. Eliminé h y g y los reemplacé con B y D. Puse una ligera discrepancia en el radio de los ángulos, ya que parece más claro leer que los ángulos son iguales con la codificación cuando su radio difiere. Pero puedes cambiar esto.
\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}