summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/lshort-spanish/fuente/src/graphic.tex
blob: c5a00c63eebb1227b19efd14b6e9d502d0ea72f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setcounter{chapter}{4}
\newcommand{\graphicscompanion}{\emph{The \LaTeX{} Graphics Companion}~\cite{graphicscompanion}} 
\newcommand{\hobby}{\emph{A User's Manual for MetaPost}~\cite{metapost}}
\newcommand{\hoenig}{\emph{\TeX{} Unbound}~\cite{unbound}}
\newcommand{\graphicsinlatex}{\emph{Graphics in \LaTeXe{}}~\cite{ursoswald}}

\chapter{Producción de gráficos matemáticos}
\label{chap:graphics}

\begin{intro}
Mucha gente usa \LaTeX\ para componer sus textos; pero además del
enfoque orientado a la estructura (y no al contenido) tan conveniente,
\LaTeX\ también ofrece la posibilidad (si bien bastante restringida)
de producir salidas gráficas a partir de descripciones textuales.  Por
otro lado, se han creado varias extensiones de  \LaTeX\ para evadir
estas restricciones.  En esta sección aprenderá algunas de ellas.
\end{intro}

\section{Primer vistazo}

El entorno \ei{picture} permite programar dibujos directamente en 
\LaTeX.  Una descripción detallada puede encontrarse en el \manual.
Por un lado hay restricciones serias, como que las pendientes de
los segmentos de recta así como los radios de los círculos están
restringidos a un número corto de valores.  Por otro lado, el entorno 
\ei{picture} de \LaTeXe\ trae con él la orden \ci{qbezier}, donde
``\texttt{q}'' significa ``cuadrática''.  Muchas curvas usadas con
frecuencia, como círculos, elipses o catenarias, puedes aproximarse
satisfactoriamente con curvas de  B\'ezier cuadráticas, aunque esto
puede requerir algo de matemáticas.  Si además se utiliza un
lenguaje de programación como Lisp para generar bloques 
\ci{qbezier} de \filenomo{}s de entrada \LaTeX, el entorno \ei{picture} se
vuelve bastante potente.

Aunque la programación de dibujos directamente en  \LaTeX\ tiene muchas
restricciones, y es a menudo muy incómodo, puede haber razones para hacerlo.
Los documentos producidos son 
 ``pequeños'' en cuanto al tamaño en octetos, y no hay que andar
 arrastrando \filenomo{}s gráficos adicionales.

Los paqueteos como \pai{epic} y \pai{eepic} (descritos, por ejemplo,
en \companion) o
\pai{pstricks} ayudan a eliminar las restricciones a las que está
sujeto el entorno \ei{picture} original, y refuerzan en gran medida la
potencia gráfica de \LaTeX.

Mientras los dos primeros paquetes sólo mejoran el entorno
\ei{picture}, el paquete \pai{pstricks} tiene sus propio entorno de
dibujo, \ei{pspicture}.  La potencia de  \pai{pstricks} se basa en el
hecho de que este paquete hace uso extenso de las posibilidades de
\PSi{}.  Además, numerosos paquetes han sido escritos para propósitos
específicos.  Uno de ellos es
\texorpdfstring{\Xy}{Xy}-pic, descrito al final de este capítulo.  Una
amplia variedad de estos paquetes se describe en detalle en
\graphicscompanion{} (no lo confunda con \companion).

Quizás la herramienta gráfica más potente relacionada con \LaTeX\ es
\texttt{MetaPost}, el gemelo de \texttt{METAFONT} de
Donald E. Knuth. \texttt{MetaPost} tiene el lenguaje de programación
de \texttt{METAFONT}, muy potente y matemáticamente sofisticado; pero al
contrario que \texttt{METAFONT}, que genera mapas de pixeles,
\texttt{MetaPost} genera \filenomo{}s de Encapsulated \PSi{}, que pueden
importarse en \LaTeX.  Para una introducción, vea \hobby, o el
tutorial de \cite{ursoswald}.

Una discusión minuciosa sobre estrategias en \LaTeX{} y \TeX{} para
gráficos (y \fontsnomo{}) puede encontrarse en \hoenig.

\section{El entorno \texttt{picture}}
\secby{Urs Oswald}{osurs@bluewin.ch}

\subsection{Órdenes básicas}

Se crea un entorno \ei{picture}\footnote{Lo crea o no, el entorno
picture funciona sin más, con \LaTeXe{} normal, sin necesidad de
cargar ningún paquete.} con alguna de las dos órdenes
\begin{lscommand}
\ci{begin}\verb|{picture}(|$x,y$\verb|)|\ldots\ci{end}\verb|{picture}|
\end{lscommand}
\noindent o
\begin{lscommand}
\ci{begin}\verb|{picture}(|$x,y$\verb|)(|$x_0,y_0$\verb|)|\ldots\ci{end}\verb|{picture}|
\end{lscommand}
Los números $x,\,y,\,x_0,\,y_0$ se refieren a \ci{unitlength}, que
puede establecerse en cualquier momento
(pero no dentro de un entorno \ei{picture}) con una orden como
\begin{lscommand}
\ci{setlength}\verb|{|\ci{unitlength}\verb|}{1.2cm}|
\end{lscommand}
El valor por omisión de \ci{unitlength} es \texttt{1pt}.  El primer
par, $(x,y)$, reserva dentro del documento un espacio rectangular para
el dibujo.  El segundo par, opcional, $(x_0,y_0)$, asigna coordenadas
arbitrarias a la esquina inferior izquierda del rectángulo reservado. 

La mayoría de las órdenes de dibujo tienen alguna de las dos formas
\begin{lscommand}
\ci{put}\verb|(|$x,y$\verb|){|\emph{objeto}\verb|}|
\end{lscommand}
\noindent o
\begin{lscommand}
\ci{multiput}\verb|(|$x,y$\verb|)(|$\Delta x,\Delta
y$\verb|){|$n$\verb|}{|\emph{objeto}\verb|}|\end{lscommand}
Las curvas de B\'ezier son una excepción.  Se dibujan con la orden
\begin{lscommand}
\ci{qbezier}\verb|(|$x_1,y_1$\verb|)(|$x_2,y_2$\verb|)(|$x_3,y_3$\verb|)|
\end{lscommand}
\newpage

\subsection{Segmentos de recta}
\begin{example}
\setlength{\unitlength}{5cm}
\begin{picture}(1,1)
  \put(0,0){\line(0,1){1}}
  \put(0,0){\line(1,0){1}}  
  \put(0,0){\line(1,1){1}}  
  \put(0,0){\line(1,2){.5}}
  \put(0,0){\line(1,3){.3333}}
  \put(0,0){\line(1,4){.25}}  
  \put(0,0){\line(1,5){.2}}
  \put(0,0){\line(1,6){.1667}}
  \put(0,0){\line(2,1){1}}
  \put(0,0){\line(2,3){.6667}}
  \put(0,0){\line(2,5){.4}}
  \put(0,0){\line(3,1){1}}  
  \put(0,0){\line(3,2){1}}
  \put(0,0){\line(3,4){.75}}
  \put(0,0){\line(3,5){.6}}
  \put(0,0){\line(4,1){1}}
  \put(0,0){\line(4,3){1}}  
  \put(0,0){\line(4,5){.8}}
  \put(0,0){\line(5,1){1}}
  \put(0,0){\line(5,2){1}}
  \put(0,0){\line(5,3){1}}
  \put(0,0){\line(5,4){1}}
  \put(0,0){\line(5,6){.8333}}
  \put(0,0){\line(6,1){1}}
  \put(0,0){\line(6,5){1}}
\end{picture}
\end{example}
Se dibujan segmentos de recta con la orden
\begin{lscommand}
\ci{put}\verb|(|$x,y$\verb|){|\ci{line}\verb|(|$x_1,y_1$\verb|){|$length$\verb|}}|
\end{lscommand}
La orden \ci{line} tiene dos argumentos:
\begin{enumerate}
  \item un vector director,
  \item una longitud.
\end{enumerate}
Los componentes del vector director están restringidos a los enteros
\[
  -6,\,-5,\,\ldots,\,5,\,6,
\]
y tienen que ser primos entre sí (coprimos; sin divisor común salvo
1).  La figura ilustra los 25 posibles valores de las pendientes en el
primer cuadrante.  La longitud es relativa a \ci{unitlength}.  El
argumento longitud es la coordenada vertical en el caso de un segmento
de recta vertical; el el resto de los casos, la coordenada horizontal.

\subsection{Flechas}

\begin{example}
\setlength{\unitlength}{0.75mm}
\begin{picture}(60,40)
  \put(30,20){\vector(1,0){30}}
  \put(30,20){\vector(4,1){20}}
  \put(30,20){\vector(3,1){25}}
  \put(30,20){\vector(2,1){30}}
  \put(30,20){\vector(1,2){10}}
  \thicklines
  \put(30,20){\vector(-4,1){30}}
  \put(30,20){\vector(-1,4){5}}
  \thinlines
  \put(30,20){\vector(-1,-1){5}}
  \put(30,20){\vector(-1,-4){5}}
\end{picture}
\end{example}
Las flechas se dibujan con la orden
\begin{lscommand}
\ci{put}\verb|(|$x,y$\verb|){|\ci{vector}\verb|(|$x_1,y_1$\verb|){|$length$\verb|}}|
\end{lscommand}
Para las flechas, los componentes del vector director están incluso
más estrechamente restringidos que para los segmentos de recta, a los
enteros
\[
  -4,\,-3,\,\ldots,\,3,\,4.
\]
Los componentes también tienen que ser primos entre sí (sin divisor
común salvo 1).  Fíjese en el efecto de la orden
\ci{thicklines} en las dos flechas que apuntan arriba a la izquierda.

\subsection{Circunferencias y círculos}

\begin{example}
\setlength{\unitlength}{1mm}
\begin{picture}(60, 40)
  \put(20,30){\circle{1}}
  \put(20,30){\circle{2}}
  \put(20,30){\circle{4}}
  \put(20,30){\circle{8}}
  \put(20,30){\circle{16}}
  \put(20,30){\circle{32}}
  
  \put(40,30){\circle{1}}
  \put(40,30){\circle{2}}
  \put(40,30){\circle{3}}
  \put(40,30){\circle{4}}
  \put(40,30){\circle{5}}
  \put(40,30){\circle{6}}
  \put(40,30){\circle{7}}
  \put(40,30){\circle{8}}
  \put(40,30){\circle{9}}
  \put(40,30){\circle{10}}
  \put(40,30){\circle{11}}
  \put(40,30){\circle{12}}
  \put(40,30){\circle{13}}
  \put(40,30){\circle{14}}
  
  \put(15,10){\circle*{1}}
  \put(20,10){\circle*{2}}
  \put(25,10){\circle*{3}}
  \put(30,10){\circle*{4}}
  \put(35,10){\circle*{5}}
\end{picture}
\end{example}
La orden
\begin{lscommand}
  \ci{put}\verb|(|$x,y$\verb|){|\ci{circle}\verb|{|\emph{diámetro}\verb|}}|
\end{lscommand}
\noindent dibuja una circunferencia con centro $(x,y)$ y diámetro (no
radio) \emph{diámetro}.
El entorno \ei{picture} sólo admite diámetros hasta aproximadamente
14\,mm, e incluso no todos los diámetros son posibles bajo ese
límite.  La orden \ci{circle*} produce discos (círculos rellenos).

Como es el caso de segmentos de recta, uno puede recurrir a paquetes
adicionales, como \pai{eepic} o \pai{pstricks}.  Para una descripción
minuciosa de estos paquetes, vea \graphicscompanion.

Hay también una posibilidad dentro del entorno
\ei{picture}.  Si uno no tiene miedo de hacer los cálculos necesarios
(o dejárselo a un programa), circunferencias y elipses arbitrarios
pueden parchearse mediante curvas de B\'ezier.  Vea \graphicsinlatex\
para ejemplos y \filenomo{}s en Java.

\subsection{Texto y fórmulas}

\begin{example}
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,5)
  \thicklines
  \put(1,0.5){\line(2,1){3}}
  \put(4,2){\line(-2,1){2}}
  \put(2,3){\line(-2,-5){1}}
  \put(0.7,0.3){$A$}
  \put(4.05,1.9){$B$}
  \put(1.7,2.95){$C$}
  \put(3.1,2.5){$a$}
  \put(1.3,1.7){$b$}
  \put(2.5,1.05){$c$}
  \put(0.3,4){$F=
    \sqrt{s(s-a)(s-b)(s-c)}$}  
  \put(3.5,0.4){$\displaystyle
    s:=\frac{a+b+c}{2}$}
\end{picture}
\end{example}
Como muestra este ejemplo, se pueden escribir texto y fórmulas en un
entorno \ei{picture} con la orden \ci{put} de la forma habitual.

\subsection{\ci{multiput} y \ci{linethickness}}

\begin{example}
\setlength{\unitlength}{2mm}
\begin{picture}(30,20)
  \linethickness{0.075mm}
  \multiput(0,0)(1,0){26}%
    {\line(0,1){20}}
  \multiput(0,0)(0,1){21}%
    {\line(1,0){25}}
  \linethickness{0.15mm}    
  \multiput(0,0)(5,0){6}%
    {\line(0,1){20}}
  \multiput(0,0)(0,5){5}%
    {\line(1,0){25}}
  \linethickness{0.3mm}    
  \multiput(5,0)(10,0){2}%
    {\line(0,1){20}}
  \multiput(0,5)(0,10){2}%
    {\line(1,0){25}}
\end{picture}
\end{example}
La orden
\begin{lscommand}
  \ci{multiput}\verb|(|$x,y$\verb|)(|$\Delta x,\Delta
  y$\verb|){|$n$\verb|}{|\emph{objeto}\verb|}|
\end{lscommand}
\noindent tiene 4 argumentos: el punto de inicio, el vector de
  traslación de un objeto al siguiente, el número de objetos y el
  objeto que dibujar.  La orden \ci{linethickness} se aplica a
  segmentos de recta horizontales y verticales, pero no a segmentos
  oblicuos ni a circunferencias.  Sí se aplica, en cambio, a curvas de
  B\'ezier cuadráticas.

\subsection{Óvalos}

\begin{example}
\setlength{\unitlength}{0.75cm}
\begin{picture}(6,4)
  \linethickness{0.075mm}
  \multiput(0,0)(1,0){7}%
    {\line(0,1){4}}
  \multiput(0,0)(0,1){5}%
    {\line(1,0){6}}
  \thicklines
  \put(2,3){\oval(3,1.8)} 
  \thinlines
  \put(3,2){\oval(3,1.8)} 
  \thicklines
  \put(2,1){\oval(3,1.8)[tl]} 
  \put(4,1){\oval(3,1.8)[b]} 
  \put(4,3){\oval(3,1.8)[r]} 
  \put(3,1.5){\oval(1.8,0.4)}     
\end{picture}
\end{example}
La orden
\begin{lscommand}
  \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)}|
