1. Filosofía: Coordenadas Nombradas
La diferencia entre código amateur y profesional está en cómo manejas las coordenadas.
❌ Estilo Amateur
% Coordenadas hardcodeadas
\draw[thick] (0,0) -- (3,0) -- (1.5,2.6) -- cycle;
\node[below left] at (0,0) {$A$};
\node[below right] at (3,0) {$B$};
\node[above] at (1.5,2.6) {$C$};
✅ Estilo Profesional
% Primero definir, luego dibujar
\coordinate (A) at (0,0);
\coordinate (B) at (3,0);
\coordinate (C) at (1.5,{1.5*sqrt(3)});
\draw[thick] (A) -- (B) -- (C) -- cycle;
\node[below left] at (A) {$A$};
\node[below right] at (B) {$B$};
\node[above] at (C) {$C$};
Ventajas
| Ventaja |
Descripción |
| Reutilización |
Usa (A) en múltiples lugares |
| Cálculos |
Puntos medios, intersecciones, proyecciones |
| Mantenibilidad |
Cambiar una coordenada actualiza todo |
| Legibilidad |
El código se auto-documenta |
2. Operaciones con Coordenadas
Requiere la librería calc
Sumar un vector
% Sintaxis: ($(coordenada) + (dx, dy)$)
\node at ($(A) + (0.3, 0.2)$) {texto};
% Útil para etiquetas desplazadas
\coordinate (A) at (2,3);
\node at ($(A) + (0.2, 0.1)$) {\footnotesize $A$};
Punto intermedio (interpolación)
% Sintaxis: ($(A)!factor!(B)$) donde factor ∈ [0,1]
\coordinate (M) at ($(A)!0.5!(B)$); % Punto medio
\coordinate (P) at ($(A)!0.333!(B)$); % Un tercio desde A
\coordinate (Q) at ($(A)!0.25!(B)$); % Un cuarto desde A
% Factor > 1 extiende más allá de B
\coordinate (E) at ($(A)!1.5!(B)$); % 50% más allá de B
Intersección de rectas
% Sintaxis: (intersection of A--B and C--D)
\coordinate (P) at (intersection of A--B and C--D);
% Ejemplo: Encontrar altura
\coordinate (H) at (intersection of C--D and A--B);
Proyección perpendicular
% Sintaxis: ($(A)!(P)!(B)$) proyecta P sobre recta AB
\coordinate (D) at ($(A)!(C)!(B)$); % Pie de altura desde C
% Ejemplo completo
\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (C) at (1,3);
\coordinate (H) at ($(A)!(C)!(B)$); % H es pie de altura
\draw[thick] (A) -- (B) -- (C) -- cycle;
\draw[thick] (C) -- (H); % Altura
3. Scopes y Transformaciones
Scope básico
\begin{scope}[shift={(5,0)}]
% Todo aquí se desplaza 5 unidades
\draw (0,0) -- (2,2);
\end{scope}
Figuras múltiples (alternativas PSU)
% Definir figura base una vez
\newcommand{\triangulo}{
\draw[thick] (0,0) -- (2,0) -- (1,1.732) -- cycle;
}
% Figura I
\begin{scope}[shift={(0,0)}]
\triangulo
\node[below] at (1,-0.3) {\footnotesize I)};
\end{scope}
% Figura II (rotada)
\begin{scope}[shift={(4,0)}, rotate=180]
\triangulo
\node[below] at (1,-0.3) {\footnotesize II)};
\end{scope}
Transformaciones disponibles
| Opción |
Efecto |
shift={(x,y)} |
Traslación |
rotate=45 |
Rotación (grados, antihorario) |
rotate around={45:(1,1)} |
Rotación respecto a un punto |
scale=0.5 |
Escala uniforme |
xscale=2, yscale=0.5 |
Escala diferenciada |
Clip: Recortar región
\begin{scope}
\clip (0,0) rectangle (3,3);
\draw[thick] (0,0) circle (5); % Solo visible parte dentro del rectángulo
\end{scope}
4. Arcos y Marcas de Ángulos
Arco en un vértice
\coordinate (A) at (2,1);
% Desplazar desde A, luego dibujar arco
\draw ($(A) + (0.4,0)$) arc (0:45:0.4);
% O usando ++
\draw (A) ++(0.4,0) arc (0:45:0.4);
Arco con etiqueta centrada
\coordinate (V) at (0,0); % Vértice
% Dibujar arco de 0° a 60°
\draw (V) ++(0.5,0) arc (0:60:0.5);
% Etiqueta en punto medio del arco (30°)
\node at ($(V) + (30:0.7)$) {\footnotesize $\alpha$};
Ángulo recto (cuadradito)
% Cuadradito alineado con ejes
\draw (H) ++(0,0.2) -- ++(0.2,0) -- ++(0,-0.2);
Marcar ángulos iguales
% Un arco
\draw (A) ++(0.4,0) arc (0:40:0.4);
% Dos arcos (ángulos iguales)
\draw (A) ++(0.35,0) arc (0:40:0.35);
\draw (A) ++(0.45,0) arc (0:40:0.45);
5. Gráficos de Funciones
Funciones comunes
% Parábola
\draw[thick, domain=-2:2, samples=50] plot (\x, {\x*\x});
% Raíz cuadrada
\draw[thick, domain=0:4, samples=50] plot (\x, {sqrt(\x)});
% Hipérbola (proporcionalidad inversa)
\draw[thick, domain=0.5:4, samples=50] plot (\x, {2/\x});
% Exponencial
\draw[thick, domain=-2:2, samples=50] plot (\x, {exp(\x)});
% Logaritmo
\draw[thick, domain=0.1:4, samples=50] plot (\x, {ln(\x)});
Función escalón
% Función escalón (cobro por minutos)
\draw[thick] (0,1) -- (1,1);
\draw[thick] (1,2) -- (2,2);
\draw[thick] (2,3) -- (3,3);
% Con círculos abiertos/cerrados
\fill (1,1) circle (2pt); % Cerrado (incluido)
\draw (1,2) circle (2pt); % Abierto (no incluido)
Ejes coordenados con marcas
\draw[->] (-1,0) -- (5,0) node[right] {\footnotesize $x$};
\draw[->] (0,-1) -- (0,5) node[above] {\footnotesize $y$};
% Marcas en los ejes
\foreach \x in {1,2,3,4} {
\draw (\x,0.1) -- (\x,-0.1) node[below] {\footnotesize \x};
}
6. Figuras 3D
Sistema isométrico
\begin{tikzpicture}[scale=1, x={(-0.5cm,-0.5cm)}, y={(1cm,0cm)}, z={(0cm,1cm)}]
% Ejes
\draw[->] (0,0,0) -- (2,0,0) node[below] {\footnotesize $x$};
\draw[->] (0,0,0) -- (0,2,0) node[right] {\footnotesize $y$};
\draw[->] (0,0,0) -- (0,0,2) node[above] {\footnotesize $z$};
% Vértices del cubo
\coordinate (A) at (0,0,0);
\coordinate (B) at (0,1,0);
% ... más vértices
% Aristas visibles
\draw[thick] (A) -- (B) -- (C) -- (D) -- cycle;
% Aristas ocultas
\draw[dashed] (A) -- (F) -- (E);
\end{tikzpicture}
7. Circunferencias
Puntos con coordenadas polares
\def\r{2} % Radio
\draw[thick] (0,0) circle (\r);
% Puntos en la circunferencia (ángulo:radio)
\coordinate (A) at (0:\r); % 0° (derecha)
\coordinate (B) at (90:\r); % 90° (arriba)
\coordinate (C) at (180:\r); % 180° (izquierda)
\coordinate (P) at (45:\r); % 45°
8. Patrones y Rellenos
% Achurado diagonal
\fill[pattern=north east lines] (0,0) rectangle (2,2);
\fill[pattern=north west lines] (0,0) -- (2,0) -- (1,2) -- cycle;
% Relleno con transparencia
\fill[gray, opacity=0.3] (0,0) rectangle (2,2);
9. Histogramas
\foreach \x/\h in {1/3, 2/5, 3/8, 4/4, 5/2} {
\fill[pattern=north east lines] ({\x-0.4},0) rectangle ({\x+0.4},\h);
\draw[thick] ({\x-0.4},0) rectangle ({\x+0.4},\h);
}
10. Decoraciones
Llaves (braces) para medidas
\usetikzlibrary{decorations.pathreplacing}
% Llave abajo
\draw[decorate, decoration={brace, amplitude=8pt, mirror}]
(0,0) -- (3,0) node[midway, below=8pt] {$3\,cm$};
% Llave arriba
\draw[decorate, decoration={brace, amplitude=8pt}]
(0,0) -- (3,0) node[midway, above=8pt] {$3\,cm$};
Flechas
\draw[->] (0,0) -- (2,0); % Flecha al final
\draw[<-] (0,0) -- (2,0); % Flecha al inicio
\draw[<->] (0,0) -- (2,0); % Ambos extremos
\draw[-{Latex}] (0,0) -- (2,0); % Tipo Latex (arrows.meta)
11. Opciones de Estilo
Grosores
| Opción | Resultado |
ultra thin | Muy delgada |
thin | Delgada |
thick | Gruesa (uso común) |
very thick | Muy gruesa |
Tipos de línea
| Opción | Resultado |
dashed | Guiones largos |
dotted | Puntos |
dash dot | Punto y raya |
12. Baseline (Alternativas en Columnas)
\begin{tikzpicture}[baseline=(current bounding box.north), scale=0.5]
% La figura se alinea por su borde superior
\end{tikzpicture}
% Otras opciones:
[baseline=(current bounding box.center)] % Centro
[baseline=(current bounding box.south)] % Abajo
[baseline=0pt] % En el origen
13. Librerías Necesarias
\usepackage{tikz}
\usetikzlibrary{calc} % Operaciones coordenadas
\usetikzlibrary{patterns} % Patrones de relleno
\usetikzlibrary{decorations.pathreplacing} % Llaves, braces
\usetikzlibrary{arrows.meta} % Flechas mejoradas
\usetikzlibrary{intersections} % Intersecciones
\usetikzlibrary{positioning} % Posicionamiento relativo
14. Plantillas de Figuras
Triángulo equilátero
\coordinate (A) at (0,0);
\coordinate (B) at (3,0); % lado = 3
\coordinate (C) at (1.5,{1.5*sqrt(3)}); % altura = lado * sqrt(3)/2
\draw[thick] (A) -- (B) -- (C) -- cycle;
Hexágono regular
% Coordenadas polares, 60° entre vértices
\foreach \i in {0,1,2,3,4,5} {
\coordinate (V\i) at ({60*\i}:2);
}
\draw[thick] (V0) -- (V1) -- (V2) -- (V3) -- (V4) -- (V5) -- cycle;
Circunferencia con puntos
\def\r{2}
\draw[thick] (0,0) circle (\r);
\coordinate (A) at (0:\r); % Derecha
\coordinate (B) at (90:\r); % Arriba
\coordinate (C) at (180:\r); % Izquierda
\coordinate (D) at (270:\r); % Abajo
15. Foreach: Iteraciones
Múltiples variables
\foreach \x/\y/\name in {0/0/A, 3/0/B, 1.5/2.6/C} {
\coordinate (\name) at (\x,\y);
\node at (\x,\y) [below] {$\name$};
}
Polígonos regulares
\def\n{5} % Número de lados
\def\r{2} % Radio
\foreach \i in {1,...,\n} {
\coordinate (V\i) at ({90 + 360/\n*(\i-1)}:\r);
}
\draw[thick] (V1) \foreach \i in {2,...,\n} { -- (V\i) } -- cycle;
16. Let: Cálculos en Tiempo de Dibujo
Extraer coordenadas
\coordinate (P) at (3,4);
\draw let \p1 = (P) in
(0,0) -- (\x1,0) -- (\x1,\y1) -- cycle;
% \x1 = 3, \y1 = 4
Calcular distancia
\coordinate (A) at (0,0);
\coordinate (B) at (3,4);
\draw let
\p1 = ($(B) - (A)$),
\n1 = {veclen(\x1,\y1)} % Distancia = 5
in (A) -- (B) node[midway, above] {\pgfmathprintnumber{\n1}};
17. Estilos Personalizados
\begin{tikzpicture}[
eje/.style={->, thick},
funcion/.style={thick, blue, domain=-3:3, samples=100},
punto/.style={fill=black, circle, inner sep=1.5pt},
etiqueta/.style={font=\footnotesize}
]
\draw[eje] (-4,0) -- (4,0) node[right] {$x$};
\draw[funcion] plot (\x, {0.5*\x*\x});
\node[punto] at (2,2) {};
\end{tikzpicture}
18. Nodos Avanzados
Posicionamiento relativo
\node (A) at (0,0) {Inicio};
\node (B) [right=2cm of A] {Derecha};
\node (C) [below=1cm of A] {Abajo};
\node (D) [above right=1cm and 2cm of A] {Diagonal};
Anclas de nodos
\node (caja) [draw, minimum width=2cm] {Texto};
\draw (caja.north) -- ++(0,1);
\draw (caja.south east) -- ++(1,-1);
\draw (caja.west) -- ++(-1,0);
19. Debugging y Desarrollo
Grilla de referencia
% Agregar temporalmente para alinear
\draw[help lines, gray!30] (-1,-1) grid (5,5);
Marcar todos los puntos
\foreach \name in {A,B,C,D,E} {
\fill[red] (\name) circle (2pt);
\node[red, font=\tiny, above] at (\name) {\name};
}
Bounding box visible
\draw[red, dashed] (current bounding box.south west)
rectangle (current bounding box.north east);
20. Tips y Trucos
Evitar círculos en vértices
❌ Mal
\node[circle, fill] at (A) {};
✅ Bien
\node[below left] at (A) {$A$};
Escala proporcional
[scale=0.8] % Escala uniforme
[xscale=1.2, yscale=0.8] % Escala diferenciada