Tikz para Impacientes Traduccion - Español [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Tik Z

pour l'impatient Para el impaciente G´erard Tisseau et Jacques Duma

in ss De

X LATE

er

ceva

ve c a t Fa i ik Z T t Xe TE A L

Tikz para el impaciente Gérard Tisseau

Jacques Duma

11 de febreo 2017

Índice general

1. Primeras figuras 1.1.

17

Utilización de TikZ en LATEX . . . . . . . . . . . . . . . . . . . . . 17 1.1.1. TikZ es un paquete (package) :\usepackage{tikz} . . . . . . 17 1.1.2.

Insertar una figura TikZ : \begin {tikzpicture} . . . . . . . 18

1.2. Identificación de puntos . . . . . . . . . . . . . . . . . . . . . . . . 19 1.2.1.

Coordenadas cartesianas: (x, y) . . . . . . . . . . . . . . . . 19

1.2.2. Coordenadas polares :(a : r) . . . . . . . . . . . . . . . . . . 20 1.2.3. Escalas : [scale=k] . . . . . . . . . . . . . . . . . . . . . . . 21 1.3.

Ejemplo: Dibujar un segmento o un círculo . . . . . . . . . . . . . 22 1.3.1.

Sentencia: dos segmentos, un círculo . . . . . . . . . . . . . 22

1.3.2.

Solución a mano . . . . . . . . . . . . . . . . . . . . . . . . 22

1.3.3.

Solución TikZ : (a,b) - - (c,d) y (a,b) circle (r) . . 22

1.3.4. Escribir textos: (x,y) node [position] texto . . . . . . . 23 1.3.5. Arco de circunferencia: (x,y) arc (a:b:r) . . . . . . . . . 24 1.3.6.

Anotaciones: ángulo recto, segmentos iguales . . . . . . . . 26

1.4. Figuras geométricas: Conceptos básicos . . . . . . . . . . . . . . . . 27 3

4

ÍNDICE GENERAL

1.4.1.

Problema principal: calcular las coordenadas . . . . . . . . 28

1.4.2. Triángulo de lados 3, 4 y 5. . . . . . . . . . . . . . . . . . . 28 1.4.3. Preparar una figura con GeoGebra . . . . . . . . . . . . . . 29 1.4.4. Generar código de TikZ por GeoGebra . . . . . . . . . . . . 30 1.5. Ejercicios: figuras geométricas . . . . . . . . . . . . . . . . . . . . . 31 1.5.1. Teorema de Tales . . . . . . . . . . . . . . . . . . . . . . . . 31 1.5.2. Paralelogramo . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.5.3. El rombo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.5.4. Puntos notables de un Triangulo

. . . . . . . . . . . . . . . 32

1.6. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2. Caminos y opciones gráficas

35

2.1. Simplificaciones, accesos directos y abstracciones . . . . . . . . . . . 35 2.1.1. Nomenclatura de puntos: \coordinate(nom) at (x,y) . . . . . 36 2.1.2. Vinculación de rasgos: trayectoria, posición actual . . . . . . 36 2.1.3. Rectángulos: (a,b) rectangle (c,d) . . . . . . . . . . . . . . . 38 2.1.4.

Líneas cerradas: cycle, fill (cierre, relleno) . . . . . . . . . . 38

2.1.5. Características de los nodos: midway, sloped (a mitad camino, con pendiente ) . . . . . . . . . . . . . . . . . . . . . . 39 2.1.6. 2.2.

Coordenadas relativas: ++ (x, y) . . . . . . . . . . . . . . . 41

Decoraciones: estilos, opciones Gráficas. . . . . . . . . . . . . . . . 42 2.2.1. Opciones: [ ] . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

ÍNDICE GENERAL

5

2.2.2. Grosor de línea: thick, thin, line width=5pt (grueso, delgado, ancho de línea) . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.2.3. Estilos de línea: dotted, dashed, double ( punteada, discontinua, doble) . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.2.4. Puntas de flecha : ->, >=saltear

. . . . . . . . . . . . . . . 44

2.2.5. Colores: red, color = gray!20 . . . . . . . . . . . . . . . . . . 44 2.3. Ejes, rejilla y ventana de visualización

. . . . . . . . . . . . . . . . 45

2.3.1. Ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.3.2. Líneas de cuadrícula: : grid . . . . . . . . . . . . . . . . . . . 46 2.3.3. Ventana de visualización: clip . . . . . . . . . . . . . . . . . 47 2.4.

Complementos: opacidad, colores, estilos. . . . . . . . . . . . . . . 48 2.4.1. Trama y transparencia: opacity . . . . . . . . . . . . . . . . 48 2.4.2. Nombres y cálculos de colores, paquete xcolor . . . . . . . . 49 2.4.3. Definición de estilos : \tikzstyle, \tikzset . . . . . . . . 50

2.5.

Ejercicios: estilos de líneas, flechas, colores. . . . . . . . . . . . . . 51 2.5.1. Suma de dos vectores . . . . . . . . . . . . . . . . . . . . . . 51 2.5.2. Triángulo rectángulo inscrito en una semicircunferencia. . . . 52 2.5.3. Ángulo inscrito y ángulo central . . . . . . . . . . . . . . . . 52 2.5.4. Áreas iguales entre líneas paralelas. . . . . . . . . . . . . . . 53 2.5.5. Composición de dos simetrías centrales . . . . . . . . . . . . 53 2.5.6. Suite Geométrica . . . . . . . . . . . . . . . . . . . . . . . . 53

3. Curvas

55

6

ÍNDICE GENERAL

3.1. Dibujar una curva: plot (...) . . . . . . . . . . . . . . . . . . . . . . 55 3.1.1. Dominio : [domain=a:b] . . . . . . . . . . . . . . . . . . . . 57 3.1.2. Fórmulas matemáticas disponibles . . . . . . . . . . . . . . . 58 3.2. Aspecto de la gráfica. . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.2.1. Número de puntos: samples . . . . . . . . . . . . . . . . . . 60 3.2.2. Suavizado: smooth, tension

. . . . . . . . . . . . . . . . . . 60

3.2.3. Discontinuidades: Separar los intervalos. . . . . . . . . . . . 61 3.2.4. Valores muy altos: scale, \clip . . . . . . . . . . . . . . . . . 62 3.3. Regiones limitadas por curvas . . . . . . . . . . . . . . . . . . . . . 63 3.3.1. Una curva y dos segmentos: cycle, \fill, \filldraw . . 63 3.3.2. Regiones entre dos curvas . . . . . . . . . . . . . . . . . . . 65 3.3.3. Región no convexa: interior rules . . . . . . . . . . . . . 65 3.4. Suplementos técnicos . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.4.1. Utilización de Gnuplot : plot function . . . . . . . . . . . 66 3.4.2. Automatización de determinadas configuraciones. . . . . . . 67 3.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.5.1.

Elipse. Ángulos con circle y \clip

3.5.2. y = 3.5.3.

. . . . . . . . . . . . 68

ln x . xscale, yscale . . . . . . . . . . . . . . . . . . . 69 x

Funciones periódicas: \foreach . . . . . . . . . . . . . . . . 69

3.5.4. Funciones recíprocas, áreas: pattern . . . . . . . . . . . . . 70 3.5.5.

Lemniscata de Gerono.\scope, xshift, \filldraw . . . . 72

ÍNDICE GENERAL

7

3.6. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4. Geometría en el espacio

75

4.1. Coordenadas (x, y, z) . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.1.1. Otras representaciones = y= z= . . . . . . . . . . . . . . . . 76 4.2. Algunas figuras de la geometría. . . . . . . . . . . . . . . . . . . . . 77 4.2.1. Sección hexagoanl de un cubo. . . . . . . . . . . . . . . . . . 77 4.2.2. Diagonal de un cubo . . . . . . . . . . . . . . . . . . . . . . 77 4.2.3. Rectas y planos . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.3. Curvas y superficies . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.3.1. Representación paramemétrica: plot y foreach . . . . . . . . 79 4.3.2. Hélice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.3.3. Cilindro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.3.4. Esfera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.3.5. Paraboloide . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

5. Representación de datos

83

5.1. Nociones básicas: plot coordinates . . . . . . . . . . . . . . . . . . . 83 5.1.1. Diagrama de líneas . . . . . . . . . . . . . . . . . . . . . . . 83 5.1.2. Mejorando la legibilidad: grid, node, \foreach . . . . . . . . 85 5.1.3. Marcar puntos, etiquetas: mark, node, rotate . . . . . . . . . 85

8

ÍNDICE GENERAL

5.1.4. Diagrama de barras: xcomb, ycomb, polar comb . . . . . . . 86 5.1.5. Histograma : xcomb, ycomb, line width . . . . . . . . . . . . 87 5.1.6. Tomar datos de un archivo: plot file . . . . . . . . . . . . . . 88 5.2.

Diagrama de barras horizontales . . . . . . . . . . . . . . . . . . . 89 5.2.1.

Trigo en el mundo: usando tablas. . . . . . . . . . . . . . . 89

5.2.2. Barras horizontales . . . . . . . . . . . . . . . . . . . . . . . 90 5.2.3.

Instalación de una rejilla : grid, xstep, ystep . . . . . . . . . 91

5.2.4. Etiquetado la figura: \foreach, node . . . . . . . . . . . . . . 92 5.2.5. Dos series para una leyenda : plot, shift, node . . . . . . . . 93 5.3. Curva de variación. . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.3.1. Producción anual de arroz: pre-tratamiento. . . . . . . . . . 94 5.3.2. Curva de variación: plot file . . . . . . . . . . . . . . . . . . 96 5.3.3. Cuadricula: grid, step . . . . . . . . . . . . . . . . . . . . . . 96 5.3.4. Anotaciones y decoraciones: \foreach, node, mark . . . . . . 98 5.4. Diagrama de sectores . . . . . . . . . . . . . . . . . . . . . . . . . . 99 5.4.1. Categorías socio-profesionales . . . . . . . . . . . . . . . . . 99 5.4.2. Cálculo de ángulos: pre-tratamiento con una hoja de cálculo. 99 5.4.3. Dibujar los sectores: \draw, arc, cycle, fill, $ . . . . . 100 5.4.4. Diagrama completo : \foreach . . . . . . . . . . . . . . . . . 102 5.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6. Grafos: Introducción

105

9

ÍNDICE GENERAL

6.1. Nociones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.1.1. Nodos y Arcos: . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.1.2. Ruta anotada: \draw con nodo . . . . . . . . . . . . . . . . 107 6.1.3. Grafo: \node a continuación \draw con el nombre del nodo . 107 6.2. Estilos de nodos y arcos. . . . . . . . . . . . . . . . . . . . . . . . . 107 6.2.1.

Los arcos : \draw, –, |-, -|, y las opciones de las flechas 107

6.2.2. Extremos de los arcos: . . . . . . . . . . . . . . . . . . . . . 109 6.2.3. Límites del nodo: circle, ellipse, diamond . . . . . . . . . . . 110 6.2.4. Abstraccion de estilos . . . . . . . . . . . . . . . . . . . . . . 110 6.2.5. Puntos de anclaje del nodo: : N.south, N.left, N.below 112 6.2.6. Flechas a los anclajes. N.north, N.center, N.15 . . . . . . . . 114 6.3. Técnicas avanzadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 6.3.1. Dibuja un arco sin avanzar en las operaciones del camino:

. 114

6.3.2. Etiquetas en los arcos: sloped, midway, pos . . . . . . . . . . 115 6.3.3. Inclinación de las etiquetas : sloped, rotate . . . . . . . . . . 116 6.3.4. Cambiando el tamaño de las anotaciones: scale . . . . . . . . 116 6.3.5. Insertar una figura secundaria, subfiguras: scope, shift, rotate, scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.3.6. Textos largos : text width, justified, centered . . . . . . . . . 119 6.3.7. Sin pasar por un nodo. . . . . . . . . . . . . . . . . . . . . . 120 6.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6.4.1. Vocal o Consonante . . . . . . . . . . . . . . . . . . . . . . . 121

10

ÍNDICE GENERAL

6.4.2. Los puntos cardinales . . . . . . . . . . . . . . . . . . . . . . 122 6.4.3. Pentagono . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 6.4.4. Benceno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 6.4.5. Árbol genealógico . . . . . . . . . . . . . . . . . . . . . . . . 125 6.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

7. Grafos : Ejemplos

127

7.1. Grafica de una relacion. . . . . . . . . . . . . . . . . . . . . . . . . 127 7.1.1. Relaciones entre cuadriláteros. . . . . . . . . . . . . . . . . . 127 7.1.2. Gráfico final: curvatura bend, Anclaje P.east . . . . . . . . . 130 7.2. Organigrama. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 7.2.1. Suma de los n primeros números naturales . . . . . . . . . . 131 7.2.2.

Estilo de los nodos : draw, ellipse, fill, text . . . . . . . . . . 131

7.2.3.

Forma de las flechas . . . . . . . . . . . . . . . . . . . . . . 132

7.3. Diagramas sintácticos . . . . . . . . . . . . . . . . . . . . . . . . . . 135 7.3.1. Gramática de expresiones matemáticas . . . . . . . . . . . . 135 7.3.2. Alineación de nodos, etiquetado. . . . . . . . . . . . . . . . . 135 7.3.3.

Agrupación de figuras : scope, yshift . . . . . . . . . . . . . 137

7.4. Grafico de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1. Resolución de una ecuación . . . . . . . . . . . . . . . . . . 139 7.4.2. Ubicación del nodo: \ node (a) at (x, y), below . . . . . . . 140 7.4.3. Colocación y etiquetado de las flechas. . . . . . . . . . . . . 141

11

ÍNDICE GENERAL

7.4.4. Flechas curvas . . . . . . . . . . . . . . . . . . . . . . . . . . 142 7.4.5. Ejercicio de mejora . . . . . . . . . . . . . . . . . . . . . . . 144 7.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

8. Figuras e ilusraciones

147

8.1. Los aros Olímpicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 8.1.1. Un anillo : circle, fill, even odd rule . . . . . . . . . . . . . . 148 8.1.2. Entrelazar los anillos . . . . . . . . . . . . . . . . . . . . . . 149 8.1.3. La figura completa:\newcomand

. . . . . . . . . . . . . . . 151

8.2. Diagramas de Venn . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 8.2.1. Conjuntos E, A, B : rectangle, circle, \newcommand . . . . . 152 8.2.2. Colores: \fill, color, opacity . . . . . . . . . . . . . . . . . . 154 8.2.3. Método de superposición de color . . . . . . . . . . . . . . . 154 8.2.4. Método de coloración entre los bordes . . . . . . . . . . . . . 157 8.3. Personajes y decoraciones. . . . . . . . . . . . . . . . . . . . . . . . 160 8.3.1.

El océano : \shade, arc, top color, bottom color . . . . . . . 161

8.3.2. El muelle : \fill, rectangle, rotate . . . . . . . . . . . . . . . 162 8.3.3. El corazón: \draw, .. controls and ..

. . . . . . . . . . . . . 163

8.3.4. Corazone multicolores: \shift, rotate, ball color . . . . . . . . 165 8.3.5. El dibujo completo: scope, shift, rotate . . . . . . . . . . . . 166 8.3.6. La solución: scope, shift, rotate . . . . . . . . . . . . . . . . 166 8.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

12

ÍNDICE GENERAL

9. Complementos técniocos

169

9.1. Trasformaciones con scope . . . . . . . . . . . . . . . . . . . . . . . 169 9.1.1. Translaciones : xshift, yshift o shift . . . . . . . . . . . . . . 170 9.1.2. Combinación de traslación y rotación: [xshift=6cm,rotate=45]171 9.1.3. Translación y cambio de escala: [xshift=6cm,scale=0.5] . . . 172 9.1.4. Grosor de las lineas: \draw y line width . . . . . . . . . . . . 174 9.1.5. Tamaño del texto e inclinación: transform shape . . . . . . . 176 9.1.6. Ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 9.2. Acerca de los arboles . . . . . . . . . . . . . . . . . . . . . . . . . . 178 9.2.1.

Definición on : \node node y child . . . . . . . . . . . . . . 179

9.2.2. Distancia entre hermanos: sibling distance . . . . . . . . . . 180 9.2.3. Forma general: level distance y grow . . . . . . . . . . . . . 181 9.2.4. Etiquetado de los arcos: edge from parent . . . . . . . . . . 182 9.2.5. Estilos de los arcos: edge from parent path . . . . . . . . . . 183 9.3. Enlaces entre figuras: overlay . . . . . . . . . . . . . . . . . . . . . . 184 9.3.1.

Definiciones globales de nombres: remember picture ( recordar imagen) . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

9.3.2. De de una figura a otra: overlay . . . . . . . . . . . . . . . . 185 9.4. La página actual es un nodo: current page . . . . . . . . . . . . . . 186 9.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

A. La sintaxis de TikZ

189

ÍNDICE GENERAL

13

A.1. Entornos: {tikzpicture}, {scope} . . . . . . . . . . . . . . . . . . . . 189 A.2. Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 A.3. Las coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 A.3.1. Forma general: (...) . . . . . . . . . . . . . . . . . . . . . . . 191 A.3.2. Cálculos numéricos: paquete pgfmath . . . . . . . . . . . . . 191 A.4. OPERACIONES DE RUTA . . . . . . . . . . . . . . . . . . . . . . 191 A.4.1. Cálculos de coordenadas: biblioteca cal . . . . . . . . . . . . 191 A.5. Operaciones con las rutas . . . . . . . . . . . . . . . . . . . . . . . 192 A.6. Las opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 A.6.1. Opciones explícitas: [...] . . . . . . . . . . . . . . . . . . . . 194 A.7. Usando comandos LATEXen TikZ . . . . . . . . . . . . . . . . . . . . 196

B. Error !Que hacer?

199

C. ¿Dónde encontrar ayuda?

201

Prefacio Tiene documentos para publicar con figuras. Ha elegido LATEX por su alta calidad tipográfica, apertura y portabilidad. Ahora le gustaría incluir figuras e ilustraciones en sus documentos, pero sin tener que abandonar el entorno LATEX para producir directamente documentos en formato PDF, que es el formato estándar para el intercambio y la publicación.

Intentó incluir figuras, sin mucho éxito. Las diferentes soluciones que probó no le parecieron satisfactorias. Ha preparado un dibujo en un software externo, luego ha usado el comando \includegraphics, pero no le pareció conveniente manipular archivos externos e intenta adaptar el estilo y el formato a su documento. Intentó usar pstricks, pero lo encontró un poco complejo, a pesar que pstricks y TikZ ofrecen prácticamente las mismas herramientas.

Recomendamos utilizar TikZ. TikZ es un paquete para LATEX que le permite incluir figuras en PDF mientras permanece en el entorno LATEX. Fue creado alrededor de 2006 por Till Tantau. Rápidamente se vuelve popular porque satisface las necesidades anteriores al evitar las desventajas de otras soluciones. La fase de aprendizaje inicial es rápida y las figuras simples se pueden obtener de manera simple Creemos que el lenguaje ha sido diseñado para satisfacer las necesidades diarias de una manera práctica. Continúa evolucionando, y las extensiones actuales permiten crear ilustraciones muy variadas.

Mira en el libro la tabla de contenidos. La tabla de contenido es un tipo de ayuda de memoria integrada. Siempre que sea posible, un título es la descripción de una tarea o problema seguido de las palabras clave TikZ que permiten realizar esa tarea o resolver ese problema de manera estándar. Por ejemplo: Escala: [scala = k], arcos, pendiente, a mitad de camino, pos, etc. De un vistazo, deberíamos poder encontrar información útil y situarla en el contexto. 15

16

ÍNDICE GENERAL

El sitio compañero Un sitio web, creado por los autores, acompaña este libro. Contendrá el código de todos los ejemplos presentados aquí, además de algunas adiciones. Desde el sitio, también es posible contactar a los autores: Todas las preguntas, críticas y sugerencias son bienvenidas. http://math.et.info.free.fr/TikZ/index.html La versión en papel de este documento es en blanco y negro, solo la versión en PDF disponible en este sitio es en color.

Capítulo 1 Primeras figuras

1.1.

Utilización de TikZ en LATEX

1.1.1.

TikZ es un paquete (package) :\usepackage{tikz}

Como TikZ es un paquete para LATEX, se usa como cualquier otro paquete, declarando \usepackage{tikz} en el preámbulo. Para saber la versión de TikZ utilizada, se usa el comando \pgfversion (PGF es el nombre del "motor" de TikZ). Este documento se escribió el 11 de febrero de 2017 con la versión 3.0.1a de TikZ, pero la primera versión fue escrita en febrero de 2008 con la versión 2.00. Si no tiene TikZ o si tiene una versión anterior a la versión 2.00, lo más simple es, instalar completamente la última versión de la distribución TEX. (TikZ está en las principales.) En este caso será necesario consultar la documentación del autor si aparecen algunas diferencias en la composición de los ejemplos.

Última versión de “TikZ & PGF Manual”

Por lo tanto, lo mínimo para utiliza TikZ en un documento es:

\documentclass{article} \usepackage{tikz} \begin{document} La version de TikZ es : \pgfversion \end{document} 17

18

1.1.

UTILIZACIÓN DE TIKZ EN LATEX

Los estándares son TeXLive para sistemas Unix (incluyendo MacOS X, donde está presente en MacTeX) y MiKTeX para sistemas Windows. Estas distribuciones de TEX suelen ser actualizadas (aproximadamente una vez al año). La versión 2 de TikZ está incluida en la distribución 2008 de TeXLive versión 10.2. Para Windows: http://miktex.org Para Mac: http://www.tug.org/mactex/ Para Unix, Linux: http://www.tug.org/texlive/ Eventualmente, puede obtener el paquete pgf directamente, pero se necesita el archivo y una cierta experiencia para instalarlo correctamente. Sin embargo, en MikTeX es accesible desde un menú, y hay un comando tlmgr bajo Unix (TeX Live manager). Paquete pgf :http://sourceforge.net/projects/pgf/ o http://www.ctan.org/tex-archive/graphics/pgf/ Como en cualquier su uso puede traer conflictos con otros paquetes. Lo más notable para TikZ es el conflicto con xcolor, porque TikZ redefine algunas de las funciones de xcolor. Sin embargo, los dos paquetes pueden seguir siendo compatibles si declaramos xcolor antes del Tikz.

1.1.2.

Insertar una figura TikZ : \begin {tikzpicture}

La forma básica para insertar una figura en LATEXes mediante un entorno tikzpicture:

\begin{tikzpicture} ... \end{tikzpicture}

Dentro de este entorno hay un cuadro de texto en el que escribimos de acuerdo con la sintaxis especial de TikZ. Aquí se muestra, por ejemplo, cómo dibujar un círculo de radio 1 cuyo centro tiene coordenadas cartesianas (0, 0):

\begin{tikzpicture} \draw (0,0) circle (1) ; \end{tikzpicture}

1.2. IDENTIFICACIÓN DE PUNTOS

19

La sintaxis \draw (0, 0) circle (1); es analizada por TikZ según sus propias convenciones, que no son las de LATEX y que detallaremos más adelante. ¿Cómo se coloca una figura TikZ en el documento final? TikZ primero calcula el total de la figura y asegura que LATEX considere la figura como un bloque rectangular. LATEX entonces inserta este bloque en el flujo normal, de acuerdo con las reglas aplicables a bloques tipo mbox. En el siguiente ejemplo, una figura de TikZ fue insertada en el texto y enmarcada con \fbox \fbox:{ hay una primera línea.... \begin{tikzpicture} ... \end{tikzpicture} } Aquí hay una primera línea de texto LATEX, para mostrar la inserción de una figura.

es insertada en una línea LATEX y enmarcada con fbox. La figura La figura se considera como un rectángulo y se alinea con la línea de base. La alineación y la colocación en la página se pueden gestionar con las herramientas habituales de LATEX. La mayoría de las veces, aislamos la figura en una línea y la centramos con: \begin{center}

1.2. 1.2.1.

... \end{center}

Identificación de puntos Coordenadas cartesianas: (x, y)

En el sistema por defecto, los puntos se marcan mediante dos ejes perpendiculares: el eje de abscisas, horizontal y orientado a la derecha y el eje de ordenadas, vertical

20

1.2. IDENTIFICACIÓN DE PUNTOS

y orientado a la parte superior. Los vectores básicos tienen exactamente 1 cm de largo (y cuando se imprime, es exactamente 1 cm). La posición de un punto está marcada por un par de números (x, y)

(x, y) 1 O

1

Uno puede preguntarse dónde se coloca el origen en la figura generada. De hecho, ella no tiene un posición predefinida. La figura ocupa sólo el espacio mínimo para que todos los elementos dibujados sean visibles de forma explícita. Por lo tanto, la posición del origen depende de los puntos trazados. Si solamente dibujamos un círculo de centro (2, 0) y radio 1, el origen no estará en el marco de la figura, que sólo mostrará el eje x entre 1 y 3 y el eje y entre -1 y 1. TikZ tiene otros sistemas de rastreo que veremos a medida que avanzamos. Mencionemos inmediatamente las coordenadas polares (a : r) donde a es el ángulo o argumento en grados y r es el módulo.

1.2.2.

Coordenadas polares :(a : r)

La posición de un punto M se puede situar en un sistema de coordenadas polares con la sintaxis (θ : r), donde θ es el ángulo orientado (en grados) entre el vector y el eje de abscisa, y r es la distancia OM .

• 1

r

O

θ 1

(θ : r) M

Las fórmulas para cambiar de un sistema a otro son:

21

1.2. IDENTIFICACIÓN DE PUNTOS

x y y sen (θ) = r r x = r · cos (θ) y y = r · sen (θ) r=

»

x2 + y 2 , cos (θ) =

Por ejemplo, el punto de coordenadas cartesianas (2, 2) tiene como coordenadas aproximadamente (45 : 2, 82), donde 2,82 es el valor aproximado de √ polares √ 2 8 = 2 + 22

2 1



• (45 : 2, 82) 8

45o

O

1

2

En la versión básica, las coordenadas deben especificarse de forma numérica. Sin embargo, una extensión de TikZ permite introducir algunos cálculos formales. Veremos esto más adelante, pero por el momento sólo usaremos valores numéricos.

1.2.3.

Escalas : [scale=k]

Puede ocurrir que la figura, tal como se define con las coordenadas, sea demasiado pequeña o demasiado grande. Podemos utilizar entonces la opción escala [scale=k], que se escribirá justo después de \begin{tikzpicture} y significa que todas las dimensiones se multiplicarán por k. Para tener una figura el doble de grande, escribiremos :

\begin{tikzpicture}[scale=2]..... \end{tikzpicture}

El punto de coordenadas (1, 0) se dibujará a 2 cm del origen en lugar de 1 cm.

22

1.3.

EJEMPLO: DIBUJAR UN SEGMENTO O UN CÍRCULO

1.3.

Ejemplo: Dibujar un segmento o un círculo

1.3.1.

Sentencia: dos segmentos, un círculo

En un sistema ortonormal con unidad igual a 1 cm, se pide dibujar los dos segmentos que conectan el origen a los puntos de coordenadas (1, 0) y (0, 1), así como la circunferencia trigonométrica.

1.3.2.

Solución a mano

Para ello, se procede separando los tres elementos de la figura:

1. Primer segmento (horizontal) a) Colocar el lápiz sobre el origen. b) Bajar el lápiz y dibujar el segmento hasta el punto de coordenadas (1, 0). 2. Segundo segmento (vertical) a) Levante el lápiz, colóquelo sobre el origen. b) Bajar el lápiz y dibujar el segmento hasta el punto de coordenadas (0, 1). 3. Circunferencia: a) Tomar un compás, pinchar su punta en el origen b) Establecer un radio de 1 cm, y dibujar la circunferencia.

1.3.3.

Solución TikZ : (a,b) - - (c,d) y (a,b) circle (r)

Esta construcción se traduce en TikZ como sigue: \begin{tikzpicture} \draw (0,0)--(1,0);

1.3.

EJEMPLO: DIBUJAR UN SEGMENTO O UN CÍRCULO

23

\draw (0,0)--(0,1); \draw (0,0) circle (1) ; \end{tikzpicture} Las lineas anteriores contienen todos los elementos de la solución. Toda la figura está delimitada por un entorno en el sentido de LATEX:

\begin{tikzpicture} ... \end{tikzpicture} Dentro de este entorno, TikZ introduce su propia sintaxis, que ya no es la de LATEX (esto puede ser confuso al principio). Cada una de las subfiguras (segmentos, círculo) está delimitada por \draw... es decir dibujar ; posición:(x, y) dibujar un segmento: − − (x, y) dibujar un círculo: circle (r) Hay muchos otros elementos sintácticos en TikZ, los iremos viendo a medida que avancemos.

1.3.4.

Escribir textos: (x,y) node [position] texto

Para que la figura sea más significativa, ahora queremos escribir los nombres de los puntos junto a ellos es decir A para (1, 0) y B para (0, 1) también queremos escribir O en el origen.

B

O

A

Para ello, deberemos realizar las siguientes acciones: Escriba la letra O debajo del origen Escriba la letra A a la derecha del punto (1,0) Escriba la letra B encima el punto (0,1) Estas tres instrucciones están escritas en TikZ como sigue: \draw (0,0) node [below]{$O$}; \draw (1,0) node [right]{$A$}; \draw (0,1) node [above]{$B$};

Siempre encontramos la operación de posicionamiento: en este caso (0,0) para posicionarse en el origen, etc. Luego viene node, palabra clave,se refiere a un concepto de TikZ Esto básicamente se refiere a un cuadro de texto, a continuación, es necesario especificar dónde posicionaremos el rectángulo, respecto la posición especificada, que contiene el texto, lo indicamos entre corchetes (abajo, arriba derecha ...) no es necesario dar una posición muy precisa, TikZ hace elecciones razonables. Y luego damos el texto a mostrar, entre llaves, y en estas llaves escribimos una expresión LATEX|, o ninguna. Este es uno de los puntos fuertes de TikZ ser capaz

24

1.3.

EJEMPLO: DIBUJAR UN SEGMENTO O UN CÍRCULO

de anotar en una figura textos escritos en LATEX. Estas instrucciones se añaden a la figura anterior, que se convierte en: \begin{tikzpicture} \draw (0,0)--(0,1); \draw (0,0)--(1,0); \draw (0,0) circle (1); \draw (0,0) node[below]{$O$} ; \draw (1,0) node[right]{$A$} ; \draw (0,1) node[above]{$B$} ; \end{tikzpicture} Puede que no especifiquemos una posición. El centro del texto se coloca entonces en el punto de referencia. Por ejemplo, para colocar la letra O precisamente en el origen, se puede escribir: \draw (0,0) node{$O$}; Las posiciones posibles son (con el significado de las palabras en inglés): above, below, right, left, above left, above right, below left, below right Que podemos traducir por: arriba, abajo, a la derecha, a la izquierda arriba a la izquierda, arriba a la derecha, abajo a la izquierda, abajo a la izquierda, abajo a la derecha. A veces estas indicaciones cualitativas no son lo suficientemente precisas. Lo más simple entonces es colocar el centro del nodo explícitamente en otro punto cercano al punto principal, comprobando exactamente las coordenadas. Hay otros métodos, pero introducen nuevos conceptos que expondremos más tarde.

O•

O

(0,0) node[below left] {$O$}}

1.3.5.



(-0.6,-0.3) node {$O$}}

Arco de circunferencia: (x,y) arc (a:b:r)

¿Cómo dibujar sólo el primer cuadrante de A a B?

B

O

A