\end{lscommand}
\noindent o
\begin{lscommand}
  \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)[|\emph{posición}\verb|]}|
\end{lscommand}
\noindent produce un óvalo centrado en $(x,y)$ y con una anchura $w$ y
altura $h$.  Los argumentos opcionales de
\emph{posición}  \texttt{t}, \texttt{b}, \texttt{l}, \texttt{r} se
refieren a 
``top'' (arriba), ``bottom'' (abajo), ``left'' (izquierda), ``right''
(derecha), y pueden combinarse, como ilustra el ejemplo.

El grosor de la línea puede controlarse con dos tipos de órdenes: \\ 
\ci{linethickness}\verb|{|\emph{longitud}\verb|}| por un lado,
\ci{thinlines} y \ci{thicklines} por el otro.  Mientras
\ci{linethickness}\verb|{|\emph{longitud}\verb|}| se aplica sólo a
líneas horizontales y verticales (y curvas de B\'ezier cuadráticas),
\ci{thinlines} y \ci{thicklines} se aplican a segmentos de recta
oblicuos y a circunferencias y óvalos.


\subsection{Uso múltiple de cajas de dibujos predefinidas}

\begin{example}
\setlength{\unitlength}{0.5mm}
\begin{picture}(120,168)
\newsavebox{\foldera}
\savebox{\foldera}
  (40,32)[bl]{% definición
  \multiput(0,0)(0,28){2}
    {\line(1,0){40}}
  \multiput(0,0)(40,0){2}
    {\line(0,1){28}}
  \put(1,28){\oval(2,2)[tl]}
  \put(1,29){\line(1,0){5}}
  \put(9,29){\oval(6,6)[tl]}
  \put(9,32){\line(1,0){8}}
  \put(17,29){\oval(6,6)[tr]}
  \put(20,29){\line(1,0){19}}
  \put(39,28){\oval(2,2)[tr]}  
}
\newsavebox{\folderb}
\savebox{\folderb}
  (40,32)[l]{%         definición
  \put(0,14){\line(1,0){8}}
  \put(8,0){\usebox{\foldera}}
}
\put(34,26){\line(0,1){102}} 
\put(14,128){\usebox{\foldera}}
\multiput(34,86)(0,-37){3}
  {\usebox{\folderb}} 
\end{picture}
\end{example}
Una caja de dibujo puede  \emph{declararse} con la orden
\begin{lscommand}
  \ci{newsavebox}\verb|{|\emph{nombre}\verb|}|
\end{lscommand}
\noindent y después \emph{definirse} con  
\begin{lscommand}
  \ci{savebox}\verb|{|\emph{nombre}\verb|}(|\emph{anchura,altura}\verb|)[|\emph{posición}\verb|]{|\emph{contenido}\verb|}|
\end{lscommand}
\noindent y finalmente puede \emph{dibujarse} cuantas veces se desee
con
\begin{lscommand}
  \ci{put}\verb|(|$x,y$\verb|)|\ci{usebox}\verb|{|\emph{nombre}\verb|}|
\end{lscommand}

El parámetro opcional  \emph{posición} tiene el efecto de definir el
`punto de anclaje' de la caja.  En el ejemplo se establece a
\texttt{bl}, lo que pone el punto de anclaje en la esquina inferior
izquierda (bottom left) de la caja.  Los otros indicadores de posición
son \texttt{t}op (superior) y \texttt{r}ight (derecha).

El argumento \emph{nombre} se refiere a un espacio de almacenamiento
de  \LaTeX{}  y, por tanto, su aspecto ha de ser como el de una orden
(lo que implica las retrobarras en el ejemplo).  Las cajas de dibujo
pueden anidarse: En este ejemplo, \ci{foldera} se usa dentro de la
definción de \ci{folderb}.

Tiene que usarse la orden \ci{oval} pues la orden \ci{line} no
funciona si la longitud del segmento en menor de  3\,mm.

\subsection{Curvas de B\'ezier cuadráticas}

\begin{example}
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,4)
  \linethickness{0.075mm}
  \multiput(0,0)(1,0){7}
    {\line(0,1){4}}
  \multiput(0,0)(0,1){5}
    {\line(1,0){6}}
  \thicklines
  \put(0.5,0.5){\line(1,5){0.5}}    
  \put(1,3){\line(4,1){2}} 
  \qbezier(0.5,0.5)(1,3)(3,3.5)
  \thinlines   
  \put(2.5,2){\line(2,-1){3}}
  \put(5.5,0.5){\line(-1,5){0.5}}
  \linethickness{1mm}
  \qbezier(2.5,2)(5.5,0.5)(5,3)
  \thinlines
  \qbezier(4,2)(4,3)(3,3)
  \qbezier(3,3)(2,3)(2,2)
  \qbezier(2,2)(2,1)(3,1)
  \qbezier(3,1)(4,1)(4,2)
\end{picture}
\end{example}
Como ilustra este ejemplo, dividir un círculo en 4 curvas de B\'ezier
cuadráticas no es satisfactorio.  Al menos se necesitan 8.  La figura
muestra de nuevo el efecto de la orden \ci{linethickness} en las
rectas verticales u horizontales, y de las órdenes
\ci{thinlines} y \ci{thicklines} en los segmentos oblicuos.  También
muestra que ambos tipos de órdenes afectan a las curvas de  B\'ezier
cuadráticas, de forma que cada orden se impone sobre las anteriores.

Indiquen $P_1=(x_1,\,y_1),\,P_2=(x_2,\,y_2)$ los puntos extremos, y
$m_1,\,m_2$ las pendientes respectivas, de una curva de B\'ezier
cuadrática.  El punto de control intermedio
$S=(x,\,y)$ viene dado por la ecuación
\begin{equation} \label{zwischenpunkt}
  \left\{
    \begin{array}{rcl}
      x & = & \displaystyle \frac{m_2 x_2-m_1x_1-(y_2-y_1)}{m_2-m_1}, \\
      y & = & y_i+m_i(x-x_i)\qquad (i=1,\,2).
    \end{array}
  \right.
\end{equation}
\noindent Vea \graphicsinlatex\ para un programa en Java que genera la
    línea de órdenes \ci{qbezier} necesaria.

\subsection{Catenaria}

\begin{example}
\setlength{\unitlength}{1cm}
\begin{picture}(4.3,3.6)(-2.5,-0.25)
\put(-2,0){\vector(1,0){4.4}}
\put(2.45,-.05){$x$}
\put(0,0){\vector(0,1){3.2}}
\put(0,3.35){\makebox(0,0){$y$}}
\qbezier(0.0,0.0)(1.2384,0.0)
  (2.0,2.7622) 
\qbezier(0.0,0.0)(-1.2384,0.0)
  (-2.0,2.7622)
\linethickness{.075mm}
\multiput(-2,0)(1,0){5}
  {\line(0,1){3}}
\multiput(-2,0)(0,1){4}
  {\line(1,0){4}}
\linethickness{.2mm}
\put( .3,.12763){\line(1,0){.4}}
\put(.5,-.07237){\line(0,1){.4}}
\put(-.7,.12763){\line(1,0){.4}}
\put(-.5,-.07237){\line(0,1){.4}}
\put(.8,.54308){\line(1,0){.4}}
\put(1,.34308){\line(0,1){.4}}
\put(-1.2,.54308){\line(1,0){.4}}
\put(-1,.34308){\line(0,1){.4}}
\put(1.3,1.35241){\line(1,0){.4}}
\put(1.5,1.15241){\line(0,1){.4}}
\put(-1.7,1.35241){\line(1,0){.4}}
\put(-1.5,1.15241){\line(0,1){.4}}
\put(-2.5,-0.25){\circle*{0.2}}
\end{picture}
\end{example}

En esta figura, cada mitad simétrica de la catenaria $y=\cosh x -1$ se
aproxima mediante una curva de B\'ezier cuadrática.  La mitad derecha
de la curva acaba en el punto \((2;\,2.7622)\), y la pendiente allí
tiene el valor 
\(m=3.6269\).  Usando de nuevo la ecuación  (\ref{zwischenpunkt}),
podemos calcular los puntos de control intermedios.  Resultan ser
$(1.2384;\,0)$ y $(-1.2384;\,0)$.  Las cruces indican puntos de la
catenaria \emph{real}.  El error es difícilmente percibible, al ser
menor del uno por ciento.

Este ejemplo incluye el uso del argumento opcional de la orden \\
\verb|\begin{picture}|.
El dibujo se define en coordenadas ``matemáticas'' convenientes,
mientras con la orden
\begin{lscommand} 
  \ci{begin}\verb|{picture}(4.3,3.6)(-2.5,-0.25)|
\end{lscommand}
\noindent a su esquina inferior izquierda (marcada con un círculo negro)
se le asignan coordenadas $(-2.5;-0.25)$. 

\subsection{Rapidez en la Teoría Especial de la Relatividad}

\begin{example}
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,4)(-3,-2)
  \put(-2.5,0){\vector(1,0){5}}
  \put(2.7,-0.1){$\chi$}
  \put(0,-1.5){\vector(0,1){3}}
  \multiput(-2.5,1)(0.4,0){13}
    {\line(1,0){0.2}}
  \multiput(-2.5,-1)(0.4,0){13}
    {\line(1,0){0.2}}
  \put(0.2,1.4)
    {$\beta=v/c=\tanh\chi$}
  \qbezier(0,0)(0.8853,0.8853)
    (2,0.9640)
  \qbezier(0,0)(-0.8853,-0.8853)
    (-2,-0.9640)
  \put(-3,-2){\circle*{0.2}}
\end{picture}
\end{example}
Los puntos de control de las dos curvas de B\'ezier se calcularon con
las fórmulas (\ref{zwischenpunkt}).  La rama positiva se determina con
$P_1=(0;\,0),\,m_1=1$ y $P_2=(2;\,\tanh 2),\,m_2=1/\cosh^2 2$.  De
nuevo, el dibujo se define en coordenadas matemáticas convenientes, y
a la esquina inferior izquierda se le asignan las coordenadas
matemáticas $(-3;-2)$ (círculo negro).


\section{\texorpdfstring{\Xy}{Xy}-pic}
\secby{Alberto Manuel Brand\~ao Sim\~oes}{albie@alfarrabio.di.uminho.pt}
\pai{xy} es un paquete especial para dibujar diagramas.  Para usarlo,
simplemente añada la línea siguiente al preámbulo de su documento:
\begin{lscommand}
\verb|\usepackage[|\emph{opciones}\verb|]{xy}|
\end{lscommand}
\emph{opciones} es una lista de las funciones de \Xy-pic que quiera
cargar.  Estas opciones son útiles sobre todo al depurar el paquete.
Recomiendo que pase la opción \verb!all!, que hace que \LaTeX{} carque
todas las órdenes \Xy{}.

Los diagramas \Xy-pic se dibujan sobre un lienzo matricial, donde cada
elemento se sitúa en un apartado de la matriz:
\begin{example}
\begin{displaymath}
\xymatrix{A & B \\
          C & D }
\end{displaymath}
\end{example}
La orden \ci{xymatrix} debe usarse en modo mates.  Aquí, indicamos dos
renglones y dos columnas.  Para convertir la matriz en un diagrama
sólo añadimos flechas dirigidas mediante la orden \ci{ar}.
\begin{example}
\begin{displaymath}
\xymatrix{ A \ar[r] & B \ar[d] \\
           D \ar[u] & C \ar[l] }
\end{displaymath}
\end{example}
La orden flecha se sitúa en la celda origen de la flecha.  Los
argumentos son la dirección a la que la flecha debería apuntar:
\texttt{u}p (arriba), \texttt{d}own (abajo), \texttt{r}ight (derecha)
y \texttt{l}eft (izquierda).

\begin{example}
\begin{displaymath}
\xymatrix{
  A \ar[d] \ar[dr] \ar[r] & B \\
  D  &  C }
\end{displaymath}
\end{example}
Para hacer diagonales, basta con usar más de una dirección.  De hecho,
puede repetir direcciones para hacer flechas más grandes.
\begin{example}
\begin{displaymath}
\xymatrix{
  A \ar[d] \ar[dr] \ar[drr] & & \\
  B   &  C  &  D }
\end{displaymath}
\end{example}

Podemos dibujar diagramas incluso más interesantes añadiendo etiquetas
a las flechas.  Para hacerlo, usamos los operadores habituales de
subíndices y superíndices.
\begin{example}
\begin{displaymath}
\xymatrix{
  A \ar[r]^f \ar[d]_g &
             B \ar[d]^{g'} \\
  D \ar[r]_{f'}       & C }
\end{displaymath}
\end{example}

Como se ve, estos operadores se usan como en modo mates.  La única
diferencia es que superíndice significa ``sobre la flecha'', y
subíndice signifcea ``bajo la flecha''.  Hay un tercer operador, la
barra vertical: \verb+|+
Hace que el texto se sitúe \emph{encima} de la flecha.
\begin{example}
\begin{displaymath}
\xymatrix{
  A \ar[r]|f \ar[d]|g &
             B \ar[d]|{g'} \\
  D \ar[r]|{f'}       & C }
\end{displaymath}
\end{example}

Para dibujar una flecha con un agujero en ella, use
\verb!\ar[...]|\hole!.

En algunas ocasiones, es importante distinguir entre diferentes tipos
de flechas.  Esto puede hacerse poniendo etiquetas sobre ellas, o
cambiando su apariencia. Las órdenes \verb!\shorthandoff! y \verb!\shorthandon! son necesarias aquí para evitar conflictos con \verb!spanish!:

\begin{example}
\shorthandoff{"}
\begin{displaymath}
\xymatrix{
\bullet\ar@{->}[rr] && \bullet\\
\bullet\ar@{.<}[rr] && \bullet\\
\bullet\ar@{~)}[rr] && \bullet\\
\bullet\ar@{=(}[rr] && \bullet\\
\bullet\ar@{~/}[rr] && \bullet\\
\bullet\ar@{^{(}->}[rr] &&
                       \bullet\\
\bullet\ar@2{->}[rr] && \bullet\\
\bullet\ar@3{->}[rr] && \bullet\\
\bullet\ar@{=+}[rr]  && \bullet
}
\end{displaymath}
\shorthandon{"}
\end{example}

Fíjese en la diferencia entre los siguientes dos diagramas:

\begin{example}
\begin{displaymath}
\xymatrix{
 \bullet \ar[r] 
         \ar@{.>}[r] & 
 \bullet
}
\end{displaymath}
\end{example}

\begin{example}
\begin{displaymath}
\xymatrix{
 \bullet \ar@/^/[r] 
         \ar@/_/@{.>}[r] &
 \bullet
}
\end{displaymath}
\end{example}

Los modificadores entre las barras definen cómo se dibujan las
curvas. 
\Xy-pic ofrece muchas maneras de influir en el dibujo de las curvas;
para más información, consulte la documentación de \Xy-pic.


% \begin{example}
% \begin{lscommand}
% \ci{dum}
% \end{lscommand}
% \end{example}