Para especificar matemáticamente un arco de una circunferencia, podemos dar el −→ centro del círculo, el ángulo que forma el vector OA con el eje de abscisas y el

1.3.

EJEMPLO: DIBUJAR UN SEGMENTO O UN CÍRCULO

25

−−→ ángulo que forma el vector OB con el eje de abscisas. Ejemplo: queremos rotar el punto (7,2) en una circunferencia de centro (6,3) 60 grados.

1. Hacemos una translación para que el origen quede en el centro de la circunferencia: (7, 2) −→ (7 − 6, 2 − 3) = (1, −1) 2. Escribimos este punto en forma polar (1, −1) = (−45 : 1.4142) 3. El ángulo final es −45 + 60 = 15

\begin{tikzpicture} \draw (7,2) arc (-45:15:1.4142); \end{tikzpicture} Por ejemplo, aquí podríamos decir: dibujar el arco de circunferencia de centro (0, 0) y radio 1 el origen tiene un ángulo de 0o y el extremo tiene un ángulo polar de 90o . Desafortunadamente, TikZ no se expresa así . Tienes que decir algo como: dibuja el arco del círculo que comienza en A, de modo que A está en este círculo con un ángulo polar de 0o , hasta el punto cuyo angular polar de 90o en el mismo círculo y que el radio del círculo es 1. \draw (1,0) arc (0:90:1) ;

Por supuesto, esta información es suficiente para encontrar el centro y reconstruir la figura, pero probablemente no es la convención más natural posible. La ventaja que podemos encontrar para él es que no tenemos que especificar el centro. Pero, ¿hay casos en los que se dibuja un arco de círculo sin tener idea del centro? Una aplicación frecuente de esta construcción es marcar un ángulo en una figura. Sea el triángulo OAB con O(0, 0), A(2, 0), B(2, 2). Se pide dibujar el ángulo O en el dibujo.

B

O

A

\begin{tikzpicture} \draw (0,0)--(2,0); \draw (0,0)--(2,2); \draw (0,0) node [left] { $O$}; \draw (2,0) node [right] { $A$}; \draw (2,2) node [above] { $B$}; \draw (1,0) arc (0:45:1); \end{tikzpicture}

Ahora podemos usar el concepto de nodo para escribir el valor del ángulo junto a él. Es necesario colocar el cuadro de texto en el lugar correcto, cerca del arco. Aquí podemos usar las coordenadas polares, ya que el ángulo es conocido: 45o .

26

1.3.

EJEMPLO: DIBUJAR UN SEGMENTO O UN CÍRCULO

El nodo se coloca en la dirección del ángulo medio: 22, 5o , a una distancia ligeramente superior al radio del arco: por ejemplo 1,3.

\draw (22:1.3) node {$\dfrac{\pi}{4}$};

B

π 4

O

1.3.6.

A

Anotaciones: ángulo recto, segmentos iguales

Ahora vamos a marcar el triángulo con los signos usuales que indican que es un triángulo isósceles rectángulo. El ángulo recto está marcado con dos pequeños segmentos perpendiculares, la igualdad de los lados con dos pequeños segmentos que cortan los lados. Aunque estos signos se pueden hacer con las herramientas que se han visto hasta ahora, se requiere calcular las coordenadas de sus extremos. Esto puede parecer inusual, ya que este tipo de signos a menudo se rastrean sin mucha atención. y sin tener que resolver nuevos problemas geométricos. Aquí las líneas de la marca del ángulo recto son horizontales y verticales, por lo que no es difícil para imaginar coordenadas (su longitud exacta resulta de una elección arbitraria, digamos 0.3). Así pues, los nuevos puntos que deben introducirse son (1.7, 0), (1.7, 0.3) y (1.7, 0.3), (2, 0.3)

\draw(1.7,0)--(1.7,0.3); \draw (1.7,0.3)--(2, 0.3);

Las marcas de segmentos iguales también se dibujan horizontal y verticalmente, por ejemplo de longitud 0,2. Así pues, los nuevos puntos que deben introducirse son (1.9, 1), (2.1, 1) y (1, 0.1), (1, 0.1).

.... \draw (1.9,1)--(2.1,1); \draw (1,-0.1)--(1,0.1);

27

1.4. FIGURAS GEOMÉTRICAS: CONCEPTOS BÁSICOS

También podemos poner puntos más grandes en los vértices para ello podemos utilizar un personaje de LATEX: • Basta con introducir un nodo, centrado en el punto (basta con no dar ninguna opción de posición) y cuyo contenido es $\bullet$: • \draw (0,0) node {$\bullet$}; \draw (2,0) node {$\bullet$}; \draw (2,2) node {$\bullet$}; • • Esta idea se puede ampliar: un nodo de texto se puede rellenar con un símbolo LATEX, y un símbolo no es más que un dibujo después de todo. Escribir un símbolo es dibujar, y LATEX está bien provisto de símbolos. Podemos usar esta idea para dibujar las líneas que queramos: Indicando la igualdad de los lados: se pueden utilizar los símbolos $|$ (barra vertical |), — (guión -), $\ backslash $ (barra \), $/$ (barra /), $\times$ (multiplicación ).

\



$backslash$

| $|$

1.4.

\

×$ \times$

× $ \times$

Figuras geométricas: Conceptos básicos

Acabamos de ver los elementos básicos que conforman una figura geométrica como nosotros las vemos en la escuela y en secundaria, y cómo se traducen a TikZ:

para los segmentos : (a,b) - - (c,d) para las circunferencias: (a,b) circle (r) para los arcos de una circunferencia: (a,b) arc (u:v:r) para las anotaciones de texto: (a,b) nodo[posición] {texto}

Ahora veremos cómo podemos crear muchas figuras geométricas solamente utilizando estos elementos básicos. TikZ ofrece muchas otras posibilidades (su manual tiene 560 páginas), pero es esencial familiarizarse con lo básico para entender el valor de las extensiones y cuándo usarlas de una manera relevante. Y una vez más, lo básico puede ser suficiente para la mayoría de ocasiones.

28

1.4. FIGURAS GEOMÉTRICAS: CONCEPTOS BÁSICOS

Puede parecer sorprendente, pero después de todo si observas una figura geométrica común, aunque sea complicada, verás que está formada por estos elementos básicos. Las figuras habituales están hechas por: puntos, segmentos, triángulos, paralelogramos, polígonos, círculos, líneas paralelas y perpendicular, etc.

1.4.1.

Problema principal: calcular las coordenadas

Construir una figura con técnicas básicas sólo implica que se debe calcular primero por sus propios medios las coordenadas (cartesianas o polares) de todos los puntos. Esto no es lo que solemos hacer cuando dibujamos una figura a mano, tenemos herramientas a nuestra disposición, herramientas de dibujo (regla, brújula, transportador, papel cuadriculado) y de cálculo (calculadora, software matemático). La dificultad del cálculo depende del dibujo que tenga que construir y en ocasiones hacer la construcción puede implicar muchos cálculos. Pero a menudo, si su objetivo es ilustrar una propiedad geométrica, puede decidir colocar ciertos puntos de tal manera que los cálculos sean más fáciles. Aquí están algunas estrategias, que de hecho ya son bien conocidas para el dibujo a mano: Favorecer los puntos de coordenadas completas. favorecer las direcciones verticales y horizontales. favorecer las direcciones de los ángulos polares simples y conocidos, lo que permitirá un mayor uso de coordenadas polares. Empezar por el final: si quieres ilustrar el círculo circunscrito a un triángulo, empieza por colocar el círculo

1.4.2.

Triángulo de lados 3, 4 y 5.

Un ejemplo: dibujar un segmento horizontal [AB] de longitud 5, luego dibuje el triángulo ABC con BC = 4 y AC = 3. Las coordenadas se seleccionan para A: A(0, 0) y y para B: B(5, 0). Se deben calcular las coordenadas de C, para que AC = 3 y BC = 4, es decir, x2 + y 2 = 32 y (x − 5)2 + y 2 = 42 Resolvemos el sistema y obtenemos x = 1, 8 e y = 2, 4 A continuación, podemos escribir el código TikZ, podemos incluir comentarios de LATEX para dar más información. \begin{tikzpicture} \draw (0,0) -- (5,0); % AB = 5 \draw (0,0) -- (1.8,2.4); % AC = 3 \draw (5,0) -- (1.8,2.4); % BC = 4 \end{tikzpicture}

29

1.4. FIGURAS GEOMÉTRICAS: CONCEPTOS BÁSICOS

C Podemos añadir nodos de texto para mostrar los nombres de los puntos: \draw (0,0) node [below] {$A$}; etc. A Y finalmente, podemos indicar las longitudes de los lados. Para ello, se necesitan tres nodos de texto, situados en el centro de los segmentos, se calculan: Ç å Ç cuyas å coordenadas Ç å 5 17 6 9 6 ,0 , , y , 2 5 5 10 5 Así, por ejemplo, dibujar el nodo (3.4,1.2)[arriba a la derecha] ,etc.

Calculamos: −→ 1 1 −→ −−→ 1 1 −−→ CG = × CA, CH = × CB 2 3 2 4 Encontramos: G(1.5, 2), H(2.2, 2.1) e I(1.9, 1.7). En el dibujo dibujamos[GI] e [IH]: \draw (1.5,2) – (2.2,2.1); etc.

B

C 4

3

A

5

B

C 4

3

A

5

B

Todavía lleva algún tiempo diseñar todo esto, hacer los cálculos y hacer el dibujo de un simple triángulo. El camino más largo no es dibujar el triángulo, sino colocar las anotaciones correctamente (nombres de puntos, longitudes de lados, marca de ángulo recto). La realización de una figura más compleja puede llevar mucho tiempo y muchos cálculos. Una posibilidad es que sean realizados primero por otro software especializado en geometría y en matemáticas. Un ejemplo de este tipo de software es GeoGebra. Veremos cómo usarlo para preparar esta figura.

1.4.3.

Preparar una figura con GeoGebra

El sitio de GeoGebra está en http://www.geogebra.org/ GeoGebra permite construir una forma visual e interactiva figuras de la geometría clásica como trazar la perpendicular a una recta que pasa por de un punto, intersección de dos líneas, marcar el punto medio de un segmento, la imagen de un punto después de un giro, trazar la circunferencia que pasa por tres puntos, etc. También nombra a los puntos, dibuja rectas, circunferencias o cónicas con sus ecuaciones. Otra de sus ventajas es que se pueden mover algunos puntos de la figura sin tener

30

1.4. FIGURAS GEOMÉTRICAS: CONCEPTOS BÁSICOS

que redefinir. Por esta razón, dicen que es un software geometría dinámica ( otro excelente software bien conocido de este tipo es Cabri). Vamos a ver cómo llevar a cabo la figura anterior con GeoGebra: Dibujar el punto A(0, 0) el punto B(5, 0) la circunferencia con centro en A y radio 3, la circunferencia con centro en B y radio 4, y luego definir C como la intersección de las dos circunferencia anteriores (el punto de ordenada positiva). En la ventana algebraica se pueden leer las coordenadas de C(1.8, 2.4). No he tenido que hacer cálculos para ello. Del mismo modo se puede rastrear los puntos medios de los lados y leer sus coordenadas. Para marcar el ángulo recto, se puede construir G y H como las intersecciones de la circunferencia de centro C y el radio 0,5 con los segmentos [CA] y [CB] y a continuación, rotar el punto C 90o siendo H el centro de rotación.

C

• • E

A



• D



• •F

B

De esta forma podemos encontrar la información relevante para reconstruir la figura.

1.4.4.

Generar código de TikZ por GeoGebra

En lugar de leer las coordenadas y utilizarlas para escribir el código de TikZ, podemos dejar que GeoGebra lo haga por nosotros. Una vez hecha la figura podemos exportarla a un archivo PGF/TikZ, de esta forma obtenemos el código del documento LATEX que contiene una figura TikZ. Se puede incluir esta figura en un documento LATEX, copiando y pegando . Puede ser que no desee mantener todos los elementos de la figura (especialmente con respecto a las declaraciones de colores, rejilla, ejes ) lo mejor es ocultar primero en GeoGebra todo lo que no queremos ver. A continuación, se analiza con precisión el código producido por GeoGebra para crear un triángulo equilátero. Para dibujar un triángulo equilátero usamos el comando de GeoGebra "polígono regular", GeoGebra genera:

1.5. EJERCICIOS: FIGURAS GEOMÉTRICAS

31

\begin{tikzpicture} \draw [color=zzttqq] (-1.44,3.98)-- (-0.76,-0.58); \draw [color=zzttqq] (-0.76,-0.58)-- (2.85,2.29); \draw [color=zzttqq] (2.85,2.29)-- (-1.44,3.98); \end{tikzpicture} Pero podemos quitar las indicaciones de color. \begin{tikzpicture} \draw (-1.44,3.98)-- (-0.76,-0.58); \draw (-0.76,-0.58)-- (2.85,2.29); \draw (2.85,2.29)-- (-1.44,3.98); \end{tikzpicture}

1.5.

Ejercicios: figuras geométricas

Todas estas figuras pueden ser construidas con TikZ con de elementos básicos: segmentos, círculos, arcos, nodos. Para algunas figuras, las coordenadas se obtuvieron usando el software GeoGebra. Como elementos de la solución, damos las coordenadas usadas (se recomienda GeoGebra o papel milimetrado). Es sorprendente ver que incluso para las figuras clásicas y relativamente simples, el número de puntos a calcular puede ser alto (veinte puntos). Esto es debido en parte a los puntos auxiliares utilizados para las anotaciones.

1.5.1.

Teorema de Tales

Figura: dos rectas oblicuas cortadas por tres horizontales y paralelas.

Ayuda: Para rectas oblicuas ( 0,0) - - (1,3) y ( 4,0) - - (2,3) Para rectas paralelas ( 0,1) - - (4,1) ; (0,1.5) - - (4,1.5) y (0,2.5) - - (4,2.5)

32

1.5.2.

1.5. EJERCICIOS: FIGURAS GEOMÉTRICAS

Paralelogramo

Figura: Las diagonales de un paralelogramo. Ayuda: \ Centro: (0,0) $\bullet$ • || Diagonales: (-2,0)- - (2,0) y (1.1)- -(-1,-1) \ Marcas $||$ en (1,0) y (-1,0) Marcas $ \textbackslash $ en ( 0,5, 0,5) y ( -0.5, -0.5)

1.5.3.

||

El rombo

Figura: un rombo con sus elementos. Las diagonales de un rombo son perpendiculares. Ayuda : Rombo: (0,0), (2,0), (3,1.73), (1, 1.73) Diagonales: (0,0) -- (3,1.73) y (1,1.73) -- (2,0) Marcas: $/$ (2, 1.73), (1, 0) Marcas: -- (2.5, 0.87), (0.5,0.87) Ángulo recto : (1.38,1.07), (1.59,1,19), (1,7,0.99)

1.5.4.

/ –

– /

Puntos notables de un Triangulo

Figura: el baricentro, centro de gravedad triángulo es la intersección de las medianas.

El centro de gravedad de un

Se seleccionaron √ los puntos: √ ! ! å Ç 3 1 3 1 3 4 , ,B − ,− yC ,− A 5 5 2 2 2 2 Ayuda : Escala: 2. Triángulo: A(0.6, 0.8), B(−0.87, −0.5) y C(0.87, −0.5) Puntos medios: (0, −0.5), (0.74, 0.15) y (−0, 13, 0, 15) Centro de gravedad: G(0.2, −0.07) Marcas: $/$ (0.24, 0.47) y (−0, 5, −0.18) Marcas || (−0.44, 0.5) y (0.44, −0.5)

A \ \ B

||

• G ||

Figura: el circuncentro, triangulo inscrito en una circunferencia. El circuncentro es el punto de corte de las tres mediatrices Las mediatrices de un triángulo son las rectas perpendiculares a cada lado trazadas

C

33

1.5. EJERCICIOS: FIGURAS GEOMÉTRICAS

por los puntos medios. √ √ ! ! Ç å 3 4 3 1 3 1 A , ,B − ,− yC ,− 5 5 2 2 2 2 Ayuda : Escala : 1.5. Triangulo: A(0.6,0.8), B(-0.87,-0.5), C(0.87,0.5) Puntos medios: (0,-0.5), (0.74,0.15), (-0.13,0.15) Circunferencia: centr0 O(0, 0), radio : 1 Marcas: $\backslash$ : (0.24,0.47), (-0.5,-0.18) $||$ (-0.44,-0.5), (0.44,-0.5) Angulo recto [BC]: (0.1,-0.5), (0.1,-0.4) ,(0,-0.4); Angulo recto [AB]: (-0.08,0.09), (-0.02,0.14), (-0.07,0.2);

A

\ •

\ B

O

||

||

C

Figura: Ortocentro El ortocentro es la intersección de las alturas de un triángulo. Ayuda : Trángulo : A(0, 0), B(2, 2), C(3,-2) Pies de las alturas Sobre [AC] : (0.46,-0.31) sobre [BC] : (2.35,0.59) A sobre [AB] : (0.5, 0.5) Ortocentro : H(0.8,0.2) Ánguloes rectos : sobre [AC] : (0.6,-0.1), (0.81,-0.24), (0.67,-0.45) sobre [BC] : (2.11,0.53), (2.17,0.29)(2.41,0.35)

B

•H

C

Figura: incentro El incentro es la Intersección de las bisectrices de un triángulo y es el centro de la circunferencia inscrita. Ayuda : Trángulo : A(0, 0), B(4, 0), C(3,3) Circunferencia: centro (2.54,1.05) radio 1,05 Puntos de contacto: sobre [AB] : (2.29, 0) sobre [AC] : (1.68, 1.68) sobre [BC] : (3.51, 1.46) Arcos : (1,0) arc(0:22:1), (1.11,0.46) arc (23:45:1.2)

C

•I A

B

34

1.6.

1.6. RESUMEN

Resumen

Tikz es un paquete de LATEX en el preámbulo incluimos \usepackage{tikz}. Una figura TikZ se genera por un código colocado en un entorno

\begin {tikzpicture} ... \end{tikzpicture}

y siguiendo su propia sintaxis. Los puntos son identificados por sus coordenadas cartesianas (x, y) o por sus coordenadas polares (a : r) El valor predeterminado es de 1 cm, pero puede ser modificado con una escala [scale = k] (La unidad se multiplica por k cm). El comando de dibujo principal es \draw Dibuja un segmento: \draw (a,b)- - (c, d); Dibujar un círculo: \draw (a, b) circle (r); Dibujar un arco: \draw (a, b) arc (u: v: r); Escribir texto LaTeX: \draw (a,b) node {text}; o \draw (a,b) node [posición] {texto}; ( posición: arriba, abajo, etc.) El problema principal para dibujar una figura geométrica es determinar las coordenadas de los puntos, especialmente para puntos auxiliares utilizados para anotaciones. Para esto, puede ser útil ayudarse con un software auxiliar como GeoGebra, que es capaz de generar el código de TikZ.

Capítulo 2 Caminos y opciones gráficas En este capítulo veremos diferentes maneras de simplificar el dibujo de las figuras respecto a los métodos básicos vistos en el capítulo anterior. Presentaremos la posibilidad de nombrar puntos, agrupar características elementales en una ruta, especificar posiciones o comparar rasgos y no solo con puntos. Por otro lado, presentamos opciones gráficos para variar la apariencia de las líneas, de los colores, del relleno y finalmente, introduciremos formas de especificar el marco general de la figura como los ejes, la cuadrícula o una ventana. Estas herramientas permiten realizar muchas figuras de geometría con una presentación de calidad.

2.1.

Simplificaciones, accesos directos y abstracciones

Todas las figuras anteriores se construyeron punto por punto, línea por línea a partir de unas coordenadas que tuvieron que ser calculadas de antemano. TikZ proporciona otros elementos para simplificar las cosas. Pero, quién dice la simplificación dice que hay que aprender nuevas herramientas, nueva sintaxis y nuevos conceptos. Estos acontecimientos tienen una ventaja y una desventaja: la ventaja es que el código a escribir es más simple o de más alto nivel, la desventaja es que añade una carga mental de la memoria, la comprensión y la decisión. Hay que aprender y entender las nuevos comandos y tenemos que preguntarnos al realizar una figura cuál será la herramienta más adecuada. 35

36

2.1. SIMPLIFICACIONES, ACCESOS DIRECTOS Y ABSTRACCIONES

Estas innovaciones pueden incluso confundir retrospectivamente lo que se cree que ha entendido. Así que hay tener precaución y no hay necesidad de correr con todas las novedades. Es necesario entender que la adquisición de conceptos es gradual.

2.1.1.

Nomenclatura de puntos: \coordinate(nom) at (x,y)

Al diseñar y verificar una figura, es más cómodo designar los puntos por sus nombres en lugar de dar continuamente sus coordenadas. Hay varias variantes sintácticas para ello, sugerimos la siguiente, que actúa como una declaración, al igual que en un texto matemático: “Sea A el punto de coordenadas (1, 0) ". En Tikz lo escribiremos: \coordinate (nom) at (x,y) ; El nombre se puede elegir libremente, pero no debe contener signos de puntuación o símbolos especiales. Si al principio hacemos la declaración de los nombres podremos usar dichos nombres en cualquier parte de la figura. \begin {tikzpicture} \coordinate (O) at (0,0); \coordinate (A) at (1,0); \coordinate (B) at (0,1); \draw (O)--(A); \draw (O)--(B); \draw (O) circle (1) ; \end{tikzpicture} Al parecer, no estamos ganando comodidad, ya que añade más líneas. Pero vale la pena por varias razones : Legibilidad, está claro la construcción del segmento (OA por ejemplo). Modularidad (ya que se separa claramente las posiciones particulares y la estructura de la figura) Reutilización (varias veces pueden utilizar el mismo nombre para referirse a la misma posición). Esto también facilita las correcciones: si nos hemos equivocado en el cálculo de las coordenadas de un punto, sólo hay un lugar para rectificarlas (en las coordenadas de la declaración).

2.1.2.

Vinculación de rasgos: trayectoria, posición actual

Hasta ahora, hemos dibujado las líneas de una a una, cada una con una instrucción \draw (dibujar)

2.1. SIMPLIFICACIONES, ACCESOS DIRECTOS Y ABSTRACCIONES

37

Es un poco tedioso ya que los rasgos que están vinculados (líneas, puntos, polígonos) y estamos obligados a escribir dos o más puntos intermedios. TikZ presenta un atajo para esto: En lugar de escribir: \draw (0,0)--(1,0); \draw (1,0)--(1,1);

Escribiremos: \draw (0,0)--(1,0)--(1,1);

Esto se llama camino. Esta noción se introduce aquí en relación con una serie de segmentos, pero es mucho más general y forma uno de los cimientos de TikZ. Sintácticamente, se presenta como una secuencia de operaciones o de trayectoria. Aquí hay tres: (0,0), que es una operación de posicionamiento explícita. - - (1,0) operación de tazado. - - (1,1) operación de tazado. Estas últimas operaciones tienen un doble papel: un papel de seguimiento, pero también un papel de posicionamiento implícito. De hecho, a lo largo de un camino, TikZ mantiene una "Posición actual": esta es la posición resultante de la ruta anterior y que servirá como referencia (punto de partida) para la siguiente ruta. De forma pictórica, es la posición del lápiz. En el caso de un segmento, esta posición implícita es natural: después de la instrucción de dibujo - - (x, y), la posición actual se convierte en (x, y). Pero hay otras instrucciones para las cuales la convención es menos obvia, lo que puede ser confuso. Por ejemplo, después de dibujar un círculo por círculo (r), la posición actual se convierte en el centro del círculo. Después de dibujar un arco, la posición actual se convierte en el final del arco. Esta diferencia entre arco y círculo pueden explicar la convención inusual elegida para describir un arco. Un arco puede ser incluido en una sucesión de líneas para formar una línea continua:

38

2.1. SIMPLIFICACIONES, ACCESOS DIRECTOS Y ABSTRACCIONES

\draw (0,0) - (1,1) arc (180: 0: 1) - (4,0);

(1, 1)

180o

0o

(0, 0) (4, 0) Las indicaciones dadas (las coordenadas de los puntos y los ángulos) se han agregado para mostrar la influencia de los parámetros, Pero no forman parte del dibujo. Si reemplazamos el arco con un círculo, obtenemos: \draw (0,0) -- (1,1) circle (180: 0: 1) -- (4,0); (1, 1)

(0, 0)

(4, 0)

Después de dibujar el círculo, el lápiz está en el centro (1,1) y lo une con el punto siguiente (4, 0).

2.1.3.

Rectángulos: (a,b) rectangle (c,d)

Es común tener que dibujar un rectángulo cuyos lados son paralelos a los ejes. TikZ proporciona una operación para esto: rectangle, usado en la forma (a, b) rectangle (c, d), donde (a, b) y (c, d) son dos esquinas opuestas del rectángulo. Otro ejemplo: Ejemplo: (0,2) rectangle (2,0); (0,0) rectangle (2,1); (0,0) (2,1)

(0,0) (2,0)

2.1.4.

Líneas cerradas: cycle, fill (cierre, relleno)

Para dibujar un triángulo ABC, siempre podemos escribir: \draw (a) -- (b) -- (c) -- (a);

2.1. SIMPLIFICACIONES, ACCESOS DIRECTOS Y ABSTRACCIONES

39

Pero TikZ tiene el concepto de camino cerrado. Podemos decir: traza desde A a B luego a C y luego cierra la figura: \draw (a) -- (b) -- (c) -- cycle; Hay dos intereses en esto: primero en la unión de las líneas entre la salida,el punto final y el retorno al punto inicial (TikZ dispone que la unión se haga bien al píxel más cercano) y por otra parte el relleno de las figuras cerradas con color o estampados. Para llenar una figura cerrada se usa \fill en lugar de \draw \fill (0,0) -- (1,0) -- (1,1) -- cycle; El principal interés de la noción de camino no reside tanto en la economía de la escritura ( permite guardamos algunas instrucciones \draw), si no en la posibilidad de definir caminos cerrados para completar la instrucción. Tiene otra ventaja: permite agrupar. en un solo lugar las opciones gráficas que se aplican en todo el camino (ver más abajo). Veremos más adelante cómo llenar la figura con colores y patrones.

2.1.5.

Características de los nodos: midway, sloped (a mitad camino, con pendiente )

Anteriormente, vimos el comando node, que permite colocar un cuadro de texto en una posición dada, opción de posicionamiento: \draw (0,0) node [below right] {$ O $} node {$ \bullet $};



O

También se puede colocar un nodo para nombrar a una línea, y no un punto: y colocaría el texto al final de la linea pero también hay otras opciones de posicionamiento que hacen referencia a la linea. midway, near start, near end (a mitad de camino, cerca de inicio, cerca de final). TikZ entenderá gracias a esta opción que el nodo se relaciona con la línea y no un punto. \draw (0,0)--(4,0) node[midway] {$M$} node[near start] {$NS$} node[near end] {$NE$};

NS

M

NE

40

2.1. SIMPLIFICACIONES, ACCESOS DIRECTOS Y ABSTRACCIONES

Podemos añadir las opciones de colocación habituales: above, below, etc.( en este caso arriba) y añadir otros nodos (aquí los puntos que marcan las posiciones exactas)

naode[midway,above] {$M$} node[midway] {$\bullet$}

Esto nos permite trazar rápidamente el punto medio de un segmento.

NS •

M •

NE •

También se puede indicar que el texto debe seguir la orientación de la línea, (opción sloped)

naode[midway,above,sloped] {$M$}

E N• M• S N•

Esta última posibilidad es útil para hacer marcas en los segmentos en lugar de dibujar estas marcas usando sus coordenadas, podemos considerarlas como nodos asociados con segmentos (opción a mitad de camino), con contenido simbólico como | (una línea vertical |) y la opción inclinada para que la línea pequeña permanezca perpendicular al segmento:

naode [midway, sploped] {$ | $}

|

|

|

2.1. SIMPLIFICACIONES, ACCESOS DIRECTOS Y ABSTRACCIONES

2.1.6.

41

Coordenadas relativas: ++ (x, y)

Puede ser conveniente designar un punto no por sus coordenadas absolutas sino por un movimiento desde el punto actual. La notación \draw (a,b) -- ++ (x,y); Es un atajo que reemplaza a \draw (a, b)- - (c, d) por c = a + x y d = b + y. En otras palabras, unimos el punto (a, b) al punto producido por la translación del vector (x, y). De esta forma la instrucción: es equivalente a \draw (1,2) -- ++(1,1); \draw (1,2)--(2,3);

++ (x, y) → − u = (x, y) (a, b)

Esta operación es interesante para describir un camino por etapas. Para encontrar el tesoro, colóquese en el gran roble situado en el (1, 2), luego siga 2 pasos hacia el norte y luego 3 pasos hacia el este. es equivalente a \draw (1,2) -- ++(0,2) -- ++ (3,0); \draw (1,2) -- (1,4) -- (4,4); + + (3, 0) (4, 4)

(1, 4) + + (0, 2)

(1, 2) Esto puede ser útil para dibujar polígonos cuyos lados so vectores son conocidos, por ejemplo ejemplo un cuadrado CABO: \draw (0,0)--++(1,1)--++(- 1,1)--++(-1,-1)--cycle; −→ −→ −−→ Las coordenadas de los vectores son: OA = (1, 1), AB = (−1, 1), y BC = (−1, −1) B C

A

O Esta técnica es interesante usando las coordenadas polares, por ejemplo, para dibujar un pentágono regular. El ángulo entre dos lados sucesivos de un pentágono

42

2.2.

DECORACIONES: ESTILOS, OPCIONES GRÁFICAS.

regular es de 72o , y los lados son todos de la misma longitud, por ejemplo 1 El primer lado es (0,0)- - (1,0). Para dibujar el segundo lado, podemos escribir: \draw – ++ (72:1); Eso es como decir: girar 72 grados y hacer un segmento de longitud 1. Y así sucesivamente con múltiplos de 72:

\draw (0,0)--(1,0)--++(72:1)-- ++(144:1)-- ++(216:1)-- cycle;

144o

(0, 0)

72o (1, 0)

2.2.

Decoraciones: estilos, opciones Gráficas.

2.2.1.

Opciones: [ ]

Una figura no consiste en líneas continuas entre puntos. Se necesita también modificar la apariencia de las líneas: líneas discontinuas en lugar de líneas continuas, color, grosor de línea, puntas de flecha, etc. No solo para que sea bonita, sino para transmitir más información sobre la figura. TikZ lo permite a través de las opciones gráficas. El concepto y la sintaxis de las opciones es análogo a lo que se encuentra en LATEX: las opciones están escritas entre corchetes y separadas por comas. Por ejemplo, [thick, red] significa que queremos líneas gruesas y rojas. Ya hemos utilizado esta sintaxis para el posicionamiento de los nodos: en el nodo la expresión [below] {},es una opción como se define aquí. Las preguntas que surgen sobre esta nueva construcción sintáctica son las siguientes: ¿Dónde podemos (deberíamos) escribir estas opciones? ¿Cuáles son las opciones disponibles, con qué sintaxis? ¿Qué elementos de la figura se ven afectados por la opción? No podemos responder todas estas preguntas de una vez o por completo. A groso modo las opciones se escriben inmediatamente después de los diferentes comandos.

2.2.

DECORACIONES: ESTILOS, OPCIONES GRÁFICAS.

43

Si escribimos la opción después de \tikzpicture esto afectará a toda la figura. Si escribimos la opción después de \draw se aplica solo a esa ruta, y en las operaciones de rutas con nodos son opcionales, es decir, pueden no estar incluidos (en este caso, TikZ elegirá automáticamente los valores por defecto). En fin , cada vez que introduzcamos una nueva posibilidad de TikZ indicaremos las principales opciones asociadas.

2.2.2.

Grosor de línea: thick, thin, line width=5pt (grueso, delgado, ancho de línea)

En cada operación se puede especificar el grosor de línea, con las siguientes opciones (fina o gruesa) thin, very thin, ultra thin, thick, very thick, ultra thick delgada, muy delgada, ultra delgada, gruesa, muy gruesa, ultra gruesa Por ejemplo, \draw [very thick] (0,0) – (1,0); Tenga en cuenta que TikZ le permite expresarse cualitativamente (en inglés), sin preocuparse demasiado por la precisión absoluta. Esto suele ser suficiente, pero si queremos también podemos especificar el ancho exacto de la línea, con unidades de longitud: [line width=5pt] En esta sintaxis podemos notar que : primero los nombres de las opciones pueden contener espacios, y que hay dos formas posibles, una corta, como [thin] y la otra largo como [line width=5pt], la mayoría de las veces, TikZ entiende la primera opción cuando se refiere solamente a un valor (cuando uno da [red]), TikZ reconstituye la sintaxis completa ([color = red]). En caso de ambigüedad, se debe especificar el nombre de la opción.

2.2.3.

Estilos de línea: dotted, dashed, double ( punteada, discontinua, doble)

Se puede especificar que una línea debe ser discontinua de puntos: dotted Posibles opciones: dotted, loosely dotted, densely dotted (puntos, puntos sueltos, puntos densos) También podemos especificar que sea linea discontinua con rayas (dashed)

44

2.2.

DECORACIONES: ESTILOS, OPCIONES GRÁFICAS.

dashed Posibles opciones : dashed, loosely dashed, densely dashed (discontinua, ligeramente discontinua, densamente discontinua) También se puede especificar que un rasgo debe ser doble: \draw [double] (0,0)--(1,0); Incluso se puede especificar el espaciado entre las dos lineas: \draw [double distance = 5pt] (0,0)--(1,0):

2.2.4.

Puntas de flecha : ->, >=saltear

Se puede especificar que el final de una línea sea una punta de flecha con la opción [->]. Si la flecha está en el origen en lugar de al final: [=saltear,latex]

Una extensión de TikZ permite tener flechas de flechas variadas (library arrows)

2.2.5.

Colores: red, color = gray!20

Se puede decir que una linea o una región debe ser de un color determinado indicando solo el nombre del color como una opción: [red] o con el nombre de la

45

2.3. EJES, REJILLA Y VENTANA DE VISUALIZACIÓN

opción: [color = red]. Puedes especificar un color para toda la figura: \{begin}{tikzpicture} [red] ... o simplemente una línea \draw[red] ... Los nombres de color permitidos son los nombres de color estándar en LATEX. Los colores básicos son : red, green, blue, cyan, yellow, magenta, black, white, gray rojo, verde, azul, cian, amarillo, magenta, negro, blanco, gris. Se puede agregar un tono al color, se añade al nombre del color un signo de exclamación seguido de un número del 0 al 100. Ejemplo: [color = gray!20], significa que el color es gris al 20 % (cuanto menor sea el número, más claro es el color). Pero cuidado, sintácticamente tienes que indicar el nombre de la opción: color =gray!20

gray! 20

gray! 40

gray! 60

gray! 80

gray! 100

Podemos distinguir el color de relleno y el color del contorno: \draw [red, fill = gray! 20]

2.3.

Ejes, rejilla y ventana de visualización

En las figuras geométricas, la posición precisa de los puntos es importante, y es conveniente indicarlo visualmente dibujando los ejes, así como la cuadrícula ( en inglés grid )

2.3.1.

Ejes

TikZ no tiene instrucciones particulares para dibujar los ejes. Unos ejes no son otra cosa que segmentos que se dibujan entre dos puntos, como todos los demás segmentos, aplicando opciones gráficas (flechas, grosor, líneas de puntos, color) y añadiendo anotaciones. \begin{tikzpicture} \draw[->] (-1,0) -- (1,0); \draw (1,0) node[right] {$x$}; \draw [->] (0,-1) -- (0,1); \draw (0,1) node[above] {$y$}; \end{tikzpicture}

y x

46

2.3. EJES, REJILLA Y VENTANA DE VISUALIZACIÓN

Lo normal es indicar las coordenadas de un punto en los ejes. Por ejemplo, para el punto A(2, 1), el punto A debe estar unido a su proyección sobre el eje de abscisas (2, 0) y con su proyección en el eje de ordenadas (0, 1), e indicar junto a estas proyecciones la abscisa 2 y la ordenada 1. \draw [dashed] (2,1) -- (2,0) node[below] {$2$}; \draw [dashed] (2,1) -- (0,1) node[left] {$1$}; y •

A(2, 1) x

En lugar de dibujar los dos segmentos por separado, es posible dibujarlos en una sola operación. Queremos unir el punto (0, 1) al punto (2, 0) primero por una línea horizontal, luego vertical, TikZ tiene una función para esto -|: \draw [dashed] (0,1) - | (2,0);

2.3.2.

Líneas de cuadrícula: : grid

Para que las coordenadas sean más legibles es conveniente mostrar una cuadrícula. TikZ proporciona una sentencia para esto. La sintaxis es: \draw (a, b) grid (c, d); Esto dibuja una cuadrícula cuyas intersecciones son todos los puntos de coordenadas dentro del rectángulo definido por dos esquinas opuestas (a, b) y (c, d). Por defecto, las líneas están separadas 1 cm. Por ejemplo (3, 2) \draw (0,0) grid (3,2); (0, 0) El problema de una cuadrícula es que puede confundir la figura. Por lo tanto es mejor dibujar discretamente. Para esto, podemos usar las opciones thin et gray (línea muy fina y gris).

47

2.3. EJES, REJILLA Y VENTANA DE VISUALIZACIÓN

También puede traer problemas con los nodos de texto, que no sea muy legibles, lo solucionamos añadiendo a estos nodos la opción fill=white. en blanco, no transparente

node[fill=white]

node AB

AB

Para hacer esto hay que tener en cuenta que debemos declarar primero las rejilla y luego el nodo. La distancia predeterminada es de 1 cm pero a veces puede ser insuficiente. Entonces podemos usar la opción step aplicada a la cuadricula. Por ejemplo, es posible obtener una cuadrícula de cuaderno de la escuela con grid [step=0.5] y para un papel cuadriculado: grid [step=0.1]. Y si queremos reforzar las características de las unidades,se puede dibujar otra cuadrícula estándar en la parte superior, con líneas ligeramente más grandes.

grid[step=0.5] 1• O

2.3.3.



grid[step=0.1] 1•

• 1

O



dos rejillas 1•

• 1

O



• 1

Ventana de visualización: clip

Puede ser que, por diversas razones, que no queramos ver toda la figura si no solamente una parte, estamos hablando de la ventana de visualización, es la región que realmente se mostrará. Para ello usamos la declaración \clip La sintaxis es: \clip (a,b) rectangle (c,d); La región que se muestra realmente será solo el interior del rectángulo cuyas esquinas opuestas son (a, b) y (c, d). Esto solo afectará a los dibujos colocados después de la declaración \clip Las líneas discontinuas se agregaron para el ejemplo, no forman parte de la instrucción \clip

48

2.4.

COMPLEMENTOS: OPACIDAD, COLORES, ESTILOS.

5

(a,b) 4

\clip (a,b) rectangle (c,d)

3

5

(a, b) (c,d)

2

4

1

3 (c, d)

2

1 La ventana no siempre tiene forma de rectángulo. Tiene la forma que nosotros define dentro de la sentencia \clip . En particular, puede tener una forma circular. \clip (a,b) círculo (r);

5

(a,b)

5 (a, b) \clip (a,b) círculo (r) 4

4 3 2

3

(c,d) 2

1

(c, d)

1

2.4.

Complementos: opacidad, colores, estilos.

2.4.1.

Trama y transparencia: opacity

En una figura, las líneas se superponen en el orden de en que las escribimos. Sin embargo, algunas rutas son transparentes y otras no. Así que las líneas no transparentes ocultarán las líneas que se han dibujado antes. En el caso de la cuadrícula y los comandos de relleno fill. La cuadrícula es transparente, pero un triángulo relleno con relleno fill no lo es:

grid después de fill

fill después de grid

Otro ejemplo, en la opción double, que dibuja una línea doble, de hecho, la línea es un rectángulo y la región entre las dos lineas no es transparente. Hay que pensar que lineas se hacen antes y cuales después para hacer un dibujo. En el siguiente

2.4.

49

COMPLEMENTOS: OPACIDAD, COLORES, ESTILOS.

ejemplo, la línea vertical izquierda se dibuja antes de la línea horizontal doble, y la línea vertical de la derecha se dibuja después. La línea horizontal discontinua se dibuja después y muestra cómo se centra la linea simple dentro de la doble.

Existe una opción para gestionar la transparencia o más bien la opacidad: opacity, con valores desde 0 (transparente) hasta 1 (opaco). Podemos tomar el primer dibujo (la cuadrícula seguida por un triángulo relleno de gris) aplicando [gris, opacidad = 0.5] al triángulo y luego opacidad = 0.2 Obtenemos :

\fill[gray,opacity=0.5]

[opacity=0.2]

El triángulo está bien dibujado sobre la cuadrícula, pero es parcialmente transparente. Podemos distinguir opacidad en el dibujo la opacidad para el contorno y la opacidad de relleno, pero la opacidad se corrige a la vez.

2.4.2.

Nombres y cálculos de colores, paquete xcolor

Si desea tener nombres de colores más variados que en el estándar LATEX, puede cargar el paquete xcolor Se declara mediante \usepackage [usenames, dvipsnames]{xcolor}. Advertencia, se debe declarar antes de \usepackage{tikz}, de lo contrario hay incompatibilidad. Entonces tenemos los siguientes colores:

De amarillo a naranja: GreenYellow, Yellow, Goldenrod, Dandelion, Apricot, Peach, Melon, YellowOrange De naranja a rojo: Orange, BurntOrange, Bittersweet, RedOrange, Mahogany, Maroon,BrickRed, Red

50

2.4.

COMPLEMENTOS: OPACIDAD, COLORES, ESTILOS.

De rojo a rosa: OrangeRed, RubineRed, WildStrawberry, Salmon, CarnationPink, Magenta, VioletRed, Rhodamine De rosa a violeta: Mulberry, RedViolet, Fuchsia, Lavender, Thistle, Orchid, DarkOrchid, Purple

De violeta a azul Plum, Violet, RoyalPurple, BlueViolet, Periwinkle, CadetBlue, CornflowerBlu MidnightBlue De azul a azul claro: NavyBlue, RoyalBlue, Blue, Cerulean, Cyan, ProcessBlue, SkyBlue, Turquoise De verde a marrón: PineGreen, LimeGreen, YellowGreen, SpringGreen, OliveGreen, RawSienna, Sepia, Brown, Tan.

También se pueden hacer colores propios, colores mezclados: [color = blue! 30! red] es un color con 30 % de azul y 70 % de rojo. Es entonces un color bastante rojo y ligeramente violeta. De manera similar, [color = blue! 30! Red! 40! Green] designa la mezcla del color en proporción del 40 % de azul , con un rojo al 60 % y mezclado todo con verde. Esto es una definición global en el sistema RGB, con valores de 0 a 255: R = 31, B = 71, V = 153 El resultado es bastante verde. Te da mucha libertad, pero puede que no sea muy razonable querer inventar tus propios colores, es un ejercicio duro, y los coloristas han establecido paletas cuidadosamente calibradas que es mejor utilizar. Los 64 colores de xcolor estándar debería ser suficiente.

2.4.3.

Definición de estilos : \tikzstyle, \tikzset

Es común que varios elementos de una figura tengan las mismas opciones gráficas, y que estas opciones están asociadas a una convención de representación particular, que se denomina estilo. Entonces es conveniente separar la definición de estilo, que es común, y sus aplicaciones para varios elementos Por ejemplo, para que las líneas sean puntos gruesos y el color de relleno sea en gris, solemos escribir: \draw[thick, dashed, fill=gray] ...

2.5.

EJERCICIOS: ESTILOS DE LÍNEAS, FLECHAS, COLORES.

51

Entonces podemos designar este estilo por un nombre, por ejemplo grisEncadre. y declaramos al nombre a TikZ de la siguiente manera: \tikzstyle{grisEncadre}=[thick, dashed, fill=gray!20] Este comando se puede escribir en cualquier parte del documento LATEX, antes de la figura y luego, podemos usar este nombre en la figura de la siguiente manera: escribiendo solo el nombre como una opción, y esto actuará como una abreviatura: \begin{tikzpicture} \draw [grisEncadre] (0,0) circle (1); \draw [grisEncadre] (2,0) circle(0.5); \end{tikzpicture}

Esta forma de hacer las cosas aumenta la legibilidad y facilita las correcciones: corregir solo la definición del estilo, afecta a todas las figuras que usen ese estilo. De hecho, el comando \tikzstyle parece estar desactualizado en la versión 2 (aunque siempre es correcto y utilizable). El método utilizado por la versión 2 usa el comando \tikzset para establecer un estilo, con una sintaxis un poco más complicada: \tikzset{grayFrame /.style = {thick, dashed, fill=gray!20}} Esta ligera complicación permite aprovechar las posibilidades del paquete pgfkeys, que no vamos a utilizar así que podemos pasar a otra cosa.

2.5.

Ejercicios: estilos de líneas, flechas, colores.

Aquí hay algunos ejercicios para hacer con TikZ. Para cada uno de ellos, se da una figura y se debe escribir el código TikZ para trazar esta figura. Las indicaciones dadas son las técnicas utilizadas, es decir, palabras clave TikZ utilizadas y las figuras son figuras clásicas de la geometría.

2.5.1.

Suma de dos vectores

La suma de dos vectores se obtiene dibujando la diagonal del paralelogramo formado por los vectores o en colocando un vector a continuación del otro.

52

2.5.

→ − u

EJERCICIOS: ESTILOS DE LÍNEAS, FLECHAS, COLORES.

→ − − u +→ v

− u→

→ − v

−v → + −u →

→ − v

Técnicas utilizadas:

->, >= stealth, --, node, above below right, dashed, midway

2.5.2.

Triángulo rectángulo inscrito en una semicircunferencia.

|



|

Técnicas utilizadas: dashed, arc, node, - -

2.5.3.

Ángulo inscrito y ángulo central

Técnicas utilizadas:

double distance, thick, arc, gray!20, circle, --, densely dotted

2.5.

53

EJERCICIOS: ESTILOS DE LÍNEAS, FLECHAS, COLORES.

2.5.4.

Áreas iguales entre líneas paralelas.

|

|

|

|

Técnicas utilizadas:

color=gray!20, --, cycle, node, \fill

2.5.5.

Composición de dos simetrías centrales

La composición de S2 ◦ S1 de dos simetrías centrales cuyos centros son I1 e I2 es −−→ −−−→ la translación vectorial 2I1 I2 . Si M1 = S1 (M ) y M2 = S2 (M1 ) entonces M M2 = −−→ 2I1 I2 M

− 2 v→ k M2 I1 •

− v→

| • I2

k M1 Técnicas utilizadas:

>=latex, node, below, midway, --, above, dashed, left, below right, ->

2.5.6.

Suite Geométrica

n X 1 1 1 2 + + + · · · = l´ım =1 k n−→+∞ 2 4 8 k=1 2

54

2.5.

EJERCICIOS: ESTILOS DE LÍNEAS, FLECHAS, COLORES.

B

O

A 1 2

1 4

1

Técnicas utilizadas:

>=latex, , node, left, above, --, right, midway, below, densely dashed

1 8

Capítulo 3 Curvas

3.1.

Dibujar una curva: plot (...)

En este capítulo, veremos cómo dibujar curvas usando ecuaciones matemáticas la ecuación puede estar escrita en forma cartesiana y = sin(x) , en forma polar ® x = cos(t) ρ = f (θ) o en ecuaciones paramétricas y = sin(t) La operación principal para dibujar la función es plot, que se insertar después del comando \draw por ejemplo: \draw plot ... ; Aquí se describe la sintaxis de esta operación en la versión 2 de TikZ. Esta operación se utiliza para dibujar curvas en forma paramétrica, el nombre del parámetro predeterminado es \x Después del comando plot, escribimos:

O bien (X, Y ) donde donde X e Y son las fórmulas de la abscisa y la ordenada en función del parámetro (si estas fórmulas contienen paréntesis o comas, deben escribirse entre llaves) por ejemplo: (\x, {exp (\x)}); O bien (θ : r) donde θ y r son las fórmulas del ángulo polar (en grados) y el radio en función del parámetro.

Por ejemplo, para dibujar la curva de la función de ecuación cartesiana y =  

x=x x y escribir: necesario pasarla a ecuaciones paramétricas  y= 4 55

x es 4

56

3.1. DIBUJAR UNA CURVA: PLOT (...)

\draw plot (\x, \x/4);

Lo cual produce:

(5, 1.25)

| (0, 0) (−5, −1.25)

Se han agregado anotaciones en gris para mostrar cómo encaja la figura. Aquí, TikZ usó sus opciones predeterminadas para elegir el dominio del parámetro: −5 ≤ x ≤ 5 Otro ejemplo: la curva de la ecuación polar θ = 20 · r podemos representarlo eligiendo r como parámetro. \darw plot (20*\x:\x); La curva comienza desde el punto (θ = 100o : r = −5) y alcanza el punto (θ = −100o : r = 5) porque \x varia par defecto de -5 a 5. Se obtiene:

−(-100:-5)

(100:5)−

−(45:2.25)

(-45:-2.25)−

| (0:0)

Si no se desea mantener el nombre predeterminado \x para el parámetro, puede asignarle un nombre, por ejemplo \t, con la opción [variable = \t] aplicada en plot Ejemplo:

\vspace{-0.6cm} \draw plot [variable = \t] (\t,2*\t);

57

3.1. DIBUJAR UNA CURVA: PLOT (...)

Quedan diferentes cuestiones, las cuales estudiaremos a continuación: ¿Cómo definir el dominio del parámetro? ¿Qué fórmulas matemáticas están disponibles? ¿Cómo especificar el número de puntos calculados para el suavizado de la curva? ¿Cómo se tratan los puntos singulares (discontinuidades, valores demasiado grandes)?

3.1.1.

Dominio : [domain=a:b]

Para decir que el parámetro (\x por defecto) varía desde a hasta b, TikZ tiene la sintaxis [domain= =a:b] Ejemplos de dominios Cambiar el dominio de la curva polar anterior (ecuación θ = 20 × r), por ejemplo fijándolo en 0 ≤ x ≤ 9 También tenemos la oportunidad de cambiar la escala (dividiendo las dimensiones por 2 con scale=0.5). \draw [domain = 0:9,scale=0.5] plot (20 * \x:\x);

(135 : 6.75)

(90:4.5)

(45:2.25) (180:9)

(0:0)

La configuración adecuada del dominio es importante para las funciones que toman valores muy grandes, por ejemplo la exponencial. Con \draw plot(\x,{exp(\x)});, se obtiene una línea casi vertical que ocupa toda la página ya que e5 = 148 Es mejor escribir: \draw [domain=-3:1.5] plot(\x,{exp(\x)});

58

3.1. DIBUJAR UNA CURVA: PLOT (...)

y = ex



3.1.2.

(0,0)

Fórmulas matemáticas disponibles

Desde la versión 2, TikZ permite escribir fórmulas matemáticas con una sintaxis habitual, similar a la de calculadoras, software matemático o lenguajes de programación. Sin embargo, la gama de funciones disponibles no es muy grande. TikZ no es software de cálculo, y no deberías pedirle demasiado. Si las funciones disponibles no son suficientes, hay dos soluciones principales: Utilizar la función plot que llama (de forma transparente) al software libre Gnuplot, que debe estar instalado y conectado a TikZ. Ver más abajo detalles técnicos sobre Gnuplot; Preparar los datos (coordenadas de los puntos de la curva) utilizando un software externo, guardarlos en un formato adecuado y luego usar ese archivo para representar los datos. (ver capítulo siguiente).

Operaciones Suma, resta, multiplicación, división, elevación a una potencia: x + y, x − y, x ∗ y, x/y, x^y Módulo, máximo, mínimo: mod(x, y), max(x, y), min(x, y) Funciones Valor absoluto, exponencial, logaritmo natural, raíz cuadrada abs(x), exp(x), ln(x), sqrt(x) Redondeado, parte entera , siguiente entero superior: round(x), f loor(x), ceil(x) Funciones trigonométricas Los ángulos están en grados. sin(x), cos(x), tan(x), cot(x), sec(x), cosec(x) Funciones trigonométricas inversas asin(x), acos(x), atan(x) Constante π , conversiones pi, x r, deg(x), rad(x)

59

3.1. DIBUJAR UNA CURVA: PLOT (...)

En TikZ, las funciones trigonométricas esperan ángulos en grados. Para encontrar las funciones Matemáticas habituales que esperan ángulos en radianes, los radianes deben ser convertidos en grados. π·x Convertir grados a radianes lo hacemos a través de la formula g = siendo x 180 el ángulo en grados degesimales. 180 · x siendo x los Si queremos pasar de radianes a grados degesimales: g = π radianes. 180 los convertimos a grados degesimales, pero π en TikZ podemosÅ hacerlo de dos maneras: deg(x) oÅx r. Å ãã π ã π Por ejemplo sen r es igual a 1 al igual que sen deg 2 2 Hay que tener cuidado con la función r, ya que tiene una prioridad comparable a la multiplicación es decir : 180 180 pero a+b r quiere decir a + b · a*b r quiere decir a · b · π π Al multiplicar los radianes por r =

La curva de la función seno entre [−π, π] se obtiene con:

\draw [domain=-pi:pi] plot (\x,{sin(\x r)});.

−π



(0, 0)

π

La función seno en el intervalo [−π, π]

Para convertir grados degesimales en radianes podemos multiplicar por utilizar la función rad(x)

Números aleatorios Un número real aleatorio ente 0 y 1: rnd Un número real aleatorio entre -1 y 1: rand

Operaciones booleanas Pruebas de igualdades y desigualdades. x == y, x < y, x > y

180 o π

60

3.2. ASPECTO DE LA GRÁFICA.

3.2. 3.2.1.

Aspecto de la gráfica. Número de puntos: samples

Por defecto, cuando se le pide a TikZ que dibuje una curva, calcula un cierto número de puntos de la curva (25 puntos) y luego los une con segmentos. Podemos cambiar esto mediante la opción samples El aspecto de dibujar la curva f (x) = sen (5x) con las opciones por defecto es:

\draw

plot (\x,{sin(\x*5 r)});

Si añadimos la opción [samples=200] el resultado es:

\draw [samples=200] plot (\x,{sin(\x*5 r)});

3.2.2.

Suavizado: smooth, tension

Podemos pedir a TikZ que no junte los puntos por segmentos sino por curvas (calculado con un algoritmo de suavizado). Por tato se obtiene una curva suavizada. La curva de la función anterior sin(5x) con 25 puntos, pero suavizado con la opción [smooth] es menos desigual, pero no compensa el efecto debido al bajo número de puntos:

\draw [smooth] plot (\x,{sin(\x*5 r)});

3.2. ASPECTO DE LA GRÁFICA.

61

El grado de suavizado (curvatura de arcos de curvas) se puede configurar con la opción de tension. Un valor de 0 da un segmento (como si no configuráramos la opción de suavizado), el valor predeterminado es 0.55, y el máximo es 1 (cuanto mayor sea el valor, más arcos se doblan). Con [smooth, tension=1]

3.2.3.

Discontinuidades: Separar los intervalos.

x La función no es continua en |x| cero ya que no está definida, tiene por tanto dos ramas que no se pueden unir. Está formada por la linea y = −1 si x < 0 y por la linea y = 1 si x > 0 Ejemplo: dibujar la curva de la función f (x) =

Cuando escribimos la ecuación directamente, TikZ no da un resultado correcto ya que va a unir los segmentos.

TikZ se une sistemáticamente a los puntos que calcula. La solución habitual es trazar por separado dos tramos de curvas, en dos intervalos que evitan el punto de discontinuidad, por ejemplo entre [-3,-0.01] y [0.01,3].

\draw[domain=-3:-0.01] plot(\x,{\x/abs(\x)}); \draw[domain=0.01:3] plot(\x,{\x/abs(\x)});

62

3.2.4.

3.2. ASPECTO DE LA GRÁFICA.

Valores muy altos: scale, \clip

Tomemos como ejemplo la función f (x) = número de puntos por defecto (25).

1 la dibujamos la escala de 0,5, con el x

\draw [scale=0.5] plot (\x, {1/\x});

El "último" punto a la izquierda de 0 no debe estar conectado al "primer" punto a la derecha de 0 porque el dominio de definición de la función no incluye al 0. Si quisiéramos aumentar el número de puntos ([samples = 100]), sería aún peor: observamos que reportaría un mensaje de error: Dimensión demasiado grande. Los valores alrededor de 0 son demasiado grandes para las capacidades de cálculo de TikZ (sin contar el problema de que no está definida en 0). La única forma de resolver el problema es estudiar la función antes, analizar de discontinuidad y los valores demasiado grandes, y trazar por separado los dos tramos de curva y cuidando de evitar abscisas muy cercanas a 0. Podemos probar [domain = -3: -0.2] para una rama y [domain = 0.2: 3] para la otra. Se dibujan curvas pero los valores extremos de las ordenadas siguen siendo un poco grandes, y nos da una imagen de 10 cm de altura. Hay dos tipos de soluciones para esto: la opción de escala o el comando \clip. Con la escala, podemos reducir la escala, por ejemplo [scale = 0.5]. Con clip, mantenemos la escala pero podemos reducir la ventana de visualización, por ejemplo: \clip (-3, -2) rectangle (3,2); (Orden de colocación al inicio de la figura).

63

3.3. REGIONES LIMITADAS POR CURVAS

[escale =0.5] [\clip (-3,-2) rectangle (3,2); ]

• •

Puede parecer un poco decepcionante que TikZ no resuelva estos problemas de desconexión y de los valores son demasiado grandes, a diferencia de algunas calculadoras o software. Pero es solo un módulo para TEX, que es, después de todo, un software de composición tipográfica y no pretende en absoluto ser un software de cálculo. Es incluso sorprendente que TEX puede soportar todas estas extensiones.

3.3.

Regiones limitadas por curvas

Puede que queramos representar una región limitada por curvas, por ejemplo para el calculo de áreas. La técnica es definir un camino o ruta para delimitar el contorno y luego rellenar este contorno con fill

3.3.1.

Una curva y dos segmentos: cycle, \fill, \filldraw

1 Ejemplo: Representar la región limitada por el eje de abscisas, la función y = y x las rectas de ecuaciones x = 1 y x = 2

B C A

D

Es para llenar la región ABCD, con A(1, 0), B(1, 1), C(2, 0.5) y D(2, 0). Para esto definimos un camino cerrado en orden: el segmento de A a B, la curva

64

3.3. REGIONES LIMITADAS POR CURVAS

de B a C y los segmentos de C a D y de D a A. El siguiente código debe incluirse en un entorno tikzpicture. Tenga en cuenta que todos los elementos de la las rutas están conectadas entre sí (incluida la curva) mediante guiones – para indicar que toda la ruta está relacionada, y cerrada por cycle . \fill[color=gray!20] (1,0) -- (1,1) % segmento de A a B - - plot [domain=1:2] (\x,1/\x)% curva desde B a C - - (2,0) -- cycle;% segmento de C a D y cerrar Hay que tener en cuenta la posición del lápiz después de dibujar una curva con plot: el lápiz se coloca en el último punto trazado por esta operación, aquí el punto C (2, 0.5), los puntos se trazan en el orden del dominio [domain = 1: 2], es decir, de 1 a 2. La misma curva podría haber sido dibujada de 2 a 1 por [domain = 2: 1], pero entonces el lápiz al final se habría posicionado en B (1, 1). A menudo queremos dibujar el contorno de la región . En lugar de \fill, podemos usar \filldraw, que rellena y traza el contorno. Pero hay que especificar dos colores diferentes uno para el contorno y el otro para el relleno, con las opciones fill (para el relleno) y draw (para el contorno) \filldraw [fill=gray!20, draw=black]

Esta región es solo un elemento de la figura.La estructura de la figura completa es:

\begin{tikzpicture} {:} uso de los dos puntos para el dominio. \filldraw ... ; % la region ABCD \draw ... ; %el eje de abscisas de 0 a 3 \draw ... ; %el eje de ordenadas de 0 a 2 \draw plot ... ; % la courbe complete, de 0.5 a 3 \draw ... ; % nodos para los textos A, B, C, D \end{tikzpicture}

Área (ABCD) =

Z 2 1

1 dx = ln(2) x

B C A

D

65

3.3. REGIONES LIMITADAS POR CURVAS

3.3.2.

Regiones entre dos curvas

2 Ejemplo: √ Representar la región del plano limitada por las funciones f (x) = x y g(x) = x en el intervalo [0,1]

El principio es el mismo: definimos un contorno, luego rellenamos su interior. Hay que presta atención a las direcciones de las curvas, primero dibujar una primera curva de 0 a 1, la otra de 1 a 0 para volver al origen. \filldraw[draw=black,fill=gray!20] plot [smooth,domain=0:1] (\x,{sqrt(\x)}) -- plot [smooth,domain=1:0] (\x,\x^2) -- cycle;

3.3.3.

Región no convexa: interior rules

Por ahora, hemos definido un contorno y hemos utilizado el comando \fill para rellenar su interior. Pero, ¿cómo se define exactamente el interior de un contorno? La pregunta se vuelve delicada cuando la frontera de la región se solapa y se cruza. Ejemplo: Representar la región limitada por la curva y = sen x y el eje de abscisas en el intervalo [0, 2π]

0

π



La intersección está en el punto (π, 0) y para rellenar el área de gris podemos hacerlo como antes:

66

3.4. SUPLEMENTOS TÉCNICOS

\filldraw[fill=gray!20,draw=black] (0,0) -- plot [domain=0:2*pi] (\x,{sin(\x r)}) -- cycle;

Obtienes lo que quieres, pero tienes que entender lo que hizo TikZ. Tiene dos modos de cálculo para determinar el interior de un camino. En el caso del ejemplo anterior, los dos modos dan el mismo resultado, pero no siempre será así. TikZ usó su modo predeterminado aquí, que podría haber sido solicitado explícitamente por la opción nonzero rule, siendo el otro modo even odd rule. La definición de estos modos no es fácil (consulte el manual: reglas internas). Como dice el manual: "¿Crees que es complicado? Bueno, sí, lo es! ". El más complicado es el modo por defecto, el otro es un poco más natural. Sin embargo, para los casos habituales estudiados aquí (región entre dos curvas de función continua), los dos modos dan el mismo resultado. Por ejemplo: dibujar la región delimitada por la curva y = sen x y la curva y = cos x en [0, 2π]. Primero dibujamos la curva seno de 0 a 2π, luego el el coseno de de 0 a 2π.

\filldraw [draw=black,fill=gray!20] plot [domain=0:2*pi] (\x,{sin(\x r)}) -- plot [domain=2*pi:0] (\x,{cos(\x r)}) -- cycle;

5π 4 0

π 4



Tenga en cuenta que la cuadrícula debe dibujarse después de las curvas para que esté completamente visibles. También podemos dibujar la cuadrícula antes, pero si queremos que permanezca visible, debemos hacer que sean transparentes, por ejemplo, con la opción [opacity=0.5].

3.4. 3.4.1.

Suplementos técnicos Utilización de Gnuplot : plot function

TikZ utiliza el software Gnuplot (que debe haber sido instalado y conectado a TikZ), para calcular una lista de puntos y guardarlos en un archivo, TikZ leerá

3.4. SUPLEMENTOS TÉCNICOS

67

este archivo y lo usará para dibujar la curva. Si el nombre del archivo LATEX es doc.tex, TikZ genera un archivo: doc.pgf-plot.gnuplot, este archivo es leído y ejecutado por Gnuplot y nos proporciona otro archivo doc.pgf-plot.table, que es utilizado por TikZ para dibujar la curva, como si hubiéramos escrito \draw plot file doc.pgf-plot.table; Para que esto sea posible, se requieren algunas manipulaciones previas. Primero debemos cargar e instalar Gnuplot, que es más o menos fácil dependiendo de los sistemas operativos. La página de inicio de Gnuplot es http://www.gnuplot.info/ Es importante asegurar la compatibilidad entre las versiones de Gnuplot, el sistema y TEX. Luego debe configurar el sistema TEX para que pueda conectarse a Gnuplot. Aquí también, la maniobra a seguir depende de los sistemas. Cuando todo funciona, podemos usar la función \draw plot {...}, observando que la sintaxis de representación de la función no es la de TikZ, sino la de Gnuplot. Esta operación permite diferentes opciones para controlar Gnuplot, especialmente la opción parametric para dibujar curvas paramétricas. Desde la versión 2 de TikZ, el uso de Gnuplot se vuelve menos necesario porque ahora podemos escribir fórmulas matemáticas directamente. Por eso no siempre es aconsejable usar Gnuplot, especialmente porque su instalación puede ser complicada.

3.4.2.

Automatización de determinadas configuraciones.

En las calculadoras gráficas y el software de dibujo curvas, a menudo hay un ajuste entre las diferentes opciones: la ventana de gráfica, el campo de estudio de la función, el trazado de los ejes y la cuadrícula. En general, fijamos los límites para la abscisa y la ordenada, y todo lo demás deriva de ella. Es posible hacer esto con TikZ, usando sus capacidades de administración de opciones (el paquete pgfkeys) y algo de programación LATEX. Este paquete requiere la versión 2 de TikZ. El objetivo es: introducir cuatro nuevas opciones xmin, xmax, ymin, ymax para corregir los límites, y tres comandos LATEX\axes, \grid, \window usando esto para dibujar los ejes y la cuadrícula, y fijar la ventana (\clip). Ejemplo de uso:

\% Definicion de nuevas opciones xmin, xmax, ymin, ymax

68

3.5. EJERCICIOS

\% Valores por defecto : -3, 3, -3, 3 \tikzset{ xmin/.store in=\xmin, xmin/.default=-3, xmin=-3, xmax/.store in=\xmax, xmax/.default=3, xmax=3, ymin/.store in=\ymin, ymin/.default=-3, ymin=-3, ymax/.store in=\ymax, ymax/.default=3, ymax=3, } % Comando que traza la regilla entre (xmin,ymin) y (xmax,ymax) \newcommand {\regilla} {\draw[help lines] (\xmin,\ymin) grid (\xmax,\ymax);} % Commando \ejes \newcommand {\ejes} { \draw[->] (\xmin,0) -- (\xmax,0); \draw[->] (0,\ymin) -- (0,\ymax); } % Comando que limita la pantalla (xmin,ymin) et (xmax,ymax) \newcommand {\ventana} {\clip (\xmin,\ymin) rectangle (\xmax,\ymax);}

3.5.

Ejercicios

3.5.1.

Elipse. Ángulos con circle y \clip

• •

F0

Escala 0.5 Elipse (representación paramétrica) :

A

P

®



F

x = 5 cos θ y = 3 sen θ

Focos F 0 (−4, 0) y F (4, 0) A(2, 2.75) Tangente : y = −0.26x + 3.27, normal: y = 3.82x − 4.89 Ángulo recto : (2.25, 3.72) (1.28, 3.97) (1.03, 3) Las coordenadas se han obtenido con GeoGebra. Para mostrar solo una parte, usamos \clip, y para limitar el alcance de este clip utiliza un entorno \begin scope ... \end scope

69

3.5. EJERCICIOS

3.5.2.

y=

ln x . xscale, yscale x

Dibujar la función y =

|

0

|

ln x y buscar su máximo. x

|

1

2

e

|

3

Como se puede comprobar el máximo de la función no se ve a simple vista. Para ver mejor la variación podemos multiplicar la abscisa por 2 y la ordenada por 100 de la siguiente manera:[xscale=2,yscale=100].

1 e, e •

Ç

y=

3.5.3.

ln 2 2



x=2

å

x=4



Funciones periódicas: \foreach

Dibujar la curva periodo del período 2 cuya fórmula entre [−1, 1] es y = x2 . Lo primero es dibujar la curva en ese período.

70

3.5. EJERCICIOS

A continuación hacemos una translación con el vector (2, 0)

→ − u = (2, 0)

Es decir le hemos agregado \draw plot [domain = -1:1] (\x + 2, \x2 ); De esta forma podemos agregar más piezas. \begin{tikzpicture} [domain={-1}{1}, samples=80] \draw plot (\x,\x^2); \draw plot (\x+2,\x^2); \draw plot (\x+4,\x^2); \draw plot (\x+6,\x^2); \draw plot (\x+8,\x^2); \end{tikzpicture} Esta repetición de escritos puede resumirse mediante el uso de \foreach \foreach \k in {0,2,...,8} {\draw plot (\x + \k, \x^2);}

\foreach es una instrucción de bucle en el sentido habitual de la informática. Veremos más ejemplos después.

3.5.4.

Funciones recíprocas, áreas: pattern

Vamos a representar la fórmula

Z 2 1

ln x dx +

Z ln 2 0

ex dx = 2 ln 2

71

3.5. EJERCICIOS

y = ex

y=x

2 B

y = ln x

1 0

A ln 2

1

2

Rellenamos las regiones antes que el resto. Para el relleno utilizaremos la biblioteca de patrones, declarando en el preámbulo:

\usepackage{tikz} \usetikzlibrary{patterns}

Luego se escoge el patrón como una opción (consulte el manual para conocer los diferentes patrones posibles: líneas verticales, líneas noreste, puntos, etc.)

\fill [pattern=horizontal lines] (0,0) -plot [domain={0}{ln(2)}] (\x,{exp(\x)}) -- ({ln(2)},0) -- cycle;

Hay que tener cuidado con el dominio de definición del logaritmo en sus valores cercanos a 0, igualmente por el valor del exponencial que se hace muy grande. Tienes que elegir un área adecuada. Además, podemos arreglar la ventana para enmarcar correctamente el dibujo. Preste atención al orden de los diferentes comandos. La estructura del código es:

\begin{tikzpicture}[scale = 2,xmin=-1,xmax=3,ymin=-1,ymax=3] \fenetre \fill ... ; % área gris bajo el logaritmo. \fill ... ; % área gris sobre la exponencial \fill ... ; % área rayada

72

3.5. EJERCICIOS

\axes \draw plot ... ; % curva del logaritmo \draw plot ...; % curva de la exponencial \draw plot ... ; % recta y = x % los textos \end{tikzpicture}

3.5.5.

Lemniscata de Gerono.\scope, xshift, \filldraw ®

x = cos θ La lemniscata de Gerono es la curva de representación paramétrica: y = sin θ · cos θ √ √ 4 2 2 2 Su ecuación cartesiana es: x +y = x por lo tanto y = x 1 − x e y = −x 1 − x2 El objetivo es representar el área de la región interna delimitada por la curva, y luego enmarcar dicha área.

1≤A≤ A

1≤A

A≤

3 2

3 2

Para representar el área usamos \filldraw. TikZ determina correctamente la región interior. Para representar en el √marco de las áreas, es necesario calcular varios elementos de la función f (x) = x 1 − x2 en el intervalo [0, 1] √ ! 2 1 La tangente en (0, 0) tiene por ecuación y = x, el máximo es , 2 2 Primero, desarrolle cuatro figuras separadas (las tres áreas y luego el resultado). No hay que olvidar que los ángulos de las formulas matemáticas están en radianes. Luego agrupa estas figuras en una usando t scope et xshift. de la forma \begin{scope}[xshi cm] ... \end{scope} mueve ala derecha 1.5 cm. Al rellenar las regiones, preste atención al orden de la ruta: las áreas rellenas tiene que estar antes de otros elementos ya que son opacas. La estructura es:

\begin{tikzpicture}[scale=...] % Eelegir la escala \begin{scope} % Primera figura \filldraw[fill=...] plot ...; % Área de lacurva

3.6. RESUMEN

73

\draw (0,-1) node {$A$}; % Comentario \end{scope} \begin{scope}[xshift= 2.3cm] % Translación \filldraw ... ; % Área \draw[densely dashed] plot ...; % Curva \draw (0,-1) node ... ; % Comentario \end{scope} \begin{scope}[xshift= 4.6cm] % Translación \filldraw ... ; % Área \draw[densely dashed] plot ... ; % Curva \draw (0,-1) node ... ; % Comentario \end{scope} \begin{scope}[xshift= ...cm] % Translación \draw (0,0) node ... ; % Comentario \end{scope} \end{tikzpicture}

3.6.

Resumen

Para dibujar una curva definida por ecuaciones matemáticas usa: \draw plot (abscisa, ordenada); o \draw plot (ángulo: radio) Las fórmulas se dan en base a un parámetro llamado \x por defecto, que puede tener otro nombre con la variable con la opción [variable=] Con la opción [domain = a: b] determinamos el dominio de la variable \x TikZ proporciona una sintaxis para las fórmulas matemáticas habituales. Las funciones trigonométricas usan el ángulo en grados, pero TikZ ofrece posibilidades para convertir radianes en grados: r o deg() El aspecto de las curvas se puede controlar mediante opciones: samples para el número de puntos y smooth para alisar. El tratamiento de las discontinuidades o grandes valores no es automático. Entonces es necesario separar los intervalos y establecer explícitamente la escala con scale, xscale, yscale , escala x, escala y la ventana de visualización con \clip. Las curvas formadas por piezas que se reproducen mediante transformaciones (función periódica, por ejemplo) se pueden construir con el comando \foreach. Las regiones definidas por las curvas se pueden rellenar. Para ello, debe definir una ruta cerrada – y cycle y \fill o \filldraw. Algunas partes de la ruta pueden ser curvas trazadas con una trama, sabiendo que se recorren en la dirección definida por el orden valores extremos del parámetro en [domain= a: b] (de a a b, incluso si a> b). Puede rellenar una región con color o patrones, por ejemplo: [pattern= horizontal lines] para ello se usa una biblioteca de patrones. Otra posibilidad para dibujar curvas es usar la función de trazado, que usa Gnuplot. Esto puede ser útil cuando las funciones matemáticas de TikZ son insuficientes, o representar datos cargados en internet. Pero eso requiere una buena instalación y

74

3.6. RESUMEN

configuración de Gnuplot y TEX. Consulte los manuales de TikZ y Gnuplot. Otra posibilidad es utilizar plot file {archivo}, donde el archivo contiene la lista de coordenadas de puntos.Puedes encontrar las opciones en algunas calculadoras gráficas y con un poco de programación. xmin, xmax, ymin, ymax, \axes, \grid, \clip. Para construir una figura compuesta de varias subfiguras independientes, se puede usar el entorno scope para separar las subfiguras y las opciones shift, xshift, o yshift para moverlos.

Capítulo 4 Geometría en el espacio

4.1.

Coordenadas (x, y, z)

TikZ proporciona una sintaxis (x, y, z) para representar puntos en el espacio. Pero esto es no es un software de modelado 3D: no gestiona las superficies ocultas y no permite ver las figuras desde diferentes puntos de vista. Dibuja figuras planas que se proyectan desde figuras del espacio, sabiendo que el punto M (x, y, z) está definido → → − − → − −−→ 1 → 1 → − − → − → − − → − → OM = x i + y j + z k donde i , j , k y por defecto k = − √ i − √ j 2 2 2 2 Esto no es lo que dice el manual, pero podemos verificarlo con la siguiente figura: → − j → − i → − k

El cubo unitario se obtiene entonces por:

\draw \draw \draw \draw

(0,1,0)--(0,1,1)--(1,1,1)--(1,1,0) --cycle ; (0,0,0)--(0,0,1)--(1,0,1)--(1,0,0) --cycle ; (0,0,0)--(0,1,0);% aristas (1,0,0)--(1,1,0);% aristas 75

%la cara de arriba %la cara de abajo

76

4.1. COORDENADAS (X, Y, Z)

\draw (0,0,1)--(0,1,1);% aristas \draw (1,0,1)--(1,1,1);% aristas

Si consideramos el cubo como un sólido sólido, podemos dibujar en líneas discontinuas Bordes ocultos (los que parten del origen):

Podemos sombrear las caras con \fill (el sol está en la parte superior izquierda):

Todo esto es posible con las opciones habituales de TikZ, pero no es automático, tienes que decidir por ti mismo lo que será punteado, gris [relleno = ...], transparente [opacidad = 0.7], y dibujar los elementos en el orden correcto.

4.1.1.

Otras representaciones = y= z=

TikZ tiene las opciones x, y, z, que permiten redefinir los vectores básicos de acuerdo con las coordenadas del plano absoluto (abscisa horizontal a la derecha, ordenada vertical hacia arriba). La representación matemática francesa habitual se puede obtener mediante:

[x = {(-0.353cm, -0.353cm)}, z = {(0cm, 1cm)}, y = {(1cm, 0cm)}] → − k → − j → − i

Si desea utilizar esta representación a menudo, puede ser conveniente hacer un estilo (por ejemplo math3d), que se define de una vez por todas al principio del documento:

4.2. ALGUNAS FIGURAS DE LA GEOMETRÍA.

77

\tikzset{math3d/.style= {x= {(-0.353cm,-0.353cm)}, z={(0cm,1cm)},y={(1cm,0cm)}}}

También podemos elegir otro valor de x para las distintas perspectivas. En la figura donde queremos usar esta convención, bastará con agregar la opción math3d:

\begin {tikzpicture} [math3d] ... \end {tikzpicture}

4.2. 4.2.1.

Algunas figuras de la geometría. Sección hexagoanl de un cubo.

De nuevo, debemos calcular las coordenadas de todos los puntos, identificar lo que está oculto, definir colores, líneas de puntos, opacidad y orden de dibujo.

4.2.2.

Diagonal de un cubo

78

4.2. ALGUNAS FIGURAS DE LA GEOMETRÍA.

De nuevo, debemos calcular las coordenadas de todos los puntos, identificar lo que está oculto y la Traducir con colores, líneas de puntos, una opacidad, un orden de dibujo.

4.2.3.

Rectas y planos

Es común tener que ilustrar un problema de geometría que pide dibujar rectas Y planos cuando conocemos sus ecuaciones. Por ejemplo: construir el perpendicular común a ambas rectas d yd0 cuyas ecuaciones paramétricas son:    x=1−t x=t     0 d ≡ y = t y d ≡ y = 2 + 2t     z = 2t z=t Una construcción matemática es construir el plano P paralelo a d que contiene a d0 Esre plano es x − y + z + 2 = 0 Ahora buscamos un plano Perpendicular a P que contrnga a d0 Ç å 2 1 2 0 Calculamos H la intersección de Q con la recta d y obtenmos el punto H , , 3 3 3 Ç å −1 4 −1 y proyectamos H sobre d el punto es K , , 3 3 3 La perpendicular a las dos rectas es aquella que pada por H y K

K

d’ H

d

79

4.3. CURVAS Y SUPERFICIES

4.3. 4.3.1.

Curvas y superficies Representación paramemétrica: plot y foreach

Una curva en el espacio se puede definir mediante una representación paramétrica de un solo parámetro. Así que podemos dibujarlo con la operación de \plot (X,Y,Z) expresando X, Y y Z de acuerdo con una parámetro (llamado \x por defecto). Una superficie puede definirse matemáticamente mediante una representación paramétrica de dos parámetros t y u. TikZ no prevé esta posibilidad, pero puede implementarse. Cuando fijamos t y variamos u, obtenemos una curva en el espacio, dibujada en la superficie. La idea es trazar cada una de estas curvas con la operación de \plot, y esto para diferentes valores de t, que se pueden obtener con un bucle \foreach. El esquema es:

\foreach \t in {...} { plot ( ..., ..., ...) }

Por ejemplo, considere una superficie de revolución sobre eje OZ (como un cilindro, un cono, un esfera). Se obtiene girando la curva plana de la ecuación x = f (z) alrededor del eje OZ y tiene representación paramétrica (con dos parámetros θ y t, θ varía entre 0 y 2π    x = f (t) cos(θ) y = f (t) sen(θ)   z=t Entonces podemos representar la superficie: apilando discos horizontales (un disco es obtenido para la constante t), dibujándolos en orden creciente de los valores de t. Las secciones de la superficie están así materializadas por planos horizontales (líneas de contorno). Con TikZ, los nombres de los parámetros serán \x para θ y \t para t. Vamos a variar \t gracias a un bucle \foreach, y \x será el parámetro de una instrucción plot ,hay que elegir correctamente los valores de \t y y el dominio de \x .

4.3.2.

Hélice

Una hélice circular (un resorte) se define por:      x

θ 2 y = cos(θ)     z = t =

80

4.3. CURVAS Y SUPERFICIES

\draw [domain=-4*pi :4*pi, samples=80, smooth] plot (\x/pi, {cos(\x r)}, {sin(\x r)}) ;

TikZ no tiene un mecanismo automático para resaltar partes ocultas. En esta figura, no es fácil hacerlo, a diferencia de lo que puede suceder con las caras de un cubo. El eje de la hélice es el eje de la abscisa, los giros van de atrás hacia adelante, girando en la dirección opuesta a las agujas de un reloj. Se señalan las limitaciones de TikZ con respecto a las figuras en el espacio. Proporciona una forma sencilla de señalar los puntos en el espacio con tres coordenadas, lo que permite hacer figuras exactas, pero no permite analizar las figuras obtenidas para obtener una representación análoga a la visión humana.

4.3.3.

Cilindro

x2 + y 2 = 1. Cilindro es una superficie de revolución de representación paramétrica es: (cos(θ), sen(θ), t)

\foreach \t in {-1,-0.9,...,1} { \filldraw plot[domain=0:2*pi] ({cos(\x r)}, {sin(\x r)}, \t); }

81

4.4. RESUMEN

4.3.4.

Esfera

No conseguimos del todo el aspecto visual habitual de una esfera, pero esto se explica por la tipo de perspectiva utilizada: perspectiva cavalier (es decir, proyección en un plano) y no Perspectiva central (que corresponde a nuestro modo de visión). Hay otras formas de representar una esfera, pero aquí la representación apilando. Los discos horizontales pueden sugerir el relieve y ocultar las partes que están detrás.

4.3.5.

Paraboloide

z = x2 + y 2 Es una superficie de revolución se obtenido girando una parábola alrededor de OZ. La representación paramemétrica es:

4.4.

Ä√

√ ä t cos(θ), t sen(θ), t

Resumen

TikZ permite expresar las coordenadas (x, y, z) de un punto del espacio, que representa por proyección en el plano de dibujo. La referencia correspondiente del espacio tiene una posición predefinida, que puede modificarse mediante las opciones x, y, y z, que corrigen los vectores proyectados del espacio. Para una representación francesa. estándar, podemos elegir: [x = (0.353cm, -0.353cm), z = (0cm, 1cm), y = (1cm, 0cm)

82

4.4. RESUMEN

TikZ no es un software de modelado 3D, y no proporciona ninguna otra funcionalidad automática aparte de dibujar un punto por (x, y, z). Por lo tanto, debemos decidir las representaciones del relieve, la perspectiva, las partes ocultas. Aparte de los casos simples (caras planas, segmentos), no es necesariamente posible. Entonces es aconsejable recurrir a software especializado. Las curvas se pueden trazar a partir de sus representaciones paramétricas, utilizando la operación plot. Las superficies se pueden representar por sus líneas de contorno, combinando el uso de la instrucción \foreach con el de la operación de trazado.

Capítulo 5 Representación de datos

5.1.

Nociones básicas: plot coordinates

Estamos hablando de una representación gráfica de datos, cuando la información relacionada con un determinado fenómeno se proporciona como una lista de números y se muestra en forma de diagrama significativo. Mostraremos, en este capítulo, cómo hacer los diagramas utilizados de manera habitual en este tipo de situaciones: curvas, gráficos de barras, histogramas, gráficos de sectores.

5.1.1.

Diagrama de líneas

En una clase, un maestro obtuvo una calificación de 10 cuestiones. Cada cuestión tiene una nota. Quiere hacer una representación gráfica.

Cuestión Copia

0 1 2 3 4 5 6 7 8 9 10 0 0 2 0 6 4 7 4 3 0 1

Para ser procesados, estos datos numéricos se representarán en forma de una lista de pares de coordenadas, con la abscisa (la cuestión) y ordenadas (nota obtenida). Así que usando plot coordinates :

\begin{tikzpicture} \draw plot coordinates {(0,0) (1,0) (2,2) (3,0) (4,6) (5,4) (6,7) (7,4) (8,3) (9,0) (10,1)}; 83

84

5.1. NOCIONES BÁSICAS: PLOT COORDINATES

\end{tikzpicture}

El comando \draw plot coordinates {(0,0) (1,0) (2,2) ... (10,1)}; tiene el mismo resultado que \draw (0,0)–(1,0)–(2,2) ...–(10,1); Entonces uno puede preguntarse cuál es la ventaja de usar coordenadas. En este pequeño ejemplo, no es obvio. Pero las series estadísticas a veces tienen una gran cantidad de datos. y usan aplicaciones auxiliares (hoja de cálculo o herramientas estadísticas) que crean archivos de datos para asociarlos con el código fuente del documento. Ahora presentaremos varios ejemplos con estos datos. Para evitar tener que copiarlos varias veces, los definiremos como un comando LATEX reutilizable en los ejemplos que siguen. De hecho, aunque TikZ define sus propias reglas de sintaxis, aún puede beneficiarse de ciertos mecanismos LATEX. El comando es \CuestionesYnotas

\newcommand{\CuestionesYnotas} {(0,0)(1,0)(2,2)(3,0)(4,6)(5,4)(6,7)(7,4)(8,3)(9,0)(10,1)}

Ahora, el ejemplo anterior se puede obtener más simplemente con:

\begin{tikzpicture} \draw plot coordinates {\CuestionesYnotas}; \end{tikzpicture}

5.1. NOCIONES BÁSICAS: PLOT COORDINATES

5.1.2.

85

Mejorando la legibilidad: grid, node, \foreach

Ahora mostraremos cómo mejorar este diagrama para hacer comprensible la información proporcionada. Es necesario colocar estos datos en una cuadrícula para facilitar la lectura de los valores: \draw (-1,0) grid (11,7); Luego podemos etiquetar las abscisas y las ordenadas con comandos de este tipo: \draw (\x,0) node[below]{\x} variando \x entre 0 y 10. \draw (-1,\y) node[left]{\y}; Para esto podemos usar el comando \foreach que permite realizar esto dos instrucciones \foreach \y in {1,2,...,7} \draw(-1,\y)node[left]{\y}; \foreach \x in {0,1,...,10} \draw(\x,0)node[below]{\x}; 7 6 5 4 3 2 1 0

5.1.3.

0 1 2 3 4 5 6 7 8 9 10

Marcar puntos, etiquetas: mark, node, rotate

Nota alcanzada

Puedes poner un texto en cada eje para especificar lo que representa. Usamos para esto un nodo colocado correctamente: \draw (5.5,-0.75) node{Número de cuestión}; \draw (-1.75,3.5) node[rotate=90]{Nota alcanzada}; También puede marcar los puntos significativos de la curva usando la opción [mark] del comando plot \draw[thick] plot[mark=*] coordinates {\CuestionesYnotas}; 7 6 5 4 3 2 1 0

0 1 2 3 4 5 6 7 8 9 10 Número de cuestión

86

5.1. NOCIONES BÁSICAS: PLOT COORDINATES

La marcación de los puntos se realiza con la opción mark = seguida de uno de los 3 valores * + o x que colocan respectivamente •, + o × en cada punto de la lista. La marca size = seguida de una dimensión, permite cambiar el tamaño de la marca. Por ejemplo: ion mark size=, seguido de un [mark=*,mark size=5mm] La opción de ball también permite colocar una marca como esta Otras marcas están disponibles en la biblioteca de marcas. Para eso, en el preámbulo, al cargar TikZ es necesario agregar: \usetikzlibrary{plotmarks} después \usepackage{tikz}

5.1.4.

Diagrama de barras: xcomb, ycomb, polar comb

De forma predeterminada, la operación de plot vincula los puntos dados por una línea poligonal, pero puede reemplace esta línea con barras:

horizontal con la opción xcomb; Vertical con la opción ycomb; Unir los puntos en el origen con la opción de polar comb.

Aquí hay tres pequeños ejemplos donde se muestra la misma lista de coordenadas con las opciones de xcomb, Ycomb y polar comb. Así podemos comparar los diferentes modos de visualización:

\draw[very thick] plot coordinates {(-1.5,1.5)(0.5,2)(1.5,0.5)(-0.5,-0.5)(-2,-1)(1,-1.5)}

xcom

ycom

polar comb

Para el gráfico actual, la mejor opción es ycomb. Las barras también pueden hacerse visibles dibujando líneas más anchas y marcando el punto por ejemplo:

87

5.1. NOCIONES BÁSICAS: PLOT COORDINATES

7 plot[ycomb,mark=*] 6 Nota alcanzada

\draw[line width=4pt] 5 4 3 2 1 0

0

1

2

3

4

5

6

7

8

9

10

Número de cuestión

5.1.5.

Histograma : xcomb, ycomb, line width

Un histograma es también un gráfico de barras, es suficiente para eliminar las marcas y aumentar el ancho de línea para obtener un histograma tradicional:

\draw[line width=0.8cm,color=blue!50] 7 plot[ycomb]

Nota alcanzada

6 5 4 3 2 1 0

0

1

2

3

4

5

6

7

Número de cuestión

8

9

10

88

5.1. NOCIONES BÁSICAS: PLOT COORDINATES

5.1.6.

Tomar datos de un archivo: plot file

En los ejemplos anteriores, los números por nota se dieron como una lista de coordenadas: (0,0) (1,0) (2,2) (3,0) (4,6) (5,4) (6,7) (7,4) (8,3) (9,0 ) (10,1) Sin embargo, la información estadística a menudo está disponible como un archivo de texto que contiene datos numéricos. Aquí está, por ejemplo, el archivo "CuestionesYnotas.txt" que contiene la misma información que arriba en un formato diferente: Hay un par de coordenadas por línea, y hay al menos un separador (espacio o tabulador) entre la abscisa y la ordenada. Es fácil crear un archivo de este 0 0 tipo con cualquier editor de texto ordinaria 1 0 En general, si copia dos columnas de una hoja de cálculo y las pega en el 2 2 editor de texto, obtendrá exactamente lo que desea. 3 0 Una vez que este archivo "CuestionesYnotas.txt" se coloque en la carpeta que 4 6 contiene la fuente .tex del documento que se está escribiendo, obtendremos 5 4 exactamente el mismo resultado al reemplazar la orden: 6 7 \draw plot coordinates {\nombresCopiesParNote}; 7 4 o 8 3 \draw plot coordinates {(0,0) (1,0) (2,2) (3,0) 9 0 (4,6) (5,4) (6,7) (7,4) (8,3) (9,0) (10,1)}; 10 1 por el comando \draw plot file {nombresCopiesParNote.txt};

7

Nota alcanzada

6 5 4 3 2 1 0

0

1

2

3

4

5

6

7

8

9

10

Número de cuestión

La principal ventaja de este enfoque es que, en este caso, es fácil cambiar los datos en el archivo de texto auxiliar, sin modificar el código fuente del documento .tex.

5.2.

89

DIAGRAMA DE BARRAS HORIZONTALES

Una simple compilación permite una actualización rápida de la pantalla de datos. Otra ventaja es el procesamiento de grandes datos estadísticos (cientos de puntos). En este caso, la inclusión de los datos en la fuente sería demasiado dolorosa y causaría riesgos de errores.

5.2.

Diagrama de barras horizontales

5.2.1.

Trigo en el mundo: usando tablas.

Los siguientes datos representan la producción de trigo para los años 2004 y 2005 (en millones de toneladas), para los principales países productores del mundo y se desea hacer una representación gráfica adecuada: Queremos una figura de este tipo: 10 País China India Estados Unidos Rusia Francia Canadá Australia Alemania Pakistán Turquía Ucrania Reino Unido Irán Argentina

Producción 2004 91,96 72,16 58,74 45,41 39,69 25,86 21,91 25,43 19,50 21,00 17,52 15,47 14,57 15,96

Producción 2005 97,45 68,64 58,74 47,70 36,89 26,78 25,09 23,69 21,61 21,50 18,70 14,86 14,31 12,57

China India Estados Unidos Rusia Francia Canadá Australia Alemania Pakistán Turquía Ucrania Reino Unido Irán Argentina

20

30

40

50

60

70

80

90

Producción 2004 Producción 2005

La solución más rápida es hacer el diagrama utilizando un software adecuado, como una hoja de cálculo, por ejemplo. Luego podemos exportar la figura e incluirla en el documento. Por desgracia, en este caso, el estilo de la figura no se ajustará perfectamente a la tipografía del documento, y es posible que encontremos dificultades para escalar la figura. Hacer la figura con TikZ reclama, obviamente, un pequeño esfuerzo que será validado en gran medida por la calidad del resultado obtenido. Como vimos anteriormente, la operación de trazado dibuja un trazado utilizando coordenadas de puntos. Podemos decidir, por ejemplo, representar cada valor mediante una barra horizontal. Cada valor es, por lo tanto, la abscisa de un punto cuya ordenada debe ser fija. Para ello, procederemos, utilizando la hoja de cálculo, a un procesamiento previo de los datos para preparar los archivos de texto necesarios.

90

5.2.

DIAGRAMA DE BARRAS HORIZONTALES

Produciremos los siguientes dos archivos: “ProducBle2005.txt” “ProducBle2004.txt” 91.96 14 97.45 14 72.16 13 68.64 13 58.74 12 58.74 12 45.41 11 47.70 11 39.69 10 36.89 10 25.86 9 26.78 9 21.91 8 25.09 8 25.43 7 23.69 7 19.50 6 21.61 6 21.00 5 21.50 5 17.52 4 18.70 4 15.47 3 14.86 3 14.57 2 14.31 2 15.96 1 12.57 1

5.2.2.

Barras horizontales

Los datos se colocaron en la abscisa y las ordenadas se numeraron por valores decrecientes de modo que las barras horizontales se colocan una debajo de la otra, por país. Vamos a utilizar la opción xcomb de la operación de trazado que enlaza cada punto con el eje y mediante una barra horizontal, como vimos anteriormente. Advertencia: en francés (y en castellano) el separador decimal es la coma. Utilizamos la función de búsqueda-reemplazar nuestro editor de texto para poner puntos decimales en lugar de comas si fuera necesario. Ahora, si usamos el comando:

\draw [thick] plot [xcomb] file {producBle2004.txt};

El resultado da algo como esto:

5.2.

DIAGRAMA DE BARRAS HORIZONTALES

91

Se encuentra que la figura se desborda en el margen derecho de la hoja. De hecho, China produce 91.6 Mt de trigo, la unidad predeterminada de TikZ es el centímetro y así obtenemos una barra de casi un metro por lo tanto hemos usado [xscale=0.09,yscale=0.6] para adecuarlo a la página. Ahora podemos preocuparnos por el estilo de los bares por ejemplo: \draw[line width=4mm,color=blue!50] plot[xcomb] file ProducBle2004.txt

5.2.3.

Instalación de una rejilla : grid, xstep, ystep

Colocaremos líneas verticales para facilitar la lectura de la información. Usamos para esto una cuadrícula cuyos pasos serán elegidos inteligentemente:

\draw (0,0) grid[xstep=10,ystep=15] (100,15);

92

5.2.

DIAGRAMA DE BARRAS HORIZONTALES

La opción xstep = 10 coloca las líneas verticales cada 10 millones de toneladas y la opción ystep = 15 coloca las líneas horizontales cada 15 unidades, que en realidad representan solo la línea de la inferior y la línea superior. También agregamos un subgrid en gris no más pequeño (5 Mt):

\draw[gray,very thin] (0,0) grid[xstep=5,ystep=15] (100,15);

5.2.4.

Etiquetado la figura: \foreach, node

Ahora usaremos los comandos \foreach para escalar la abscisa de la cuadrícula y poner los nombres de los países en las ordenadas.

\foreach \x in {10,20,...,90} \draw(\x,15)node[above]{\x}; \foreach \n/ \y in {Chine/14,Inde/13,États-Unis/12,Russie/11, France/10,Canada/9,Australie/8,Allemagne/7,Pakistan/6, Turquie/5,Ukraine/4,Royaume-Uni/3,Iran/2,Argentine/1} \draw (0,\y) node [left] {\n};

5.2.

93

DIAGRAMA DE BARRAS HORIZONTALES

10

20

30

40

50

60

70

80

90

China India Estados Unidos Rusia Francia Canadá Australia Alemania Pakistán Turquía Ucrania Reino Unido Irán Argentina

Aquí usamos una nueva forma del comando \foreach que permite controlar más variables simultáneamente. Los valores sugeridos entre llaves son, en este caso, una lista de valores múltiples. En esta forma del comando \foreach, hay dos variables: \n que tomará por valores los nombres de la ciudad? \y que tomará el punto de etiquetado. Así como las dos variables están separadas por / en la declaración \n / \y sus valores respectivos en la lista que sigue también están separados por un / como para China / 14 por ejemplo.

5.2.5.

Dos series para una leyenda : plot, shift, node

Es posible colocar la segunda serie estadística (producción de trigo de 2005) en el mismo gráfico usando un color diferente y compensando ligeramente las barras de las dos series verticalmente con yshift. La primera serie se desplaza 2 mm hacia arriba con yshift = 2mm, y la segunda serie se desplaza 2 mm hacia abajo con yshift = -2mm:

\draw [line plot[xcomb] \draw [line plot[xcomb]

width=3mm,color=blue!50,yshift=2mm] file {ProducBle2004.txt}; width=3mm,color=green!50,yshift=-2mm] file {ProducBle2005.txt};

94

5.3. CURVA DE VARIACIÓN.

10

20

30

China India Estados Unidos Rusia Francia Canadá Australia Alemania Pakistán Turquía Ucrania Reino Unido Irán Argentina

40

50

60

70

80

90

Producción 2004 Producción 2005

Es una buena idea agregar al mismo tiempo una leyenda, en dos nodos correctos.

\draw(60,5)node[fill=blue!50,above] {Producción 2004}; \draw(60,5)node[fill=green!50,below] {Producción 2005};

5.3. 5.3.1.

Curva de variación. Producción anual de arroz: pre-tratamiento.

Se desea presentar por una curva la evolución de la producción mundial de arroz durante años desde 1997 hasta 2006. Los datos se presentan en la siguiente tabla: Año producción de arroz en Tm 1997 577 1998 583 1999 612 2000 598 2001 603 2002 572 2003 588 2004 615 2005 627 2006 633

95

5.3. CURVA DE VARIACIÓN.

Queremos presentar las variaciones de la siguiente manera: 640 630 620 610 600 590 580

1997

1998

1999

2000

2001

2002

2003

2004

2005

2006

Parece bastante natural pensar en proceder de la misma manera que en el párrafo anterior.

Crear un archivo de texto con los datos. Utilizar el comando \draw plot file nomDuFichiero.txt

Por desgracia, no es tan simple: TikZ soporta muy mal los puntos cuyas coordenadas son grande. La unidad por defecto del dibujo es el centímetro. Con 2006 obtenemos así una figura de Más de 20 m de ancho. Entonces podemos esperar usar la opción de escala para modificar la escala del dibujo. Por desgracia, tampoco funciona, porque TikZ también usa para sus cálculos internos números de amplitud limitado. Descubrimos experimentalmente (no parece claramente documentado en el manual del autor) que es mejor limitar las coordenadas de los puntos a valores entre 500 cm y +500 cm. Aún puede usar números más grandes en los cálculos, TikZ simplemente no puede usar puntos cuyas coordenadas salen de este rango. En este caso, es imposible dibujar, incluso reduciendo la ventana de visualización con el comando \clip o escalando con la opción de escala. Si se produce un error de compilación con un mensaje de este tipo:

! dimension too large.

\pgf@yy

Por lo tanto debemos comprobar que las coordenadas no sean demasiado grandes. Nuestros datos no se encuentran en este rango. Por lo tanto, realizaremos un ejemplo, para obtener datos más adaptados al dibujo. Podemos decidir:

restar 1990 de años; Divide por 10 los números de millones de toneladas.

96

5.3. CURVA DE VARIACIÓN.

El archivo queda así: Año producción de arroz en Tm 7 57.7 8 58.3 9 61.2 10 59.8 11 60.3 12 57.2 13 58.8 14 61.5 15 62.7 16 63.3

5.3.2.

Curva de variación: plot file

Con el comando \draw plot file ProduccionDeArroz.txt; obtenemos:

5.3.3.

Cuadricula: grid, step

Agregaremos una cuadrícula variando la abscisa entre 7 (para 1997) y 16 (para 2006), las ordenadas entre 57 (para un mínimo de 57.2) y 64 (para un máximo de 63.3): \draw (7,57) grid (16,64);

5.3. CURVA DE VARIACIÓN.

97

Para facilitar la lectura, se puede hacer una cuadrícula más fina de acuerdo con las ordenadas fijando para la cuadrícula de operación la opción [ystep = 0.5]:

Se puede ver que la línea horizontal inferior de la cuadrícula está ausente. De hecho, los errores de redondeo en el cálculo de la cuadrícula a veces producen problemas de este tipo. Para corregir este problema, es suficiente realizar algunas pruebas modificando gradualmente el valor de la opción ystep que corrige el paso vertical de la cuadrícula de la cuadrícula. En el presente caso, se obtiene un resultado satisfactorio al aumentar ligeramente el tono, con: \draw (7,57) grid [ystep=5.00001mm] (16,64);

98

5.3.4.

5.3. CURVA DE VARIACIÓN.

Anotaciones y decoraciones: \foreach, node, mark

Ahora podemos etiquetar los ejes de la cuadrícula para facilitar la lectura de los datos que se muestran. Comenzamos con el eje y con el comando \foreach: \foreach \y in {58,59,...,64} \draw (7,\y) node[left,scale=0.8]{\y0}; Para el etiquetado de las ordenadas, observamos que la variable \y toma los valores de 58 a 64, pero que el contenido del nodo es \y0, es decir, el valor de \y seguido del carácter 0 , que será: 580, 590, ... hasta 640. \foreach \x in {1997,1998,...,2006} \draw (\x-1990,57) node [below,scale=0.8] {\x}; Para el etiquetado de abscisas, utilizamos las capacidades de cálculo de la versión 2 de PGF. La variable \x toma los valores sucesivos de 1997 a 2006, pero los nodos que contienen los años deben ubicarse en los puntos de abscisa sucesivos 7, 8, ... hasta 16. Entonces, colocamos cada nodo en (\x- 1990,57) La abscisa \x-1990 es el valor de \x al que se resta 1990. Por lo tanto, las abscisas serán los valores 7, 8, ... hasta 16 (valores menores que 500). Esta sintaxis, que acepta fórmulas de cálculo en los comandos de Tik Z, está reservada para la versión 2 de TikZ y PGF. Además, solo funciona si la biblioteca de cálculos se ha cargado en el preámbulo, por lo que coloque \usetikzlibrary {calc} justo después de \usepackage {tikz}. Finalmente, haremos una pequeña mejora estética de la figura resaltando la visibilidad de los puntos significativos. Para esto, agregamos, a la operación de trazado, la opción [mark=ball,mark size=3pt] para obtener: 640 630 620 610 600 590 580

1997

1998

1999

2000

2001

2002

2003

2004

2005

2006

99

5.4. DIAGRAMA DE SECTORES

5.4.

Diagrama de sectores

5.4.1.

Categorías socio-profesionales

Aquí está la distribución porcentual de la población francesa, por categoría socioocupacional, para el año 1999: Categoría % Explotaciones agrícolas 2 Artesanos, comerciantes, empresarios. 3 Gerentes, ocupaciones intelectuales superiores. 5 Profesiones intermedias 9 Empleados 13 Trabajadores 12 Jubilados 18 Sin actividad profesional. 38 En este caso, es bastante natural representar estos datos mediante un gráfico circular. El registro completo representará a la población francesa. Cada categoría socioprofesional estará asociada con un sector de ángulo proporcional al porcentaje de la población que representa. Aquí está el aspecto de la figura que uno desea lograr: Empleados Profesiones liberales 13 %

Obreros

9% 12 %

Gerentes 5% Artesanos 3% 2 % Agricultores

Jubilados

18 %

38 %

Inactivos

5.4.2.

Cálculo de ángulos: pre-tratamiento con una hoja de cálculo.

En TikZ, no hay un comando específico para construir automáticamente gráficos circulares. Por lo tanto, será necesario construir cada sector utilizando la operación de arco escrita de la siguiente forma: \draw (x0 , y0 ) – arc (α : β : R) – cycle;

100

R

5.4. DIAGRAMA DE SECTORES

(x0 , y0 )

β

α

Se señala que es necesario, para dibujar un sector, calcular de antemano los ángulos que definen su forma, el ángulo del sector, pero también el ángulo formado por el radio del comienzo del sector con la horizontal, luego que ¿Qué hace el radio del final del sector con la horizontal: Categoría Explotaciones agrícolas Artesanos, comerciantes, empresarios. Gerentes, ocupaciones intelectuales superiores. Profesiones intermedias Empleados Trabajadores Jubilados Sin actividad profesional.

% ángulo en 2 7,2 3 10,8 5 18 9 32,4 13 46,8 12 43,2 18 64,6 38 136,8

o

comienza en: 0 7,2 18 36 68,4 115,2 158,4 223,2

termina en: 7,2 18 36 68,4 115,2 158,4 223,2 360

Estos resultados se obtuvieron utilizando una hoja de cálculo.

5.4.3.

Dibujar los sectores: \draw, arc, cycle, fill, $

Para dibujar un sector se usa su ángulo de inicio y su ángulo de final. Este sector también se puede etiquetar, por ejemplo, calificando la categoría externamente y colocando el porcentaje dentro. Vamos a explicar dos ejemplos en detalle:

Agricultores (2 % sector de 0o a 7, 2o ); Empleados (13 % sector de 68, 4o a 115, 2o ).

2 % Agricultores

\draw[fill=black!2!blue!2] (0,0)--(0:4.5)arc(0:7.2:4.5)--cycle; \draw (3.6:4) node {2\%}; \draw (3.6:5.6) node {Agriculteurs};

101

5.4. DIAGRAMA DE SECTORES

El sector se centra en el origen (X0 , Y0 ) = (0, 0), el radio del círculo es R = 4, 5 cm y el sector va de α = 0o hasta β = 7, 2o se colorea con una mezcla 2 % negro y azul [relleno = negro! 2! Azul! 2], es decir, proporcionalmente al porcentaje de la población que representa. Entonces el sector será más oscuro cuanto mayor sea su ángulo. La etiqueta "2 %" se coloca a 4 cm del centro, dentro del sector, con un ángulo de 3, 6o (la mitad de 7, 2o ), es decir, en la bisectriz de El ángulo del sector. La etiqueta "Agricultores" se coloca, con el mismo ángulo a 5,6 cm del centro, es decir, fuera del sector.

Empleados

13 %

\draw[fill=black!13!blue!13] (0,0)--(68.4:4.5)arc(68.4:115.2:4.5)--cycle; \draw ({(68.4+ 115.2)/2}:4) node {13\%}; \draw ({(68.4+ 115.2)/2}:5.6) node {Emplrados};

Esta vez, el área de, está coloreada con una mezcla de 13 % de azul y negro, por eso es más oscuro que el anterior. Para alinear las etiquetas, el ángulo de la bisectriz se calculó como la media de α+β es decir la media de lo ángulos que delimitan el sector. 2 Para este propósito, se utilizaron las capacidades de cálculo de PGF versión 2: por lo tanto, ((68.4 + 115.2) / 2: 4) se evaluará en (91.8: 4) Hacemos notar aquí que para realizar el cálculo, la expresión a evaluar debe colocarse entre corchetes {(68.4 + 115.2) / 2}, para evitar conflictos de sintaxis. En resumen, en estos dos ejemplos, observamos que los tres comandos utilizados para la construcción de cada sector coloreado y etiquetado tienen la siguiente estructura general:

\draw[fill=black!\p!blue!\p] (0,0) -- (\a:4.5) arc (\a:\b:4.5) -- cycle; \draw ({(\a+\b)/2}:4) node {\p\%}; \draw ({(\a+\b)/2}:5.6) node {\c};

102

5.4. DIAGRAMA DE SECTORES

\a es el ángulo α Se utiliza para definir el inicio del sector. \b es el ángulo β Se utiliza para definir el fin del sector. \p es el porcentaje de la población representada Se utiliza para fijar la intensidad del color. Se utiliza para definir el texto de la etiqueta interna. \c es la categoría socioprofesional Se utiliza para definir el texto de la etiqueta exterior. Además, el tamaño de todo el diagrama está controlado por los valores de radio de tres círculos: círculo de sectores: radio R = 4.5 (en centímetros) Círculo de etiquetas de porcentaje interior: de radio 4. Círculo de etiquetas exteriores de categoría: radio 5,6.

5.4.4.

Diagrama completo : \foreach

Para dibujar todos los sectores del diagrama, los comandos anteriores deben ejecutarse variando los valores de \a, \b, \p y \c. Usaremos cuatro variables \a / \b / \p / \c en el comando \foreach y crearemos la lista de valores que estas variables deben tomar usando la tabla dada al principio. Categoría % Explotaciones agrícolas 2 Artesanos, comerciantes, empresarios. 3 Gerentes, ocupaciones intelectuales superiores. 5 Proporcionará los valores respectivos de las variables \a / \b / \p / \c en la forma: {0 / 7.2 / 2 / Agricultores, 7.2 / 18/3 / Artesanos, 18/36/5 / Gerentes, ... Así obtendremos con un solo \foreach el diagrama completo con todos los Sectores coloreados y etiquetados:

\begin{tikzpicture} \foreach \a/\b/\p/\c in { 0/7.2/2/Agricultores, 7.2/18/3/Artesanos, 18/36/5/Gerentes, 36/68.4/9/Profesiones liberales 68.4/115.2/13/Empleados, 15.2/158.4/12/Ouvriers, 158.4/223.2/18/Juvilados, 223.2/360/38/Inactivos } { \draw[fill=black!\p!blue!\p]

103

5.5. RESUMEN

(0,0) -- (\a:4.5) arc (\a:\b:4.5) -- cycle; \draw ({(\a+\b)/2}:4) node {\p\%}; \draw ({(\a+\b)/2}:5.6) node {\c}; } \end{tikzpicture}

Empleados Profesiones liberales 13 %

Obreros

9% 12 %

Gerentes 5% Artesanos 3% 2 % Agricultores

Jubilados

18 %

38 %

Inactivos

5.5.

Resumen

Aquí se muestran ejemplos de representaciones gráficas de datos. De varias series estadísticas registradas como archivos de texto, se han dibujado gráficos de barras horizontales o verticales, histogramas y gráficos circulares. Se ha demostrado que a menudo es necesario llevar a cabo el procesamiento de datos por adelantado utilizando una aplicación auxiliar como una hoja de cálculo, por ejemplo, para obtener las coordenadas de los puntos significativos del diagrama. También se ha encontrado que un diagrama se construye mediante pruebas sucesivas, primero construyendo una primera figura y luego realizando cambios progresivos para obtener una figura. satisfactoria. Nunca use coordenadas de puntos fuera del intervalo [-500; 500]

Capítulo 6 Grafos: Introducción

6.1.

Nociones básicas

Mostraremos aquí, con la ayuda de ejemplos simples, cómo construir diagramas de grafos que consisten en nodos conectados por arcos.

6.1.1.

Nodos y Arcos:

\draw, –, node, y \node Vamos primero de París a Estrasburgo, lo más simple es escribir:

\draw (0,0)node[draw]{París} -- (4,-1)node[draw]{Estrasburgo};

París Estrasburgo

Pero también podemos definir primero las ciudades y luego conectarlas.

\node[draw] (P) at (0,0) {París}; \node[draw] (E) at (4,-1) {Estrasburgo}; \draw (P) -- (E); 105

106

6.1. NOCIONES BÁSICAS

París Estrasburgo

Si observamos con atención, vemos que los dos scripts dan resultados ligeramente diferentes:

En el primer caso, nodo es una operación ejecutada en un camino. Cada nodo puede considerarse como una decoración del punto con el que está asociado. La línea dibujada por el comando \draw une dos puntos, los nodos son objetos agregados posteriormente y centrados en los puntos. La opción [draw] en la operación del nodo traza el borde del nodo. En el segundo caso, \node es un comando TikZ que permite definir un nodo, nombrarlo y dibujarlo. Luego podemos considerar los nodos como objetos preexistentes que luego vincularemos con el comando \draw. Estos nodos no son puntos, tienen una cierta dimensión, la línea dibujada une los bordes de estos objetos

La sintaxis para definir un nodo con el comando \node es:

\node[] () at () {};

De forma predeterminada, un nodo tiene la forma de un rectángulo que incluye su contenido, como se ve en los dos casos anteriores. Si no hay una opción de dibujo, el contorno no se dibuja, pero el rectángulo tiene dimensiones distintas de cero, incluso si el contenido está vacío, como se puede ver al comparar los dos ejemplos a continuación:

\draw (0,0) --(1,1) --(2,0);

\node (A) at (1,1) {}; \\ \draw (0,0) --(A)--(2,0);

En la figura de la izquierda, la línea de ruta pasa por los tres puntos de referencia, no hay ningún nodo. En la derecha, el nodo, llamado (A), que se ha dibujado, es visible, aunque está vacío, porque la línea de la ruta se detiene en el borde del nodo, solamente que ésta es invisible.

107

6.2. ESTILOS DE NODOS Y ARCOS.

6.1.2.

Ruta anotada: \draw con nodo

Podemos especificar la posición de los nodos (alrededor de los puntos de la ruta) agregando opciones de posición del nodo como arriba o abajo, por ejemplo.

\draw (0,0)node[above]{París}--(4,-1)node[below]{Estrasburgo};

París

Estrasburgo

6.1.3.

Grafo: \node a continuación \draw con el nombre del nodo

El segundo método (los nombres de ruta de conexión se nombran primero) nos interesa más en este capítulo, porque se usará en su lugar para construir diagramas de grafos En este caso, cambiaremos el estilo de las líneas, usando las opciones del comando \draw, como [, >= latex] para obtener flechas:

París Estrasburgo

6.2. 6.2.1.

Estilos de nodos y arcos. Los arcos : \draw, –, |-, -|, y las opciones de las flechas

Ahora estudiaremos cómo construir gráficos que consistan en nodos y arcos. Presentaremos las diferentes opciones que permiten especificar el estilo de arcos y nodos. Encontramos en el ejemplo anterior que el arco entre dos nodos es una línea recta que conecta los centros de los nodos, pero se detiene en la periferia, en el borde rectangular del nodo.

108

6.2. ESTILOS DE NODOS Y ARCOS.

Podemos reemplazar la conexión – por una conexión | - (salida vertical, llegada horizontal) o - | (salida horizontal, llegada vertical):

Lille

París Estrasburgo

También puede utilizar un enlace to, seguido de una opción de curvatura. Para esta opción de curvatura, la forma más fácil es indicar vagamente lo que desea, ya sea una curvatura hacia la derecha con [bend right], o una curvatura hacia la izquierda con [bend left]

Lille

París Estrasburgo

Para la opción de plegado, la curvatura es relativa a la dirección de desplazamiento de la trayectoria en una línea recta definida por dos puntos sucesivos.




La importancia de la curvatura de la opción de bend se puede modificar especificando después de un signo = un ángulo en grados (0O corresponde a la línea recta):

109

6.2. ESTILOS DE NODOS Y ARCOS.

90o 45o París 20o 0o Estrasburgo

Con la operación de enlace a, también se puede ser aún más preciso y usar la opción out = que define el ángulo polar en grados de salida del origen la opción in = para el ángulo de entrada.

Lille

París Estrasburgo

\draw[->,>=latex] (P) to[out=45,in=-90] (L); \draw[->,>=latex] (L) to[out=0,in=1120] (E); \draw[->,>=latex] (E) to[out=230,in=0] (P);

[->|, *-o, >->>, )-( 6.2.2. Extremos de los arcos: Muchas variaciones son posibles para definir los extremos de los arcos. Se hace referencia a la documentación general para obtener más información sobre este tema. He aquí algunos ejemplos :

Tenga en cuenta la necesidad de utilizar llaves en caso de que se utiliza el gancho. Esto evita, al leer la opción, un error de sintaxis.

110

6.2. ESTILOS DE NODOS Y ARCOS.

6.2.3.

Límites del nodo: circle, ellipse, diamond

Vimos la opción de draw de \node que traza el borde del nodo. Este borde puede ser modificado y decorado usando diferentes opciones:

De forma: rectángulo (predeterminado), círculo, elipse, diamante; Estilo: punteado, punteado, grueso, rojo, relleno; De modificación: esquinas redondeadas, anchura o altura mínima.

Para que algunas opciones de formulario estén disponibles, es necesario cargar una biblioteca en el preámbulo. Después de cargar \usepackage {tikz} agregar \usetikzlibrary {shapes}

Lille Paris Estrasburgo Bourges Dijon

\node[draw,rectangle,rounded corners=3pt] (P)at(0,0){París}; \node[draw,minimum height=1cm,dashed] (L)at(2,1) {Lille}; \node[draw,ellipse] (S)at(6,-1) {Estrasburgo}; \node[draw,diamond,aspect=2.5] (B)at(0,-1.5) {Bourges}; \node[draw,circle,fill=gray!50] (D)at(4,-2) {Dijon};

Nota: La opción de diamante está acompañada por su opción de apariencia que establece la proporción del ancho y la altura del nodo.

6.2.4.

Abstraccion de estilos

\tikzstyle, \tikzset Para los gráficos más complejos en los que aparecen nodos y arcos de varios estilos, a veces es útil nombrar los estilos. En lugar de copiar y pegar opciones, los estilos

111

6.2. ESTILOS DE NODOS Y ARCOS.

se definen mediante el comando \tikzstyle (para PGF versión 1) o el comando \tikzset (para PGF versión 2). Por ejemplo, definimos un estilo para una ciudad y el estilo de París será, por ejemplo:

\tikzstyle{ville}=[draw,rectangle,rounded corners=3pt] \tikzstyle{capital}=[draw,ellipse,very thick,fill=black!25]

o con el comando \tikzset de PGF versión 2:

\tikzset{ville/.style={draw,rectangle,rounded corners=3pt}} \tikzset{capital/.style={draw,ellipse,very thick,fill=black!25}}

Bastará con escribir en el código:

\node[capital] (P)at(0,0){Paris}; \node[ville] (L)at(2,1){Lille}; . . .

También definimos estilos radiales y transversales para arcos:

\tikzset{radial/.style={very thick,->,>=stealth’}} \tikzset{transversal/.style={,>=stealth’,thick,dashed}}

Entonces podemos hacer las conexiones:

\draw[radial] (P)--(L); \draw[transversal] (D)--(B); . . .

[Capital] Paris

Lille

tra

sve

radial

rsa

l

[Ville] Esteaburgo

Dijon Bourges

112

6.2. ESTILOS DE NODOS Y ARCOS.

Nota: una de las principales ventajas de la definición de estilo es hacer que el código sea mucho más legible. Pero lo que es más importante, los comandos \tikzstyle o \tikzset se pueden establecer fuera del entorno {tikzpicture}. En este caso, todas las figuras que siguen podrán usar los estilos definidos. Esto permite así estandarizar el estilo de varias figuras distintas. Por otro lado, si los comandos \tikzstyle o \tikzset se definen dentro de un entorno {tikzpicture}, el alcance se limita a este entorno. Advertencia: el comando \tikzstyle de TikZ & PGF versión 1 aún es válido en la versión 2, pero preferiremos el nuevo comando \tikzset que nos permite definir estilos, pero que nos ofrece posibilidades adicionales que usamos. por otro lado. Las definiciones de estilo anteriores se pueden definir en un solo comando \tikzset.

\tikzset{ville/.style={draw,rectangle,rounded corners=3pt}, capitale/.style={draw,ellipse,very thick,fill=black!25}, radial/.style={very thick,->,>=stealth’}, transversal/.style={,>=stealth’,thick,dashed}}

Los estilos definidos de esta manera se pueden usar en todos los entornos {tikzpicture} que sigan.

6.2.5.

Puntos de anclaje del nodo: : N.south, N.left, N.below

Hemos visto en geometría cómo colocar un nodo alrededor de un punto. Aquí mostramos cómo alcanzar ciertos puntos de anclaje de un nodo: \node[draw] (N) at (2,2) {\Large Paris}; \draw[->,>=latex] (0,0) -- (N.north); \draw[->,>=latex] (0,0) -- (N.south); \draw[->,>=latex] (0,0) -- (N.west); \draw[->,>=latex] (0,0) -- (N.east);

Paris

Para visualizar los diferentes puntos de anclaje de un nodo, primero crearemos un nodo grande usando las opciones de decoración que se ven en el párrafo anterior para definir su estilo:

113

6.2. ESTILOS DE NODOS Y ARCOS.

node N

\tikzstyle{noeud}=[minimum width=5cm,minimum height=3cm, rectangle,rounded corners=10pt,draw, fill=yellow!75,text=red,font=\bfseries] \node[noeud] (N) at (0,0) {\Large node N}; Una vez que se coloca el nodo "N", dibujamos en la figura los principales puntos de anclaje, con sus nombres:

(N.north) ×

(N.west)×

(N.center) node×N

×(N.east)

× (N.south)

\draw (N.north) node{$\times$} node[above]{(N.north)}; \draw (N.south) node{$\times$} node[below]{(N.south)}; \draw (N.west) node{$\times$} node[left]{(N.west)}; \draw (N.east) node{$\times$} node[right]{(N.east)}; \draw[blue] (N.center) node{$\times$} node[above=3pt]{(N.center)};

En realidad, hay muchos puntos de anclaje, lo que permite, como siempre con TikZ, ser extremadamente precisos en la disposición de los objetos. Aquí están algunos otros anclajes principales:

(N.north west) ×

( N.40) ( N.north east) × × ×( N.15) ×node×N ( N.text)( N.bas)

(N.south west) ×

( N.south east) ×

114

6.3. TÉCNICAS AVANZADAS.

Los nombres de todos estos puntos son bastante comprensibles. Tenga en cuenta en particular los puntos (N.15) y (N.40) que se refieren a los puntos de intersección del límite del nodo con la línea recta pasando por centro y que forman un ángulo de 15o (respectivamente 40o ) con la horizontal.

6.2.6.

Flechas a los anclajes. N.north, N.center, N.15

El nombre (N) se refiere al centro del nodo como (N.center), pero no es idéntico. Una flecha que señala a (N) tiene su final en el límite del nodo, mientras que una flecha que señala a (N.center) tiene su final en el centro del nodo, como se puede ver en la siguiente figura que resume los casos.

(N.north west)

(N.north east)

(N.north)

(N.40) (N)

(N.15)

(N.west)

(N.text)

(N.south west)

6.3. 6.3.1.

node N

(N.east)

(N.base)

(N.south)

(N.south east)

Técnicas avanzadas. Dibuja un arco sin avanzar en las operaciones del camino:

Además de las operaciones de ruta que define la forma de los guiones, también tenemos edge que dibuja una línea hasta el siguiente punto y deja el lápiz en el

115

6.3. TÉCNICAS AVANZADAS.

origen. Lille

París Estrasburgo

\draw[->,>=latex] (P) edge[bend left] (L) edge[out=0,in=90] (S) edge (D) edge[bend right] (B);

Bourges Dijon

6.3.2.

Etiquetas en los arcos: sloped, midway, pos

Después de especificar en un comando \draw de una ruta (A) - - (B), coloca, por defecto, un nodo en el punto (B). Si en el nodo añadimos la opcion midway, el nodo se colocará a medio camino del punto (A) y el punto (B). Además de la opción midway, también hay opciones de very near start, near start, near end, very near end para las ubicaciones aproximadas y la opción pos = que permite una mayor precisión. El siguiente número a pos = es el porcentaje de ruta para mover el nodo. 0 estária en (A), 0,5 en el medio de (A) y (B) y 1 estaría en (B).

B near end N midway pos = 0.7 M S very near start A A R

B

B M pos = 0.5

Q pos = 0.25 A

Las etiquetas están escritas horizontalmente de forma predeterminada, pero como se ve en los ejemplos, agregando la opción de pendiente (sloped) permite inclinar las etiquetas de acuerdo con la pendiente de la ruta: node [sloped, midway]

con sloped B y wa N end midM near A

.5 =0 s po M 0.7 = Q 0.25 s S o p s= o A R A p very near start B

B

116

6.3.3.

6.3. TÉCNICAS AVANZADAS.

Inclinación de las etiquetas : sloped, rotate

te

xt o

También es posible cambiar la inclinación predeterminada del texto de la etiqueta en la operación node con la opción [rotate = ] seguido de un ángulo en grados:

texto \node[draw] texto

\node[draw,rotate=45]Texte

La rotación del texto se realiza desde la posición normal del texto, es decir, en relación con la horizontal. La rotación también se puede aplicar a los nodos ubicados en una posición intermedia de una ruta entre dos puntos consecutivos:

sloped,pos=0.25

pos = 0.25

p os

N

A

N

=0

.75

R

rotate=45

R B

Si la opción sloped está presente, la rotación del texto se realiza desde la tangente a la ruta en la posición de la etiqueta.

6.3.4.

Cambiando el tamaño de las anotaciones: scale

Finalmente, podemos modificar el tamaño de las etiquetas del nodo con la opción scale = seguido un coeficiente multiplicativo:

scale=0.75

scale=1.5

G

P

sloped,scale=1.5

G

N sloped,scale=0.75

P

N

117

6.3. TÉCNICAS AVANZADAS.

6.3.5.

Insertar una figura secundaria, subfiguras: scope, shift, rotate, scale

Supongamos que tenemos dos figuras, cada una definida en un entorno tikzpicture: B C J Fig. 1

O

I Fig. 2

O

En cada figura, el punto O tiene coordenadas (0, 0). Si copiamos el código de las dos figuras. dentro del mismo entorno tikzpicture, ya no se separarán:

B C J Fig. 1

O

I

El problema entonces es el siguiente: ¿cómo crear en el mismo entorno tikzpicture un dibujo con estas dos figuras, pero separadas? Y, además, nos gustaría poder copiar directamente el código de cada figura por separado y no tener que volver a calcular las nuevas coordenadas. Afortunadamente, existe un entorno en el que se puede ver como un subentorno de tikzpicture al que se pueden asignar opciones de desplazamiento, como la opción xshift (seguida de un desplazamiento horizontal), la opción yshift (seguida de un desplazamiento vertical ) o la opción shift seguida de las coordenadas de un vector de translación). En este último caso, tenga en cuenta las llaves alrededor de los coordenadas del vector de translación. Estas llaves son necesarias para que la coma no se considere una opción de separador. Por ejemplo: [xshift=2] [yshift=25mm] o [shift=(5,2)]

118

6.3. TÉCNICAS AVANZADAS.

B J

O

C I

shift = (5,-1)

Si agregamos la opción [rotate = 60] al código de la primera figura, conseguimos una rotación de 60 grados a esa figura:

B

rotate=60 I J O

C

shift = (5,-1)

Nota: La rotación solo concierne al dibujo del camino. Se ha encontrado que los textos han mantenido su alineación original. Es un poco sorprendente, pero razonable: si ha creado una figura compleja con muchas anotaciones de texto, puede rotarla fácilmente, las anotaciones siguen siendo legibles porque mantienen la misma orientación. Sin embargo, a veces es útil modificar el anclaje de ciertos nodos. La opción [shift = (5, -1), rotate = -45, scale = 1.5] ahora se ha asignado al ámbito que contiene el código de la segunda figura, por lo que se ha traducido, girado y su tamaño tiene aumentado en un 50 %. C

rotate=60 I J O

scale=1.5

shift = (5,-1)

rotate=-45

B

Nota: El efecto de las opciones de rotación o escala, cuando se aplica a uno de los entornos de tikzpicture, no es el mismo que si se aplicara a la operación del nodo:

119

6.3. TÉCNICAS AVANZADAS.

rotar o escalar para entornos tikzpicture: Son las líneas del dibujo las que constituyen la figura las que sufren las transformaciones. La figura gira, su tamaño se modifica, pero las anotaciones textuales realizadas mediante nodos mantienen sus tamaños y sus orientaciones: rotar o escalar para la operación del nodo: Son los textos contenidos en el nodo que sufren las transformaciones. Una vez que se han realizado estas transformaciones, ya no hay ningún cambio en el texto, ni en el tamaño ni en la orientación al modificar las opciones del entorno de tikzpicture. Sin embargo, hay movimiento de textos que permanecen vinculados a sus puntos de anclaje.

6.3.6.

Textos largos : text width, justified, centered

El contenido de un nodo suele ser bastante corto y se coloca en una sola línea. Sin embargo, es posible colocar en un nodo textos más largos, en varias líneas, como por ejemplo en la leyenda de una figura.

Este comentario tiene un ancho de 3 cm y está justificado

Este comentario tiene un ancho de 3 cm y está centrado

Texto Centrado

Este comentario tiene un ancho de 3 cm

Texto Jusifcado

La opción de text width (ancho de texto) permite limitar el ancho del contenido textual del nodo y provocar su visualización en varias líneas:

\node[draw,text width=3cm] at(0,0){Este...cm}; \node[draw,text width=3cm,text justified] at(4,0){Este...cm}; \node[draw,text width=3cm,text centered] at(8,0){Este...cm};

Este comentario que esa centrado no pasará de un ancho de 3 cm

text badly centered

Este comentario no pasará de un ancho de 3 cm

text badly ragged

Las opciones de texto justificado o texto centrado especifican el tipo de alineación del texto. Las opciones de text badly ragged o text badly centered o nœud : le permiten prohibir la separación de palabras en el texto del nodo:

120

6.3. TÉCNICAS AVANZADAS.

También es posible utilizar simultáneamente las opciones de ancho mínimo, alto mínimo y ancho de texto en el mismo nodo. Entonces controlamos el tamaño del rectángulo del nodo:

Este comentario que esa centrado y no pasará de un ancho de 3 cm

mínimo de lato 4 cm

ancho miínimo de 6 cm

ancho de texto 3cm

\node[draw,text width=3cm,text centered, minimum width=6cm, minimum height=4cm] at (0,0) {Este ... 3cm}

6.3.7.

Sin pasar por un nodo.

Si construimos un gráfico complejo, a veces puede suceder que algunos nodos obstaculicen el paso de un arco, como se muestra a continuación, donde las opciones más simples no permiten pasar de A a B sin interferir con los otros nodos.

B

P Q

A

R

Primero definiremos un nodo auxiliar (n), invisible, ligeramente a la derecha y debajo (2 mm) de la esquina sureste del nodo (P):

\coordinate[shift={(2mm,-2mm)}] (n) at (P.south east);

Para esto, usamos la opción [shift = (2mm, -2mm)], aplicada al anclaje (P.south east) del nodo (P). Luego traza:

121

6.4. EJERCICIOS

\draw[->,thick,>=latex,rounded corners=5pt] (A) |- (n) |- (B);

B P

in=220 (n)

Q

A

R

out=0

Se agregó una pequeña marca discreta "·" a la figura para mostrar la posición del punto auxiliar (n) "invisible" junto al punto (P).

Tenga en cuenta que también fue posible evitar los obstáculos con una flecha curva que pasa entre Q y R, siempre que ajuste los ángulos de entrada y salida en los nodos, utilizando las teclas out = y in = de la operación to.

6.4.

Ejercicios

En cada ejercicio, se pide realizar la figura especificada. Todas estas figuras se pueden construir solo en Tik Z con nodos y arcos, obviamente definiendo estilos usando las diferentes opciones. La principal dificultad en estos ejercicios es hacer que la figura esté lo más cerca posible del modelo respetando las posiciones y los ángulos.

6.4.1.

Vocal o Consonante A B Vocal

C D E

Ayuda:

Consonante

122

6.4. EJERCICIOS

Coloque las letras separadas 1 cm y Vocal y consonante a 4 cm de cada una. Definimos tres estilos:

\tikzstyle{lettre}=[circle,draw,fill=yellow!50,text=blue] \tikzstyle{type}=[circle,fill=red!25] \tikzstyle{flecha}=[->,>= stealth,thick]

Solo hay que enlazar los diferentes nodos.

6.4.2.

Los puntos cardinales

Ayuda: Definimos el estilo de los puntos cardinales:

\tikzstyle{punto}=[circle,fill=blue!25,minimum width=5em]

La palabra más larga es "Oeste", por lo que establecemos un ancho mínimo = 5em, un ancho de al menos 5 multiplicado por el ancho de la letra "m", de modo que todos los círculos tengan el mismo tamaño. Definimos el estilo para las flechas:

\tikzstyle{flecha}=[,>=latex,line width=2mm]

Trazamos:

\node[point] (N) at (2,0){Norte}; \node[point] (S) at (-2,0){Sur}; \draw[flecha] (N)--(S); ...

123

6.4. EJERCICIOS

Norte

Oeste

Este

Sur

Orientación

Ayuda: Definimos los nodos H: (0,0), M: (2,0), S: (5,0), D: (8,0) y V: (10,0) con la opción rotar = y ángulos 45, 180, 60, 90 y estilo para flechas:

A la espalda

di en te

Vertical

o

60

Pe n

aa

horizontal

jad

d

Ba

45 o

\tikzstyle{flecha}=[,>=stealth,very thick]

\draw[fleche] (H.south) to[bend right=90] (S.north); \draw[fleche] (M.east) to[bend left] (D.west); \draw[fleche] (D.east) to[out=-60,in=-90] (V.west);

Por ejemplo, en la primera línea conectamos (H.south) a (S.north) que está debajo del nodo (S) porque el nodo (S) está en la parte posterior [rotar = 180], y su norte está abajo!

124

6.4.3.

6.4. EJERCICIOS

Pentagono

Solución El Pentágono está centrado en e origen y su radio es de 2.

\tikzstyle{punto}=[circle,draw,thick,fill=yellow] \draw (90:2) node[punto]{} -- (162:2) node[punto]{} -- (234:2) node[punto]{} -- (306:2) node[punto]{} -- (378:2) node[punto]{} -- cycle;

6.4.4.

Benceno H C H

C

C

C H

Solución

\begin{tikzpicture}[scale=0.75] \tikzstyle{punto}=[circle,fill=white]

C H

H

125

6.5. RESUMEN

\tikzstyle{p}=[thick,fill=white,] \foreach \t in {18,90,...,378} { \draw[double] (\t:2)node[punto]{C}--({\t+72}:2) node[punto]{C}; \draw [P,line width=0.2mm] (\t:2.3)--(\t:2.9); \draw[p] (\t:3.2)node{H}; } \end{tikzpicture}

6.4.5.

Árbol genealógico Papá

Mamá

Papá

Mamá

Papá

Mamá

Bibi

Ayuda Definimos el estilo: \tikzstyle{lien}=[->,>=stealth,rounded corners=5pt,thick] Luego podemos definir, con el comando \tikzstyle, tres estilos distintos para Bibi, hombres y mujeres, pero si tiene la versión 2.00 de TikZ & PGF, puede usar El comando \tikzset para crear un estilo personalizable: \tikzset{individu/.style={draw,thick,fill=#1!25},individu/.default={green}} Aquí, la opción individual proporciona un fondo de relleno predeterminado = verde! 25, pero puede aceptar un nombre de color que reemplazará al # 1 en la definición. Por lo tanto, individual = rojo da un relleno de fondo = rojo! 25. Luego podemos colocar los nodos, luego los enlaces:

6.5.

Resumen

Construimos gráficos definiendo y nombrando nodos, que son cuadros de texto, con el comando \node, y luego conectándolos por arcos con el comando \draw.

126

6.5. RESUMEN

Puede cambiar el estilo, tamaño y orientación de los textos escritos en los nodos con la opción de rotar o la escala. Los arcos se dibujan con el comando \draw, y sus diversas operaciones como | -, - | O a que permiten modificar la forma de los arcos. Con la operación de edge, también es posi ble dibujar arcos desde un nodo sin avanzar.

Opciones como thick, dashed, ->, *-o grueso, discontinuo, ->, * -o, o [- (le permiten especificar estilos de línea o de flecha. También se pueden agregar anotaciones en los arcos con el nodo de operación y una de las opciones a medio camino, pos = o pendiente. Para la construcción de figuras complejas, el entorno de alcance permite que el diagrama se descomponga en subfiguras creadas primero de manera independiente y luego ensambladas con posibles transformaciones usando opciones como desplazamiento, rotación o escala.

Capítulo 7 Grafos : Ejemplos En el capítulo anterior, presentamos las herramientas básicas para dibujar gráficos. Ahora haremos gráficos complejos para mostrar cómo implementar estas herramientas.

7.1.

7.1.1.

Grafica de una relacion.

Relaciones entre cuadriláteros.

Conocemos diferentes relaciones entre cuadriláteros, ya que: un cuadrado es un rectángulo, un cuadrado es un rombo. Queremos dibujar una gráfica que exprese estas diferentes relaciones entre los siguientes tipos de cuadriláteros: paralelogramo, rectángulo, cuadrado, rombo. Cada tipo de cuadrilátero estará representado por un nodo y cada relación estará representada por una flecha. Rectangulo esto sigPor ejemplo, "El cuadrado es un rectángulo": Cuadrado nifica que todos los cuadrados se incluyen estrictamente en los rectángulos.

127

128

7.1. GRAFICA DE UNA RELACION.

3

Cuadrilátero

Paralelogramo

Rectángulo

1.5

Rombo

-1.5

Cuadrado -3

0

0

3

La colocación de los nodos se realizó a lápiz sobre papel, luego se simuló centrando cada nodo en puntos de coordenadas razonables. Para hacer que la figura sea más legible, definiremos un estilo de nudo escribiendo cada nombre en azul sobre un fondo amarillo claro, en un rectángulo enmarcado en negro.

\tikzstyle{quadri}=[rectangle,draw,fill=yellow!50,text=blue] \node[quadri] (Q) at (0,3) {Quadrilatère}; . . . etc.

Cuadrilátero

Paralelogramo

Rectángulo

Rombo

Cuadrado

Ahora agregamos las relaciones conectando los nodos por flechas. El estilo de estas flechas (llamaremos estun): líneas punteadas muy gruesas, con una punta de tipo látex. Añadimos el siguiente código a nuestra figura:

\tikzstyle{estun}=[->,dotted,very thick,>=latex]

129

7.1. GRAFICA DE UNA RELACION.

Cuadrilátero

Paralelogramo

Rectángulo

Rombo

Cuadrado

El resultado no es legible porque algunas flechas cruzan los nodos y otras están superpuestas. Primero evitemos las superposiciones reemplazando las líneas con curvas. Para esto, el enlace se reemplaza por un enlace a con una opción [bend left] (doblar a la derecha) o [bend right] (derecha).

Cuadrilátero

Paralelogramo

Rectángulo

Rombo

Cuadrado

Para separar las flechas superpuestas y hacer visible las relaciones entre cuadrantes, mueva el nodo "Cuadrado" y la flecha "Rombo" y luego doble las flechas "Cuadrilátero-cuadrado" y la flecha "Paralelogramo-Cuadrado": El nodo "Cuadrado"

Cuadrilátero

Paralelogramo

Rectángulo

Todavía es posible mejorar la figura.

Rombo

Cuadrado

130

7.1.2.

7.1. GRAFICA DE UNA RELACION.

Gráfico final: curvatura bend, Anclaje P.east

Alinearemos la flecha "Cuadrilátero-Rombo" y haremos que llegue a la esquina sureste del nodo "Cuadrilátero" \ draw (L) - (Q.south east) Luego se hacen otros pequeños cambios en la posición de los extremos de las flechas. "Rombo Cuadrado" y "Paralelogramo Cuadrado". Finalmente, ponemos en el lado izquierdo de la figura, una leyenda que especifica la semántica de la flecha: \ draw[estun] (-4.5,2.5) – (-3,2.5) node[midway,above]es un;

es un

Cuadrilatero

Paralelogramo

Rectángulo

Rombo

Cuadrado

\begin{tikzpicture} % Definición de estilos \tikzstyle{quadri}=[rectangle,draw,fill=yellow!50,text=blue] \tikzstyle{estun}=[->,>=latex,very thick,dotted] \node[quadri] (Q) at (0,3) {Cuadrilatero}; \node[quadri] (P) at (0,1.5) {Paralelogramo}; \node[quadri] (R) at (-3,0) {Rectángulo}; \node[quadri] (L) at (3,0) {Rombo}; \node[quadri] (C) at (5,-1.5) {Cuadrado}; % les flèches \draw[estun] (P)--(Q); \draw[estun] (R)to[bend left](Q); \draw[estun] (R)--(P); \draw[estun] (L)--(Q.south east); \draw[estun] (L)--(P); \draw[estun] (C)to[bend right](Q.east); \draw[estun] (C)to[bend left](P); \draw[estun] (C)--(L.south east); \draw[estun] (C)to[bend left](R); % la légende \draw[estun] (-4.5,2.5)--(-3,2.5)node[midway,above]{es un}; \end{tikzpicture}

131

7.2. ORGANIGRAMA.

7.2.

Organigrama.

7.2.1.

Suma de los n primeros números naturales

Dibuje un diagrama de flujo del programa que calcula la suma de los n primeros números naturales.

INICIO Leer un entero positivo S=0 Mientras N mayor que 0 hacer: S =S+N N =N −1 Mostrar suma S FIN

7.2.2.

Estilo de los nodos : draw, ellipse, fill, text

Como en el ejemplo anterior, representaremos un gráfico compuesto por nodos conectados mediante flechas. Pero, en este caso, hay varios tipos de nodos que uno desea diferenciar gráficamente. Definiremos estilos para cada tipo de nodo del diagrama:

“inifin” para marcadores de inicio y fin: elipse; “en” para entada salida: rectángulo con esquinas redondeadas; “instruct” para las instrucciones: rectángulo; “test” para la prueba: rombo.

\begin{tikzpicture} \tikzstyle{inifin}=[ellipse,draw,text=red] \tikzstyle{instruct}=[rectangle,draw,fill=yellow!50] \tikzstyle{test}=[diamond, aspect=2.5,thick, draw=blue,fill=yellow!50,text=blue] \tikzstyle{en}=[rectangle,draw,rounded corners=4pt,fill=blue!25] \end{tikzpicture}

Luego colocaremos los elementos dándoles un nombre significativo:

132

7.2. ORGANIGRAMA.

\node[inifin] (inicio) at (-2,5) {Inicio}; \node[en] (leer) at (-2,4) {Leer un número positivo: $N$}; \node[test] (test) at (0,0) {$N>0$ \ ?}; \node[instruct] (init) at (-2,2.5) {$S\leftarrow 0$}; \node[instruct] (mas) at (0,-2.5) {$S\leftarrow S+N$}; \node[instruct] (mientras) at (0,-3.5) {$N\leftarrow N-1$}; \node[en] (resultado) at (-4,-2) {Resultado de la suma: $S$}; \node[inifin] (fin) at (-4,-3) {Fin};

Inicio

5

Leer un número positivo: N

4

S←0

2.5

N >0 ?

Resultado de la suma: S S ←S+N Fin N ←N −1 -4

7.2.3.

-2

0

-2 -2.5 -3 -3.5

0

Forma de las flechas

Basta con representar la secuencia ordenada de instrucciones mediante flechas cuyo estilo siguiente se define primero:

\tikzstyle{suite}=[->,>=stealth’,thick,rounded corners=4pt] \draw[suite] (inicio) -- (leer); \draw[suite] (leer) -- (inicio); \draw[suite] (inicio) -- (test.north); \draw[suite] (test) -- (mas);

133

7.2. ORGANIGRAMA.

\draw[suite] (mas) -- (menos); \draw[suite] (test) -| (resultado); \draw[suite] (resultado) -- (fin);

Inicio Leer un número positivo: N

S←0

N >0 ?

Resultado de la suma: S S ←S+N Fin N ←N −1

× (1,1.5) Se pierde la flecha que hace un bucle entre la instrucción N ←− N − 1 y la parte superior del rombo de prueba. Como ella debe pasar por alto la figura por la derecha, introduciremos dos puntos auxiliares. Así que añadimos el comando:

S ←S+N

\draw[suite] (moins) |- (3,-4.5) |- (1,1.5) -- (test.north);

N ←N −1

N >0 ?

(3,-4.5) × Todo lo que queda es etiquetar las salidas del rombo de prueba:

\draw[suite] (test) -- (mas) node[midway,fill=white] {si}; \draw[suite] (test) -| (resultado) node[near start,fill=white] {no};

134

7.2. ORGANIGRAMA.

Inicio Leer un número positivo: N

S←0

no

N >0 ? si

Resultado de la suma: S S ←S+N Fin N ←N −1

Código completo de la figura:

\begin{tikzpicture} \tikzstyle{inifin}=[ellipse,draw,text=red] \tikzstyle{instruct}=[rectangle,draw,fill=yellow!50] \tikzstyle{test}=[diamond, aspect=2.5,thick, draw=blue,fill=yellow!50,text=blue] \tikzstyle{en}=[rectangle,draw,rounded corners=4pt,fill=blue!25] \node[inifin] (inicio) at (-2,5) {Inicio}; \node[en] (leer) at (-2,4) {Leer un número positivo: $N$}; \node[test] (test) at (0,0) {$N>0$ \ ?}; \node[instruct] (init) at (-2,2.5) {$S\leftarrow 0$}; \node[instruct] (mas) at (0,-2.5) {$S\leftarrow S+N$}; \node[instruct] (menos) at (0,-3.5) {$N\leftarrow N-1$}; \node[en] (resultado) at (-4,-2) {Resultado de la suma: $S$}; \node[inifin] (fin) at (-4,-3) {Fin}; \tikzstyle{suite}=[->,>=stealth,thick,rounded corners=4pt] \draw[suite] (inicio) -- (leer); \draw[suite] (leer) -- (init); \draw[suite] (init) -- (test.north); \draw[suite] (test) -- (mas); \draw[suite] (mas) -- (menos); \draw[suite] (test) -| (resultado); \draw[suite] (resultado) -- (fin); \draw[suite] (menos) |- (3,-4.5) |- (1,1.5) -- (test.north); \draw[suite] (test) -- (mas) node[midway,fill=white] {si}; \draw[suite] (test) -| (resultado) node[near start,fill=white] {no};

7.3. DIAGRAMAS SINTÁCTICOS

135

\end{tikzpicture}

7.3.

Diagramas sintácticos

7.3.1.

Gramática de expresiones matemáticas

Dibujar los diagramas (simplificados) de expresiones matemáticas:

Una expresión es una suma de términos separados por +; Un término es un producto de factores separados por ×; Un factor es: una Variable o una Expresión entre (y); Una variable es: ya sea X, o Y, o Z.

Para el especialista, aquí está esta gramática, señalada en BNF:

Expresión :: = Término {"+" Término} *\\ Término :: = Factor {"x" Factor} * Factor :: = Variable | "(", Expresión, ")" Factor ::= Variable | "(" , Expression , ")" Variable ::= "X" | "Y " | "Z"

Nota: por simplicidad nos limitamos a tres variables y no se espera ningún valor numérico. He aquí algunos ejemplos :

X ; X x Y ; X + Y ; X + (Y x Z) ; (X + Y ) x (Z + X)

7.3.2.

Alineación de nodos, etiquetado.

Ahora conocemos los métodos de construcción de gráficos que aplicaremos a este problema. Definimos diferentes estilos:

elemento para elementos sintácticos (Factor Término ...)

136

7.3. DIAGRAMAS SINTÁCTICOS

terminal para los elementos terminales de la gramática (+ x ...); flecha para conectar arcos.

\tikzstyle{elemento}=[rectangle,draw,fill=white] \tikzstyle{terminal}=[circle,draw] \tikzstyle{flecha}=[->,>=stealth,thick,rounded corners=4pt]

Los nodos se colocan alineando correctamente, luego los arcos orientados para vincular los diferentes nodos.

\begin{tikzpicture} \node[above right] at (-1,0) {Expression}; \node[elemento] (T) at (4,0) {Terme}; \node[terminal] (p) at (4,-1) {$+$}; \draw[flecha] (0,0) -- (T); \draw[flecha] (T) -- (8,0); \draw[flecha] (6,0) |- (p); \draw[flecha] (p) -| (2,0); \end{tikzpicture}

Expresión

Término +

De la misma manera, construiremos los sucesivos diagramas sintácticos:

Término

Factor ×

\node[above right] at (-1,0) {Término}; \node[elemento] (F) at (4,0) {Factor}; \node[terminal] (m) at (4,-1) {$\times$}; \draw[flecha] (0,0) -- (F); \draw[flecha] (F) -- (8,0); \draw[flecha] (6,0) |- (m); \draw[flecha] (m) -| (2,0);

Factor

Variable (

Expresión

)

137

7.3. DIAGRAMAS SINTÁCTICOS

\node[above right] at (-1,0) {Factor}; \node[elemento] (V) at (4,0) {Variable}; \node[terminal] (po) at (2,-1) {$($}; \node[elemento] (E) at (4,-1) {Expresión}; \node[terminal] (pf) at (6,-1) {$)$}; \draw[flecha] (0,0) -- (V); \draw[flecha] (V) -- (8,0); \draw[flecha] (1,0) |- (po); \draw[flecha] (po)--(E); \draw[flecha] (E) -- (pf); \draw[flecha] (pf) -| (7,0);

Variable

X Y Z

\node[above right] at (-1,0) {Variable}; \node[terminal] (x) at (4,0) {$X$}; \node[terminal] (y) at (4,-1) {$Y$}; \node[terminal] (z) at (4,-2) {$Z$}; \draw[flecha] (0,0) -- (x); \draw[flecha] (x) -- (8,0); \draw[flecha] (2,0) |- (y); \draw[flecha] (y) -| (6,0); \draw[flecha] (1,0) |- (z); \draw[flecha] (z) -| (7,0);

7.3.3.

Agrupación de figuras : scope, yshift

Las cuatro figuras fueron construidas en ambientes de tikzpicture separados. Ahora nos gustaría agruparlos en una figura. Uno podría simplemente copiar su código en un solo entorno tikzpicture:

\begin{tikzpicture} \node[above right] \node[above right] \node[above right] \node[above right] \end{tikzpicture}

at at at at

(-1,0) (-1,0) (-1,0) (-1,0)

{Expression}; ... {Expression}; ... {Terme}; ... {Variable}; ...

Desafortunadamente, en este caso, todas las figuras se superpondrían ya que las coordenadas se ubicaron en el origen.

138

7.3. DIAGRAMAS SINTÁCTICOS

Entonces se podría pensar en modificar las coordenadas de todos los nodos. Es posible, pero sería largo. Usaremos una instrucción que cambia cada figura hacia abajo 2.5 cm desde la anterior. De hecho, es más exacto decir: desplaza la segunda figura de 2,5 cm, la tercera de 5 cm, etc. El desplazamiento vertical se obtiene con la opción yshift, y para especificar qué parte del código aplica esta opción, se inserta el código correspondiente en un entorno scope. Cuando TikZ aplica la opción [yshift = -2.5cm] al punto (-1.0), en realidad dibuja el punto (-1, -2.5), y así sucesivamente. Aplicanremos a cada ámbito:

[yshift = -2.5cm], [yshift = -5cm], [yshift = -7.5cm].

\begin{tikzpicture} \node[above right] at (-1,0) \begin{scope}[yshift=-2.5cm] \node[above right] at (-1,0) \end{scope} \begin{scope}[yshift=-5cm] \node[above right] at (-1,0) \end{scope} \begin{scope}[yshift=-7.5cm] \node[above right] at (-1,0) \end{scope} \end{tikzpicture}

{Expresión}; ... {Término}; ...

{Factor}; ...

{Variable}; ...

139

7.4. GRAFICO DE PRUEBA

Expresión

Término +

Término

Factor ×

Factor

Variable (

)

Expresión

Variable

X Y Z

7.4. 7.4.1.

Grafico de prueba Resolución de una ecuación

Queremos explicar, mediante un diagrama, la resolución de la ecuación de primer grado:2x + 3 = 7 Resolviendo la ecuación

2x + 3

= 7

Resta 3 de cada miembro

2x + 3 − 3

=

Simplificamos

2x

= 4

Dividimos cada miembro por 2

2x 2

=

2 2

Simplificamos

x

=

2

7−3

La solucion es S = {2} Queremos presentar el esquema de resolución en esta forma:

140

7.4. GRAFICO DE PRUEBA

2x + 3

=

7 −3

−3 =

2x

4 /2

/2 x

=

2

S = {2}

7.4.2.

Ubicación del nodo: \ node (a) at (x, y), below

La figura final que se propone arriba es el objetivo a alcanzar. De hecho, el diagrama se hizo primero a mano. Los diferentes elementos se codifican sucesivamente por prueba y error para obtener el resultado deseado. Representaremos nuestra ecuación utilizando 3 nodos nombrando los miembros izquierdo (g) y derecho (d). Por lo tanto, los nodos (g) y (d) pueden ser orígenes de las flechas:

\begin{tikzpicture} \node (g) at (-1.25,4.5) {$2x+3$}; \node at (0,4.5) {$=$}; \node (d) at (1,4.5) {$7$}; \end{tikzpicture}

2x + 3

=

7

Enmarcaremos los dos miembros de la ecuación definiendo el estilo del miembro, que luego se agregará como una opción de los nodos (g) y (d).

\tikzstyle{membre}= [rectangle,draw,thick,dotted] \node[membre] (g) at (-1.25,4.5) {$2x+3$}; \node[membre] (d) at (1,4.5) {$7$};

2x + 3

=

7

141

7.4. GRAFICO DE PRUEBA

Ahora podemos completar el diagrama:

2x + 3

=

7

2x

=

4

x

=

2

S = {2}

Varios ajustes de las coordenadas de los diferentes nodos fueron necesarios para obtener una disposición satisfactoria y corregir los espacios.

\node[membre] (gg) at (-1,2.5) {$2x$}; \node [below=-5pt] at (0,2.5) {$=$}; \node[membre] (dd) at (1,2.5) {$4$}; \node[membre] (ggg) at (-1,0.5) {$x$}; \node [below=-5pt] (egal) at (0,0.5) {$=$}; \node[membre] (ddd) at (1,0.5) {$2$}; \node[membre] (reponse) at (0,-1) {$S=\{2\}$};

Tenga en cuenta que hemos nombrado (igual) al nodo que contiene el signo igual de la penúltima ecuación y (reponse) al nodo que contiene la última ecuación. De hecho, tenemos la intención de conectarlos por una flecha.

7.4.3.

Colocación y etiquetado de las flechas.

Ahora colocaremos flechas, usando etiquetas y las operaciones que se realizarán en cada miembro de la ecuación. Por ejemplo :

\draw[->] (g)--(gg) node[midway]{$-3$}; \draw[->] (d)--(dd) node[midway]{$-3$};

142

7.4. GRAFICO DE PRUEBA

2x + 3

=

7 −3

−3 =

2x

4

Usamos la opción de punta flecha y en \ draw la opción [midway] para colocar la etiqueta en medio del camino. La definición de las flechas y las etiquetas de los respectivos estilos de operación y etiqueta permiten mejorar la punta de las flechas y dibujar etiquetas sobre un fondo gris claro:

\tikzstyle{operation}=[->,>=latex] \tikzstyle{etiquette}=[midway,fill=black!20] \draw[operation] (g)--(gg) node[etiquette]{$-3$}; \draw[operation] (d)--(dd) node[etiquette]{$-3$};

2x + 3

=

−3

−3

7.4.4.

7

2x

=

4

2x + 3

=

7

Flechas curvas

−3

−3 2x

=

/2

/2 x

4

=

2

S = {2}

\begin{tikzpicture} \tikzstyle{membre}= [rectangle,draw,thick,dotted] \tikzstyle{operation}=[->,>=latex]

7.4. GRAFICO DE PRUEBA

143

\tikzstyle{etiquette}=[midway,fill=black!20] \node[membre] (g) at (-1.25,4.5) {$2x+3$}; \node[below=-5pt] at (0,4.5) {$=$}; \node[membre] (d) at (1,4.5) {$7$}; \node[membre] (gg) at (-1,2.5) {$2x$}; \node [below=-5pt] at (0,2.5) {$=$}; \node[membre] (dd) at (1,2.5) {$4$}; \node[membre] (ggg) at (-1,0.5) {$x$}; \node [below=-5pt] (egal) at (0,0.5) {$=$}; \node[membre] (ddd) at (1,0.5) {$2$}; \node[membre] (reponse) at (0,-1) {$S=\{2\}$}; %flèches \draw[operation] (g)--(gg) node[etiquette]{$-3$}; \draw[operation] (d)--(dd) node[etiquette] {$-3$}; \draw[operation] (gg)--(ggg) node[etiquette]{$/2$}; \draw[operation] (dd)--(ddd) node[etiquette] {$/2$}; \draw[operation] (egal)--(reponse); \end{tikzpicture}

Pero podemos hacerlo mejor para que la figura sustituya a la solución redactada. Primero evitaremos insertar las etiquetas "3" o "/ 2" entre las ecuaciones y colocarlas a cada lado como comentarios "restamos 3" o "dividimos por 2" y cambia la flecha derecha a una flecha curva al reemplazar el ángulo de salida del nodo, para el origen de la flecha, y el ángulo de entrada en el siguiente nodo, para el final. Luego, las etiquetas se desplazan agregando las opciones izquierda o derecha a los nodos correspondientes.

\draw[operation] (g) to[out=180,in=180] node[etiquette,left]{on soustrait $3$} (gg); \draw[operation] (d) to[out=0,in=0] node[etiquette,right]{on soustrait $3$} (dd); \draw[operation] (gg) to[out=180,in=180] node[etiquette,left]{on divise par $2$}; (ggg) \draw[operation] (dd) to[out=0,in=0] node[etiquette,right]{on divise par $2$} (ddd);

144

7.4. GRAFICO DE PRUEBA

2x + 3 restamos 3

=

=

restamos 3

4 /2

/2 x

7 −3

−3 2x

dividimos por 2

=

on divise par 2

2

S = {2}

7.4.5.

Ejercicio de mejora

Como ejercicio, dejaremos que el lector continúe mejorando la figura para obtener, por ejemplo, la siguiente presentación:

7.5. RESUMEN

7.5.

145

Resumen

Hemos visto aquí algunos ejemplos de gráficos complejos y la forma de realizarlos mediante los comandos \ node y \ draw y sus diferentes opciones. Hemos demostrado la necesidad de estructurar el dibujo colocando primero los nodos, luego los arcos de un modelo hecho a mano sobre papel.

146

7.5. RESUMEN

Pero también nos dimos cuenta de que primero se prepara un diagrama con un papel y un lápiz. Luego debe modificarse mediante mejoras sucesivas, con la ayuda de correcciones cada vez más precisas.

Capítulo 8 Figuras e ilusraciones

8.1.

Los aros Olímpicos

En este ejemplo, la figura es decorativa, para su construcción se requiere una gran precisión, una precisión matemática.

Descripción de los anillos olímpicos.

Los cinco anillos olímpicos están centrados en los puntos A, B, C, D y E. Su radio y posición se muestran en el siguiente diagrama:

A+

cm 3 cm 2.5 3.2 cm

3.2 cm

+ C

3.2 cm

3.2 cm

3.2

3.2

B

D

147

+E

148

8.1. LOS AROS OLÍMPICOS

Además, están en color y entrelazados de la siguiente manera:

Centro A B C D E

8.1.1.

País Color Europa Azul Asia Amarillo Africa Negro Oceania Verde America Rojo

Un anillo : circle, fill, even odd rule

Primero dibujamos dos círculos concéntricos:

\draw (0,0) circle(2.5) circle(3);

Luego ponemos un color dentro con la opción: fill =lightgray

8.1. LOS AROS OLÍMPICOS

149

Eso no es lo que quieres. Ya hemos visto anteriormente que la definición del interior de una región no es simple (ver el manual: reglas interiores). En este caso, la opción de aplicar es: even odd rule.

8.1.2.

Entrelazar los anillos

Ahora definiremos y nombraremos las coordenadas de los centros de los círculos y trazaremos los anillos:

\coordinate (A) at (-6.4,0); \coordinate (B) at (-3.2,-3.2); \coordinate (C) at (0,0); \coordinate (D) at (3.2,-3.2); \coordinate (E) at (6.4,0); \fill[blue,even odd rule] (A) circle(2.5) circle(3); \fill[yellow,even odd rule] (B) circle(2.5) circle(3); \fill[black,even odd rule] (C) circle(2.5) circle(3); \fill[green,even odd rule] (D) circle(2.5) circle(3); \fill[red,even odd rule] (E) circle(2.5) circle(3);

150

8.1. LOS AROS OLÍMPICOS

Reconocemos los anillos olímpicos. Por desgracia, no están entrelazados, sino que se colocan uno encima del otro según su orden de creación. En la siguiente figura, hemos dibujado sectores angulares de 30o que identifican el área donde debería estar el anillo azul sobre el anillo amarillo y el área donde el anillo amarillo debería estar sobre el anillo negro . Entonces, una vez que los anillos se superponen normalmente, simplemente dibuje nuevamente los arcos de los anillos correspondientes a las áreas involucradas. Es decir, regiones coloreadas en gris:

1 (A) •

arc(-30:0:2.5) 0o

5





++(0:3) 2

−30o 4 • –++(-30:-0.5)

•3 arc(-30:0:2.5)

Sigamos paso a paso el borde de la región coloreada:

1. (A)

Origen

151

8.1. LOS AROS OLÍMPICOS

2. ++(0:3)

Avanzar, inicialmente, sin dibujar 3 en la dirección 0o .

3. arc(0:-30:3)

Dibuja un arco de radio 3 de 0o a 30o

4. –++(-30:-0.5)

trazar hacia el centro una línea de 0.5 dirección 30o

5. arc(-30:0:2.5)

Dibuja un arco de radio 2.5 de 30o a 0o

6. –cycle

volver al punto de partida 2.

Procedemos de la misma manera para la recuperación de la parte amarilla reemplazando el origen. (A) por el punto (B) y ángulos de 0o a 30o por el rango de ángulos de 90o a 60o = 90o − 30o . En resumen: primero dibujamos todos los anillos, luego volvemos sobre la parte de los anillos entrelazado que debe estar por encima.

8.1.3.

La figura completa:\newcomand

Tenga en cuenta que el diseño de un anillo está determinado por su centro y su color. La porción de vuelta está determinada por su centro, color y ángulo de inicio. Así que parece natural hacer nuevos comandos:

\newcommand{\anneau}[2]% {\fill[#2,even odd rule] (#1) circle (2.5) circle (3);} #1 es el centro #2 es el color \newcommand{\recouvrement}[3]% {\fill[#3] (#1) ++(#2:3) arc (#2:{#2-30}:3) -- ++({#2-30}:-0.5) arc ({#2-30}:#2:2.5) -- cycle;} #1 es el centro #2 es el color #3 Es el ángulo de inicio de la superposición.

Notamos el uso de cálculos en la definición de este comando. Para que este ejemplo funcione correctamente, no olvide incluirlo en el preámbulo \usetikzlibrary {calc}, después de cargar el paquete TikZ (solo con la versión 2 de PGF). On trace alors les anneaux olympiques avec :

\anneau{A}{blue}

152

8.2. DIAGRAMAS DE VENN

\anneau{C}{black} \anneau{D}{green} \anneau{B}{yellow} \anneau{E}{red} \recouvrement{A}{0}{blue} \recouvrement{B}{90}{yellow} \recouvrement{C}{0}{black} \recouvrement{D}{90}{green}

8.2.

Diagramas de Venn

En este ejemplo, los diagramas ilustran un tema matemático, pero la construcción de estos diagramas no requiere ninguna precisión particular. Elegimos representar el marco de referencia E por un rectángulo y los conjuntos A y B por círculos concurrentes en este rectángulo, pero también podemos elegir representar estos conjuntos por cualquier otra forma. [ Construiremos los diagramas clásicos que representan: A, B, A B, A ∩ B, A − B, B − A, A 4 B y sus complementarios en el sistema de referencia E. Se propondrán dos métodos diferentes para hacer estos diagramas.

8.2.1.

Conjuntos E, A, B : rectangle, circle, \newcommand

Desde el origen O, punto de intersección de los dos círculos, ubicaremos los centros ΩA y ΩB a 2 cm de O, respectivamente a 135o y a 45o , como vemos en la figura:

\begin{tikzpicture}

153

8.2. DIAGRAMAS DE VENN

\draw (-4,-1) rectangle (4,4); % E \draw (0,0) ++(135:2) circle (2); % A \draw (0,0) ++(45:2) circle (2); % B \end{tikzpicture}

× (4,4)

ΩB × 135o

++(135:2)

ΩA ++(45:2) × 45o

(-4,-1) ×

Para evitar tener que volver a escribir las coordenadas de los diferentes dibujos cada vez, se propone definirlos como comandos LATEXque serán fáciles de usar más adelante en los comandos TikZ. Ahorra tiempo en la escritura, pero lo más importante es que hace que el código sea más comprensible. Definiremos los comandos LATEX\E, \A y \B para representar respectivamente los conjuntos E, A y B:

\newcommand{\E}{(-4,-1) rectangle (4,4)} \newcommand{\A}{(0,0) ++(135:2) circle (2)} \newcommand{\B}{(0,0) ++(45:2) circle (2)}

Cuando, por ejemplo, el comando \E se encuentre en el código TikZ, será reemplazado por el de texto (-4, -1) rectangle (4,4) Aśi, el codigo: \tikz\draw\E\A\B; Produce:

Por ahora, solo se han dibujado los contornos. Puede colorearlos reemplazando el comando \draw con el comando \fill

154

8.2.2.

8.2. DIAGRAMAS DE VENN

Colores: \fill, color, opacity

Escribir:

\fill[cyan] \E; \fill[red] \A;

\fill[blue] \B; Produce

A

B

E

Los colores son un poco violentos! Pero lo más importante, el conjunto B que se dibujó en último lugar, oculta parte del conjunto A. Para evitar entonces la recuperación del conjunto A por el conjunto B, podemos definir un coloración transparente utilizando la opción de opacidad.

\fill[color=cyan!50] \E; \fill[opacity=0.5,red] \A; \fill[opacity=0.5,blue] \B;

A

B

E

8.2.3.

Método de superposición de color

En este primer método, la coloración de las regiones se realizará en varias capas. Algunas áreas del dibujo serán coloreadas varias veces. Borrar un área se puede considerar como colorearlo en blanco (el color de fondo).

La eliminación de un área puede considerarse A, B y AUB: \draw y \fill

El disco de A está coloreado simplemente en el rectángulo de E:

155

8.2. DIAGRAMAS DE VENN

\draw[cyan] \E; \fill[cyan] \A;

El complementario de A se obtiene coloreando el rectángulo de E y luego borrando A, es decir, coloreando de blanco:

\fill[cyan] \E; \fill[white] \A;

A

A E

E

Del mismo modo hacemos B y complementario de B.

B

B E

E

Para el conjunto A ∪ B, vamos a superponer los discos que representan A y B, y para el conjunto A ∪ B, haremos lo mismo al colorear en blanco:

[ \fill[cyan] \E; \fill[white] \A; \fill[white] \B;

A E

B E

A∪B

Para A ∩ B, A − B, B − A y A 4 B : \clip y scope

156

8.2. DIAGRAMAS DE VENN

\draw[cyan] \E; \begin{scope} \clip \B; \fill[cyan]\A; \end{scope}

\fill[cyan] \E; \begin{scope} \clip \B; \fill[white] \A; \end{scope}

A∩B

A∩B El conjunto A − B y su complementario A − B se pueden dibujar mediante un simple borrado de color: \fill[cyan] \E; \fill[white] \A; \fill[cyan] \B;

\draw[cyan] \E; \fill[cyan] \A; \fill[white] \B;

A−B

A−B

De la misma forma Procedemos para B − A y B − A

B−A

B−A

La diferencia simétrica es: A 4 B = (A ∪ B) − (A ∩ B)

157

8.2. DIAGRAMAS DE VENN

\draw[cyan!50] \E; \fill[cyan!50] \A; \fill[cyan!50] \B; \begin{scope} \clip \B; \fill[white] \A; \end{scope}

\fill[cyan] \E; \fill[white] \A; \fill[white] \B; \begin{scope} \clip \B; \fill[cyan] \A; \end{scope}

A4B

A4B

8.2.4.

Método de coloración entre los bordes

En este segundo método, primero definiremos los límites que rodean los diferentes conjuntos, luego colorearemos el interior de las regiones definidas por estos límites. Como dijimos anteriormente, el modo predeterminado para colorear regiones es la opción nonzero rule que no necesita especificar, el otro modo es que se puede configurar even odd rule . La definición de estos modos es complicada (ver el manual: reglas internas). En particular, el modo predeterminado tiene en cuenta la dirección de desplazamiento del borde para determinar la región a colorear. Sin embargo, cuando dibujamos un rectángulo o un círculo, la dirección de la trama es desconocida. En este caso, la coloración a menudo da resultados inesperados que son difíciles de interpretar. Consejo: Tan pronto como una región sea complicada (en varias partes o con orificios), se recomienda encarecidamente utilizar una regla impar como una opción de coloración. En este caso, debe especificarlo explícitamente en cada comando \fill. En el mismo modo de regla impar, la coloración se realiza de una manera bastante natural, el exterior es blanco, el interior está coloreado. Así que solo sé lo que se llama dentro y fuera:

El espacio alrededor de la figura total está fuera. cada vez que cruce una frontera:

158

8.2. DIAGRAMAS DE VENN

• si estas afuera entras • si estas dentro vas afuer

Advertencia: En esta sección, incluso la regla impar se especifica explícitamente en cada comando \fill

Definición de bordes: rectangle, circle y arc Los límites de E, A y B se han definido previamente con los comandos \E, \A y \B. El código \tikz\draw\E\A\B; Produce:

Definiremos, igualmente, para A ∪ B, A ∩ B, A − B y B − A, los comandos respectivos \AuB, \AnB, \AmB y \BmA. Para: A ∪ B \draw (0,0) arc (-135: 135: 2) arc (45: 315: 2); Y así el comando:

\newcommand {\ AuB} {(0,0) arco (-135: 135: 2) arco (45: 315: 2)}

135o 45o

315o O

−135o

Para : A ∩ B : \draw (0,0) arc (-45:45:2) arc (135:225:2); y el comando:

\newcommand{\AnB}{(0,0) arc (-45:45:2) arc (135:225:2)}

159

8.2. DIAGRAMAS DE VENN

135o

225o

45o −45o

O

Para : A − B : \draw (0,0) (0,0) arc (225:135:2) arc (45:315:2); y el comando:

\newcommand{\AmB}{(0,0) arc (225:135:2) arc (45:315:2)}

135o

225o

45o

315o O

Y lo mismo para B − A con la orden:

\newcommand{\BmA}{(0,0) arc(-135:135:2) arc(45:-45:2)}

Coloreando la regiones : \fill, even odd rule

\draw[cyan] \E; \fill[cyan] \AuB;

% o respectivamente \AnB \AmB \BmA

Y los complementarios:

160

8.3. PERSONAJES Y DECORACIONES.

Para el conjunto A 4 B, no se ha definido ningún límite particular. De hecho, es inútil, porque la opción even odd rule permite una coloración correcta mientras se usa para el borde de A 4 B la unión de A y B como sigue: El código \draw[cyan] \E; \fill[cyan,even odd rule] \A \B;

8.3.

El código \fill[cyan,even odd rule] \E \A \B;

Personajes y decoraciones.

En este ejemplo, elegimos ilustrar un problema de matemáticas recreativas. Las elecciones estéticas son las del autor, pero dejamos al lector libertad para rehacer la figura de acuerdo con su propia inspiración.

Corazón roto ¡Acabas de dejar al ex-amor de tu vida!

Lo dejas en el muelle, la altura de sus ojos llorosos es de 4 m y remas irresistiblemente hacia el mar abierto, la altitud de tus ojos despiadadose es de 1 m.

161

8.3. PERSONAJES Y DECORACIONES.

¿A qué distancia de la orilla escaparás de sus ojos llorosos, desapareciendo en el horizonte? Solución R: es el radio de la tierra.

h

h: la altura de los ojos sobre el suelo. d: la distancia entre el ojo y el horizonte.

R

d

α R

c: la distancia al suelo (arco de circulo). R Tenemos que cos α = entonces c = R · α y d = R tan α R+h Podemos tomar R w 6365 km, h1 = 0, 001 km, h2 = 0, 004 km Como α es muy pequeño, tenemos c1 ≈ d1 ≈ 3, 568 km y c2 ≈ d2 ≈ 7, 136 km

Así que el corazón está definitivamente roto a unos 15 km.

8.3.1.

El océano : \shade, arc, top color, bottom color

Dibujaremos un arco con un radio grande:

\draw (0,0) arc (105:75:25) -- cycle;

105o

75o

(0,0)

Luego puede reemplazar el comando \draw, el comando \shade para colorear el océano y configurar y definir los colores de los gradientes, por ejemplo, las opciones: top color=blue y bottom color=lightgray

162

8.3.2.

8.3. PERSONAJES Y DECORACIONES.

El muelle : \fill, rectangle, rotate

El muelle es un rectángulo: \fill (0,0) rectangle (1,0.2); Gírelo un poco agregando la opción [rotar = 12] para ponerlo en el lado izquierdo de la imagen:

Las personas: \fill, ellipse, circle

Los caracteres son pequeñas siluetas que consisten en una elipse y un círculo dibujados con el comando \fill, y cuyas dimensiones se han realizado con algunas pruebas:

\fill (0,0)ellipse(0.12 and 0.25) (0,0.35)circle(0.1); Algunas pruebas aún son necesarias para colocar el personaje en la plataforma usando las opciones [rotate = 12, shift = (0.8,0.3)]:

El segundo personaje remando en un bote que primero dibujaremos antes de colocarlo allí.

\fill (0,0)--(1,0)--(1.1,0.2)--(-0.1,0.1)--cycle;% bote \draw[line width=2pt] (-0.2,0.4)--(0.5,0.2)--(1.2,0.4);% ramas

Agrega el personaje inclinándolo ligeramente para producir un efecto más dinámico:

163

8.3. PERSONAJES Y DECORACIONES.

\fill[shift={(0.5,0.25)},rotate=-10] % personnaje (0,0)ellipse(0.12 and 0.25) (0,0.35)circle(0.1);

Todo lo que tiene que hacer es situar el bote insertando las instrucciones anteriores en un entorno scope con las opciones apropiadas: \begin{scope}% ... \end{scope} [shift={(11,0.4)},rotate=-10]

Se debe tener en cuenta que para colocar correctamente los diversos elementos del dibujo, se necesitaron numerosas pruebas.

8.3.3.

El corazón: \draw, .. controls and ..

ara dibujar cualquier figura, puedes usar curvas Bezier. Una curva de Bézier se define utilizando cuatro puntos de control: A, el punto de partida de la curva; S, el punto tal que AS es la tangente a la curva en A T, el punto tal que BT es la tangente a la curva en B B, el punto de llegada de la curva.

\draw (A) .. controls (S) and (T) .. (B); S◦ T◦

× A

× B

164

8.3. PERSONAJES Y DECORACIONES.

Una vez que se colocan los puntos A y B, la curvatura se puede modificar jugando de forma bastante intuitiva con los puntos S o T. Aquí mostramos dos desplazamientos del punto T y el efecto producido en la curva:

S◦

S◦ T◦

× A

× B

◦T × A

× B

Podemos considerar que cuanto más largos sean AS o BT, más se adhiere la curva a la tangente. Por lo tanto, observamos que los desplazamientos de los puntos de control S y T tienen un efecto general en la forma de la curva, pero sin mover los extremos A y B. −→ − −→ − Otra sintaxis permite definir los vectores tangentes → u = AS y → v = BT en coordenadas en relación a A y B respectivamente:

\draw (A) .. controls +(u) and +(v) .. (B);

→ − u × A

→ − v × B

Ahora podemos construir formas complejas que consisten en arcos Bezier conectados de extremo a extremo. Si, además, los vectores tangentes se alinean con los extremos comunes, se obtienen fácilmente curvas suaves. Por ejemplo, puedes empezar a dibujar un corazón como este:

\draw (0,0) ..controls +(0,2) and +(0,2).. (3,0); % arco 1 \draw (3,0) ..controls +(0,-2) and +(0,2).. (0,-4); % arc0 2

165

8.3. PERSONAJES Y DECORACIONES.

+(0,2)

+(0,2) 1

(3,0)

(0,0) +(0,2) 2

+(0,-2)

(0,-4)

Añadir dos arcos adicionales completa el corazón con simetría sobre el eje vertical: \draw [fill = red] (0,0) ... cycle;

4

1

(-3,0)

(3,0)

3

2

(0,-4)

8.3.4.

Corazone multicolores: \shift, rotate, ball color

Las opciones del comando \draw tienen opciones que permiten hacer modificaciones del aspecto y del color, por ejemplo: \draw [scale=0.25,rotate=45,ball color=blue] (0,0) .. controls +(0,2) and +(0,3) .. (3,0) .. controls +(0,-2) and +(0,2) .. (0,-4) .. controls +(0,2) and +(0,-2) .. (-3,0) .. controls +(0,2) and +(0,2) .. (0,0);

Crea-

remos un comando cuyos parámetros son las opciones del comando \draw y usa-

166

8.3. PERSONAJES Y DECORACIONES.

remos este comando varias veces, para dibujar los corazones en diferentes lugares con diferentes orientaciones:

% coamndo \coeur \newcommand{\coeur}[1][fill=red] % por defecto rojo {\draw [#1] (0,0) .. controls +(0,2) and +(0,2) .. (3,0) .. controls +(0,-2) and +(0,2) .. (0,-4) .. controls +(0,2) and +(0,-2) .. (-3,0) .. controls +(0,2) and +(0,2) .. (0,0);} % Diseño \coeur[shift={(1.3,2)},ball color=red,scale=0.35] \coeur[shift={(0.3,1.8)},ball color=orange,scale=0.2,rotate=35] \coeur[shift={(2.2,1.6)},ball color=magenta,scale=0.2,rotate=-20] \coeur[shift={(1.8,2.5)},ball color=green,scale=0.25,rotate=-25] \coeur[shift={(2.7,2.1)},ball color=yellow,scale=0.15,rotate=10]

8.3.5.

El dibujo completo: scope, shift, rotate

Finalmente, todos los elementos se agrupan para obtener la ilustración de la declaración del problema:

8.3.6.

La solución: scope, shift, rotate

La figura propuesta en la solución es una figura geométrica clásica que será fácil de realizar como ejercicio. Para simplificar los cálculos de ángulos y coordenadas, dibujemos un semi-triángulo equilátero:

167

8.4. RESUMEN

45o h R α =30oR (0, 0)

√ ä 5, 3

Ä

d (5, 0) −15o

\begin{tikzpicture} % ángulo alpha \draw[->,red,>=stealth’] (1.5,0) arc (0:30:1.5); \draw[red] (15:1.5) node[right]{$\alpha$}; % angle recto \draw (4.5,0)|-(5,0.5); % triangulo \draw[thick] (0,0)-- node[pos=0.6,above]{$R$} (5,0) -- node[midway,right]{$d$} (5,{5/sqrt(3)}) -- node[pos=0.1,above]{$h$} node[pos=0.5,above left]{$R$}(0,0); % arcos \draw[blue,thick,dashed] (0:5) arc (0:-15: 5); \draw[blue,thick] (0:5) arc (0:30: 5); \draw[blue,thick,dashed] (30:5) arc (30:45: 5); \end{tikzpicture}

8.4.

Resumen

Hemos visto en este capítulo cómo dibujar formas complejas al componer líneas elementales como rectángulos, círculos, arcos o mediante el uso de curvas Bezier. Las curvas dibujadas pueden ser los bordes de las regiones que es posible colorear con relleno. De este modo, TikZ no solo permite construir figuras puramente geométricas de gran precisión, sino que también permite realizar ciertos trabajos ilustrativos.

Capítulo 9 Complementos técniocos

9.1.

Trasformaciones con scope

Estudiaremos aquí el efecto de las opciones de transformación xshift, yshift, shift, scale y rotate, en la misma figura, que queremos dibujar varias veces en un solo diagrama, en diferentes posiciones. Para esto, colocaremos esta figura en su posición original, escribiendo su código en un entorno tikzpicture, e insertando una copia de este código en un entorno scope, controlado por opciones de transformación. Los siguientes ejemplos se deescribirán en este modelo:

\begin{tikzpicture} % código de la Figura \begin{scope} [] % % código de la Figura \end{scope} \end{tikzpicture}

Aquí está la pequeña figura que nos servirá para visualizar las transformaciones. Está inscrito en un rectángulo de 1,5 cm por 2 cm de lados: 169

170

9.1. TRASFORMACIONES CON SCOPE

(1.5,2) (0,1)

(0,0)

(1,0)

\begin{tikzpicture} % código de la Figura \draw [,>=stealth’] (1,0) -- (0,0) -- (0,1); \draw[thick] (1.5,0) -- (0,2) -- (1.5,2) -- cycle; \end{tikzpicture}

Las transformaciones que estamos discutiendo aquí se aplican al sistema de coordenadas en el que se ejecutan los comandos TikZ que construyen la figura. La figura parece sufrir las mismas transformaciones, pero en realidad es un cambio de la referencia en la que se dibuja la figura. Por lo tanto, debemos prestar atención al orden en que se realizan estas transformaciones.

9.1.1.

Translaciones : xshift, yshift o shift

Para evitar la superposición de los dos dibujos, primero realizaremos una translación utilizando una de las opciones xshift, yshift o shift:

(0,0)

[yshift=35mm]

[xshift=6cm]

(0,0)

)}]

m 35m m,

c

{(6

ift= [sh (0,0)

Tenga en cuenta que en el caso de la opción shift =, las coordenadas del vector

171

9.1. TRASFORMACIONES CON SCOPE

de traslación deben insertarse entre llaves. Esto es necesario porque la coma que separa las coordenadas no debe interpretarse como un separador de opción. Ahora mostraremos cómo rotar o dilatar la figura. En todos los casos siguientes, primero usaremos la opción xshift = 6cm para evitar la superposición de las dos figuras.

9.1.2.

Combinación de traslación y rotación: [xshift=6cm,rotate=45]

xshift=6cm (0,0)

xshift=6cm

Advertencia: se recomienda siempre escribir primero la opción de traslación (xshift, yshift o shift), pero no es obligatorio. De hecho, el centro de la rotación es el origen actual, es decir, el origen de la figura después de que haya sufrido el cambio x = 6 cm en el ejemplo anterior. Pero si realizamos primero la rotación, el centro es el origen (0, 0) de salida. En ese caso la siguiente traducción se lleva a cabo en un marco de referencia que ya ha sido girado. Esto es lo que da:

\begin{scope}[xshift=6cm,rotate=30]

(0,0)

rotate=30 [xshift=6cm]

Si lo comparamos con:

\begin{scope}[rotate=30,xshift=6cm]

172

9.1. TRASFORMACIONES CON SCOPE

]

t= hif

6cm

[xs

rotate=30 (0,0)

Se nota que el orden de las opciones es importante y el resultado es más difícil de interpretar en el segundo caso.

9.1.3.

Translación y cambio de escala: [xshift=6cm,scale=0.5]

El cambio de escala es una homotecnia, aplicada al sistema de coordenadas en el que se ejecutan los comandos de construcción de la figura, lo que efectivamente provoca una modificación del tamaño de la figura.

scale=0.5

(0,0)

[xshift=6cm]

Precaución: es recomendable, como en el caso anterior, escribir primero una opción de traslación (xshift, yshift o shift) aunque no es obligatorio. De hecho, el centro de la homotecnia es el origen actual, es decir, el origen de la marca de referencia en la que se dibuja la figura después de que haya sufrido el cambio x = 6 cm en el ejemplo anterior. Si uno realiza la homotecia primero, el centro es el origen (0, 0) de salida. En este caso, la siguiente traslación se lleva a cabo en un marco de referencia que ya ha sido sometido a homotecia y cuyas unidades se han multiplicado por la proporción. Esto es lo que da:

\begin{scope}[xshift=5cm,scale=1.5]

173

9.1. TRASFORMACIONES CON SCOPE

scale=1.5

(0,0)

[xshift=6cm]

Si lo comparamos con:

\begin{scope}[rotate=30,xshift=6cm]

(0,0)

[xshift=6cm x 1,5=9cm]

Vemos, como antes con la rotación, que el orden de las opciones es importante y el resultado siempre es sorprendente en el segundo caso. Hemos visto, en los ejemplos, que el coeficiente de la opción de escala puede ser menor que 1, para reducir, o mayor que 1, para dilatar la figura. También puede ser negativo. Por supuesto, uno puede componer las tres transformaciones, primero la traducción, la homotecnia y la rotación en cualquier orden. Por ejemplo:

\begin{scope}[xshift=6cm,rotate=60,scale=2.25]

174

9.1. TRASFORMACIONES CON SCOPE

[scale=2.5]

(0,0)

[xshift=6cm]

rotate=60

Las opciones [xshift = 6cm, scale = 2.25, rotate = 60], escritas en este orden, dan la misma figura. Precaución: todas estas opciones de transformación se aplican al sistema de coordenadas en el que se dibujará la figura definida en el entorno scope, es decir, las transformaciones tienen un efecto en todos los trazados dibujados. Por otro lado, estas transformaciones no tienen ningún efecto sobre el grosor de las líneas, sobre el tamaño o la inclinación de los textos contenidos en los nodos de la figura.

9.1.4.

Grosor de las lineas: \draw y line width

Advertencia: en la primera lectura, puede ignorar este párrafo bastante técnico. Por otro lado, si pretende realizar transformaciones precisas en figuras en las que las líneas tienen diferentes grosores, será necesario leerlo con cuidado. Consideraremos una figura de referencia con líneas de diferentes grosores:

\draw [,>=stealth] (1,0) -- (0,0) -- (0,1); \draw[very thick] (0,2) -- (1.5,2) -- (1.5,0); \draw[line width=3mm,color=blue!50] (0,2) -- (1.5,0);

Se encuentra a la izquierda y se ha reproducido dos veces con diferentes opciones de escala para cada entorno scope:

175

ick ] th y

[scale=2.5]

[v er

[li

ne

wi

dt

h=

3m

m ]

9.1. TRASFORMACIONES CON SCOPE

[scale=0.5]

Se puede ver que la forma de la figura se ha transformado con la excepción del grosor de línea que se ha mantenido constante. La homogeneidad es para los trazados dibujados por \draw pero no por su grosor definido por las opciones de \draw El grosor de línea se puede configurar con la opción line width = seguido de una dimensión, o con una de las siguientes opciones: very thin (ultra delgado 0.1pt), very thin (muy delgado 0.2pt), thin (delgado que es el ancho de línea = 0.4 pt) predeterminado de pt si no se especifica ninguna opción), semithick (0.6pt), thick (grueso 0.8pt), very thick muy grueso 1.2pt) y ultra thick (ultra grueso 1.6pt). Si desea obtener cifras similares, debe modificar el código dentro del entorno scope para definir el grosor de cada línea multiplicando el grosor original por el coeficiente de la opción de escala. En el caso en que el entorno scope esté controlado por [scale = 0.5], cualquier comando de la forma: \draw [line width = d] ...; donde d es una dimensión, será reemplazado por:

forme : \draw[line width=d] ...\draw[line width={0.5*d}] ...;

Por ejemplo:

\draw ...; par \draw[line width={0.5*0.4pt}] ...; \draw[very thick] ...; par \draw[line width={0.5*1.6pt}] ...; \draw[line width=3mm] ...; par \draw[line width={0.5*3mm}] ...;

No te olvides de insertar los cálculos entre llaves. Ahora, el cambio de escala se aplica a la figura completa (grosor de línea incluido). Esto es lo que dará, después de la corrección, nuestra figura:

176

[scale=2.5]

[li

[v er

ne

y

wi

th

dt

ick ]

h=

3m

m

]

9.1. TRASFORMACIONES CON SCOPE

[scale=0.5]

Nota: para que este ejemplo funcione correctamente, no olvide incluirlo en el preámbulo \usetikzlibrary{calc} después de cargar el paquete TikZ (solo con PGF versión 2).

9.1.5.

Tamaño del texto e inclinación: transform shape

Advertencia: en la primera lectura, puede ignorar este párrafo, que es bastante técnico. Por otro lado, si pretende realizar transformaciones precisas en las figuras que contienen muchas anotaciones textuales, será necesario leerlo con cuidado. Consideraremos una figura de referencia que se parece a la anterior, pero con anotaciones, textos variados en tamaño y orientación:

Te x

to



\draw [,>=stealth] (1,0) -- (0,0) -- (0,1); \path (1.5,2) node{$\oplus$} node[left,scale=1.5,rotate=45]{Texto};

45

[scale=0.5]

to Te x

no

de

[s

ca

.5

T le e =1 x

node{$\oplus$}



t ,r o o

ta

e=

⊕ t

]

[scale=2]

30o

177

9.1. TRASFORMACIONES CON SCOPE

Se puede ver que la forma de la figura se ha transformado y las anotaciones textuales se colocan correctamente, pero se han mantenido en el mismo tamaño e inclinación. La mayoría de las veces, solo queremos cambiar el tamaño de la figura y, por lo tanto, es bastante satisfactorio, las anotaciones mantienen un tamaño que coincide con el del texto que acompaña a la figura.

⊕ to Te x

Te xt

o



Te xt o



Por otro lado, si se pretende mostrar una imagen reducida o dilatada del diagrama con el texto proporcional correctamente inclinado, será necesario agregar en la figura la opción[transform shape] que hará que los nodos experimenten las transformaciones definidas en entornos {scope}:

Notamos que hemos obtenido figuras de formas similares, incluyendo textos. Sólo el espesor de las lineas se mantuvo constante.

9.1.6.

Ejercicio

Como ejercicio, haz un cuarto de vuelta y triplica la figura.

178

o t x e T



9.2. ACERCA DE LOS ARBOLES

Solución

\begin{tikzpicture} [scale=3,rotate=90,transform shape] \draw[,>=stealth,very thick] (1,0)--(0,0)--(0,1); \path (1.5,2) node{$\oplus$} node[left,scale=1.5,rotate=45]{Texte}; \end{tikzpicture}

9.2.

Acerca de los arboles

En matemáticas, la estructura de árbol es un caso importante de la teoría de grafos. TikZ ofrece muchas operaciones específicas para la construcción de árboles. Mostraremos en un ejemplo visto anteriormente en forma de ejercicio, cómo dibujar de un árbol genealógico:

% définition des styles \tikzstyle{lien}=[->,>=stealth,rounded corners=5pt,thick] \tikzset{individu/.style={draw,thick,fill=#1!25}, individu/.default={green}} % définition de l’arbre \begin{tikzpicture} \node[individu] (B) at (0,0) {Bibi}; \node[individu=blue] (P) at (-3,2) {Papá}; \node[individu=red] (M) at (3,2) {Mamá}; \node[individu=blue] (GPP) at (-4.5,4) {Pépé}; \node[individu=red] (GMP) at (-1.5,4) {Mémé}; \node[individu=blue] (GPM) at (1.5,4) {Papy};

179

9.2. ACERCA DE LOS ARBOLES

\node[individu=red] (GMM) at (4.5,4) {Mami}; \draw[lien] (B) |- (-1,1) -| (P); \draw[lien] (B) |- (1,1) -| (M); \draw[lien] (P) |- (-4,3) -| (GPP); \draw[lien] (P) |- (-2,3) -| (GMP); \draw[lien] (M) |- (2,3) -| (GPM); \draw[lien] (M) |- (4,3) -| (GMM); \end{tikzpicture}

Abuelo

Abuela

Abuelito

Papá

Abuelita

Mamá

Bibi

Primero recordaremos el vocabulario habitual referente a los árboles. Arriba, el nodo "Bibi" es la raíz del árbol. Este nodo "Bibi" tiene dos nodos secundarios: el nodo "Papá" y el nodo "Mamá". Los nodos terminales, u hojas del árbol, son por lo tanto los nodos "abuelo", "abuela", "abuelito" y "abuelita".

9.2.1.

Definición on : \node node y child

Si define un nodo con el comando \node, la operación child le permite asociar subprocesos de la siguiente forma: \Root child {node {Son1} ...} child {node {Son2} ...}; Y esto recursivamente. Por lo tanto podemos definir el ejemplo anterior de la siguiente manera:

\begin{tikzpicture} \node [individu] {Bibi} child { node [individu=blue]{Papa} child { node [individu=blue]{Abuelo} } child { node [individu=red]{Abuela} } } child { node [individu=red]{Mamá} child { node [individu=blue]{Abuelito} } child { node [individu=red]{Abuelita} } }; \end{tikzpicture}

180

9.2. ACERCA DE LOS ARBOLES

Bibi

Papa

Mamá

Abuelo AbuelitoAbuelita Abuela

Tenga en cuenta que los nodos se definieron con su lugar en el árbol, los arcos se trazaron automáticamente. Por otro lado, la distancia entre los hermanos es por defecto siempre la misma y en Segundo nivel, los nodos están superpuestos.

9.2.2.

Distancia entre hermanos: sibling distance

Una opción de la operación child permite modificar esta distancia entre hermanos: sibling distance. Por ejemplo en la raíz: \node [individual] {Bibi} [sibling distance = 3cm] ...

Bibi

Papa

Abuelo

Mamá

Abuelito Abuela

Abuelita

Desafortunadamente, si la distancia entre hermanos ha aumentado, siempre hay superposición en el segundo nivel porque la opción de distancia entre hermanos propaga su efecto en todos los subárboles. Por lo tanto, es necesario redefinir esta opción en cada piso variando la distancia según el nivel, por ejemplo:

Bibi

Papá

Abuelo

Mamá

Abuela

Abuelito

Abuelita

9.2. ACERCA DE LOS ARBOLES

181

Construir un árbol es siempre una tarea delicada. En la práctica, siempre es necesario pensar con cuidado para corregir correctamente la distancia entre hermanos, y esto, en todos los niveles. Afortunadamente, hay nombres de estilo creados automáticamente al construir un árbol y que pueden definirse globalmente, lo que evita hacerlo en en cada nivel. El estilo de nivel se aplica a todo el árbol. Los estilos nivel 1, nivel 2, etc. Aplica a los cables de nivel 1, 2, etc. respectivamente. Obtenemos exactamente el mismo árbol al eliminar, en todos los nodos donde los colocamos, las opciones de distancia entre hermanos, proporcionadas para definir globalmente para la figura los estilos nivel 1 y nivel 2:

\begin{tikzpicture} [level 1/.style={sibling distance=6cm}, level 2/.style={sibling distance=3cm}] \node [individu] {Bibi} child{ node [individu=blue]{Papa} % etc. } child{ node [individu=red]{Maman} % etc. }; \end{tikzpicture}

9.2.3.

Forma general: level distance y grow

También podemos especificar la distancia entre los niveles con la opción level distance y cambiar la dirección de crecimiento del árbol con una de las opciones legrow o growche de crecer o crecer.

grow=down : los hilos están debajo del padre, de izquierda a derecha (grow : de derecha a izquierda) (valor predeterminado) grow=up : los hijos están por encima del padre, de derecha a izquierda (grow : de izquierda a derecha) grow=right :los hilos están a la derecha del padre, de abajo hacia arriba (grow: de arriba a abajo) grow = left: los hilos están a la izquierda del padre, de arriba a abajo (grow ’: de abajo a arriba)

Por ejemplo:

\node{Bibi} [grow=up,level distance=2cm,sibling distance=6cm]

182

9.2. ACERCA DE LOS ARBOLES

sibling distance=3cm

sibling distance=3cm

Nivel 2

Nivel 2

Abuelita

Abuelito

Abuela

Abuelo

Nivel 1

Mamá

level distance=2cm

sibling distance=6cm Papá

Bibi

9.2.4.

Etiquetado de los arcos: edge from parent

A veces puede ser útil colocar textos sobre los arcos. El borde de la operación principal, situado al final de la definición secundaria, si está seguido de nodos, coloca los textos de estos nodos en el arco que conecta al secundario con su principal, como muestra la siguiente figura:

Abuelita

Abuelito

Abuela

Abuelo

↓ Descendente Papá

Mamá Ascendente ↑ Bibi

Para comprender la figura obtenida anteriormente, lea atentamente el siguiente código que permitió colocar los textos en los arcos:

\tikzset{individu/.style={draw,thick,fill=#1!25}, individu/.default={green}} \node [individu]{Bibi} [grow=up,level distance=2cm,sibling distance=6cm] child { node [individu=blue]{Papá}[sibling distance=3cm] child { node [individu=blue]{Abuelo} } child { node [individu=blue]{Abuela} } } child { node [individu=red]{Mamá}[sibling distance=3cm] child { node [individu=red]{Abuelito} }

183

9.2. ACERCA DE LOS ARBOLES

child { node [individu=red]{Abuelita}edge from parent node{$\downarrow$ Descendente} } edge from parent node[below left]{Ascendente $\uparrow$}};

Para comprender la figura obtenida anteriormente, lea atentamente el siguiente código que permitió colocar los textos en los arcos:

\node [individu] {Bibi} child{ node [individu=blue]{Papa} child{ node [individu=blue]{Abuelo} edge from parent node{$\downarrow$ Descendant} } child{node [individu=red]{Abuela}} edge from parent node[below left]{Ancêtre $\uparrow$} } child{ node [individu=red]{Mamá} child{node [individu=blue]{Abuelito}} child{node [individu=red]{Abuelita}} };

9.2.5.

Estilos de los arcos: edge from parent path

Finalmente, mostraremos cómo podemos modificar el diseño y el estilo de los arcos que conectan los nodos. La opción edge from from parent path define el arco como cualquier ruta. Para referirnos a los nodos de origen y final de la ruta, podemos usar los comandos respectivos \tikzparentnode y \tikzchildnode, por ejemplo, podemos definir como opción el entorno tikzpicture:

[edge from parent path={[->,>=stealth,thick] (\tikzparentnode) to [out=90,in=-90] (\tikzchildnode)}]

Abuelita

Abuelito

Abuela

Abuelo

Papá

Mamá

Bibi

184

9.3. ENLACES ENTRE FIGURAS: OVERLAY

Las muchas otras operaciones están disponibles en TikZ para mejorar la representación del árbol, pero están fuera del alcance de este libro. Por lo tanto, aconsejamos a los lectores que deseen dibujar árboles complejos que consulten el manual de referencia.

9.3.

Enlaces entre figuras: overlay

A veces uno puede querer señalar algunos puntos notables de una figura. Para este propósito, uno generalmente quiere escribir, fuera de la figura, en el texto que lo acompaña, los comentarios relacionados con puntos particulares designados en la figura. Por "fuera de la figura" queremos decir, en la página LATEX, pero fuera del entorno tikzpicture que define la figura. También se pueden dibujar en la página enlaces entre dos entornos tikzpicture distintos que definen dos figuras diferentes. Aquí hay un ejemplo el cuadro siguiente contiene el texto LATEXy cuatro figuras TikZ, dos de las cuales son visibles: La primera figura es el paralelogramo; El segundo es el par de flechas. Las otras dos figuras TikZ son invisibles, son nodos que simplemente ubican el origen de las flechas en el texto LATEX. Esta figura es un paralelogramo.



Este punto es el centro de las diagonales de este paralelogramo. En el punto entre las palabras "figura" y "es" de la primera línea de texto introducimos una figura invisible para definir el lugar del que parte la flecha (figura) . El punto entre las palabras "punto" y "este" de la línea de texto que sigue a la figura introducimos otra figura invisible ( punto) . Los demas puntos necesarios están en la figura del paralelogramo.

9.3. ENLACES ENTRE FIGURAS: OVERLAY

185

Queremos poder dibujar las flechas con las siguientes instrucciones:

\draw [->] (figura) to[bend right,thick] (paralelogramo); \draw [->] (punto) to[bend left,thick,dashed] (centro); Surgen dos preguntas: ¿Cómo podemos definir los nodos (figura) y (punto)? ¿Cómo compartir nombres de nodos entre diferentes figuras? (de hecho, sabemos que el alcance de un nombre se limita a la figura en la que se define)

9.3.1.

Definiciones globales de nombres: remember picture ( recordar imagen)

Para definir el nodo (figura), es necesario insertar una figura TikZ entre la palabra "figura" y la palabra "es" de la primera línea de texto, y para hacer el rango de este nombre global, es necesario agregar la opción [ remember picture] Esta figura \tikz [remember picture] \coordinate (figura): Crean dos imágenes invisibles que nos sirven para enlazar los dibujos. La figura en sí no es un problema. Simplemente definimos dos puntos, el centro (centro) y el punto (paralelogramo) el vértice en la parte superior izquierda del paralelogramo, y para hacer global el alcance de estos nombres también debemos agregar la opción [remember picture]

\begin{tikzpicture} [remember picture] \draw (-3,-2)--(3,2) (-2,1)--(2,-1); \draw[thick] (-3,-2)--(2,-1)--(3,2)--(-2,1)--cycle; \node (centro) at (0,0){$\bullet$}; \node (paralelogramo) at (-2,1){}; \end{tikzpicture}

9.3.2.

De de una figura a otra: overlay

Las flechas se dibujan sobre la figura y el texto en una nueva figura definida con las dos opciones [remember picture,overlay]. La remember picture, indica que debemos usar los nombres globales, la segunda, overlay, indica que la figura se superpondrá en la página. El siguiente código se puede colocar en cualquier lugar, siempre que esté después de la definición de los nombres utilizados:

186

9.4. LA PÁGINA ACTUAL ES UN NODO: CURRENT PAGE

\begin{tikzpicture}[remember picture,overlay] \draw [->] (figura) to[bend right,thick] (paralelogramo); \draw [->] (punto) to[bend left,thick,dashed] (centro); \end{tikzpicture}

Precaución: la configuración de una figura con las opciones overlay y remember picture ( superposición y recordar imagen) requiere al menos dos compilaciones del texto. En general, después de la primera compilación, las partes definidas con la opción de superposición están fuera de lugar en la página. No se preocupe, el resultado satisfactorio se obtendrá después de otra compilación.

La página actual es un nodo: current page

Z

9.4.

Ti k

TikZ proporciona un nombre especial de nodo de la página actual que da acceso a la página actual como un rectángulo que representa toda la página. Es un rectángulo donde cada vértice está conectado a una de las esquinas de la página. Por lo tanto, desde este nodo, podemos definir cualquier posición absoluta en la página actual. Por ejemplo, puede escribir TikZ en el centro de la página con el siguiente código:

\begin{tikzpicture}[remember picture,overlay] \node [rotate=60,scale=10,text opacity=0.3] at (current page.center) {Ti\textit{\color{orange}k}Z}; \end{tikzpicture}

Advertencia: a veces es difícil entender qué es la página actual, ya que el diseño se realiza automáticamente mediante LATEX Si el dibujo no está en la página esperada, puede intentar mover el código de la figura en el texto de origen, forzar un salto de página con el comando \newpage y compilar nuevamente dos veces.

9.5.

Resumen

Se ha presentado el grosor de una subfigura, y se han cambiado sus características. Se han hecho traslaciones y rotaciones con las opciones xshift, yshift shift, scale y rotate y también se han hecho modificaciones en el texto.

9.5. RESUMEN

187

Específicamente para la construcción de gráficas tipo árbol. También se mostró cómo se define figuras de recuerdo y para crear vínculos entre ellas.

Apéndice A La sintaxis de TikZ La sintaxis de TikZ admite muchas construcciones especializadas y puede ser bueno clasificar formas sintácticas en amplias categorías: entornos, comandos, opciones, operaciones. camino, coordenadas. Todas estas categorías se encuentran en el siguiente ejemplo, que dibuja un triángulo discontinuo:

\begin{tikzpicture} \draw [dashed] (0,0) node[below]{O} -- (1,1) -- (2,0) -- cycle; \end{tikzpicture}

O

{tikzpicture} es un entorno, \draw es un comando, [dashed] es una opción, (0,0) es un par de coordenadas, node es una operación de ruta con una opción [below] y un argumento {O}, - - es una operación de ruta con un argumento (1,1), - - cycle también es una operación de ruta.

A.1.

Entornos: {tikzpicture}, {scope}

TikZ define solo dos entornos en el sentido de LATEX: {tikzpicture} y {scope}. El primero se utiliza cuando se desea insertar una figura de TikZ en un documento LATEX, el segundo puede usarse dentro de lo anterior para definir un contexto que tiene sus propias opciones gráficas. 189

190

A.2. COMANDOS

A.2.

Comandos

Son comandos en el sentido de LATEX, que son reconocidos por que comienzan con el carácter \.

Comandos utilizables en todo el documento. Algunos comandos se pueden usar en el documento LATEX, fuera del entorno. {tikzpicture}. Son :

\usetikzlibrary Para cargar al principio, en el preámbulo del documento, algunas bibliotecas útiles de TikZ como: flechas, patrones o hacer cálculos Por ejemplo: \usetikzlibrary {patterns, arrows, calc} \tikzset Para establecer opciones globalmente a lo largo del documento. Por ejemplo: \tikzset {redgris / .style = {draw = grey, fill = red}} Aplicada a un nodo, esta opción enmarcará el nodo en gris y coloreará el interior en rojo. Por ejemplo: nodo [redgris] {texto}. El comando \tikzset también puede estar dentro de un entorno {tikzpicture} su efecto se limitará entonces a este entorno. \tikzstyle Esta es la forma antigua del comando \tikzset. Permanece siempre utilizable, bajo la forma \tikzstyle {reddish} = [draw = grey, fill = red] \TikZ Esto es equivalente al entorno {tikzpicture} para figuras con un código corto (un párrafo como máximo). Por ejemplo: \tikz \draw (0,0) circle (1); Para dibujar un círculo centrado en el origen y radio 1. \foreach Esta es una instrucción de programación disponible en todo el documento al cargar TikZ. Permite ejecutar instrucciones repetidamente ( Es un bucle). Por ejemplo: \foreach \x en {1,2,3} {$ x = \ x $,} da: x = 1, x = 2, x = 3 El comando también se puede utilizar en un entorno {tikzpicture}. Por ejemplo, para dibujar cinco círculos concéntricos: \tikz \foreach \r en {1,2, ..., 5} \draw (0,0) circle (\r mm);

A.3. LAS COORDENADAS

191

Comandos en el entorno {tikzpicture}

Otros comandos solo se pueden usar en un entorno {tikzpicture}. Los principales son: \clip, \coordinate, \draw, \fill, \filldraw, \node, \path

A.3. A.3.1.

Las coordenadas Forma general: (...)

Sintácticamente, la posición de un punto se indica mediante una expresión de coordenadas, como (x, y) (Coordenadas cartesianas) o (a: r) (Coordenadas polares) o (Nombre) (Punto con nombre), o (anchor.name) (ancla de un nodo, como (n.north)), o ++ (x, y) (coordenadas relativas). Hay otras formas, pero en general, una expresión de coordenadas se escribe entre paréntesis.

A.3.2.

Cálculos numéricos: paquete pgfmath

Desde la versión 2 de TikZ, es posible escribir cálculos sobre números gracias a el paquete pgfmath, que se carga automáticamente con TikZ. Fórmulas de cálculo disponibles son los que se pueden utilizar para dibujar curvas con la operación \plot. En una expresión de coordenadas, podemos usar estos como: √ cálculos ! 3 1 , como puede ver, ({sqrt (3) / 2}, 1/2) designa el punto de coordenadas, 2 2 si el cálculo utiliza paréntesis, debe encuadrarlo con llaves.

A.4. A.4.1.

OPERACIONES DE RUTA Cálculos de coordenadas: biblioteca cal

Otro tipo de cálculo es posible con la carga de la biblioteca de cálculos. A diferencia del paquete \pgfmath, cuya carga es automática e implícita, la carga de estab debe ser explícito, con \usetikzlibrary{calc}. No hablamos en este libro de las posibilidades ofrecidas por esta biblioteca, consulte el manual oficial.

192

A.5. OPERACIONES CON LAS RUTAS

Con esta biblioteca, es posible realizar cálculos directamente relacionados con las parejas. coordenadas (por ejemplo, para sumar dos parejas, para hacer el producto de un número paro esto introduce una sintaxis especial: los cálculos de este tipo deben escribirse entre los símbolos ($ y $), como ($ (1,2) + (3,4) $). Además de estos cálculos con operaciones matemáticas, esta sintaxis le permite realizar:

Punto de tangencia de la tangente que va de un punto a un círculo; Baricentro de varios puntos, combinaciones lineales; Punto de intersección de dos segmentos; Imagen de un punto por una similitud directa de la cual damos el centro, la relación y el ángulo. Proyección ortogonal de un punto en un segmento Apunte a una distancia dada de otra en un segmento.

Estas posibilidades pueden ser interesantes para evitar tener que hacer cálculos. En esto, acerca a TikZ a un software de construcción geométrica como GeoGebra. Sin embargo, la sintaxis de estas instrucciones es a menudo un poco esotérica y carece de unidad. Aquí hay un ejemplo del manual: ($ (1,1)!. 5! 60: (2,2) $) es la imagen del punto (2,2) al girar desde el centro (1,1), relación 0.5 y ángulo 60o . Si el único objetivo es evitar los cálculos, también se puede hacer usando GeoGebra o software de cálculo formal como software auxiliar. Pero eso congela el resultado de los cálculos y lo lleva todo al comienzo tan pronto como desee cambiar una coordenada.

A.5.

Operaciones con las rutas

Estas son las operaciones que se pueden escribir en comandos que definen rutas o que actúan sobre caminos:

\draw, \fill, \filldraw, \path, \clip.

Argumentos y sintaxis La mayoría de las operaciones tienen una sintaxis y unos argumentos. La mayoría de los argumentos son simples (un par de coordenadas o un nombre del nodo), excepto para plot y child (este último es recursivo).

193

A.5. OPERACIONES CON LAS RUTAS

La única operación que no tiene nombre es la operación de posicionamiento explícito, que se utiliza al comienzo de una ruta para fijar la posición del lápiz, tiene un solo argumento, que es el posición en cuestión. En el siguiente ejemplo, las expresiones para operaciones fueron enmarcadas:

\draw (0,0) - - (1,1) circle (1) ;

La primera es la operación de posicionamiento explícita del lápiz en (0, 0), la segunda el trazado de un segmento, el tercero el de dibujar un círculo y después de cada operación, la posición el lápiz se actualiza.

(1,1)

(0,0)

Esta operación de posicionamiento se puede utilizar varias veces en el mismo camino. en este caso, el camino puede estar en diferentes piezas no conectadas. Por ejemplo :

\draw (0,0) -- (1,1) (2,2) -- (3,3);

Hay dos posiciones explícitas (0, 0) y (2, 2). El camino consta de dos segmentos conectados. Esta posibilidad debe usarse con precaución, hace que el código sea más difícil de interpretar. Sería mejor escribir:

\draw (0,0) - (1,1); \draw (2,2) - (3,3);

Es un poco más largo para escribir, pero más claro y más modular. Sin embargo, un beneficio de agrupar operaciones en una ruta es factorizar las opciones gráficas en una sola, solo con colocar en el comando \draw

Operaciones principales Los principales símbolos o nombres de operaciones son:

194

A.6. LAS OPCIONES

-, - |,, - -, --cycle rectangle, circle, arc, grid, plot, --plot,

to

Las operaciones relacionadas con los nodos son especiales:

node, edge, child

Estos están escritos dentro de un camino, pero lo que definen no se considera como elemento del camino. Esta distinción es importante para el orden de la trama (los nodos se trazan después del resto), rellenando con rellenar y cerrando regiones con - - cycle (el nodo no forman parte de la región a rellenar).

A.6. A.6.1.

Las opciones Opciones explícitas: [...]

Sintaxis, escribimos las opciones entre corchetes, separadas por comas. La especificación de una opción puede tomar muchas formas, las principales son [clave] y [clave = valor]. Se pueden aplicar a cualquier entorno {tikzpicture} o entorno {scope}, a una ruta utilizada por \draw, \fill, \clip, \filldraw, o \path, y en la mayoría de las operaciones de ruta, como nodo, o cuadrícula. Ejemplo:

\begin{tikzpicture} [scale=0.75] \draw [gray, very thin] (-2,-2) grid [step=0.5cm] (2,2); \draw (0,0) node [below, fill=white] {$O$} node{$\bullet$}; \draw [dashed,red,thick] (0,0) circle(1); \end{tikzpicture}

• O

Opciones predeterminadas: atajos El mecanismo que interpreta las opciones está definido por el paquete pgfkeys, que se carga automáticamente. con TikZ y que

A.6. LAS OPCIONES

195

puede usarse fuera de TikZ. Este mecanismo incluye posibilidades de abstracción, abreviaturas y valores por defecto que a menudo son prácticos, pero que a veces puede parecer misterioso y causar confusión, especialmente porque algunos de los accesos directos también se pueden obtener mediante comandos que ocultan el mecanismo de opciones.

Ejemplo: coordinate Un buen ejemplo lo da la coordenada de la palabra clave para asignar un nombre simbólico en un punto o nodo. Se encuentra en diferentes formas: como un comando, como una operación de ruta, como clave de opción, como valor de opción. Aquí hay algunos ejemplos que tienen el efecto de nombrar (o) el origen del marcador:

comando: \coordenada (o) en (0,0); operación de ruta: \path (0,0) coordinate (o); tecla de opción: \path (0,0) node [coordinate] (o); valor de opción: \path (0,0) node [shape=coordinate] (o);

De hecho, el "verdadero" concepto de coordenada es el último: es un valor posible de la opción forma para un nodo. Decir que la forma tiene la coordenada de valor significa que el nodo no tiene medida, y por lo tanto puede verse como un punto único, y por lo tanto puede ser usado para detectar las coordenadas de este punto. Pero pensar este concepto en estos términos es un nivel de detalle técnico algo complicado. Para el uso habitual, que consiste solo en dar un nombre a un punto. Por eso el ll lenguaje ofrece otras posibilidades, las cuales todas bajan internamente para decir que hay un Nodo (a veces implícito) cuya opción de forma es coordenada. Ejemplo: draw Para dibujar una ruta, usualmente usas el comando \draw. Pero esto es solo un atajo para decir que la opción de dibujo de la ruta se establece en un color determinado (el color actualmente vigente, es decir, el valor de la opción de color). En otras palabras, la palabra clave de dibujo indica una opción de color en lugar de una instrucción pidiendo dibujar. Pero, en el mecanismo interno, el hecho de especificar este color tiene el efecto de hacer efectivo el diseño. Ejemplo:

\begin{tikzpicture} [scale=0.4] \draw [red] (0,0) circle (1) ; % 1 traza en rojo \path[color=blue] (0,0) circle (2); % 2 no rastrea \path[color=blue,draw] (0,0) circle (3); % 3 traza en azul

196

A.7. USANDO COMANDOS LATEXEN TIKZ

\path[color=blue,draw=green] (0,0) circle (4); % 4 traza en verde \path [draw=gray] (0,0) circle (5); % 5 traza en gris \end{tikzpicture}

1 2 3 4 5

Notamos en esta ocasión que el comando básico para una ruta es \path, que es fácil de definir un camino, pero no necesariamente rastrearlo. Los otros comandos de ruta, tales como \clip, \draw, \fill, son solo accesos directos que asignan al comando \path ciertas opciones.

A.7.

Usando comandos LATEXen TikZ

TikZ es una extensión de LATEX. Aunque define sus propias reglas sintácticas, pero se beneficia de algunos mecanismos LATEX, especialmente el uso de comandos vistas como macros de reemplazo de texto. El manual no especifica exactamente lo que es posible o no, sino la experiencia y los ejemplos demuestra que es posible definir tus propios comandos como abreviaturas para generar partes del texto fuente. Por ejemplo, podemos definir un comando que dibuja un triángulo equilátero del lado 1 cuyo un vértice es (0, 0) y uno de sus lados está dirigido de acuerdo con el ángulo polar dado en el parámetro # 1. Utiliza la opción de rotación para girar el triángulo en la dirección deseada.

\newcommand{\triangleE}[1] {\draw[rotate=#1] (0,0) -- (1,0) -- (1/2, {sqrt(3)/2}) -- cycle;}

Si tenemos varios triángulos de este tipo para dibujar, evita tener que escribir cada vez que el código detallado:

197

A.7. USANDO COMANDOS LATEXEN TIKZ

\begin{tikzpicture} \triangleE{10} \triangleE{90} \triangleE{200} \end{tikzpicture}

90o 10o 200o

Así que vemos que dentro de un entorno {tikzpicture}, es posible usar un comando definido en otra parte. Este comando se desarrollará como código fuente de TikZ y entonces será interpretado por TikZ.

Apéndice B Error !Que hacer? Vamos optimista, aquí se supone que el lector ya sabe cómo corregir los errores que pueden ocurrir cuando se escribe un documento LATEX. Se ha informado de que aquí sólo las principales fuentes de errores típicos TikZ. Durante un error de compilación, primero debe comprobar las últimas líneas mostradas en la consola. La consola es la ventana en la que se muestran los mensajes de compilación y los mensajes de error. Aquí informaremos los mensajes más frecuentes en TikZ que deben llamar la atención, explicaremos su origen y cómo corregir errores.

Olvidado "; " Si aparece el siguiente mensaje:

! Package tikz Error; Giving up on this path. Did you forget a semicolon?.

Este es el error más común cuando empiezas a usar Tik Z. Cualquier comando TikZ termina con un punto y coma que a menudo olvidas. La corrección es fácil.

Los números demasiado grande Si aparece el siguiente mensaje:

! Dimension too large. \pgf@xx

A este mensaje le sigue el número de una línea que generalmente contiene coordenadas demasiado grandes. 199

200 De hecho, en TikZ, es mejor limitar las coordenadas de los puntos a valores entre 500 y +500. Por lo tanto, es suficiente diseñar el dibujo para mantener las coordenadas de todos los puntos de la figura en un intervalo limitado.

El "! "En deftnition de color Si aparece el siguiente mensaje:

! Missing \endcsname inserted.

\penalty

A este mensaje bastante misterioso le sigue el número de una línea que generalmente contiene una opción de color como: \draw [red! 50] ... La persona responsable del error aquí es el “¡‘ Y el atajo en la definición de color de la trama. Corregimos el error con: \draw [color = red! 50] ...

Apéndice C ¿Dónde encontrar ayuda? Un sitio web, creado por los autores, acompaña este libro. Contendrá el código de todos los ejemplos presentados aquí, además de algunas adiciones. Desde el sitio, también es posible contactar a los autores: Todas las preguntas y sugerencias son bienvenidas. http://math.et.info.free.fr/TikZ/index.html

Libros para leer En Internet está la documentación del autor Till Tantau: Última versión de "TikZ & PGF Manual" Este documento en formato PDF de 560 páginas es una referencia muy completa, pero al principio sigue siendo un poco difícil ... Si eres un principiante en LATEX, te recomendamos especialmente en la editorial H & K: "LATEXpara los impacientes". http://www.h-k.fr/liens/tp/latex_pour_impatient.htm Otros enlaces a Internet

En inglés El autor de TikZ es Till Tantau, que también creó para LATEXel paquete Beamer que permite hacer presentaciones en diapositivas. http://www.tcs.uni-luebeck.de/mitarbeiter/tantau/ TEXample.net ofrece ejemplos del autor y cubre una amplia gama de temas: http://www.texample.net/tikz/examples/author/till-tantau/

En francés Ve al sitio web de Altermundus: http://www.altermundus.fr/

201