SlideShare ist ein Scribd-Unternehmen logo
1 von 144
Downloaden Sie, um offline zu lesen
x y
z
αϕ1(·)
µN
βϕ2(·)
x y
ǫx − u1 ǫy − u1
S I R
λϕ3(·)
λrϕ4(·)
xr yr
θ
βrϕ5(·)
ǫryrǫrxr
fαψ1(·)m + αrψ1(·)mr
µS µI µR
Diseño Gráfico en LATEX
Gráficos Matemáticos de Alta Calidad
Efraín Alberto Hoyos Salcedo
Aníbal Muñoz Loaiza
Jorge Mario García Usuga
Diseño gráfico en LATEX
Jorge Mario García Usuga
14 de diciembre de 2007
J. M. García, A. Muñoz L. E. A. Hoyos
Diseño Gráfico en LATEX
Gráficos Matemáticos de Alta Calidad
No está permitida la reproducción total o parcial de esta obra por
cualquier medio o método sin autorización escrita de los autores.
Derechos Reservados©
Armenia Quindío Colombia 2007
ISBN: 978-958-44-2285-9
PREFACIO
Para muchos usuarios de LATEX , se hace imprescindible la inclusión
de material gráfico dentro de sus documentos matemáticos. General-
mente, el tema es algo desagradable para las personas que están dando
sus primeros pasos en LATEX , pues se deben tener archivos separados
del documento fuente para su posterior compilación. Hasta hace al-
gunos años se empezaron a implementar paquetes con la capacidad
de hacer gráficos matemáticos y no matemáticos dentro de nuestros
documentos TEX , esto se logró con paquetes como PSTricks y XY-pic
entre otros, los cuales permitieron crear gráficos a partir de códigos
tipo TeX.
Gráficos matemáticos como los ejes coordenados, diagramas de flujo,
diagramas conmutativos, gráfico de curvas en R2 y R3 entre otros, se
incluían en LATEX , haciéndolos en otros programas y luego exportán-
dolos a un formato compatible como ps o bmp. Esto producía una
incompatibilidad entre los tipos de letra usados por el software para
hacer las graficas y las fuentes usadas por LaTeX. Paquetes como
PSTricks yXY-pic presentan una forma muy “matemática"para realizar
este tipo de dibujos y producir artículos, libros y demás producción
escrita, con gráficos de excelente calidad. Como ejemplo del poder de
dichos paquetes, se presenta la portada de este libro, la cual se hizo
enteramente con PSTricks y XY-pic.
3
4
El libro está dividido en tres capítulos. El primero hace una extensa
revisión del paquete PSTricks, incluyendo ejemplos con su respectivo
código fuente. El segundo muestra dos herramientas muy útiles para
aquellas personas que no gustan de la programación en LATEX y el
último capítulo, es una recopilación de ejemplos hechos con XY-pic,
orientados a la construcción de diagramas de dinámicas ecológicas y
epidemiológicas. El libro está dirigido a usuarios avanzados de LATEX ,
pues, en los ejemplos se usan macros e instrucciones que se asume el
usuario ya debe conocer. Si el lector no tiene conocimiento de dichas
instrucciones refiérase a los documentos [11],[12],[9] y [6].
Esperamos que este material sirva de apoyo a docentes, alumnos y
TEX-nócratas que gusten de gráficos matemáticos de alta calidad en
sus documentos.
ÍNDICE GENERAL
1. Gráficos con PSTricks 9
1.1. El entorno . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2. Puntos . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3. Líneas y polígonos . . . . . . . . . . . . . . . . . . . . 15
1.3.1. Rectas simples . . . . . . . . . . . . . . . . . . 15
1.3.1.1. Flechas . . . . . . . . . . . . . . . . . 16
1.3.2. Rectas con el comando qline . . . . . . . . . . 16
1.3.3. Polígonos . . . . . . . . . . . . . . . . . . . . . 17
1.3.4. Frames con psframes . . . . . . . . . . . . . . 18
1.4. Círculos, elipses y arcos . . . . . . . . . . . . . . . . . 18
1.4.1. Círculos . . . . . . . . . . . . . . . . . . . . . . 18
1.4.2. Sección de círculo . . . . . . . . . . . . . . . . . 19
1.4.3. Elipses . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.4. Arcos . . . . . . . . . . . . . . . . . . . . . . . 20
1.5. Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.5.1. Los comandos pscurve, psecurve y psccurve 22
1.6. Manejo de Colores . . . . . . . . . . . . . . . . . . . . 24
1.6.1. Creación de nuevos colores . . . . . . . . . . . . 24
1.6.2. Texturas . . . . . . . . . . . . . . . . . . . . . . 28
1.6.3. Degradados . . . . . . . . . . . . . . . . . . . . 30
1.7. Manejo de objetos . . . . . . . . . . . . . . . . . . . . 32
5
6 ÍNDICE GENERAL
1.7.1. El comando rput . . . . . . . . . . . . . . . 33
1.7.2. Resortes . . . . . . . . . . . . . . . . . . . . . . 34
1.7.3. Ejes coordenados . . . . . . . . . . . . . . . . . 37
1.7.4. Grillas . . . . . . . . . . . . . . . . . . . . . . . 40
1.8. Manejo de texto . . . . . . . . . . . . . . . . . . . . . 42
1.8.1. El comando uput . . . . . . . . . . . . . . . . 42
1.8.2. Texto en recuadros . . . . . . . . . . . . . . . . 43
1.8.2.1. Sombras . . . . . . . . . . . . . . . . . 44
1.8.3. Texto sobre curvas . . . . . . . . . . . . . . . . 44
1.8.4. Texto con efectos especiales . . . . . . . . . . . 46
1.9. Trazado de curvas . . . . . . . . . . . . . . . . . . . . 47
1.9.1. Curvas a partir de su ecuación . . . . . . . . . 48
1.9.2. Curvas Paramétricas . . . . . . . . . . . . . . . 50
1.9.3. Regiones sombreadas . . . . . . . . . . . . . . . 51
1.10. Herramientas para árboles, grafos y diagramas . . . . . 54
1.10.1. Nodos . . . . . . . . . . . . . . . . . . . . . . . 54
1.10.2. Conectores . . . . . . . . . . . . . . . . . . . . 54
1.10.3. Etiquetas . . . . . . . . . . . . . . . . . . . . . 59
1.10.4. Árboles . . . . . . . . . . . . . . . . . . . . . . 61
1.10.4.1. Etiquetas para los nodos de los árboles 65
1.11. Manejo de objetos 3D con PSTricks . . . . . . . . . . . 66
1.11.1. El paquete pst-3dplot . . . . . . . . . . . . . 67
1.11.2. El eje cordenado 3D . . . . . . . . . . . . . . . 67
1.11.3. Ubicación de objetos con pstThreeDPut . . . 69
1.11.4. Puntos . . . . . . . . . . . . . . . . . . . . . . . 69
1.11.5. Líneas rectas . . . . . . . . . . . . . . . . . . . 70
1.11.6. Triángulos . . . . . . . . . . . . . . . . . . . . . 71
1.11.7. Cuadros y rectángulos . . . . . . . . . . . . . . 72
1.11.8. Cajas . . . . . . . . . . . . . . . . . . . . . . . 73
1.11.9. Circunferencias y elipses . . . . . . . . . . . . . 74
1.11.10.Esferas . . . . . . . . . . . . . . . . . . . . . . . 76
1.11.11.Curvas paraméntricas en 3D . . . . . . . . . . . 77
1.11.12.Gráfica de funciones . . . . . . . . . . . . . . . 80
2. Herramientas para gráficos con PSTricks 87
2.1. JpicEdt . . . . . . . . . . . . . . . . . . . . . . . . . . 87
2.1.1. Ventanas . . . . . . . . . . . . . . . . . . . . . 89
ÍNDICE GENERAL 7
2.1.2. Herramientas de edición . . . . . . . . . . . . . 93
2.1.3. Preferencias y configuración . . . . . . . . . . . 96
2.1.4. Otras herramientas de JpicEdt . . . . . . . . . 97
2.1.5. ¿Cómo pasar de JpicEdt a LATEX? . . . . . . . 102
2.1.6. Ejemplos en JpicEdt . . . . . . . . . . . . . . . 102
2.2. LATEXDraw . . . . . . . . . . . . . . . . . . . . . . . . 111
2.2.1. Herramientas de diseño . . . . . . . . . . . . . 112
2.2.2. Configuración de objetos . . . . . . . . . . . . 114
2.2.3. ¿Cómo pasar de LATEXDraw a LATEX? . . . . . 114
2.2.4. Ejemplos en LATEXDraw . . . . . . . . . . . . . 114
3. Conceptos Generales de XY- pic 119
3.1. Diagramas de dinámicas ecológicas y epidemiológicas . 120
3.2. Diagramas conmutativos . . . . . . . . . . . . . . . . . 130
8 ÍNDICE GENERAL
CAPÍTULO 1
Gráficos con PSTricks
PSTricks es un paquete que esta incluido en LATEX con base en las
librerías macros de TEX- PostScript, fue creado por Timothy Van
Zandt de la Universidad de Princeton en 1993. Estas librerías son
compatibles con AMS-TEX y AMS-LATEX. El paquete fue diseñado
específicamente para gráficos matemáticos de alta calidad, utilizando
técnicas de gráficos vectorizados, proporcionando así una calidad que
otros paquetes no pueden alcanzar. Con PSTricks se pueden incluir es-
tilos de líneas, objetos geométricos como rectángulos, triángulos; ejes
coordenados, herramientas para gráficos de diagramas de flujo, grafos,
mayas, objetos 3D, colores y efectos de texto, entre otros.
La instalación de PSTricks, es muy fácil, en la versión para Windows
MIKTEX 2.5 ya viene pre instalado y no requiere manipular archivos
para su configuración; para versiones inferiores, se debe tener cuida-
do con la ubicación de los archivos. PSTricks también está disponible
para Linux, Mac y Unix.
Empezaremos por poner las librerías en el preámbulo de nuestro doc-
umento
usepackage{pstricks}
usepackage{pst-plot}
9
10 1.1. El entorno
Paquete Función
Pst-plot Útil para gráficos que conlleven rectas,
polígonos, ejes y curvas
Pst-char Permite incluir texto con efectos especiales
Pst-text Muy similar al anterior, pero este permite
poner texto a lo largo de curvas
Pst-tree Útil para la contrucción de árboles
Pst-coil Zig-zags y resortes en electrónica
Pst-node Ideal para grafos y diagramas de flujo
Cuadro 1.1: Módulos de PSTricks
Sin embargo, es bueno que para trabajar con todas las opciones, hay
que usar un paquete que los una a todos, este se incluye de la siguiente
manera:
usepackage{pst-all}
PSTrick también incluye paquetes como pst-node especial para grafos,
el cuadro 1.1 muestra los diferentes módulos y su uso:
1.1 El entorno
Para incluir una gráfica con PSTricks en nuestro documento, debemos
invocar el entorno pspicture con la siguiente secuencia de instruc-
ciones:
begin{pspicture}(x,y)(x’,y’)
rput(0,0){hola}
end{pspicture}
Los parámetros x, y y x′, y′ son las esquinas opuestas de un rectángulo
imaginario. Nuestra gráfica se puede salir de dicho rectángulo, pero
usando begin{pspicture*}(x,y)(x’,y’) se recorta todo lo que so-
bre salga del rectángulo delimitado. El anterior código nos devolvera
el siguiente resultado
1. Gráficos con PSTricks 11
hola
Nada del otro mundo, sin embargo, podemos disponer de una malla
que nos guíe en la ubicación de nuestros objetos en PSTricks, para
esto creamos un nuevo objeto de la siguiente manera y lo ubicamos
antes del inicio del documento: begin{document}.
newpsobject{malla}{psgrid}{subgriddiv=1,griddots=10,
gridlabels=6pt}
Esto nos permitirá crear una malla útil para la ubicación de nu-estros
objetos
begin{pspicture}(-2,-2)(2,2) malla
rput(0,0){hola}
end{pspicture}
El resultado es el siguiente:
-2 -1 0 1 2
-2
-1
0
1
2
hola
12 1.2. Puntos
El comando rput se usa para ubicar objetos en el espacio delimitado,
más adelante estudiaremos la versatilidad de este comando. Por ahora,
observemos que aparece una malla numerada alrededor de nuestra
gráfica, podemos ubicar ahora otros objetos con la ayuda de dicha
cuadrícula. Ubicaremos la palabra “mundo” en la posición (1, −1)
-2 -1 0 1 2
-2
-1
0
1
2
hola
mundo
begin{pspicture}(-2,-2)(2,2)
malla
rput(0,0){hola}
rput(1,-1){mundo}
end{pspicture}
Si deseo que la malla sea más fina o por el contrario con la cuadric-
ula más grande, podemos cambiar dicho parámetro con la instruc-
ción psset{unit=1}, sólo debemos cambiar el valor de 1 por el que
necesitemos y ubicar esta instrucción antes del begin{pspicture}.
psset{unit=1} permite confugurar nuestro gráfico. se ubica antes
del begin{pspicture} y se pueden predeterminar algunas opciones
como el color, la escala, el grosor de las líneas, etc.
-2 -1 0 1 2
-2
-1
0
1
2
hola
mundo
psset{unit=0.6}
begin{pspicture}(-2,-2)(2,2)
malla
rput(0,0){hola}
rput(1,-1){mundo}
end{pspicture}
1.2 Puntos
PSTricks permite la inclusión de puntos con el siguiente comando
psdots[par](x1,y1)(x2,y2)(xn,yn)
El siguiente ejemplo colocaremos 9 puntos con estilos diferentes:
1. Gráficos con PSTricks 13
0 1 2 3 4 5 6 7 8 9
0
1
+ |
psset{unit=1.2, dotsize=5pt 0}
begin{pspicture}(0,0)(9,1)malla
psdots(0.5,0.5)
psdots[dotstyle=+](1.5,0.5)
psdots[dotstyle=triangle](2.5,0.5)
psdots[dotstyle=triangle*](3.5,0.5)
psdots[dotstyle=square](4.5,0.5)
psdots[dotstyle=square*](5.5,0.5)
psdots[dotstyle=pentagon](6.5,0.5)
psdots[dotstyle=pentagon*](7.5,0.5)
psdots[dotstyle=|](8.5,0.5)
end{pspicture}
En el cuadro 1.2 ilustraremos los diferentes estilos de puntos mostra-
dos en el ejemplo anterior. Además de estos estilos de puntos podemos
adicionar algunas otras opciones.
dotsize=dim
Con esta opción podemos cambiar el tamaño del punto, por defecto
es 2pt
dotscale=num1 num2
Con ella podemos escalar el tamaño de un punto, con el primer número
el tamaño horizontal y con el segundo el tamaño vertical. Por defecto
es 1
dotangle=angle
Los puntos son rotados por el ángulo determinado por el parámetro
angle, por omisión es cero.
En muchas ocasiones es importante ubicar puntos en nuestras gráficas,
el siguiente ejemplo muestra la utilidad de estas opciones:
14 1.2. Puntos
Estilo Ejemplo
*
+
+ +
|
| |
triangle
triangle*
square
square*
pentagon
pentagon*
Cuadro 1.2: Estilos de Puntos en PSTricks
psset{unit=0.5}
begin{pspicture}(0,-2.3)(4.9,2.3)
psdots[dotsize=0.266](2.8,0.6)
rput(0.6,-1.6)
{psaxes[linewidth=0.04](0,0)(0,0)(4,4)}
psdots[dotsize=0.17,dotangle=-66.0]
(1.6,1.0)
psdots[dotsize=0.4,dotstyle=triangle](3.6,-0.5)
psdots[dotsize=0.4,dotstyle=pentagon*](4.6,-0.7)
end{pspicture}
0 1 2 3 4
0
1
2
3
4
1. Gráficos con PSTricks 15
1.3 Líneas y polígonos
Las líneas y los polígonos son una de las herramientas más versatiles
en PSTricks. Con los puntos y las rectas se pueden crear una gran
variedad de figuras y formas muy comunes en matemáticas como: ejes
coordenados, digramas lineales, árboles, etc. A continuación presenta-
mos su configuración básica.
1.3.1. Rectas simples
psline[par]{flechas}(x0,y0)(x1,y1)...(xn,yn)
Esta instruccion dibuja una linea a travéz de las coordenas establecidas
por los puntos (x0, y0)(x1, y1) . . . (xn, yn)
La instrucción psline tiene los siguientes parametros:
linearc=dim
Por omisión es 0pt y hace referencia al arco con el que se dibujan las
curvas (si estamos dibujando un polígono). Dicha dimensión debe ser
positiva.
linewidth=n
Con esta opción podemos cambiar el ancho de la línea, se puede ini-
cializar en cero. Por defecto es 0.8pt
linestyle=
La opción permite cambiar la forma como se pinta la línea, esta puede
ser solid que es la opción por defecto, dashed ofrece una línea a tro-
zos y dotted una línea punteada.
dash= n b
Permite cambiar el patrón de negro o blanco en la línea a trozos por
omisión son 5pt y 3pt. Si queremos una línea igualemte espaciada
podemos cambiar la opción a 5pt 5pt para obtener el efecto deseado.
dotsep= n
Al igual que en dash, dotsep permite cambiar el patrón de separación
16 1.3. Líneas y polígonos
de los puntos en las líneas punteadas. Por omisión es 3pt
linecolor= color
Permite cambiar el color de la línea, por omisión es black, en la sec-
ción 1.6 mostraremos otros colores posibles con PSTricks.
doubleline= n
Permite trazar una línea doble o sencilla, por defecto es false, es decir
sencilla, si la queremos doble cambiamos n por true.
Veamos el siguiente ejemplo:
0 1 2 3 4
0
1
2
3
psset{unit=2.4}
begin{pspicture}(0,0)(4,3)
malla
psline(0,1.5)(4,1.5)
psline[linecolor=blue,
doubleline=true,
linestyle=dotted ](0,0.5)(4,0.5)
psline[linecolor=red,
linestyle=dashed ](0,2.5)(4,2.5)
end{pspicture}
1.3.1.1. Flechas
Las opciones de flechas se pueden implementar para construir ejes co-
ordenados o diagramas de flujo, árboles, etc, para este propósito cam-
biamos el párametro entre las llaves {}, a continuación en el cuadro
1.3 mostraremos las diferentes estilos de flechas.
1.3.2. Rectas con el comando qline
Para contruir flechas simples podemos usar el comando qline (x0, y0)
(x1, y1), el cual dibuja una recta entre los puntos sin parámetros de
grosor, estilos o flechas, veamos el siguiente ejemplo:
1. Gráficos con PSTricks 17
Parámetro Ejemplo Parámetro Ejemplo
-> <->
<- ->>
>>-<< <<->>
|<- ->|
>- -<
|- -|
|<->| |-|
[- -]
(- -)
[-] (-)
o- -o
*- -*
*-* o-o
Cuadro 1.3: Estilos de flechas para rectas en PSTricks
0 1 2 3
0
1
psset{unit=2.4}
begin{pspicture}(0,0)(1,2)
malla
qline(0,0)(3,1)
end{pspicture}
1.3.3. Polígonos
Este comando es muy similar a psline, y dibuja un polígono cerrado
que une el primer punto (x0, y0) con el último (xn, yn).
pspolygon[par](x0,y0)(x1,y1)(x2,y2)...(xn,yn)$
Veamos el siguiente ejemplo:
0 1 2
0
1
2
psset{unit=2.4}
begin{pspicture}(0,0)(2,2)
malla
pspolygon[linearc=.2]
(0,1)(1,0)(2,1)(1,2)
end{pspicture}
18 1.4. Círculos, elipses y arcos
1.3.4. Frames con psframes
Esta instrucción dibuja un rectángulo entre las esquinas opuestas (x0, y0)
y (x1, y1)
psframe[par](x0,y0)(x1,y1)
0 1 2
0
1
2
psset{unit=2.4}
begin{pspicture}(0,0)(2,2)
malla
psframe(0.5,0.5)(1.5,1.5)
end{pspicture}
1.4 Círculos, elipses y arcos
1.4.1. Círculos
Para dibujar círculos, elipses y arcos, PSTricks implementa el siguiente
comando
pscircle[par](x0,y0){r}
La instrucción simplemente dibuja una circunferencia con centro en
(x0, y0) y radio r
Por ejemplo:
0 1 2 3
0
1
2
3
psset{unit=1.5}
begin{pspicture}(0,0)(3,3)
malla
pscircle[linewidth=2pt]
(1,1){1}
pscircle[linestyle=dashed]
(1.5,1.5){1}
pscircle[linestyle=dotted]
(1.5,2){1.2}
end{pspicture}
1. Gráficos con PSTricks 19
Los parámetros son los mismos que podemos encontar para dibujar
rectas. En el ejemplo anterior podemos ver el manejo de estas opciones.
1.4.2. Sección de círculo
PSTricks implemeta la instrucción pswedge para dibujar secciones de
círculos, muy usados en estadística y geometría:
pswedge[par](x0,y0){r}{ang1}{ang2}
La instrucción requiere un punto como centro (x0, y0), y con el radio
r dibujará una sección de círculo entre los ángulos arg1 y arg2.
0 1 2 3
0
1
2
3
psset{unit=2.8}
begin{pspicture}(0,0)(3,3)
malla
pswedge[linewidth=2pt]
{1}{0}{70}
pswedge[linewidth=2pt]
{2}{0}{70}
pswedge[linewidth=2pt]
(3,3){2}{180}{270}
1.4.3. Elipses
Al igual que con el círculo las elipses necesitan un centro (x0, y0), pero,
para lograr el efecto requieren dos radios r1 y r2.
psellipse[par](x0,y0)(r1,r1)
veamos el siguiente ejemplo :
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)malla
psellipse[linestyle=dashed]
(2,1)(2,1)
psellipse(2,1.5)(1,1.5)
20 1.4. Círculos, elipses y arcos
1.4.4. Arcos
Los arcos requieren de un centro (x, y) que se tomará como base para
la circunferencia imaginária con la cual trazaremos el arco, un radio r
que es la distancia entre el centro y el arco, y dos ángulos angA, angB
que al igual que en la sección de círculos sirve para denotar el inicio y
el fin del arco.
psarc[par]{flechas}(x,y){r}{angA}{angB}
La funcion psarc utiliza los siguientes parámetros extra:
showpoints=
Se usa para mostar una línea punteada del centro de la circunferencia
imaginária a los extremos del arco, por omisión es false .
arcsepA= y arcsepB=
Estos parámetros que por defecto son 0pt, se usa para que parte del
arco tambien quede dibujado con lineas punteadas, comenzando por
angA o por angB, dependiendo de la functón que usemos.
arcsep=
Con esta opción podemos hacer lo mismo que con las opciones arcsepA
y arcsepB pero simultáneamente por ambos extremos del arco.
Ejemplo:
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psarc[showpoints=true,
arcsepA=2](0.2,0.2){1.5}{0}{90}
psarc[showpoints=true,
arcsepB=2](3.8,0.2){1.5}{90}{180}
psarc[showpoints=true,
arcsep=1](2,3){1.5}{190}{350}
Para hacer arcos con flechas se une la instrucción psarcn con la sigu-
1. Gráficos con PSTricks 21
iente notación:
psarcn[par]{flecha}(x,y){r}{angA}{angB}
El arco es dibujado en sentido horario, y tiene una opción {flecha}
con la cual podemos dibujar flechas como se indica en el cuadro 1.3.
Ejemplo:
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psarc{o-o}(0.2,0.2)
{1.5}{0}{90}
psarc{<->}(3.8,0.2)
{1.5}{90}{180}
psarc[arcsep=1]{>>-<<}(2,3){1.5}
{190}{350}
end{pspicture}
1.5 Curvas
Para dibujar curvas, PSTricks utiliza algorítmos de interpolación de
puntos, una de las más simples nos permite hacer una curva entre cu-
atro puntos; veamos la instrucción psbezier.
psbezier[par]{flechas}(x0,y0)(x1,y1)(x2,y2)(x3,y3)
Como podemos observar utiliza los mismos parámetros que las ante-
riores instruciones y cuatro puntos (x0, y0), (x1, y1), (x2, y2), (x3, y3).
La curva comienza en el punto (x0, y0), pero es tangente a una línea
recta entre el primer punto y el segundo, luego la curva termina en
el punto (x3, y3) pero tangente a una línea imaginaria entre el tercero
y cuarto punto. Al igual que con la instrucción psarc esta también
tiene la opción showpoints para ver las líneas imaginarias, veamos un
ejemplo:
22 1.5. Curvas
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psbezier[showpoints=true]{->}
(0,0)(1,3)(3,0)(4,3)
La intrucción parabola presenta la siguiente sintaxis:
parabola[par]{flechas}(x0,y0)(x1,y1)
Dibuja una parábola que comienza en el punto (x0, y0) y tiene como
máximo o mínimo el punto (x1, y1) dependiendo si el ultimo punto
esta por encima o por debajo del primer punto.
Ejemplo:
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
parabola{<->}(0,0)(2,3)
parabola{>-o}(1,3)(2,0)
end{pspicture}
1.5.1. Los comandos pscurve, psecurve y psccurve
El comando psbezier y parabola sólo pueden dibujar curvas simples
con no más de 4 puntos determinados; con estas nuevas instrucciones
podemos dibujar curvas mucho más elaboradas y definidas, con la can-
tidad de puntos que necesitemos, sin embargo, es necesario tener en
1. Gráficos con PSTricks 23
cuenta las siguientes opciones:
curvature= n m p
Por defecto este parámetro es de 1 0.1 0, y se utiliza para modificar
la forma de la curva, el primer valor hace la curva más firme. El se-
gundo parámetro hace que la curva se “apriete” si el ángulo formado
por los puntos es mayor a 45 grados, la curva es más suelta. El tercer
parámetro es similar al segundo, pero afecta la abertura de la curva
haciendola más o menos abierta en los vértices. Sin embargo es bueno
dejar los valores predeterminados por PSTricks.
La instrucción pscurve genera una curva abierta con los mismos parámet-
ros estudiados anteriormente. La opción showpoints muestra los puntos
de interpolación.
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
pscurve[showpoints=true]{<->}
(0,0)(1,2)(2,3)(3,3)(4,2)
end{pspicture}
psecurve es muy similar al anterior, pero la curva no pasan por el
primer y último punto, el algoritmo trata de unir los extremos lo mejor
posible, el siguiente ejemplo es igual al anterior pero usando psecurve.
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psecurve[showpoints=true]{<->}
(0,0)(1,2)(2,3)(3,3)(4,2)
end{pspicture}
24 1.6. Manejo de Colores
Por último tenemos psccurve la cual es similar a pscurve pero ésta
genera una curva cerrada uniendo el primer y último punto:
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psccurve[showpoints=true]{<->}
(0,0)(1,2)(2,3)(3,3)(4,2)
end{pspicture}
1.6 Manejo de Colores
En PStricks se puede trabajar con los siguientes colores:
red green blue
cyan magenta yellow
PSTricks también maneja colores en escala de grises:
Negro (black), gris oscuro (darkgray), gris (gray), gris claro (lightgray),
y blanco (white)
1.6.1. Creación de nuevos colores
Además de estos colores podemos definir nuevos con las siguientes in-
strucciones: newgray y newrgbcolor
1. Gráficos con PSTricks 25
newgray{color}{n}
Este comando se utiliza para generar nuevos tonos de gris, color será
el nombre de nuestro nuevo color, n es la intensidad entre 0 y 1, donde
0 es negro y blanco es 1.
newrgbcolor{color}{r g b}
Esta instrucción se usa para generar nuevos coleres con el formato
RGB (red, green y azul), color será el nombre de nuestro nuevo color
y {r,g,b} son números entre 0 y 1.
newhsbcolor
newhsbcolor{color}{h s b}
La anterior instrucción se usa para generar nuevos colores con el for-
mato HSB (hue, saturation, brightness), {color} será el nombre de
nuestro nuevo color y {h,s,b} son números entre 0 y 1.
newcmykcolor
newcmykcolor{color}{c m y k}
Esta instrucción se usa para generar nuevos colores con el formato
CMYK (Cian, magenta, yellow, black), {color}será el nombre de nue-
stro nuevo color y {c,m,y,k} son números entre 0 y 1.
Ejemplo:
26 1.6. Manejo de Colores
0 1 2 3 4 5 6 7 8
-3
-2
-1
0
1
2
3
Favoritismo en los editores de texto
LATEX Word
Otros
psset{unit=2.0}
begin{pspicture}(0,-3)(8,3)malla
newgray{girisclaro}{0.9}
newrgbcolor{elcolorlatex}{0.1 0.1 1.0}
newhsbcolor{elcolorword}{0.1 0.9 1.0}
newcmykcolor{elcolorotro}{0.1 0.3 0.3 0.3}
pspolygon[linewidth=0.01,fillstyle=solid,
fillcolor=girisclaro](0.8,1.8)(0.8,2.3)
(6.3,2.3)(6.3,1.8)
pswedge[linewidth=0.04,fillstyle=solid,
fillcolor=elcolorlatex](3.7,-0.3){1.86}{53.8}{271.5}
pswedge[linewidth=0.04,fillstyle=solid,
fillcolor=elcolorword](3.7,-0.3){1.86}{347.2}{54.3}
pswedge[linewidth=0.04,fillstyle=solid,
fillcolor=elcolorotro](3.7,-0.3){1.86}{268.6}{347.0}
rput(3.6,2.0){Favoritismo en los editores de texto}
rput(2.7,0.1){LaTeX}
rput(4.6,0){Word}
rput(4.3,-1.1){Otros}
end{pspicture}
Para usuarios avanzados de PostScript, no es recomendado usar col-
1. Gráficos con PSTricks 27
ores cmyk y HSB, pues en algunas ocasiones requiere de otros con-
troladores y puede generar errores al compilar. Se recomienda hacer
RGB para generar nuevos colores.
Recordemos que con el comando psset{...} podemos configurar
opciones de color y con el comando fillcolor podemos indicar que
todos los objetos creados de ahí en adelante sean dibujados con ese
color de relleno, la opción linecolor sirve para definir el color de las
lineas de contorno. Veamos el siguiente ejemplo:
0 1 2
0
1
2
psset{unit=2.0,
fillcolor=yellow,linecolor=blue}
begin{pspicture}(0,0)(2,2)
malla
psellipse(1,.5)(1,.5)
end{pspicture}
Podemos ver en el ejemplo anterior que la elipse, aunque está pintada
de contorno azul, no se rellenó de color amarillo, así que para ello,
debemos tener en cuenta los siguientes parámetros:
linewidth=n
Con este determinamos el ancho de la línea de cualquier objeto (líneas,
círculos, etc), por defecto es 8pt.
fillstyle=s
Este comando permite definir el estilo de llenado de los objetos, este
puede ser none, el cual hace que el objeto no tenga ningún relleno. La
opción solid, permite que se pueda rellenar un objeto bien sea con
un color o con una textura.
Para definir un color de llenado, se usa el comando fillcolor=c,
donde c es uno de los colores antes mencionado. Veamos un ejemplo:
28 1.6. Manejo de Colores
0 1 2 3
0
1
2
3
4
5
psset{unit=1.0}
begin{pspicture}(0,0)(3,5)
malla
psellipse[fillstyle=solid,
fillcolor=lightgray,
linecolor=red](1,.5)(1,.5)
psellipse[fillstyle=solid,
fillcolor=red,
linecolor=blue](2,2)(0.5,0.5)
psframe[fillstyle=solid,
fillcolor=green,
linecolor=magenta](0,5)(1,4)
pscircle[fillstyle=solid,
fillcolor=cyan,
linecolor=green](2,4){1}
end{pspicture}
1.6.2. Texturas
Recordemos que fillstyle=s con la opción solid puede dibujar un
objeto con un relleno que puede ser un color o una textura, el cuadro
1.4 muestra las opciones para rellenado con texturas
Nombre efecto
none Es el valor por defecto, no rellena el objeto
con ningún color o textura
vlines líneas verticales con una inclinación de 45o
hlines líneas horizontales con una inclinación de
45o
crosshatch Lineas cruzadas verticales y horizontales a
45o
gradient Da al objeto una textura de degradado en-
tre dos colores
Cuadro 1.4: Texturas en PSTricks
En el siguiente ejemplo se usan los mismos objetos que en el ejemplo
anterior, pero esta vez usaremos las texturas mencionadas, excepto el
gradiente al cual dedicaremos más tiempo:
1. Gráficos con PSTricks 29
0 1 2 3
0
1
2
3
4
5
psset{unit=1.0}
begin{pspicture}(0,0)(3,5)
malla
psellipse[fillstyle=vlines]
(1,.5)(1,.5)
psellipse[fillstyle=hlines]
(2,2)(0.5,0.5)
psframe[fillstyle=none]
(0,5)(1,4)
pscircle[fillstyle=crosshatch]
(2,4){1}
end{pspicture}
El cuadro 1.5 muestra otras opciones que se pueden aplicar a las tex-
turas, como cambiar el ángulo de inclinación, el color de las líneas, etc.
Nombre efecto
hatchsep Separación entre líneas, por defecto es 4pt
hatchwidth Grosor de las líneas, por defecto es 0.8pt
hatchcolor Color de las líneas, por defecto es negro
hatchangle Inclinación de las líneas
Cuadro 1.5: Parámetros adicionales para texturas
Veamos el siguiente ejemplo:
0 1 2 3
0
1
2
3
psset{unit=1.0}
begin{pspicture}(0,0)(3,3)
malla
psellipse[fillstyle=hlines,
hatchcolor=red,hatchangle=22]
(2,0.5)(0.5,0.5)
psframe[fillstyle=vlines,
hatchangle=0 ](0,1)(1,0)
pscircle[fillstyle=crosshatch,
hatchsep=2pt](1.5,2){0.5}
end{pspicture}
30 1.6. Manejo de Colores
1.6.3. Degradados
Uno de los efectos más vistosos y usados de PSTricks es el degradado,
sólo necesitamos poner fillstyle=gradient y podemos obtener un
efecto de degradado lineal en dos colores:
0 1 2 3
0
1
2
3
psset{unit=1.5}
begin{pspicture}(0,0)(3,3)
malla
psframe[fillstyle=gradient]
(2.8,1)(0.2,3)
end{pspicture}
Las siguientes opciones determinan la configuración del degradado:
gradbegin=color
Es usada para escoger el color inicial del degradado, por defecto es
azul oscuro.
gradend=color
Es usada para escoger el color final del degradado, por defecto es azul
claro.
gradmidpoint=n
n debe ser un número entre 0 y 1, y se utiliza para escoger la posición
del punto intermedio del degradado.
gradangle=ang
Denota el álgulo de rotación para el degradado medido en grados, el
valor por defecto es 0.
gradlines=n
Determina el número de líneas del degradado, el valor predeterminado
es 500, mientras más líneas más fino es el efecto del degradado.
1. Gráficos con PSTricks 31
El siguiente ejemplo muestra el poder de los degrados para gráficos
matemáticos:
Máquinas
Nivel de α
M1 M2 M3 M4
N1
N2
N3
N4
psset{unit=1.5}
begin{pspicture}(0,-3.5)(9.5,3.5)
psline[linewidth=0.04cm]{->}(1.6,-2.7)(1.6,2.7)
psline[linewidth=0.04cm]{->}(1.6,-2.7)(7.6,-2.7)
psframe[linewidth=0.02,fillstyle=gradient,
gradlines=2000,gradmidpoint=1.0](2.7,1.2)(2.1,-2.7)
psframe[linewidth=0.02,fillstyle=gradient,
gradlines=2000,gradbegin=red,gradend=cyan,
gradmidpoint=1.0](3.9,-0.04)(3.3,-2.7)
psframe[linewidth=0.02,fillstyle=gradient,
gradlines=2000,gradbegin=magenta,
gradend=yellow,gradmidpoint=1.0](5.2,1.9)(4.6,-2.7)
psframe[linewidth=0.02,fillstyle=gradient,
gradlines=2000,gradbegin=green,gradend=red,
gradmidpoint=1.0](6.4,-1.6)(5.8,-2.7)
psline[linewidth=0.03cm,linestyle=dashed,
dash=0.16cm 0.16cm](1.6,-1.6)(6.3,-1.6)
32 1.7. Manejo de objetos
psline[linewidth=0.03cm,linestyle=dashed,
dash=0.16cm 0.16cm](1.6,1.9)(5.1,1.9)
psline[linewidth=0.03cm,linestyle=dashed,
dash=0.16cm 0.16cm](1.7,0)(3.7,0)
psline[linewidth=0.03cm,linestyle=dashed,
dash=0.16cm 0.16cm](1.7,1.2)(2.4,1.2)
rput(8.6,-3.1){psframebox[linewidth=0.04]{Máquinas}}
rput(1.4,3.1){psframebox[linewidth=0.04]
{Nivel de $alpha$}}
rput(2.3,-3.1){$M_1$}
rput(3.5,-3.1){$M_2$}
rput(4.8,-3.1){$M_3$}
rput(6,-3.1){$M_4$}
rput(1.0,-1.6){$N_1$}
rput(1.0,0){$N_2$}
rput(1.0,1.2){$N_3$}
rput(1.0,1.9){$N_4$}
end{pspicture}
En PSTricks existe algo que se llama comandos estrella, los cuales dan
atributos por defecto a los objetos que vamos a dibujar, por ejemplo:
pscircle*[linestyle=dashed](1.5,1.5){1}
Como podemos ver aparece un * después de invocar el comado pscircle,
con esto le indicamos al compilador de LATEX que rellene el objeto
con el color determinado por linecolor, linewidth toma el valor de
0, fillstyle toma el valor de solid, linestyle el valor de none y
fillcolor toma el valor determinado por linecolor. Debemos tener
especial cuidado en configurar los valores anteriormente mencionados
si queremos usar los comandos estrella, pues, pueden producir una
gráfica no deseada.
1.7 Manejo de objetos
En los ejemplos anteriores hemos visto el uso de algunos comandos
como rput para ubicar objetos, tambien usamos el objeto malla que
1. Gráficos con PSTricks 33
hemos creado a partir de un nuevo comando. En esta sección estudi-
aremos más a fondo el uso de estas herramientas:
1.7.1. El comando rput
Ya hemos tenido algún contacto con este comando, pues lo hemos apli-
cado en ejemplos anteriores. Veamos sus parámetros completos:
rput[P]{Ang}(x,y){Obj}
El comando ubica un objeto “obj” que puede ser un texto una tabla o
una gráfica en un punto (x, y), con el argumento P podemos cambiar
la posición en que se coloca la caja de LATEX, por defecto este valor es
[c], lo que nos indica que el objeto aparece centrado en la posición
(x, y). Además de [c] existen otros valores con los que podemos hacer
que los objetos no aparezcan en el centro, el siguiente gráfico ilustra
los demás valores:
c
tr
brbb
l r
ttl
Objeto
Caja imaginaria
Es fácil ver de donde vienen los demás valores (left, top, etc). El
parámetro ang determina el ángulo de rotación del objeto y se mide en
grados sexagesimales entre -360 y 360, sin embargo, se pueden abre-
viar algunos ángulos especiales, como los de 90, 180, etc, el cuadro 1.6
muestra las abreviaciones:
Veamos el siguiente ejemplo:
34 1.7. Manejo de objetos
Ángulo letra
N 0o
L 90o
D 180o
R 270o
W −90o
S −180o
E 270o
Cuadro 1.6: Ángulos espciales
Recta Tangente
Recta Secante
Diámetro
psset{unit=1.0}
begin{pspicture}(0,-2)(5,2)
psline[linewidth=0.04cm]{<->}(1.5,1.9)(4.8,-0.1)
psline[linewidth=0.04cm]{<->}(4.6,-1.8)(0.0,-1.1)
pscircle[linewidth=0.04](2.4,-0.4){1.5}
psline[linewidth=0.04cm](2.5,1.1)(2.5,-1.9)
rput{-30.0}(3.4,1.1){Recta Tangente}
rput{-8.0}(2.6,-1.3){Recta Secante}
rput{W}(2.2,-0.3){Diámetro}
end{pspicture}
1.7.2. Resortes
Este objeto permite construir curvas en forma de resortes o zig-zags,
La estructura del comando es la siguiente:
1. Gráficos con PSTricks 35
pscoil[par]{flechas}(x1,y1)(x2,y2)
El cual extiende un resorte del punto (x1, y1) hasta (x2, y2). El sigu-
iente comando permite hacer el efecto de zig-zags con los mismos
parametros:
pszigzag[par]{flechas}(x1,y1)(x2,y2)
Para configurar la apariencia de los resortes y zig-zags se tiene las op-
ciones mostradas en el cuadro 1.7.
Parámetro Efecto
coilwidth=n Amplía o reduce el ancho del resorte o zig-
zag, por defecto es 1cm.
coilheight=h Con h > 0 esta opción determina el
número de repeticiones del zig-zag o re-
sorte. Mientras más pequeño sea este valor
más repeticiones se harán.
coilArmA=n Representa la longitud del brazo que está
en el punto (x1, y1) del resorte.
coilArmB=n Es la longitud del brazo que está en el pun-
to (x2, y2) del resorte.
coilArm=n Provoca que coilArmB y coilArmA tengan
el mismo valor.
coilaspect=ang Cambia el ángulo con que se dibujan los
resortes, por defecto es 45 pero se puede
modificar 0 ≤ ang < 90, este parámetro
no afecta a los zig-zags.
coilinc=ang Por defecto es 10, y determina la suavidad
con que se dibujan los resortes, no afecta
a los zig-zags.
Cuadro 1.7: Parámetros de los resortes y zig-zags
Este ejemplo muestra la versatilidad de ambos comandos:
36 1.7. Manejo de objetos
B1
R1
l1
l2
M1
m1
r1
psset{unit=0.8}
begin{pspicture}(0,-2.5)(9.5,2.4)
psline(0,-1.8)
psline(0,-1.8)(2.1,-1.8)
psline(3.2,-1.8)(4.9,-1.8)
psline(4.9,-1.8)(4.9,-0.2)
psline(5.5,0.18)(4.9,0.7)
psline(4.9,0.7)(4.9,1.9)
psline(4.9,1.9)(2.8,1.9)
psline(1.6,1.9)(0.0,1.9)
psframe(2.8,2.4)(1.6,1.5)
psdots[dotsize=0.2](5.5,0.2)
rput(2.1,2.0){$B_1$}
rput(4.2614064,0.39890626){$R_1$}
rput(2.4,-1.1){$l_1$}
rput(1.1,0.8){$l_2$}
psframe(8.4,2)(7.2,1.1)
pscircle(7.8,-1.4){0.5}
rput(7.8,1.5){$M_1$}
rput(7.8,-2.3){$m_1$}
rput(9.1,0.5){$r_1$}
pszigzag[coilheight=0.2]{o-*}
(0,0)(0,1.8)
pszigzag[coilheight=0.1]{o-*}
(2.1,-1.8)(3.2,-1.8)
pscoil[coilheight=0.5]{*-*}
(7.8,1.1)(7.8,-0.9)
1. Gráficos con PSTricks 37
1.7.3. Ejes coordenados
Los ejes coordenados son uno de los objetos más utilizados en la com-
posición de textos matemáticos, PSTricks tiene una herramienta lla-
mada psaxes, con la cual podemos dibujar casi cualquier tipo de eje
cordenado, veamos la sintaxis:
psaxes[par]{flechas}(x0,y0)(x1,y1)(x2,y2)
Lo anterior, permite que se dibuje un eje coordenado entre el rectán-
gulo con vértices opuestos (x1, y1) y (x2, y2) y el origen del sistema
está en (x0, y0). El comando psaxes tiene los siguientes parámetros
(cuadro 1.8)
Parámetro Efecto
labels= all es el valor por defecto y provoca que se pongan
las etiquetas de los ejes x y y, x/y dibuja la eti-
queta para el correspondiente eje y none no dibuja
ninguna etiqueta.
showorigin= false/true Con esta opción podemos hacer que
aparezca o no el origen de los ejes .
axesstyle= Por defecto es axes y hace que el eje se dibuje
con las dos líneas rectas usuales, frame dibuja un
frame o rectángulo y none no dibuja los ejes.
Ox= y Oy= Determina el número donde comienzan a numer-
arse los ejes, por defecto es 0.
Dx= y Dy= Representa el incremento entre etiquetas, por de-
fecto es 1.
dx= y dy= determina la distancia entre las marcas (ticks).
Cuadro 1.8: Parámetros de los ejes
Ejemplo:
38 1.7. Manejo de objetos
0 1 2 3 4 5 6 7 8 9
1
2
3
f(x)
psset{unit=0.8}
begin{pspicture}(0,-3)(5,3)
rput(0.3,-2.1){psaxes[linewidth=0.04,
tickstyle=bottom,dx=0.5cm,dy=1.2cm]
{<->}(0,0)(5,0)(0,5)}
psbezier[linewidth=0.04]{<->}
(0.0,-1.7)(1.6,-2.9)(1.9,1.7)(4.9,0.2)
rput(5.1,0.71){$f(x)$}
psline[linewidth=0.04cm,
linestyle=dashed,
dash=0.16cm 0.16cm](3.7,0.5)(3.7,-2.1)
end{pspicture}
El cuadro 1.9 muestra la forma en que se pueden configurar los ticks
(líneas que acompañan a las etiquetas de los ejes).
Ejemplo:
1. Gráficos con PSTricks 39
Parámetro Efecto
ticks= Por defecto es all y sirve para mostrar las lineas
que acompañan a los números en los ejes, si quer-
emos que aparesca solo los del eje x o y utilizamos
la opción x/y,con none se eliminan de ambos ejes.
tickstyle= Este parámetro determina la ubicación de las
líneas que acompañan a las etiquetas de los ejes.
full es el valor por defecto y hace que estas líneas
se extiendan por ambos lados de los ejes, botton
hace la misma acción al lado donde estan las eti-
quetas, y top lo hace al lado opuesto.
ticksize=n Determina la longitud de las marcas, por defecto
es 3pt.
Cuadro 1.9: Parámetros de los ticks
-3 -2 -1 0 1 2 3 4 5 6
-3
-2
-1
0
1
2
3
1 2−1−2
1
2
−1
−2
psset{unit=1.0}
begin{pspicture}(-3,-3.22)(6.0,3.22)malla
psaxes[linewidth=0.02,
arrowlength=1.4]{<->}(0,0)(-3,-3)(3,3)
pscircle[linewidth=0.04,dimen=outer](0,0){2.0}
psline[linewidth=0.04cm]{<->}(-1,3)(3.5,0)
pscircle[linewidth=0.04](3,2){1.0}
end{pspicture}
Ejemplo:
40 1.7. Manejo de objetos
0 1,5 3,0 4,5 6,0 7,5 9,0
0
0,5
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
psset{unit=1.0}
begin{pspicture}(0.5,0.5)(5,5.5)
psaxes[Dx=1.5,Dy=0.5]{->}(10,5)
psplot[linecolor=blue]{0}{10.5}
{x 180 mul 1.52 div cos 2 mul 2.5 add}
psplot[linecolor=red]{0}{10.5}
{x 180 mul 1.52 div sin 2 mul 2.5 add}
end{pspicture}
El la sección 1.9.1 estudiaremos la función psplot.
1.7.4. Grillas
Las grillas o mallas son un complemento ideal para trabajar con los
ejes coordenados, inclusive pueden hacer las veces de éste si asi se re-
quiere, su sintáxis es la siguiente:
psgrid[par](x1,y1)(x2,y2)
La ejecución del comando anterior produce una malla en el rectán-
gulo con extremos (x1, y1) y (x2, y2), si no ubicamos estas coorde-
nas, psgrid ubicara una malla en las coordenadas establecidas por
begin{pspicture}(x1,y1)(x2,y2) . El cuadro 1.10 muestra los difer-
entes parámetros para configurarla:
1. Gráficos con PSTricks 41
Parámetro Efecto
gridwidth= n Determina el ancho de las líneas principales de
la grilla, por defecto es 0.8pt.
subgridwidth= n Igual al anterior pero con las líneas secundarias
gridcolor= color Es el color de las líneas principales, por defecto
es black.
subgridcolor= color Color de las líneas secundarias, por defecto es
gray.
gridlabels=n Tamaño de los números que enmarcan la grilla,
por defecto es 10 pt.
gridlabelcolor = color Color de los números que enmarcan la grilla,
por defecto es black.
griddots=n Las líneas principales son punteadas con n pun-
tos por unidad y n > 0.
sub griddots=n Igual al anterior pero con la grilla segundaria y
n > 0.
Cuadro 1.10: Parámetros de psgrid
Ejemplo:
0 1 2
0
1
2
-2 -1 0 1 2
-1
0
1
2
3
psset{unit=0.8}
begin{pspicture}(0,-2.8)(8.6,2.8)
rput(0.3,0.4){psgrid[gridwidth=0.02,
subgridwidth=0.01,gridlabels=6.0pt,
subgridcolor=blue](0,0)(0,0)(2,2)}
rput(6.76,-1.3) {psgrid[gridwidth=0.02,
subgridwidth=0.01,
gridlabels=5.0pt,subgriddiv=8,griddots=1,unit=1.3cm,
gridcolor=gray,subgridcolor=black](2,0)(-2,-1)(2,3)}
42 1.8. Manejo de texto
end{pspicture}
{footnotesizebegin{verbatim}
1.8 Manejo de texto
El texto es una parte fundamental en la elaboración de documentos
matemáticos, PSTricks posee herramientas para la inclusión de texto
científico en nuestros libros o arctículos, ya hemos visto que lo pode-
mos hacer con el comando rput, sin embargo es posible hacer muchos
otros efectos que se pueden utilizar en presentaciones o ecuaciones muy
elaboradas.
1.8.1. El comando uput
Con este comando podemos ubicar etiquetas en nuestros gráficos, tiene
la siguiente sintáxis:
uput{s}[r]{ang}(x,y){objeto}
El parámetro s hace que la etiqueta aparezca separada del punto (x, y)
una distancia determinada, por defecto es 5pt. La opción r determina
el ángulo de la etiqueta.
Ejemplo:
0 1 2 3 4
0
1
2
3
4
3
2
1
12
11
10
9
8
7
6
5
4
psset{unit=1.5}
begin{pspicture}(0,0)(4,4)
malla
pscircle(2,2){2}
uput{2.1cm}[0](2,2){$3$}
uput{2.1cm}[30](2,2){$2$}
uput{2.1cm}[60](2,2){$1$}
uput{2.1cm}[90](2,2){$12$}
uput{2.1cm}[120](2,2){$11$}
uput{2.1cm}[150](2,2){$10$}
uput{2.1cm}[180](2,2){$9$}
1. Gráficos con PSTricks 43
uput{2.1cm}[210](2,2){$8$}
uput{2.1cm}[240](2,2){$7$}
uput{2.1cm}[270](2,2){$6$}
uput{2.1cm}[300](2,2){$5$}
uput{2.1cm}[330](2,2){$4$}
pspolygon[fillstyle=solid,
fillcolor=lightgray](2,2)
(2.5,2.1)(3,2)(2.5,1.9)(2,2)
pspolygon[fillstyle=solid,
fillcolor=lightgray](2,2)
(1.5,2.2)(0.9,2.7)(1.5,2.4)(2,2)
qline(2,2)(2.5,0.5)
end{pspicture}
1.8.2. Texto en recuadros
Estos comandos son independientes de PSTricks, así mismo se pueden
usar en otros contextos. Su tamaño depende de la cantidad de texto
que se les aplique. La sintáxis es la siguiente y es igual para todas:
psframebox[par]{texto}
Las opciones par son las que estudiamos en las secciones anteriores y
texto es lo que deseamos enmarcar. El ejemplo siguiente mostrará la
sintaxis y el resultado obtenido:
0 1 2 3 4 5 6 7
0
1
2
3
4
psframebox
psdblframebox
pstribox
psdiabox
pscirclebox
psovalbox
psset{unit=1.8}
begin{pspicture}(0,0)(7,4)malla
rput[tl](0,3.5){psframebox{$backslash$psframebox}}
rput[tl](0,2.5){psdblframebox{$backslash$psdblframebox}}
rput[tl](0,1.5){pstribox{$backslash$pstribox}}
rput[tl](4,3.5){psdiabox{$backslash$psdiabox}}
rput[tl](4.5,2.5){pscirclebox{$backslash$pscirclebox}}
44 1.8. Manejo de texto
rput[tl](4.5,.8){psovalbox{$backslash$psovalbox}}
end{pspicture}
1.8.2.1. Sombras
En realidad cualquier figura cerrada de PSTricks puede generar som-
bra, como los polígonos cerrados, los círculos, las cajas de texto, etc.
Para ubicar este efecto sólo se usa el parámetro shadows=true/false,
el cual, por defecto es false .
Otro parámetro que se usa es el shadowsize=n, el cual cambia el
tamaño de la sombra y por defecto es 3pt. shadowangle=ang se usa
para ubicar el ángulo de la sombra, por defecto es -45, pero se puede
usar entre -360 y 360 grados. Por último está shadowcolor=color el
cual se usa para poner color a la sombra que por defecto es darkgray.
0 1 2
0
1
2
Λ
Π
Ω Φ
psset{unit=1.5}
begin{pspicture}(0,0)(2,2)
malla
rput(1,1.5)
{pscirclebox[fillstyle=solid,
fillcolor=blue, shadow=true]
{white Huge $Lambda$}}
rput(1,0.5)
{pscirclebox[fillstyle=solid,
fillcolor=red, shadow=true,
shadowangle=45]
{white Huge $Pi$}}
rput(0.5,1)
{pscirclebox[fillstyle=solid,
fillcolor=cyan, shadow=true,
shadowcolor=yellow]
{white Huge $Omega$}}
rput(1.5,1)
{pscirclebox[fillstyle=solid,
fillcolor=magenta, shadow=true,
shadowsize=5pt]
{white Huge $Phi$}}
end{pspicture}
1.8.3. Texto sobre curvas
Para aplicar este efecto usamos la instrucción:
pstextpath[pos]{curva}{texto}
1. Gráficos con PSTricks 45
El argumento pos puede tomar los siguientes valores: l para ubicar
el texto a la izquierda de la curva, [c] para ubicarlo al centro, y por
último [r] para ubicarlo a la derecha. Se puede usar cualquier curva
de PSTricks (circunferencia, polígonos, rectas, etc), para el parámetro
curva.
Ejemplo.
0 1 2 3 4
0
1
2
3
4
Un
iversid
ad
Del
Q
uindí
o
Ser
libres para con
ocer
ycon
ocer para ser l
ibres
psset{unit=1.5}
begin{pspicture}(0,0)(4,4)malla
pstextpath[c]{psarcn[linestyle=none]
(2,2){1.7cm}{180}{0}}{Huge green bf Universidad }
rput(2,2){Huge green bf Del}
pstextpath[c]{psarc[linestyle=none]
(2,2){1.7cm}{180}{0}}{Huge green bf Quindío}
pstextpath[c]{psarcn[linestyle=none]
(2,2){3.7cm}{180}{0}}{Huge blue bf
Ser libres para conocer}
pstextpath[c]{psarc[linestyle=none]
(2,2){3.7cm}{180}{0}}
{Huge blue bf y conocer para ser libres}
46 1.8. Manejo de texto
end{pspicture}
Ejemplo:
0 1 2 3 4 5 6
0
1
2
Esta es la hermosa función sin(x)
psset{unit=1.8cm}
begin{pspicture}(0,0)(6,2)malla
pstextpath[c]{pscurve[linestyle=none]
(0,1.5)(1.5,0.5)(4,1.5)(6,0.5)}
{Huge Esta es la hermosa función $sin (x)$}
end{pspicture}
1.8.4. Texto con efectos especiales
Como ya hemos visto podemos agregar color, tamaño y forma al texto,
ahora con la instrucción pscharpath agregaremos efectos en el con-
torno del texto:
pscharpath[par]{texto}
Ejemplo:
pscharpath[linestyle=dashed]{ Huge Universidad del Quindío}
pscharpath[linestyle=none, fillstyle=gradient]
{ Huge Universidad del Quindío}
1. Gráficos con PSTricks 47
1.9 Trazado de curvas
En la sección 1.5.1 trazamos curvas con los comandos pscurve, pse-
curve, psccurve, sin embargo, podemos tener algunas limitantes dado
que la curva resultante no necesariamente es la que debería pasar por
los puntos indicados. Para ello, PSTricks diseñó las siguientes fun-
ciones especializadas en la interpolación de puntos:
Primero debemos designar la lista de puntos que vamos a dibujar, eso
lo hacemos con el comando:
savedata{fun}[{x1,y1},...{xn,yn}]
Una vez guardados los puntos procedemos a dibujarlos, eso lo logramos
con el siguiente comando:
dataplot[par]{fun}
Con la opción fun le asignamos cualquier nombre a la lista de puntos,
siempre que no sea un comando LATEX. La función readdata hace
el mismo efecto que savedata, pero ésta lo puede leer de un archivo.
Si observamos, la gráfica no es exacta, debido a que sólo usamos 10
puntos, pero si utilizamos 100, nuestro gráfica sería muy exacta pero
consumiría más recursos del sistema. Con este comando podemos car-
gar los puntos desde un archivo y estos pueden ser tomados desde otro
programa como el Matematica.
Ejemplo:
48 1.9. Trazado de curvas
0 1 2 3 4
1
2 f(x) = esin(x)
psset{unit=1}
begin{pspicture}(0,0)(5,3)
psaxes[linewidth=0.04,dx=1.8cm,
dy=1.8cm]{<->}(0,0)(5,0)(0,3)
savedata{funcion}[{0,1}, {0.36,1.43},
{0.87,2.15}, {1.51,2.71}, {2.26,2.15},
{2.76,1.43}, {3.13,1.0}, {4.06,0.46},
{4.45,0.3}, {5.032,0.38}]
dataplot[linewidth=0.01, plotstyle=curve,
linecolor=red]{funcion}
rput(3.8,2){large $f(x)=e^{sin (x)}$}
end{pspicture}
1.9.1. Curvas a partir de su ecuación
Para graficar una curva, lo ideal es tener los puntos a partir de la
ecuación, para eso PSTricks implementa la siguiente función:
psplot[op]{x1}{x2}{fun}
La cual grafica una curva con el dominio (x1, x2), la función fun debe
entrarse en notación sufija de PostScript, la cual mostraremos en el
cuadro 1.11.
Sin embargo, es necesario tener presente que siempre se debe usar la
variable x, las funciones seno y coseno sólo aceptan grados sexages-
imales. La función psplot sólo admite computos simples, por lo que
no podemos graficar funciones muy complejas. Se debe tener especial
1. Gráficos con PSTricks 49
Sintáxis Significado
x neg −x
x y add x + y
x y sub x − y
x y mul x.y
x y div x
y
x y exp xy
x sqrt
√
x
x log log10 x
x ln ln x
x sin sin x
x cos cos x
Cuadro 1.11: Principales funciones de PostScript
cuidado con las funciones que presenten asíntotas, pues generan un
error (división por cero) y debemos sacarlas del dominio.
Ejemplo:
1 2 3 4−1−2−3−4
1
2
3
4
−1
−2
−3
−4
f(x) = sin(100x)
f(x) = x+1
x2+1
f(x) = ex
f(x) = 1
x
psset{unit=0.4}
begin{pspicture}(-5,-5)(8,5)%malla
50 1.9. Trazado de curvas
psaxes[linewidth=0.04,dx=0.71cm,
dy=0.71cm]{<->}(0,0)(-5,-5)(5,5)
psplot[linewidth=0.03, plotstyle=curve,
linecolor=blue]{-5}{5}{x 100 mul sin}
psplot[linewidth=0.03, plotstyle=curve,
linecolor=green]{-5}{5}{ x 1 add x 2 exp 1 add div}
psplot[linewidth=0.03, plotstyle=curve,
linecolor=magenta]{-5}{1.5}{2.7 x exp}
psplot[linewidth=0.03, plotstyle=curve,
linecolor=yellow]{-5}{-0.2}{1 x div}
psplot[linewidth=0.03, plotstyle=curve,
linecolor=yellow]{0.2}{5}{1 x div}
psdots[dotstyle=square*, linecolor=blue](4,4)
rput(6.2,4){$f(x)=sin (100x)$}
psdots[dotstyle=square*, linecolor=green](4,3)
rput(6,3){$f(x)=frac{x+1}{x^2 + 1}$}
psdots[dotstyle=square*, linecolor=magenta](4,-2)
rput(6,-2){$f(x)=e^x$}
psdots[dotstyle=square*, linecolor=yellow](4,-3)
rput(6,-3){$f(x)=frac{1}{x}$}
end{pspicture}
1.9.2. Curvas Paramétricas
El comando parametricplot es muy similar psplot, sólo se requiere
dar un dominio y una función paramétrica.
parametrcplot[par]{t1}{t2}{x(t)y(t)}
El parámetro par se usa para las opciones de línea que ya hemos us-
ado, (t1, t2) es el dominio de la función y las funciones x(t), y(t) las
cuales se deben escribir con la sintaxis de PostScript, una seguida de
la otra sin comas ni puntos. (vea el cuadro 1.11).
Veamos los siguientes ejemplos:
1. Gráficos con PSTricks 51
-3 -2 -1 0 1 2 3
-3
-2
-1
0
1
2
3
psset{unit=2}
begin{pspicture}(-3,-3)(3,3)malla
rput(1.5,1.5){parametricplot[linewidth=0.1,
plotpoints=300]{0}{360}{2 t mul sin t cos mul
2 t mul sin t sin mul}}
rput(-2.5,1.5){parametricplot[linewidth=0.1,
plotpoints=300]{0}{360}{0.5 1.5 t cos mul add t
cos mul 0.5 1.5 t cos mul add t sin mul}}
rput(-1.5,-2){parametricplot[linewidth=0.1,
plotpoints=300]{0}{360}{0.5 1.5 t cos mul add t
sin mul 0.5 1.5 t cos mul add t cos mul}}
rput(1.5,-1.5){parametricplot[linewidth=0.1,
plotpoints=300]{0}{360}{1.5 t sin mul 1.5 t cos mul}}
end{pspicture}
1.9.3. Regiones sombreadas
Para implementar sombreado de regiones entre curvas, PSTricks dispone
de la función pscuston la cual nos permite dibujar una textura entre
dos curvas, que pueden ser psline, pscurve o psecurve, en realidad
se puede hacer sobre cualquier tipo de curva, teniendo cuidado puesto
52 1.9. Trazado de curvas
que se pueden producir graves mensajes de error. Veamos la sintaxis:
pscuston[par]{curvas fill[op]}
La función rellena la región limitada por las curvas con las opciones
de llenado implementadas en fill[par].veamos un ejemplo:
0 1 2 3 4 5 6
0
1
2
3
4
5
psset{unit=0.8}
begin{pspicture}(0,0)(6,5)
pscustom[linestyle=none]
{pscurve(0,0)(2,3)
(3,3.5)(4,3)(6,0)
fill[fillstyle=solid,
fillcolor=lightgray]}
psaxes(6,4)
pscurve(0,0)(2,3)
(3,3.5)(4,3)(6,0)
end{pspicture}
Veamos un ejemplo de relleno entre dos curvas:
0 1 2 3 4 5
0
1
2
3
4
5
6
psset{unit=0.6}
begin{pspicture}(0,0)(6,7)
pscustom[linestyle=none]{
psline(1,0.1)(1,1.5)
pscurve(1,1.5)(2,2.5)(3,4)(4,6)
psline(4,6)(4,0.5)
psline(4,0.5)(0,0)
fill[fillstyle=vlines ]}
psaxes{->}(6,7)
pscurve(0,1)(1,1.5)(2,2.5)
(3,4)(4,6)(4.5,6.5)
psline(4,0.5)(0,0)
psline(4,0.5)(5,0.65)
psline[linestyle=dashed]
(1,0.1)(1,1.5)
psline[linestyle=dashed]
(4,0.5)(4,6)
end{pspicture}
En el ejemplo anterior podemos observar los siguientes detalles:
1. Gráficos con PSTricks 53
• En primer lugar, los puntos de las curvas deben seguir una
secuencia, en este caso primero se ubica la línea recta verti-
cal psline(1,0.1)(1,1.5), luego aparece la curva (que es la
más importante); pscurve(1,1.5)(2,2.5)(3,4)(4,6), poste-
riormente la otra recta vertical; psline(4,6)(4,0.5) y por úl-
timo la recta psline(4,0.5)(0,0), que hace las veces de curva
inferior, que en otros casos puede ser otra curva o el mismo eje
x;
• Luego de dibujar la región sombreada, podemos redibujar las
curvas e inclusive agregarles más detalles, como por ejemplo hac-
erlas más largas o asignarles etiquetas.
Ejemplo:
0 1 2 3 4−1−2−3−4
2
3
4
5
6
psset{unit=0.6}
begin{pspicture}(-4,0)(4,5)
pscustom[linestyle=none]{
psline(-3,1)(-3,3)
pscurve(-3,3)(-2,1.5)(-1,2)(0,4)(1,2)(2,1.5)(3,3)
psline(3,3)(3,1)
pscurve(3,1)(2,0.5)(1,0.8)(0,0)(-1,0.8)(-2,0.5)(-3,1)
fill[fillstyle=solid, fillcolor=lightgray]}
psaxes[linewidth=0.04,Oy=1](0,0)(-4,0)(4,5)
psline[linestyle=dashed](-3,0)(-3,3)
psline[linestyle=dashed](3,3)(3,0)
pscurve(-3,3)(-2,1.5)(-1,2)(0,4)(1,2)(2,1.5)(3,3)
pscurve(3,1)(2,0.5)(1,0.8)(0,0)(-1,0.8)(-2,0.5)(-3,1)
end{pspicture}
54 1.10. Herramientas para árboles, grafos y diagramas
1.10 Herramientas para árboles, grafos y dia-
gramas
PSTricks ofrece una variada gama de herramientas para crear gráficos
tipo árboles y diagramas. Para realizar este tipo de gráficos se han
dividido los comandos en 3 tipos; Nodos, Conectores y Etiquetas.
1.10.1. Nodos
En el cuadro 1.12 observaremos los distintos tipos de nodos:
Nodo Descripción
pnode(x,y){nom} Con él ubicamos en la coordenada (x, y) un
nodo y le asignamos un nombre con nom
dotnode[op](x,y){nom} Este nodo es similar al anterior, pero el
nodo aparece con forma de punto y se le
asigna un nombre con nom . Además que
se puede agregar opciones de puntos como
las vistas en la cuadro 1.2
cnode[op](x,y){r}{nom} En este caso, el nodo es de forma circular
con un radio r.
Cnode[op](x,y){nom} Es similar al anterior, pero el radio se
establece de antemano con el parámetro
psset{radius=...}.
rnode{nom}{texto} En este caso se dibuja un borde rectangu-
lar invisible, y se tiene la posibilidad de
agregar texto, que puede ser en modo nor-
mal o modo matemático. Este comando no
tiene el característico punto (x, y), así que
debemos usar el comando rput para ubi-
carlo.
Cuadro 1.12: Nodos de PSTricks
La tabla 1.13 muestra otros tipos de nodos similares a rnode con
formas geométricas:
1.10.2. Conectores
A continuacion mostraremos los diferentes tipos de conectores con su
respectivo ejemplo, tanto del nodo como de su conector:
1. Gráficos con PSTricks 55
Nodo Descripción
trinode[op]{nom}{texto} Nodo en forma triangular.
ovalnode[op]{nom}{texto} Nodo en forma ovalada.
dianode[op]{nom}{texto} Nodo en forma de rombo.
circlenode[op]{nom}{texto} Nodo en forma circular.
Cuadro 1.13: Nodos tipo rnode de PSTricks
Conectores ncline.
La estructura básica de un conector es la siguiente:
ncline[par]{flechas}{n1}{n2}
Con los parámetros par podemos cambiar la forma del conector (líneas
punteadas, guiones, etc), el segundo parámetro es el tipo de flechas y
los dos últimos son el nombre de los conectores, en este caso el conector
va de n1 a n2.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1 a2
psset{unit=0.5}
begin{pspicture}(0,0)(6,4)
malla
rput(3,3){circlenode{P1}{$P_t$}}
rput(1,1){circlenode{a1}{$a_1$}}
rput(5,1){circlenode{a2}{$a_2$}}
ncline{->}{P1}{a1}
ncline{<-}{P1}{a2}
ncline{<->}{a1}{a2}
end{pspicture}
Conectores ncarc.
Es similar al anterior, pero los nodos se unen por medio de arcos. El
usuario debe tener en cuenta que los arcos se construyen como un
parámetro arcangle, el cual determina el ángulo entre arco y la línea
recta que une los nodos, su valor por defecto es 8 grados sexagesimales.
56 1.10. Herramientas para árboles, grafos y diagramas
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(1,4){circlenode{P1}{$P_t$}}
rput(1,1){trinode{a1}{$a_1$}}
rput(5,3){ovalnode{a2}{$a_2$}}
ncarc[arcangle=250]{<->}{P1}{a1}
ncarc{<-}{P1}{a2}
ncarc{<->}{a1}{a2}
end{pspicture}
Conectores ncdiag.
En este caso se une los nodos con un segmento diagonal, además se
pueden usar las opciones armA,armB, con los cuales se puede cambiar
la longitud del brazo de salida y de llegada, que por defecto es 10pt.
angleA,angleB, son los ángulos de llegada y salida del conector y su
valor por defecto es 0. Igualmente, podemos usar la opción linearc
que se utiliza para vértices redondeados.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(2,4){dianode{P1}{$P_t$}}
rput(2,1){dianode{a1}{$a_1$}}
rput(5,4){dianode{a2}{$a_2$}}
ncdiag[armA=15pt, armB=15pt,
angleA=45,angleB=90]{<->}{P1}{a2}
ncdiag[angleA=270,angleB=270]
{<->}{a2}{P1}
ncdiag[angleA=180,angleB=180,
linearc=10pt]{<->}{a1}{P1}
end{pspicture}
Conectores ncdiagg.
Es igual al anterior, pero sin el brazo para el segundo nodo.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(1,4){dianode{P1}{$P_t$}}
rput(3,1){dianode{a1}{$a_1$}}
rput(5,4){dianode{a2}{$a_2$}}
ncdiagg[angleA=0,angleB=90]{->}
{P1}{a2}
ncdiagg[angleA=180,angleB=180,
linearc=10pt]{->}{a1}{P1}
end{pspicture}
1. Gráficos con PSTricks 57
Conectores nccurve.
Este conector traza curvas en forma de Bézier, se debe tener cuidado
en la posición de los nodos, pues si están ubicados muy cerca, la curva
parecerá una recta.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(2,4){dianode{P1}{$P_t$}}
rput(1,1){trinode{a1}{$a_1$}}
rput(6,3){ovalnode{a2}{$a_2$}}
nccurve[angleA=45,angleB=90]
{<->}{P1}{a2}
nccurve[angleA=270,angleB=270]
{<->}{a2}{P1}
nccurve[angleA=180,angleB=180]
{<->}{a1}{P1}
end{pspicture}
Conectores ncbar.
Este conector tiene la particularidad de que forma ángulos rectos entre
los conectores y los nodos, si es necesario se extienden los brazos de
los conectores, además el ángulo de llegada y el de salida son el mismo
y se controlan con el parámetro angleA.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(2,4){dianode{P1}{$P_t$}}
rput(5,1){trinode{a1}{$a_1$}}
rput(6,3){ovalnode{a2}{$a_2$}}
ncbar[angleA=90]{<->}{P1}{a2}
ncbar[angleA=270]{<->}{a2}{P1}
ncbar[angleA=180]{<->}{a1}{P1}
end{pspicture}
Conectores ncangle.
Es similar al anterior, pero los conectores se unen por medio de ángulos
rectos únicamente. Para controlar la forma, se usan los parámetros
armA,armB,angleA,angleB y linearc.
58 1.10. Herramientas para árboles, grafos y diagramas
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(3,4){dianode{P1}{$P_t$}}
rput(5,1){dianode{a1}{$a_1$}}
rput(1,2){dianode{a2}{$a_2$}}
ncangle[angleA=180, angleB=180]
{->}{P1}{a2}
ncangle[angleA=270, angleB=270]
{<->}{a2}{a1}
ncangle[angleA=0, angleB=270]
{<->}{a2}{P1}
ncangle[angleA=90, angleB=0]
{<->}{a1}{P1}
end{pspicture}
Conectores ncangles.
Tiene el mismo efecto que ncangle , pero usa un segmento adicional
para unir los nodos.
0 1 2 3 4
0
1
2
3
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(4,3)malla
rput(1,1){dianode{a1}{$a_1$}}
rput(3,2){dianode{a2}{$a_2$}}
ncangles[angleA=180,
angleB=180]{->}{a1}{a2}
ncangles[angleA=90,
angleB=0]{<->}{a2}{a1}
end{pspicture}
Conectores ncloop.
Este conector es útil para hacer loops en grafos, se puede cambiar el
parámetro loopsize que por omisión es 1cm. Para este tipo de gráfico
es mejor usar nccircle.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(3,4){ovalnode{P1}{$P_t$}}
rput(5,1){ovalnode{a1}{$a_1$}}
rput(1,2){ovalnode{a2}{$a_2$}}
ncloop[angleA=0, angleB=45,
loopsize=1cm,
linearc=0.1]{->}{a1}{a1}
ncloop[angleA=90, angleB=0,
linearc=0.1]{->}{P1}{P1}
1. Gráficos con PSTricks 59
nccurve[angleA=270,
angleB=270]{<->}{a2}{a1}
nccurve[angleA=0,
angleB=270]{<->}{a2}{P1}
nccurve[angleA=90,
angleB=0]{<->}{a1}{P1}
end{pspicture}
Conectores nccircle.
Además de la sintaxis normal de los conectores, en el caso de nccircle
se debe adicionar un parámetro más que corresponde al radio del loop.
La separación entre el arco y el borde del nodo se puede determinar
por el parámetro nodesepA.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(3,4){ovalnode{P1}{$P_t$}}
rput(5,1){ovalnode{a1}{$a_1$}}
rput(1,2){ovalnode{a2}{$a_2$}}
nccircle[angleA=200,
nodesepA=0pt ]{->}{a1}{0.4cm}
nccircle[angleA=90,
nodesepA=0pt ]{->}{a2}{0.5cm}
nccircle[angleA=10,
nodesepA=0pt ]{->}{P1}{0.5cm}
nccurve[angleA=0,
angleB=180]{<->}{a2}{a1}
nccurve[angleA=90,
angleB=270]{<->}{a2}{P1}
nccurve[angleA=90,
angleB=270]{<->}{a1}{P1}
end{pspicture}
1.10.3. Etiquetas
Las etiquetas se le asignan a los conectores de los diagramas, deben
ubicarse después de construir el conector, y se asume que el conector
va de izquierda a derecha.
La tabla 1.14 muestra otros tipos de nodos similares a rnode con for-
mas geométricas:
Aquí mostraremos los tipos de etiquetas y los parámetros opcionales
como nrot . En el siguiente ejemplo ubicamos etiquetas con el parámetro
npos, que es un número entre 0 y 1 y determina donde aparece la
etiqueta. El comando * provoca que la etiqueta borre los objetos que
están debajo de ella, en caso contrario, la etiqueta será transparente.
60 1.10. Herramientas para árboles, grafos y diagramas
Etiqueta Descripción
ncput[op]{etiqueta} La etiqueta va sobre la línea del
conector.
naput[op]{etiqueta} La etiqueta va encima del conector.
nbput[op]{etiqueta} La etiqueta va debajo del conector.
tvput[op]{etiqueta} La etiqueta va en la misma linea del
conector. Se usa en conectores verti-
cales.
tlput[op]{etiqueta} Igual a la anterior solo que la etiqueta
se ubica a la izquierda del conector.
tlput[op]{etiqueta} En este caso la etiqueta se ubica a la
derecha del conector.
Cuadro 1.14: Etiquetas para conectores en PSTricks
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
α1
β2
γ3
begin{multicols}{2}
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(1,2.5){ovalnode{P1}
{$P_t$}}rput(5,1){ovalnode{a1}
{$a_1$}}rput(5,4)
{ovalnode{a2}{$a_2$}}
nccurve[angleA=0, angleB=0]{<->}
{a2}{a1}ncput*{$alpha_1$}
nccurve[angleA=90, angleB=0]
{<->}{a2}{P1}
ncput*[npos=0.5]{$beta_2$}
nccurve[angleA=270, angleB=0]
{<->}{a1}{P1}
ncput*[npos=0.7]{$gamma_3$}
end{pspicture}
En el siguiente ejemplo se usará la etiqueta naput y nbput con
el parámetro labelsep, la cual nos determina la separación entre el
conector y la etiqueta, por defecto es 0.5pt.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1 a2
ξ
λ
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(3.5,4){dianode{P1}{$P_t$}}
rput(1,2){dianode{a1}{$a_1$}}
rput(4,2){dianode{a2}{$a_2$}}
ncbar[angleA=0, angleB=180]
{->}{P1}{a2}
1. Gráficos con PSTricks 61
naput[labelsep=0.3pt]{$xi$}
ncbar[angleA=90]{->}
{a1}{a2}nbput{$lambda$}
end{pspicture}
Para el siguiente caso, usaremos la etiqueta tvput con el parámetro
nrot, el cual determina la rotación de la misma con un ángulo entre
-360 y 360 grados sexagesimales, por defecto dicho parámetro es cero.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pta1
a2
ξ
incorrecto
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(5,1){ovalnode{P1}{$P_t$}}
rput(1,1){ovalnode{a1}{$a_1$}}
rput(5,4){ovalnode{a2}{$a_2$}}
ncline{->}{P1}{a2}tvput{$xi$}
ncline{->}{a1}{a2}
naput*[nrot=35]{incorrecto }
end{pspicture}
Ahora veremos las etiquetas tlput, trput.
0 1 2 3 4 5 6
0
1
2
3
4
5
P1
a1 a2
P2ξ
ψ ϕ
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(1,4)
{dianode{P1}{$P_1$}}
rput(1,1)
{ovalnode{a1}{$a_1$}}
rput(5,1)
{ovalnode{a2}{$a_2$}}
rput(5,4)
{dianode{P2}{$P_2$}}
ncline{->}
{P1}{P2}ncput*{$xi$}
ncline{->}
{P1}{a1}tlput{$psi$}
ncline{->}
{P2}{a2}trput{$varphi$}
end{pspicture}
1.10.4. Árboles
La sintaxis de un árbol es la siguiente:
pstree[par]{raiz}{ramas}
62 1.10. Herramientas para árboles, grafos y diagramas
Para implementar un gráfico de árbol debemos tener en cuenta la ubi-
cación de la raíz y las ramas, además la forma de ubicar los conectores.
El cuadro 1.15 ilustrará los tipos de nodos.
Nodo Descripción
Tp[op] Nodo invisible.
Tdot[op] Nodo en forma de punto.
Tf[op] Nodo en forma de cuadro.
Tfan[op] Nono invisible conectado a su nodo prede-
cesor por una figura triangular.
Tc[op]{r} Nodo circular con radio r.
TC[op] Igual al anterior pero el radio se establece
por defecto con el parámetro radius en el
psset{...}. Por omisión es 2.5mm
Tr[op]{texto} Nodo rectangular invisible con texto.
Tcircle[op]{texto} Nodo circular con texto.
Toval[op]{texto} Nodo ovalado con texto.
Ttri[op]{texto} Nodo triangular con texto.
Tdia[op]{texto} Nodo en forma de rombo con texto.
Tn[op]{texto} Nodo con texto pero conectado a su prede-
cesor por una línea invisible. Sólo se puede
usar en las hojas del árbol no en su raíz.
Cuadro 1.15: Nodos para los árboles en PSTricks
Para el manejo de árboles, se debe tener especial cuidado con la ubi-
cacion de hojas y subarboles. Al implementarlos, nos damos cuenta
que es fácil caer en erorres por la ubicacón incorrecta de los nodos.
0 1 2 3 4 5 6
0
1
2
3
4
5
6
h
psset{unit=0.6}
begin{pspicture}(0,0)(6,6)
rput[tl](1.5,5.5)
{pstree{TC}{Tdia{$h$}
Tdot pstree{TC}{Tc{1mm}
Ttri{} }} }
1. Gráficos con PSTricks 63
Además de los tipos de nodos, podemos controlar la forma en que
se crea el árbol, por ejemplo, si queremos que nuestro árbol sea de
derecha a izquierda o de abajo hacia arriba, etc, sólo cambiamos las
opciones que se muestran en el cuadro 1.16.
Nodo Descripción
treemode= Determina la dirección del árbol,
Dconstruye el árbol hacia abajo, U lo
construye hacia arriba, R y L derecha e
izquierda.
edge= Determina el tipo de conector (ncline,
ncarc,etc ) .
nodesep= Es la distancia entre el nodo y el conector,
por defecto es 0pt.
levelsep= Determina la distancia entre los niveles de
un árbol, por defecto es 2cm.
treesep= Me indica la distancia entre los descendi-
entes de un mismo nodo, por defecto es
0.75cm.
Cuadro 1.16: Parámetros para el trazado de árboles
C
R
Q
Z
N
I
psset{unit=0.6}
begin{pspicture}(0,0)(6,6)
rput[tl](1.5,5.5)
{pstree[levelsep=1cm,
arrows=->]{Tcircle{$mathbb{C}$}}
{ pstree{Tcircle{$mathbb{R}$}}
{pstree{Tcircle{$mathbb{Q}$}}
{pstree{Tcircle{$mathbb{Z}$}}
{Tcircle{$mathbb{N}$} } }
Tcircle{$mathbb{I}$}} }}
end{pspicture}
En este caso mostraremos que una gráfica hecha con PSTricks se puede
poner en el entorno figure como si fuésemos a cargar un archivo
gráfico. Para el caso el árbol genealógico de los hijos de Borin.1.
1
J.R.R. Tolkien, Apéndices del Señor de los Anillos. Ediciones Minotauro. 2001
64 1.10. Herramientas para árboles, grafos y diagramas
Borin Farin
Fundin I
Balin
Dawlin
Gróin
Óin
Glóin Gimli
Figura 1.1: Genealogía de los hijos de Borin
1. Gráficos con PSTricks 65
begin{figure}[htbp]
centering psset{unit=1.2}
begin{pspicture}(0,-6)(13,6)
rput[tl](0.5,5.5){pstree[edge=nccurve,
angleB=180, treemode=R,treesep=2.5cm, arrows=->]
{ Toval{scriptsize Borin} }{
pstree{Toval{scriptsize Farin} }
{pstree{Toval{scriptsize Fundin I}}
{Toval{scriptsize Balin} Toval{scriptsize Dawlin} }
pstree{Toval{scriptsize Gróin}}{Toval{scriptsize Óin}
pstree{
Toval{scriptsize Glóin}}{Toval{scriptsize Gimli}}}}}}
end{pspicture}
caption{Genealogía de los hijos de Borin }
label{hijosborin}
end{figure}
1.10.4.1. Etiquetas para los nodos de los árboles
Las etiquetas de los conectores del árbol se ubican exactamente de-
spués del comando de cada nodo, su sintaxis es muy simple ~{etiqueta}.
El parámetro tnpos= posiciona la etiqueta con relación al nodo. b es
abajo (por defecto es b), a arriba y r y l son derecha e izquierda. Con
tnsep= podemos cambiar la distancia entre el nodo y la etiqueta, por
defecto es 5pt. Las etiquetas para los conectores se colocan inmedi-
atamente después del primer nodo, con el comando naput, es decir, si
tenemos dos nodos A y B, se ubicará después del nodo A.
Ejemplo:2
2
J.R.R. Tolkien, El Silmarrillion. Ediciones Minotauro. 2001
66 1.11. Manejo de objetos 3D con PSTricks
Elfos
Eldar
Calaquedi
Fueron a Amán
Vanyar
Los hermosos
Noldor
Los Sabios
Telerin
Los Elfos del mar
Avari
Moriquendi
No fueron a Amán
psset{unit=0.6}
begin{pspicture}(0,-6)(13,6)
pstree[treemode=R,levelsep=3.8cm,treesep=2.5,arrows=->]
{Toval{scriptsize Elfos}}{
pstree{Toval[tnpos=a]{scriptsize Eldar}
~{ textit{ scriptsize Calaquedi}}naput[nrot=:U]
{tiny Fueron a Amán} }{Toval[tnpos=b]
{scriptsize Vanyar}~{ textit{
scriptsize Los hermosos}}
Toval[tnpos=b]{scriptsize Noldor}
~{ textit{ scriptsize Los Sabios}}
Toval[tnpos=b]{scriptsize Telerin}
~{textit{ scriptsize Los Elfos del mar}}}
Toval[tnpos=b]{scriptsize Avari}~{ textit{
scriptsize Moriquendi}}naput[nrot=:U]{tiny No fueron a Amán}}
end{pspicture}
1.11 Manejo de objetos 3D con PSTricks
PSTricks ofrece toda una librería para dibujar objetos tridimensionales
como esferas, planos, vectores, superficies, etc. Para el manejo de esta
1. Gráficos con PSTricks 67
librería es necesario que el usuario esté familiarizado con los conceptos
de Cálculo Multivariado, es decir, con la ubicación de puntos en el
espacio, manejo de ecuaciones en R3 y otros conceptos.
1.11.1. El paquete pst-3dplot
Con este paquete, podemos usar los comandos necesarios para dibujar
los objetos 3D, además, se pueden incluir otros objetos matemáticos
como ecuaciones y objetos 2D. Si usted no tiene este paquete, lo pude
conseguir en la siguiente direccción:
http://ctan.org/tex-archive/
graphics/pstricks/contrib/pst-3dplot/
1.11.2. El eje cordenado 3D
El eje coordenado de la librería es el mismo que podemos encontrar
en cualquier libro de Cálculo, con el eje z perpendicular al eje y y al
eje x:
x y
z
Sin embargo, para acceder a este espacio necesitamos un punto de
referencia o punto de visión, imaginemos que estamos parados junto
al eje coordenado; estando allí podemos dar la vuelta, subir y bajar
68 1.11. Manejo de objetos 3D con PSTricks
la mirada, levantar el eje coordenado para observar los objetos desde
abajo, en fin, necesitamos mover la vista para visualizar mejor los ob-
jetos que vamos a dibujar.
Para resolver el problema, PSTricks toma como punto de partida 2
ángulos especiales α y β. El ángulo α representa la rotación horizontal
con valores positivos en sentido antihorario. El ángulo β controla la
rotación vertical u ortogonal del plano. Por defecto, los ángulos son
α = 45 y β = 45, si queremos cambiar el punto de vista del plano,
cambiamos los parámetros en el psset{...}.veamos el ejemplo:
x y
z
x
y
z
x
y
z
psset{unit=1.0}
begin{pspicture}(0,-1)(13,5)
rput(3,2){pstThreeDCoor[Alpha=45, Beta=45,
linecolor=red,xMax=3,yMax=3,zMax=3]}
rput(8,2){pstThreeDCoor[Alpha=-60, Beta=10,
linecolor=green,xMax=4,yMax=3,zMax=3]}
rput(11,2){pstThreeDCoor[Alpha=45, Beta=50,
linecolor=blue,xMax=4,yMax=3,zMax=3]}
end{pspicture}
En en ejemplo anterior, podemos ver que se pueden cambiar algunos
parámetros, entre ellos esta xMin, xMax, yMin, yMax, zMin, zMax, los
cuales determinan los límites de los ejes con *Min le damos el límite
inferior y con *Max configuramos el límite superior. También podemos
cambiar el ancho de las líneas o su forma. Debemos tener en cuen-
ta donde ubicamos los parámetros Alpha y Beta, si lo hacemos en el
psset todos los objetos rotarán al unísono con el eje, si lo hacemos
en los parámetros de pstThreeDCoor, sólo los ejes rotarán, los demás
1. Gráficos con PSTricks 69
objetos no.
1.11.3. Ubicación de objetos con pstThreeDPut
Este comando es muy similar a rput de la versión 2D, a continuación
la sintaxis:
pstThreeDPut[par](x,y,z){obj}
Esta orden ubica en la posición (x, y, z) el objeto obj con diferentes
opciones, las cuales mostraremos en los diferentes ejemplos.
x y
z
̟2
ξ1
ζ1
psset{unit=1.0}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[linecolor=red,xMax=4,yMax=4,zMax=3]
pstThreeDPut(1,2,3){$varpi_2$}
pstThreeDPut(2,0,3){$xi_1$}
pstThreeDPut(3,3,0){$zeta_1$}
end{pspicture}
1.11.4. Puntos
Como ya es sabido, los puntos son de los objetos matemáticos más
usados, PSTricks3D implementa la siguiente función:
pstThreeDDot[par](x,y,z)
El comando ubica un punto con coordenadas (x, y, z) con las opciones
de colores que ya hemos visto, además del parámetro drawCoor que
70 1.11. Manejo de objetos 3D con PSTricks
puede ser falsetrue , lo cual provoca que se dibujen las líneas par-
alelas a los ejes. Veamos un ejemplo:
x
y
z
psset{unit=1.0, Alpha=80}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[linecolor=red,xMax=4,yMax=4,zMax=3]
pstThreeDDot[drawCoor=true](1,1,2)
pstThreeDDot[drawCoor=true](0,-2,1)
pstThreeDDot[drawCoor=true](4,2,-0.5)
end{pspicture}
1.11.5. Líneas rectas
La sintaxis para una línea en el espacio tridimensional es la siguiente:
pstThreeDLine[par](x1,y1,z1)(x2,y2,z2)
La cual dibuja una recta del punto (x1, y1, z1) al punto (x2, y2, z2), las
opciones son las típicas que hemos visto en la versión 2D.
Ejemplo:
1. Gráficos con PSTricks 71
x y
z
v1 v2
v3
psset{unit=1.0, Alpha=45, Beta=45}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[xMax=4,yMax=4,zMax=3]
pstThreeDLine[linewidth=2pt,
linecolor=blue, arrows=->](0,0,0)(1,2,5)
pstThreeDLine[linewidth=2pt,
linecolor=blue, arrows=->](0,0,0)(-3,2,0)
pstThreeDLine[linewidth=2pt,
linecolor=blue, arrows=->](0,0,0)(4,0,3)
rput(-2,0.5){$vec{v}_1$}
rput(1.5,0.5){$vec{v}_2$}
rput(1,2){$vec{v}_3$}
end{pspicture}
Como podemos observar, hemos usado el comando rput, en lugar de
la versión 3D, si usted no conoce la ubicación de los puntos en 3D, lo
puede hacer con la versión 2D sin ningún problema.
1.11.6. Triángulos
Para dibujar triángulos, PSTricks3D implementa el siguiente comando:
pstThreeDTriangle[par](P1)(P2)(P3)
El parámetro drawCoor que puede ser falsetrue dibuja las rectas
paralelas a los ejes, fillstyle debe estar en solid para que el trián-
gulo sea llenado, de lo contrario, se dibujará transparente. El color se
escoje con fillcolor . Los parámetros P1,P2,P3 son los puntos de
los vértices del triángulo.
72 1.11. Manejo de objetos 3D con PSTricks
x y
z
psset{unit=1.0, Alpha=45, Beta=45}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[xMax=4,yMax=4,zMax=3]
pstThreeDTriangle[linewidth=1pt](3,-1,5)(1,1,5)(1,2,5)
pstThreeDTriangle[drawCoor=true,linecolor=blue,
linewidth=1pt, fillstyle=solid, fillcolor=yellow]
(3,1,2)(1,4,2)(0,2,2)
pstThreeDTriangle[drawCoor=true,linecolor=red,
linewidth=1pt, fillstyle=solid, fillcolor=green]
(3,0,4)(1,0,1)(0,0,2)
end{pspicture}
1.11.7. Cuadros y rectángulos
La sintaxis es la siguiente:
pstThreeDSquare[Op](v1)(v2)(v3)
En este caso, se dibuja un cubo o paralelepípedo imaginario, luego
aparecen los vectores v1, v2 y v3. El primer vector determina el pun-
to de origen del cuadro, los otros dos determinan el ancho y largo del
cuadro. Estos vectores en realidad son los puntos finales de los vectores.
Ejemplo:
1. Gráficos con PSTricks 73
x y
z
psset{unit=1.0, Alpha=45, Beta=15}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[xMax=4,yMax=4,zMax=3]
pstThreeDSquare[fillcolor=blue,fillstyle=solid,
drawCoor=true,dotstyle=*](1,1,3)(0,3,0)(1,0,0)
pstThreeDSquare[fillcolor=green,fillstyle=solid,
drawCoor=true,dotstyle=*](1,1,1)(4,0,0)(0,5,0)
end{pspicture}
1.11.8. Cajas
Una caja es un caso especial de los Cuadros de la sección anterior, la
sintaxis es la siguiente:
pstThreeDBox[par](v1)(v2)(v3)(v4)
El primer punto (punto final de un vector) es el punto de inicio de
nuestra caja, los demás vectores determinan el ancho, el alto y la pro-
fundidad.
Ejemplo:
74 1.11. Manejo de objetos 3D con PSTricks
x y
z
psset{unit=1.0, Alpha=45, Beta=15}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[xMax=4,yMax=4,zMax=3]
pstThreeDBox[fillcolor=yellow,
fillstyle=solid](0,0,0)(3,0,0)(0,3,0)(0,0,1)
end{pspicture}
1.11.9. Circunferencias y elipses
En el siguiente gráfico podemos observar los componentes de una
elipse:
a
b
F2
F1
a a
e
e
r1 r2
Ahora bien, lo que tenemos es: dos focos F1 y F2, los diámetros a y b
y además la exentricidad determinada por e.
(x − x0)2
a2
+
(y − y0)2
b2
= 1 (1.1)
1. Gráficos con PSTricks 75
La ecuación 1.1 es la fórmula generalizada de una elipse con centro
en (x0, y0), eje mayor a y eje menor b, (también llamados radios de
la elipse).La exentricidad e determina que tan alargada o deforme es
la elipse y debe ser 0 < e ≤ 1, si e = 1 la elipse se convierte en
una circunferencia. La información anterior es de vital importancia si
necesitamos dibujar elipses o circunferencias.
Además, de esta información, podemos cambiar algunos parámetros
de la elipse como el arco, permitiendo dibujar parte de la elipse o cir-
cunferencia, esto lo logramos cambiando los parámetros que controlan
el ángulo de inicio y el terminal; beginAngle que por defecto es 0 y
endAngle que es 360, éstos valores indican que se dibujará toda la
elipse.
Recuerde que como estamos en el espacio tridimensional, es muy común
que veamos una circunferencia como una elipse o viceversa, es re-
comendable que se ajusten los parámetros de visión (Alpha y Beta)
para que ésta distorsión no cause malos entendidos.
la elipse entonces tiene la siguiente sintáxis:
pstThreeDEllipse[OP](cx,cy,cz)(ux,uy,uz)(vx,vy,vz)
El primer punto (cx, cy, cz) es el extremo de un vector c, este punto
será el centro de nuestra elipse, en la ecuacion 1.1 serían (x0, y0). El
punto (ux, uy, uz) y (vx, vy, vz) son los extremos de los vectores que
me indicarán los valores de a y b.
Ejemplo:
76 1.11. Manejo de objetos 3D con PSTricks
x y
z
psset{unit=1.0, Alpha=45, Beta=25}
begin{pspicture}(-4,-3)(4,3)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
pstThreeDEllipse[linecolor=blue,
linewidth=1.5pt](0,0,0)(3,0,0)(0,2,0)
pstThreeDEllipse[linecolor=blue,
linewidth=1.5pt](0,0,0.5)(2.5,0,0)(0,1.5,0)
pstThreeDEllipse[linecolor=blue,
linewidth=1.5pt](0,0,1)(2,0,0)(0,1,0)
pstThreeDEllipse[beginAngle=0,endAngle=180,
linecolor=green](0,0,2)(1,0,0)(0,1,0)
pstThreeDEllipse[beginAngle=180,endAngle=360,
linecolor=magenta](0,0,2)(1,0,0)(0,1,0)
end{pspicture}
Observe que la última elipse en realidad son dos semicircunferencias,
una verde y la otra magenta, la perspectiva provoca que se vean como
elipses.
1.11.10. Esferas
La sintaxis es la siguiente:
pstThreeDSphere[OP](x,y,z){r}
1. Gráficos con PSTricks 77
EL comando dibuja una esfera con centro en el punto (x, y, z) y de
radio r, las opciones son las antes estudiadas.
x y
z
psset{unit=0.8, Alpha=45, Beta=25}
begin{pspicture}(-4,-3)(4,3)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
pstThreeDSphere[linewidth=0,
linecolor=green](0,0,2){0.8}
pstThreeDSphere[linewidth=0,
linecolor=blue](2,0,0){0.8}
pstThreeDSphere[linewidth=0,
linecolor=blue](0,2,0){0.8}
end{pspicture}
1.11.11. Curvas paraméntricas en 3D
PSTricks implementa la siguiente función:
parametricplotThreeD[par](t1,t2)(u1,u2){x(t,u)
y(t,u) z(t,u)}
Sólo es posible usar las variables u y t. Los parámetros t1, t2 son los
límites de t, u1, u2 son los límites inferior y superior de u. Recuerde que
x(t, u), y(t, u) y z(t, u) se deben ingresar en la notación PostScript
como lo vimos en la sección 1.9.1.
78 1.11. Manejo de objetos 3D con PSTricks
Ejemplo:
x y
z
psset{unit=0.8, Alpha=45, Beta=25}
begin{pspicture}(-4,-2)(4,4)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
parametricplotThreeD[linecolor=blue,
linewidth=.25pt,xPlotpoints=200,
plotstyle=curve,arrows=->](0,3.2){
t 360 mul cos t mul
t 360 mul sin t mul t}
end{pspicture}
Ejemplo:
1. Gráficos con PSTricks 79
x y
z
psset{unit=2.6, Alpha=45, Beta=25}
begin{pspicture}(-2,-2)(2,3)
pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,
yMax=2,zMax=3, arrows=<->]
parametricplotThreeD[linecolor=blue,
linewidth=.25pt,xPlotpoints=200,
plotstyle=curve,arrows=->](0,360)(0,360){
u sin t cos mul
u sin t sin mul
u cos}
parametricplotThreeD[linecolor=blue,
linewidth=.25pt,xPlotpoints=200,
plotstyle=curve,arrows=->](0,360)(0,360){
t sin u cos mul
t sin u sin mul
t cos}
end{pspicture}
80 1.11. Manejo de objetos 3D con PSTricks
1.11.12. Gráfica de funciones
Para graficar funciones en el espacio, PSTricks implementa la función:
psplotThreeD[OP](x0,xt)(y0,yt){f(x,y)}
La funcion, recuerden, debe estar en lenguaje PostScript , sólo se
admiten variables x y y. El comando dibuja la gráfica de la función
f(x, y) en el dominio determinado por (x0, xt) para x y (y0, yt) para la
variable y. Además, se debe tener encuenta los siguientes parámetros
(ver cuadro 1.17 ).
Opción Valor
plotstyle Puede ser dots, line, polygon, curve,
ecurve, ccurve, none (valor por defecto).
y determina la forma de las líneas con que
se dibujá la curva.
showpoints Puede ser false/true y por omisión es
false. Muestra los puntos.
showpoints Puede ser false/true y por omisión es
false. Muestra los puntos.
xPlotpoints y yPlotpoints Por defecto es 25, y determina la cantidad
de puntos a graficar.
hiddenLine Por defecto es false y hace que se dibujen
las líneas.
Cuadro 1.17: Opciones de la función psplotThreeD
Ejemplo:
psset{unit=1.5, Alpha=45, Beta=20}
begin{pspicture}(-3,-1.5)(6,5.5)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
psplotThreeD[plotstyle=line,linecolor=blue,
yPlotpoints=40,xPlotpoints=30, linewidth=0.5pt]
(-1.5,1.5)(-1.5,1.5)
{
x 2 exp y 2 exp add x 5 div sub
}
1. Gráficos con PSTricks 81
rput[tl](2,2){$f(x,y)=x^2 + y^2 - frac{x}{5}$ }
end{pspicture}
x y
z
f(x, y) = x2 + y2 − x
5
Recuerde que usted tiene el control sobre el dominio de las variables x
y y, no sobre la variable z, tenga presente este detalle pues su gráfica
puede salir de la zona delimitada.
Ejemplo:
82 1.11. Manejo de objetos 3D con PSTricks
x y
z
f(x, y) = cos(100x) − sin(100y)
psset{unit=1.5, Alpha=45, Beta=30}
begin{pspicture}(-3,-1.5)(3,4)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
psplotThreeD[plotstyle=line,linecolor=blue,
yPlotpoints=40,xPlotpoints=30, linewidth=0.5pt,
hiddenLine=true](-2,2)(-2,2)
{
x 100 mul cos y 100 mul sin sub
}
rput[tl](-2,3.5){$f(x,y)=cos (100x) - sin (100y) $ }
end{pspicture}
Ejemplo:
1. Gráficos con PSTricks 83
x y
z
f(x, y) = sin2
(180x)
psset{unit=1.0, Alpha=45, Beta=30}
begin{pspicture}(-3,-2)(3,3)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
psplotThreeD[plotstyle=ecurve,linecolor=blue,
yPlotpoints=40,xPlotpoints=30, linewidth=0.5pt,
hiddenLine=true](-2,2)(-2,2)
{
x 180 mul sin 2 exp
}
rput[tl](-3,2.5){$f(x,y)=sin ^2 (180x) $ }
end{pspicture}
Ejemplo:
84 1.11. Manejo de objetos 3D con PSTricks
x
y
z
f(x, y) = y2 − x2
psset{unit=1.0, Alpha=60, Beta=30}
begin{pspicture}(-3,-2)(3,3)
psplotThreeD[plotstyle=line,linecolor=blue,
yPlotpoints=60,xPlotpoints=60, linewidth=0.5pt,
hiddenLine=true, showpoints=true](-1.3,1.3)(-1.3,1.3)
{
y 2 exp x 2 exp sub
}
pstThreeDCoor[xMin=-2,xMax=2,yMin=-2, yMax=2,zMax=3, arrows=<->]
rput[tl](-3,2.5){$f(x,y)=y^2-x^2$ }
end{pspicture}
Ejemplo:
1. Gráficos con PSTricks 85
x
y
z
f(x, y) = 1 − x2 + y2
1
3
psset{unit=1.0, Alpha=60, Beta=30}
begin{pspicture}(-3,-2)(3,3)
psplotThreeD[plotstyle=line,linecolor=blue,
yPlotpoints=60,xPlotpoints=60,
linewidth=0.5pt, hiddenLine=true,
showpoints=true](-1.3,1.3)(-1.3,1.3)
{
1 x 2 exp y 2 exp add 1 3 div exp sub
}
pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,
yMax=2,zMax=1.5, arrows=<->]
rput[tl](-3,2.5){$f(x,y)=1-left(x^2 +y^2
right)^{frac{1}{3}}$ }
end{pspicture}
86 1.11. Manejo de objetos 3D con PSTricks
CAPÍTULO 2
Herramientas para gráficos con
PSTricks
Para muchos usuarios de PSTricks, puede ser tedioso el uso de códigos
más parecidos a un lenguaje de programación como Pascal o C++,
que a un editor de gráficos matemáticos. El usuario de LATEX quiere
que sus gráficos matemáticos queden con la mejor calidad, sin em-
bargo, muchos de ellos no desean ni tienen tiempo de construir una
gráfica matemática con base en instrucciones. Además, hay gráficos
muy sencillos (o muy complejos) que no merecen que se tome el tiem-
po necesario en construirlos de la forma tradicional.
Para este tipo de usuarios, se desarrolló software como el JpicEdt©
y LatexDraw©, estos programas permiten construir gráficos vector-
izados y exportar su código a LATEX y PSTricks. En este capítulo
mostraremos cómo implementar gráficos matemáticos con estos pro-
gramas.
2.1 JpicEdt
Este programa fue desarrollado por Sylvain Rainal del E.N.S.E.A de-
partamento de física. Es un software libre y puede ser redistribuido
87
88 2.1. JpicEdt
y/o modificarlo bajo los términos de la Licencia Pública General de
GNU según es publicada por la Free Software Foundation. Como se
mencionó anteriormente, el software es un editor de gráficos vector-
izados que permite exportar a código PSTricks, Emulated LATEX y
Epic/Eepic.
El JpicEdt fue desarrollado en Java©, el cual debe estar instalado
en el computador previamente. La instalación es muy sencilla, sólo se
hace doble clic en el archivo jpicedt-install-1_4_pre_5.jar, luego,
se procede a dar los parámetros de instalación, el programa se ubi-
cará en su computador automáticamente. Como JpicEdt esta hecho
en Java, puede funcionar en cualquier plataforma (Windows, Linux
y Mac.). Para bajarlo y obtener más información, consulte la página
http://jpicedt.sourceforge.net/site/index.php?language=en.
Figura 2.1: Interfase principal de JPicEdt
2. Herramientas para gráficos con PSTricks 89
2.1.1. Ventanas
JpicEdt tiene 3 ventanas principales, la primera de ella es la de trabajo.
En la parte superior de esta ventana, aparecen varios menús desple-
gables, el primero de ellos permite cambiar la malla o cuadrícula del
área de trabajo, luego aparece un botón para activar o desactivar el
“magnetismo de la malla”, es decir, la forma en como los objetos se
acomodan e los vértices de la malla del área de trabajo. Luego aparece
otro menú desplegable para cambiar la intensidad del magnetismo de
la malla, la cual va de 10 a 0.625; ésta es muy importante para la
construcción de nuestros gráficos matemáticos.
En la parte media de la ventana, se encuentra el área de trabajo, el
cual, esta enmarcado con una malla, en la parte superior e izquierda
se encuentra la regla, una utilidad para medir o referenciar nuestros
gráficos. En la parte inferior izquierda aparece una etiqueta donde se
resalta la posición del mouse sobre el área de trabajo.
Luego aparece la ventana de atributos, la cual, me permite cambiar
las propiedades o atributos de los objetos que se construyan.
90 2.1. JpicEdt
La ventana consta de ocho submenus: Lleno, Rayar, Trazo, Som-
bra, Flechas, Polydots, Text y una opción llamada PSTricks.
Lleno: Con esta opción, podemos
escojer el color de relleno de los
objeto cerrados, es decir, figuras
planas cerradas (círculos, elipses,
polígonos). La ventana muestra
las opciones de colores en paletas
RGB, HSB y colores predefinidos
por PSTricks.
Además, tiene un menú desplegable que permite escojer el tipo de
textura o relleno para nuestros objetos, las opciones que maneja son:
transparente (por defecto), solido, líneas verticales transparentes, líneas
verticales con color de fondo, líneas horizontales transparentes y con
fondo, y dos opciones para trama en forma de ladrillo con fondo trans-
parente y con color de fondo.
Como hemos visto, no debemos preocuparnos por el código en PSTricks
para la inclusión de nuevos colores, JpicEdt lo hace automaticamente,
Además la ventana cuenta con una opción de color reciente, que le
permite al usuario seguir trabajando con los mismos colores.
2. Herramientas para gráficos con PSTricks 91
Rayar: Esta opción permite cam-
biar las formas de las texturas que
se impusieron a los objetos en la
opción de lleno. Tiene tres op-
ciones, la primera, puesta en la
parte superior izquierda, permite
cambiar el ancho de las líneas de
las texturas; si estas son muy an-
chas, se puede obtener un color
sólido.
La segunda opción permite cambiar la separación entre las líneas de
la textura y la última opción modifica el ángulo de inclinación de las
líneas. En la parte inferior se presenta un menú de colores similar a
la pestaña anterior donde se pueden escoger colores de la forma RGB,
HSB y predeterminado por PSTricks.
Trazo: En esta pestaña, encon-
tramos las opciones para el en-
torno de los objetos. Inicialmente
aparece un menu desplegable que
me permite selecionar la forma del
contorno, puede ser invisible, nor-
mal, en guiones y punteada. En la
parte superior derecha aparece la
opción de ancho de la línea.
Los dos comandos en la zona media, son usados para ajustar la sepa-
ración entre los guiones y el ancho de los mismos. Tambien, allí aparece
la opción para la líneas punteadas, con este comando se pueden cam-
biar la separación de los puntos. La opción Overstrike hace que las
líneas pierdan la capacidad de ser transparentes.
Sombra: Esta opción permite aplicarle el efecto de sombra a los ob-
jetos planos cerrados (polígonos, círculos, etc)
92 2.1. JpicEdt
Sólo tiene dos parámetros, el primero modifica el ancho de la sombra
y el segundo el ángulo donde esta se va a proyectar.
Flechas: Permite implementar el
efecto de flechas a las líneas con
las mismas opciones que aparecen
en la sección 1.3.1.1. La pestaña
ofrece la posibilidad de cambiar
el tipo de flecha al comienzo y
al final de la línea, la forma y el
tamaño de la misma.
Polydots: Esta pestaña permite
activar los puntos de una curva
o una línea recta, la pestaña pre-
senta un menú desplegable con
los tipos de puntos dados por
PSTricks. Las diferentes opciones
de esta pestaña permiten cambiar
el ángulo de los puntos, tamaño y
escala.
Text: Para los efectos de texto,
la pestaña ofrece la posibilidad de
cambiar el punto de referencia de
la etiqueta con el texto,
permitiendo ponerla en la parte inferior, superior, izquierda o derecha,
además, permite cambiar el ángulo de rotación del texto. La pestaña
tambien incluye una herramienta para enmarcar el texto en rectángu-
los o círculos.
2. Herramientas para gráficos con PSTricks 93
PSTricks: En esta pestaña pode-
mos incluir opciones de PSTricks
que el software no maneja, sólo
debemos escribirlas en el espacio
de PS custom y oprimir el botón
aceptar.
2.1.2. Herramientas de edición
La ventana de “Caja de útiles”
presenta las herramientas de edi-
ción básicas para contruir nue-
stros gráficos matemáticos. Inici-
amlente, esta ventana la encon-
traremos junto a las que apare-
cen por omisión cuando el progra-
ma arranca, si no es el caso, vaya
al menú Útiles y allí encontrará
las mismas opciones. Tambien la
podemos encontrar en el menú
Ventanas/Caja de útiles.
Para el manejo de estas herramietas, se debe tener en cuenta que los
objetos a modificarse deben estar seleccionados. En realidad, cualquier
persona que haya tenido contacto con programas como FreeHand o
CorelDraw no tendrá dificultad en manejarlo. Enseguida, mostraremos
el uso de las diferentes herramientas de edición.
94 2.1. JpicEdt
Permite hacer zoom en la gráfica que estamos
construyendo.
Selecciona los objetos que componen la gráfica.
Permite editar los nodos que componen las curvas
Bezier.
Al seleccionar uno o varios obejto, podemos moverlos
con este comando.
Escala los objetos seleccionados, bien sea en forma
vertical u horizontal.
Rota los objetos seleccionados.
Permite la inclusión de texto. Si es texto científico,
recuerde ponerlo entre los comandos “$”
Permite crear líneas rectas.
Herramienta para crear rectángulos.
Herramienta para crear paralelogramos.
Permite construir curvas bezier, el fin de la curva se
logra haciendo clic derecho.
Igual a la anterior, pero la curva bezier es cerrada
2. Herramientas para gráficos con PSTricks 95
Herramienta para la creación de elipses y
circunferencias.
Comando para crear “tortas” o secciones de círculos.
Esta herramienta es similar a la anterior, pero el arco
se une por una cuerda.
Tambien es similar a la anterior, pero sin la cuerda.
Esta herramieta se llama herramienta cerrada, pero
su diferencia consiste en imprimir a la elipse el efecto
de perspectiva.
Torta con efecto de perspectiva.
Arco y cuerda con efecto de perspectiva.
Arco sin cuerda con efecto de perspectiva.
Circunferencia determinada por tres puntos, los
cuales estan sobre la circunferencia.
Torta determinada por tres puntos.
Arco con cuerda determinada por tres puntos.
Arco sin cuerda determinada por tres puntos.
96 2.1. JpicEdt
Curva poligonal abierta “Smood”
Curva poligonal cerrada “Smood”
Curva de interpolación abierta
Curva de interpolación cerrada
Edición de puntos de anclaje para ampliar o
disminuir el tamaño.
2.1.3. Preferencias y configuración
JpicEdt puede ser configurado desde la ventana de preferencias, la
cual, se localiza en el menú Editar/Preferencias; esta opción abre
un menu con los siguientes items.
General: Esta pestaña permite configurar la apariencia de las ven-
tanas, el estilo de estas, así como el idioma; que puede
ser, inglés, francés, español y alemán. Tambien aparece
la fuente y el formato por defecto en que se exportará el
código, recuerde que puede ser PSTricks, emulated LATEX
y Epic/Eepic.
Apariencia: En este item aparecen cinco cajas de chequeado, para
configurar la forma en que apareceran las figuras dibujadas
en el área de trabajo, entre ellas están: Anti-alising, Anti-
alising de texto, Calidad (vs velocidad), Dither Colours y
usar métrica fraccional.
Plantilla/Zoom: La opción permite configurar las opciones del tamaño
de la malla, así como el estilo de la malla (sólido o en
puntos). Tambien se puede configurar la imantación de la
malla y el Zoom.
Colores: Esta pestaña sólo presenta dos items, el color de fondo del
escritorio del programa y el color de la malla.
2. Herramientas para gráficos con PSTricks 97
Repertorios: Esta opción permite configurar las rutas del la carpeta
de archivos temporales y la carpeta de inicio de JpicEdt, la
cual, es necesaria para los archivos temporales que utiliza
el programa.
Shortcuts: La pestaña presenta una lista con los Shortcuts de las
diferentes opciones, menús y herramientas.
Comandos: La opción presenta campos para la configuración de las
rutas de acceso al compilador de LATEX y al programa Yap.
Esto debido a que JpicEdt puede compilar el documento
hecho y ver un previo de su dibujo.
Formato de página Permite configurar las márgenes de la zona de
trabajo.
LATEX Opción que permite configurar algunos parámetros esen-
ciales de PSTricks, además, JpicEdt crea un documento
TEX temporal, el cual puede ser configurado desde esta
pestaña.
Epic/Eepic y PSTrics Estas dos pestañas son muy similares a la
anterior, permiten configurar el archivo temporal que se
compilará, LATEX , Epic/Eepic y PSTrics tienen paquetes
diferentes y pueden ser modificados o actualizados desde
esta pestaña.
2.1.4. Otras herramientas de JpicEdt
Además de las mencionadas, JpicEdt tiene otras utilidades que pueden
ahorrar gran trabajo a los usuarios de PStricks. Inicialmente en los
menús fragmentos/electricity y fragmentos/mechanic se encuen-
tran macros especializados para esa área, en el primero podemos en-
contrar macros como el and, or, capacitor, trancistor y voltage entre
otros. Mientras que en el segundo menú, encontramos dos opciones:
Frame-oxy y shock absorber. A continuación veremos un ejemplo de
estos macros.
98 2.1. JpicEdt
I
&
+
−
≥ 1
= 1
R
O
y
x
f
&
≥ 1
Otra de la herramientas y tal vez la más llamativa para los matemáti-
cos, es la posibilidad de graficar curvas de ecuaciones. En el menú
Scrips/math se encuentran tres opciones para hacer este tipo de grá-
ficos, la primera de ellas es add curve la cual, despliega la siguiente
ventana:
Ésta permite incluir una o más curvas en R2. JpicEdt no usa el co-
mando psplot para graficar las curvas, el programa usa la misma
ecuación para encontrar los puntos que la componen y luego crear una
curva bezier que emule la curva original. Como podemos apreciar en
la ventana aparece la opción step, la cual, permite ajustar el incre-
mento en el eje x para obtener los puntos necesarios al crear la curva,
2. Herramientas para gráficos con PSTricks 99
si ponemos este parámetro muy grande la curva se vera defectuosa, si
el incremento es muy pequeño la curva se verá más fina pero será más
pesada para el computador.
Tomemos la gráfica de las funciones f y g.
f(x) = sin(x) y g(x) = cos(x)
La función f la graficaremos con la herramienta de JpicEdt y g la
graficaremos usando PSTricks puro.
Con JpicEdt tenemos
0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5 6,0 6,5 7,0 7,5 8,0 8,5 9,0 9,5
−0,8
−0,6
−0,4
−0,2
−0,0
0,2
0,4
0,6
0,8
x
y
sin(x)
Como vemos, la curva se presenta con una excelente calidad, sólo debe-
mos incluir la ecuación de la curva y cambiar los parámetros de colores,
tipos de línea de la curva y oprimir el botón add this curve y listo,
la gráfica se crea automáticamente en la zona de trabajo, inclusive,
ubica en la parte superior derecha una etiqueta con la ecuación y ad-
hiere efectos de sombra.
Ahora lo haremos con PSTriks puro para la función g(x) = cos(x),
usaremos el comando psplot
100 2.1. JpicEdt
g(x) = cos(x)
1 2 3 4 5 6
Como podemos ver, la gráfica de f y g son muy similares en calidad,
sin embargo, la gráfica de g toma mucho más tiempo en hacerla que
la de f, pues el usuario debe hacer uso de los comandos apropiados
para adecuarla al documento, cambiar el color, los tamaños de letra,
etc. Mientras que en la gráfica de f teniamos una agradable interface
tipo Windows y el tiempo en configurar y hacerla fue mínimo.
Ahora comparemos los códigos, en este caso, PSTriks puro sólo usa
7 líneas de código, mientras que la hecha por JpicEdt1 usa unas 120
líneas. Veamos el código en PStricks puro.
begin{pspicture}(-1,-1)(6.5,1)
rput(2,1){$g(x)=cos (x)$}
footnotesize
psaxes[linewidth=0.02]{<->}(0,0)(-1,-1)(6.5,1)
psplot[linewidth=0.04,linecolor=blue]{0}{6.2}
{ x 50 mul cos }
end{pspicture}
Además de esta herramienta, JpicEdt tiene en el mismo menú, otra
muy similar a la anterior llamada plot funtion, la cual, hace el mis-
mo proceso pero con una gráfica más sencilla y con parámetros más
simples.
1
Recordemos que JpicEdt exporta en código PSTricks, lo que queremos indicar
es que el código hecho por el programa es más extenso.
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1
Disenograficoenlatex1

Weitere ähnliche Inhalte

Was ist angesagt?

Algoritmos y estructura_de_datos
Algoritmos y estructura_de_datosAlgoritmos y estructura_de_datos
Algoritmos y estructura_de_datosch1c41z4
 
El Arte de Programar en R
El Arte de Programar en REl Arte de Programar en R
El Arte de Programar en RHelio Colombe
 
Santana el arte_de_programar_en_r
Santana el arte_de_programar_en_rSantana el arte_de_programar_en_r
Santana el arte_de_programar_en_rVlad Crespo
 
2011 minitab-15
2011 minitab-152011 minitab-15
2011 minitab-15JOREOS
 
Manual de sap2000 v14 marzo 2010 (parte a)
Manual de sap2000 v14 marzo 2010 (parte a)Manual de sap2000 v14 marzo 2010 (parte a)
Manual de sap2000 v14 marzo 2010 (parte a)Fabián Gutiérrez
 
Documento completo _---matematica basica para agronomia
Documento completo _---matematica basica para agronomiaDocumento completo _---matematica basica para agronomia
Documento completo _---matematica basica para agronomiaHaydee Melo Javier
 
Daniel peña análisis de datos multivariantes
Daniel peña   análisis de datos multivariantesDaniel peña   análisis de datos multivariantes
Daniel peña análisis de datos multivariantesfojeda89
 
Tesis Licenciatura
Tesis LicenciaturaTesis Licenciatura
Tesis LicenciaturaCIMAT
 
Calculo vectorial
Calculo vectorialCalculo vectorial
Calculo vectorialmasterkits
 

Was ist angesagt? (15)

Pstricks resumen
Pstricks resumenPstricks resumen
Pstricks resumen
 
Alg03
Alg03Alg03
Alg03
 
Metodos numericos con matlab
Metodos numericos con matlabMetodos numericos con matlab
Metodos numericos con matlab
 
Algoritmos y estructura_de_datos
Algoritmos y estructura_de_datosAlgoritmos y estructura_de_datos
Algoritmos y estructura_de_datos
 
El Arte de Programar en R
El Arte de Programar en REl Arte de Programar en R
El Arte de Programar en R
 
Santana el arte_de_programar_en_r
Santana el arte_de_programar_en_rSantana el arte_de_programar_en_r
Santana el arte_de_programar_en_r
 
2011 minitab-15
2011 minitab-152011 minitab-15
2011 minitab-15
 
Manual de sap2000 v14 marzo 2010 (parte a)
Manual de sap2000 v14 marzo 2010 (parte a)Manual de sap2000 v14 marzo 2010 (parte a)
Manual de sap2000 v14 marzo 2010 (parte a)
 
Algebra
AlgebraAlgebra
Algebra
 
Documento completo _---matematica basica para agronomia
Documento completo _---matematica basica para agronomiaDocumento completo _---matematica basica para agronomia
Documento completo _---matematica basica para agronomia
 
Daniel peña análisis de datos multivariantes
Daniel peña   análisis de datos multivariantesDaniel peña   análisis de datos multivariantes
Daniel peña análisis de datos multivariantes
 
Manual dematlab
Manual dematlabManual dematlab
Manual dematlab
 
Tesis Licenciatura
Tesis LicenciaturaTesis Licenciatura
Tesis Licenciatura
 
Calculo vectorial
Calculo vectorialCalculo vectorial
Calculo vectorial
 
Autocad manual de personalización
Autocad manual de personalizaciónAutocad manual de personalización
Autocad manual de personalización
 

Ähnlich wie Disenograficoenlatex1 (20)

Manual LaTeX
Manual LaTeXManual LaTeX
Manual LaTeX
 
Manual
ManualManual
Manual
 
Análisis Espacial con R
Análisis Espacial con RAnálisis Espacial con R
Análisis Espacial con R
 
Latex
LatexLatex
Latex
 
pensar_en_cpp-vol1.pdf
pensar_en_cpp-vol1.pdfpensar_en_cpp-vol1.pdf
pensar_en_cpp-vol1.pdf
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE C
 
Introducción al r
Introducción al rIntroducción al r
Introducción al r
 
Matlab adv esp
Matlab adv espMatlab adv esp
Matlab adv esp
 
RasterR.pdf
RasterR.pdfRasterR.pdf
RasterR.pdf
 
Manual sage principiantes
Manual sage principiantesManual sage principiantes
Manual sage principiantes
 
Curso basico de R
Curso basico de RCurso basico de R
Curso basico de R
 
Casos prácticos de uml
Casos prácticos de umlCasos prácticos de uml
Casos prácticos de uml
 
El arte de programar en r
El arte de programar en rEl arte de programar en r
El arte de programar en r
 
Pensar en cpp
Pensar en cpp Pensar en cpp
Pensar en cpp
 
Curso grass
Curso grassCurso grass
Curso grass
 
Manual r 1
Manual r 1Manual r 1
Manual r 1
 
Grafi3
Grafi3Grafi3
Grafi3
 
Programacion en Phyton desde ce..........................ro
Programacion en Phyton desde ce..........................roProgramacion en Phyton desde ce..........................ro
Programacion en Phyton desde ce..........................ro
 
Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numerico
 
Gretl guide-es[1]
Gretl guide-es[1]Gretl guide-es[1]
Gretl guide-es[1]
 

Mehr von eceulgqioo

142368080 entropy-15-01416
142368080 entropy-15-01416142368080 entropy-15-01416
142368080 entropy-15-01416eceulgqioo
 
Libros fb2 en castellano www papyrefb2-net jul2011
Libros fb2 en castellano www papyrefb2-net jul2011Libros fb2 en castellano www papyrefb2-net jul2011
Libros fb2 en castellano www papyrefb2-net jul2011eceulgqioo
 

Mehr von eceulgqioo (9)

142368080 entropy-15-01416
142368080 entropy-15-01416142368080 entropy-15-01416
142368080 entropy-15-01416
 
Ap x autor_f
Ap x autor_fAp x autor_f
Ap x autor_f
 
Ap x autor_e
Ap x autor_eAp x autor_e
Ap x autor_e
 
Ap x autor_e
Ap x autor_eAp x autor_e
Ap x autor_e
 
Ap x autor_d
Ap x autor_dAp x autor_d
Ap x autor_d
 
Ap x autor_c
Ap x autor_cAp x autor_c
Ap x autor_c
 
Ap x autor_b
Ap x autor_bAp x autor_b
Ap x autor_b
 
L x a-a.partx
L x a-a.partxL x a-a.partx
L x a-a.partx
 
Libros fb2 en castellano www papyrefb2-net jul2011
Libros fb2 en castellano www papyrefb2-net jul2011Libros fb2 en castellano www papyrefb2-net jul2011
Libros fb2 en castellano www papyrefb2-net jul2011
 

Disenograficoenlatex1

  • 1. x y z αϕ1(·) µN βϕ2(·) x y ǫx − u1 ǫy − u1 S I R λϕ3(·) λrϕ4(·) xr yr θ βrϕ5(·) ǫryrǫrxr fαψ1(·)m + αrψ1(·)mr µS µI µR Diseño Gráfico en LATEX Gráficos Matemáticos de Alta Calidad Efraín Alberto Hoyos Salcedo Aníbal Muñoz Loaiza Jorge Mario García Usuga
  • 2. Diseño gráfico en LATEX Jorge Mario García Usuga 14 de diciembre de 2007
  • 3. J. M. García, A. Muñoz L. E. A. Hoyos Diseño Gráfico en LATEX Gráficos Matemáticos de Alta Calidad No está permitida la reproducción total o parcial de esta obra por cualquier medio o método sin autorización escrita de los autores. Derechos Reservados© Armenia Quindío Colombia 2007 ISBN: 978-958-44-2285-9
  • 4. PREFACIO Para muchos usuarios de LATEX , se hace imprescindible la inclusión de material gráfico dentro de sus documentos matemáticos. General- mente, el tema es algo desagradable para las personas que están dando sus primeros pasos en LATEX , pues se deben tener archivos separados del documento fuente para su posterior compilación. Hasta hace al- gunos años se empezaron a implementar paquetes con la capacidad de hacer gráficos matemáticos y no matemáticos dentro de nuestros documentos TEX , esto se logró con paquetes como PSTricks y XY-pic entre otros, los cuales permitieron crear gráficos a partir de códigos tipo TeX. Gráficos matemáticos como los ejes coordenados, diagramas de flujo, diagramas conmutativos, gráfico de curvas en R2 y R3 entre otros, se incluían en LATEX , haciéndolos en otros programas y luego exportán- dolos a un formato compatible como ps o bmp. Esto producía una incompatibilidad entre los tipos de letra usados por el software para hacer las graficas y las fuentes usadas por LaTeX. Paquetes como PSTricks yXY-pic presentan una forma muy “matemática"para realizar este tipo de dibujos y producir artículos, libros y demás producción escrita, con gráficos de excelente calidad. Como ejemplo del poder de dichos paquetes, se presenta la portada de este libro, la cual se hizo enteramente con PSTricks y XY-pic. 3
  • 5. 4 El libro está dividido en tres capítulos. El primero hace una extensa revisión del paquete PSTricks, incluyendo ejemplos con su respectivo código fuente. El segundo muestra dos herramientas muy útiles para aquellas personas que no gustan de la programación en LATEX y el último capítulo, es una recopilación de ejemplos hechos con XY-pic, orientados a la construcción de diagramas de dinámicas ecológicas y epidemiológicas. El libro está dirigido a usuarios avanzados de LATEX , pues, en los ejemplos se usan macros e instrucciones que se asume el usuario ya debe conocer. Si el lector no tiene conocimiento de dichas instrucciones refiérase a los documentos [11],[12],[9] y [6]. Esperamos que este material sirva de apoyo a docentes, alumnos y TEX-nócratas que gusten de gráficos matemáticos de alta calidad en sus documentos.
  • 6. ÍNDICE GENERAL 1. Gráficos con PSTricks 9 1.1. El entorno . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2. Puntos . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3. Líneas y polígonos . . . . . . . . . . . . . . . . . . . . 15 1.3.1. Rectas simples . . . . . . . . . . . . . . . . . . 15 1.3.1.1. Flechas . . . . . . . . . . . . . . . . . 16 1.3.2. Rectas con el comando qline . . . . . . . . . . 16 1.3.3. Polígonos . . . . . . . . . . . . . . . . . . . . . 17 1.3.4. Frames con psframes . . . . . . . . . . . . . . 18 1.4. Círculos, elipses y arcos . . . . . . . . . . . . . . . . . 18 1.4.1. Círculos . . . . . . . . . . . . . . . . . . . . . . 18 1.4.2. Sección de círculo . . . . . . . . . . . . . . . . . 19 1.4.3. Elipses . . . . . . . . . . . . . . . . . . . . . . . 19 1.4.4. Arcos . . . . . . . . . . . . . . . . . . . . . . . 20 1.5. Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.5.1. Los comandos pscurve, psecurve y psccurve 22 1.6. Manejo de Colores . . . . . . . . . . . . . . . . . . . . 24 1.6.1. Creación de nuevos colores . . . . . . . . . . . . 24 1.6.2. Texturas . . . . . . . . . . . . . . . . . . . . . . 28 1.6.3. Degradados . . . . . . . . . . . . . . . . . . . . 30 1.7. Manejo de objetos . . . . . . . . . . . . . . . . . . . . 32 5
  • 7. 6 ÍNDICE GENERAL 1.7.1. El comando rput . . . . . . . . . . . . . . . 33 1.7.2. Resortes . . . . . . . . . . . . . . . . . . . . . . 34 1.7.3. Ejes coordenados . . . . . . . . . . . . . . . . . 37 1.7.4. Grillas . . . . . . . . . . . . . . . . . . . . . . . 40 1.8. Manejo de texto . . . . . . . . . . . . . . . . . . . . . 42 1.8.1. El comando uput . . . . . . . . . . . . . . . . 42 1.8.2. Texto en recuadros . . . . . . . . . . . . . . . . 43 1.8.2.1. Sombras . . . . . . . . . . . . . . . . . 44 1.8.3. Texto sobre curvas . . . . . . . . . . . . . . . . 44 1.8.4. Texto con efectos especiales . . . . . . . . . . . 46 1.9. Trazado de curvas . . . . . . . . . . . . . . . . . . . . 47 1.9.1. Curvas a partir de su ecuación . . . . . . . . . 48 1.9.2. Curvas Paramétricas . . . . . . . . . . . . . . . 50 1.9.3. Regiones sombreadas . . . . . . . . . . . . . . . 51 1.10. Herramientas para árboles, grafos y diagramas . . . . . 54 1.10.1. Nodos . . . . . . . . . . . . . . . . . . . . . . . 54 1.10.2. Conectores . . . . . . . . . . . . . . . . . . . . 54 1.10.3. Etiquetas . . . . . . . . . . . . . . . . . . . . . 59 1.10.4. Árboles . . . . . . . . . . . . . . . . . . . . . . 61 1.10.4.1. Etiquetas para los nodos de los árboles 65 1.11. Manejo de objetos 3D con PSTricks . . . . . . . . . . . 66 1.11.1. El paquete pst-3dplot . . . . . . . . . . . . . 67 1.11.2. El eje cordenado 3D . . . . . . . . . . . . . . . 67 1.11.3. Ubicación de objetos con pstThreeDPut . . . 69 1.11.4. Puntos . . . . . . . . . . . . . . . . . . . . . . . 69 1.11.5. Líneas rectas . . . . . . . . . . . . . . . . . . . 70 1.11.6. Triángulos . . . . . . . . . . . . . . . . . . . . . 71 1.11.7. Cuadros y rectángulos . . . . . . . . . . . . . . 72 1.11.8. Cajas . . . . . . . . . . . . . . . . . . . . . . . 73 1.11.9. Circunferencias y elipses . . . . . . . . . . . . . 74 1.11.10.Esferas . . . . . . . . . . . . . . . . . . . . . . . 76 1.11.11.Curvas paraméntricas en 3D . . . . . . . . . . . 77 1.11.12.Gráfica de funciones . . . . . . . . . . . . . . . 80 2. Herramientas para gráficos con PSTricks 87 2.1. JpicEdt . . . . . . . . . . . . . . . . . . . . . . . . . . 87 2.1.1. Ventanas . . . . . . . . . . . . . . . . . . . . . 89
  • 8. ÍNDICE GENERAL 7 2.1.2. Herramientas de edición . . . . . . . . . . . . . 93 2.1.3. Preferencias y configuración . . . . . . . . . . . 96 2.1.4. Otras herramientas de JpicEdt . . . . . . . . . 97 2.1.5. ¿Cómo pasar de JpicEdt a LATEX? . . . . . . . 102 2.1.6. Ejemplos en JpicEdt . . . . . . . . . . . . . . . 102 2.2. LATEXDraw . . . . . . . . . . . . . . . . . . . . . . . . 111 2.2.1. Herramientas de diseño . . . . . . . . . . . . . 112 2.2.2. Configuración de objetos . . . . . . . . . . . . 114 2.2.3. ¿Cómo pasar de LATEXDraw a LATEX? . . . . . 114 2.2.4. Ejemplos en LATEXDraw . . . . . . . . . . . . . 114 3. Conceptos Generales de XY- pic 119 3.1. Diagramas de dinámicas ecológicas y epidemiológicas . 120 3.2. Diagramas conmutativos . . . . . . . . . . . . . . . . . 130
  • 10. CAPÍTULO 1 Gráficos con PSTricks PSTricks es un paquete que esta incluido en LATEX con base en las librerías macros de TEX- PostScript, fue creado por Timothy Van Zandt de la Universidad de Princeton en 1993. Estas librerías son compatibles con AMS-TEX y AMS-LATEX. El paquete fue diseñado específicamente para gráficos matemáticos de alta calidad, utilizando técnicas de gráficos vectorizados, proporcionando así una calidad que otros paquetes no pueden alcanzar. Con PSTricks se pueden incluir es- tilos de líneas, objetos geométricos como rectángulos, triángulos; ejes coordenados, herramientas para gráficos de diagramas de flujo, grafos, mayas, objetos 3D, colores y efectos de texto, entre otros. La instalación de PSTricks, es muy fácil, en la versión para Windows MIKTEX 2.5 ya viene pre instalado y no requiere manipular archivos para su configuración; para versiones inferiores, se debe tener cuida- do con la ubicación de los archivos. PSTricks también está disponible para Linux, Mac y Unix. Empezaremos por poner las librerías en el preámbulo de nuestro doc- umento usepackage{pstricks} usepackage{pst-plot} 9
  • 11. 10 1.1. El entorno Paquete Función Pst-plot Útil para gráficos que conlleven rectas, polígonos, ejes y curvas Pst-char Permite incluir texto con efectos especiales Pst-text Muy similar al anterior, pero este permite poner texto a lo largo de curvas Pst-tree Útil para la contrucción de árboles Pst-coil Zig-zags y resortes en electrónica Pst-node Ideal para grafos y diagramas de flujo Cuadro 1.1: Módulos de PSTricks Sin embargo, es bueno que para trabajar con todas las opciones, hay que usar un paquete que los una a todos, este se incluye de la siguiente manera: usepackage{pst-all} PSTrick también incluye paquetes como pst-node especial para grafos, el cuadro 1.1 muestra los diferentes módulos y su uso: 1.1 El entorno Para incluir una gráfica con PSTricks en nuestro documento, debemos invocar el entorno pspicture con la siguiente secuencia de instruc- ciones: begin{pspicture}(x,y)(x’,y’) rput(0,0){hola} end{pspicture} Los parámetros x, y y x′, y′ son las esquinas opuestas de un rectángulo imaginario. Nuestra gráfica se puede salir de dicho rectángulo, pero usando begin{pspicture*}(x,y)(x’,y’) se recorta todo lo que so- bre salga del rectángulo delimitado. El anterior código nos devolvera el siguiente resultado
  • 12. 1. Gráficos con PSTricks 11 hola Nada del otro mundo, sin embargo, podemos disponer de una malla que nos guíe en la ubicación de nuestros objetos en PSTricks, para esto creamos un nuevo objeto de la siguiente manera y lo ubicamos antes del inicio del documento: begin{document}. newpsobject{malla}{psgrid}{subgriddiv=1,griddots=10, gridlabels=6pt} Esto nos permitirá crear una malla útil para la ubicación de nu-estros objetos begin{pspicture}(-2,-2)(2,2) malla rput(0,0){hola} end{pspicture} El resultado es el siguiente: -2 -1 0 1 2 -2 -1 0 1 2 hola
  • 13. 12 1.2. Puntos El comando rput se usa para ubicar objetos en el espacio delimitado, más adelante estudiaremos la versatilidad de este comando. Por ahora, observemos que aparece una malla numerada alrededor de nuestra gráfica, podemos ubicar ahora otros objetos con la ayuda de dicha cuadrícula. Ubicaremos la palabra “mundo” en la posición (1, −1) -2 -1 0 1 2 -2 -1 0 1 2 hola mundo begin{pspicture}(-2,-2)(2,2) malla rput(0,0){hola} rput(1,-1){mundo} end{pspicture} Si deseo que la malla sea más fina o por el contrario con la cuadric- ula más grande, podemos cambiar dicho parámetro con la instruc- ción psset{unit=1}, sólo debemos cambiar el valor de 1 por el que necesitemos y ubicar esta instrucción antes del begin{pspicture}. psset{unit=1} permite confugurar nuestro gráfico. se ubica antes del begin{pspicture} y se pueden predeterminar algunas opciones como el color, la escala, el grosor de las líneas, etc. -2 -1 0 1 2 -2 -1 0 1 2 hola mundo psset{unit=0.6} begin{pspicture}(-2,-2)(2,2) malla rput(0,0){hola} rput(1,-1){mundo} end{pspicture} 1.2 Puntos PSTricks permite la inclusión de puntos con el siguiente comando psdots[par](x1,y1)(x2,y2)(xn,yn) El siguiente ejemplo colocaremos 9 puntos con estilos diferentes:
  • 14. 1. Gráficos con PSTricks 13 0 1 2 3 4 5 6 7 8 9 0 1 + | psset{unit=1.2, dotsize=5pt 0} begin{pspicture}(0,0)(9,1)malla psdots(0.5,0.5) psdots[dotstyle=+](1.5,0.5) psdots[dotstyle=triangle](2.5,0.5) psdots[dotstyle=triangle*](3.5,0.5) psdots[dotstyle=square](4.5,0.5) psdots[dotstyle=square*](5.5,0.5) psdots[dotstyle=pentagon](6.5,0.5) psdots[dotstyle=pentagon*](7.5,0.5) psdots[dotstyle=|](8.5,0.5) end{pspicture} En el cuadro 1.2 ilustraremos los diferentes estilos de puntos mostra- dos en el ejemplo anterior. Además de estos estilos de puntos podemos adicionar algunas otras opciones. dotsize=dim Con esta opción podemos cambiar el tamaño del punto, por defecto es 2pt dotscale=num1 num2 Con ella podemos escalar el tamaño de un punto, con el primer número el tamaño horizontal y con el segundo el tamaño vertical. Por defecto es 1 dotangle=angle Los puntos son rotados por el ángulo determinado por el parámetro angle, por omisión es cero. En muchas ocasiones es importante ubicar puntos en nuestras gráficas, el siguiente ejemplo muestra la utilidad de estas opciones:
  • 15. 14 1.2. Puntos Estilo Ejemplo * + + + | | | triangle triangle* square square* pentagon pentagon* Cuadro 1.2: Estilos de Puntos en PSTricks psset{unit=0.5} begin{pspicture}(0,-2.3)(4.9,2.3) psdots[dotsize=0.266](2.8,0.6) rput(0.6,-1.6) {psaxes[linewidth=0.04](0,0)(0,0)(4,4)} psdots[dotsize=0.17,dotangle=-66.0] (1.6,1.0) psdots[dotsize=0.4,dotstyle=triangle](3.6,-0.5) psdots[dotsize=0.4,dotstyle=pentagon*](4.6,-0.7) end{pspicture} 0 1 2 3 4 0 1 2 3 4
  • 16. 1. Gráficos con PSTricks 15 1.3 Líneas y polígonos Las líneas y los polígonos son una de las herramientas más versatiles en PSTricks. Con los puntos y las rectas se pueden crear una gran variedad de figuras y formas muy comunes en matemáticas como: ejes coordenados, digramas lineales, árboles, etc. A continuación presenta- mos su configuración básica. 1.3.1. Rectas simples psline[par]{flechas}(x0,y0)(x1,y1)...(xn,yn) Esta instruccion dibuja una linea a travéz de las coordenas establecidas por los puntos (x0, y0)(x1, y1) . . . (xn, yn) La instrucción psline tiene los siguientes parametros: linearc=dim Por omisión es 0pt y hace referencia al arco con el que se dibujan las curvas (si estamos dibujando un polígono). Dicha dimensión debe ser positiva. linewidth=n Con esta opción podemos cambiar el ancho de la línea, se puede ini- cializar en cero. Por defecto es 0.8pt linestyle= La opción permite cambiar la forma como se pinta la línea, esta puede ser solid que es la opción por defecto, dashed ofrece una línea a tro- zos y dotted una línea punteada. dash= n b Permite cambiar el patrón de negro o blanco en la línea a trozos por omisión son 5pt y 3pt. Si queremos una línea igualemte espaciada podemos cambiar la opción a 5pt 5pt para obtener el efecto deseado. dotsep= n Al igual que en dash, dotsep permite cambiar el patrón de separación
  • 17. 16 1.3. Líneas y polígonos de los puntos en las líneas punteadas. Por omisión es 3pt linecolor= color Permite cambiar el color de la línea, por omisión es black, en la sec- ción 1.6 mostraremos otros colores posibles con PSTricks. doubleline= n Permite trazar una línea doble o sencilla, por defecto es false, es decir sencilla, si la queremos doble cambiamos n por true. Veamos el siguiente ejemplo: 0 1 2 3 4 0 1 2 3 psset{unit=2.4} begin{pspicture}(0,0)(4,3) malla psline(0,1.5)(4,1.5) psline[linecolor=blue, doubleline=true, linestyle=dotted ](0,0.5)(4,0.5) psline[linecolor=red, linestyle=dashed ](0,2.5)(4,2.5) end{pspicture} 1.3.1.1. Flechas Las opciones de flechas se pueden implementar para construir ejes co- ordenados o diagramas de flujo, árboles, etc, para este propósito cam- biamos el párametro entre las llaves {}, a continuación en el cuadro 1.3 mostraremos las diferentes estilos de flechas. 1.3.2. Rectas con el comando qline Para contruir flechas simples podemos usar el comando qline (x0, y0) (x1, y1), el cual dibuja una recta entre los puntos sin parámetros de grosor, estilos o flechas, veamos el siguiente ejemplo:
  • 18. 1. Gráficos con PSTricks 17 Parámetro Ejemplo Parámetro Ejemplo -> <-> <- ->> >>-<< <<->> |<- ->| >- -< |- -| |<->| |-| [- -] (- -) [-] (-) o- -o *- -* *-* o-o Cuadro 1.3: Estilos de flechas para rectas en PSTricks 0 1 2 3 0 1 psset{unit=2.4} begin{pspicture}(0,0)(1,2) malla qline(0,0)(3,1) end{pspicture} 1.3.3. Polígonos Este comando es muy similar a psline, y dibuja un polígono cerrado que une el primer punto (x0, y0) con el último (xn, yn). pspolygon[par](x0,y0)(x1,y1)(x2,y2)...(xn,yn)$ Veamos el siguiente ejemplo: 0 1 2 0 1 2 psset{unit=2.4} begin{pspicture}(0,0)(2,2) malla pspolygon[linearc=.2] (0,1)(1,0)(2,1)(1,2) end{pspicture}
  • 19. 18 1.4. Círculos, elipses y arcos 1.3.4. Frames con psframes Esta instrucción dibuja un rectángulo entre las esquinas opuestas (x0, y0) y (x1, y1) psframe[par](x0,y0)(x1,y1) 0 1 2 0 1 2 psset{unit=2.4} begin{pspicture}(0,0)(2,2) malla psframe(0.5,0.5)(1.5,1.5) end{pspicture} 1.4 Círculos, elipses y arcos 1.4.1. Círculos Para dibujar círculos, elipses y arcos, PSTricks implementa el siguiente comando pscircle[par](x0,y0){r} La instrucción simplemente dibuja una circunferencia con centro en (x0, y0) y radio r Por ejemplo: 0 1 2 3 0 1 2 3 psset{unit=1.5} begin{pspicture}(0,0)(3,3) malla pscircle[linewidth=2pt] (1,1){1} pscircle[linestyle=dashed] (1.5,1.5){1} pscircle[linestyle=dotted] (1.5,2){1.2} end{pspicture}
  • 20. 1. Gráficos con PSTricks 19 Los parámetros son los mismos que podemos encontar para dibujar rectas. En el ejemplo anterior podemos ver el manejo de estas opciones. 1.4.2. Sección de círculo PSTricks implemeta la instrucción pswedge para dibujar secciones de círculos, muy usados en estadística y geometría: pswedge[par](x0,y0){r}{ang1}{ang2} La instrucción requiere un punto como centro (x0, y0), y con el radio r dibujará una sección de círculo entre los ángulos arg1 y arg2. 0 1 2 3 0 1 2 3 psset{unit=2.8} begin{pspicture}(0,0)(3,3) malla pswedge[linewidth=2pt] {1}{0}{70} pswedge[linewidth=2pt] {2}{0}{70} pswedge[linewidth=2pt] (3,3){2}{180}{270} 1.4.3. Elipses Al igual que con el círculo las elipses necesitan un centro (x0, y0), pero, para lograr el efecto requieren dos radios r1 y r2. psellipse[par](x0,y0)(r1,r1) veamos el siguiente ejemplo : 0 1 2 3 4 0 1 2 3 psset{unit=2.2} begin{pspicture}(0,0)(4,3)malla psellipse[linestyle=dashed] (2,1)(2,1) psellipse(2,1.5)(1,1.5)
  • 21. 20 1.4. Círculos, elipses y arcos 1.4.4. Arcos Los arcos requieren de un centro (x, y) que se tomará como base para la circunferencia imaginária con la cual trazaremos el arco, un radio r que es la distancia entre el centro y el arco, y dos ángulos angA, angB que al igual que en la sección de círculos sirve para denotar el inicio y el fin del arco. psarc[par]{flechas}(x,y){r}{angA}{angB} La funcion psarc utiliza los siguientes parámetros extra: showpoints= Se usa para mostar una línea punteada del centro de la circunferencia imaginária a los extremos del arco, por omisión es false . arcsepA= y arcsepB= Estos parámetros que por defecto son 0pt, se usa para que parte del arco tambien quede dibujado con lineas punteadas, comenzando por angA o por angB, dependiendo de la functón que usemos. arcsep= Con esta opción podemos hacer lo mismo que con las opciones arcsepA y arcsepB pero simultáneamente por ambos extremos del arco. Ejemplo: 0 1 2 3 4 0 1 2 3 psset{unit=2.2} begin{pspicture}(0,0)(4,3) malla psarc[showpoints=true, arcsepA=2](0.2,0.2){1.5}{0}{90} psarc[showpoints=true, arcsepB=2](3.8,0.2){1.5}{90}{180} psarc[showpoints=true, arcsep=1](2,3){1.5}{190}{350} Para hacer arcos con flechas se une la instrucción psarcn con la sigu-
  • 22. 1. Gráficos con PSTricks 21 iente notación: psarcn[par]{flecha}(x,y){r}{angA}{angB} El arco es dibujado en sentido horario, y tiene una opción {flecha} con la cual podemos dibujar flechas como se indica en el cuadro 1.3. Ejemplo: 0 1 2 3 4 0 1 2 3 psset{unit=2.2} begin{pspicture}(0,0)(4,3) malla psarc{o-o}(0.2,0.2) {1.5}{0}{90} psarc{<->}(3.8,0.2) {1.5}{90}{180} psarc[arcsep=1]{>>-<<}(2,3){1.5} {190}{350} end{pspicture} 1.5 Curvas Para dibujar curvas, PSTricks utiliza algorítmos de interpolación de puntos, una de las más simples nos permite hacer una curva entre cu- atro puntos; veamos la instrucción psbezier. psbezier[par]{flechas}(x0,y0)(x1,y1)(x2,y2)(x3,y3) Como podemos observar utiliza los mismos parámetros que las ante- riores instruciones y cuatro puntos (x0, y0), (x1, y1), (x2, y2), (x3, y3). La curva comienza en el punto (x0, y0), pero es tangente a una línea recta entre el primer punto y el segundo, luego la curva termina en el punto (x3, y3) pero tangente a una línea imaginaria entre el tercero y cuarto punto. Al igual que con la instrucción psarc esta también tiene la opción showpoints para ver las líneas imaginarias, veamos un ejemplo:
  • 23. 22 1.5. Curvas 0 1 2 3 4 0 1 2 3 psset{unit=2.2} begin{pspicture}(0,0)(4,3) malla psbezier[showpoints=true]{->} (0,0)(1,3)(3,0)(4,3) La intrucción parabola presenta la siguiente sintaxis: parabola[par]{flechas}(x0,y0)(x1,y1) Dibuja una parábola que comienza en el punto (x0, y0) y tiene como máximo o mínimo el punto (x1, y1) dependiendo si el ultimo punto esta por encima o por debajo del primer punto. Ejemplo: 0 1 2 3 4 0 1 2 3 psset{unit=2.2} begin{pspicture}(0,0)(4,3) malla parabola{<->}(0,0)(2,3) parabola{>-o}(1,3)(2,0) end{pspicture} 1.5.1. Los comandos pscurve, psecurve y psccurve El comando psbezier y parabola sólo pueden dibujar curvas simples con no más de 4 puntos determinados; con estas nuevas instrucciones podemos dibujar curvas mucho más elaboradas y definidas, con la can- tidad de puntos que necesitemos, sin embargo, es necesario tener en
  • 24. 1. Gráficos con PSTricks 23 cuenta las siguientes opciones: curvature= n m p Por defecto este parámetro es de 1 0.1 0, y se utiliza para modificar la forma de la curva, el primer valor hace la curva más firme. El se- gundo parámetro hace que la curva se “apriete” si el ángulo formado por los puntos es mayor a 45 grados, la curva es más suelta. El tercer parámetro es similar al segundo, pero afecta la abertura de la curva haciendola más o menos abierta en los vértices. Sin embargo es bueno dejar los valores predeterminados por PSTricks. La instrucción pscurve genera una curva abierta con los mismos parámet- ros estudiados anteriormente. La opción showpoints muestra los puntos de interpolación. 0 1 2 3 4 0 1 2 3 psset{unit=2.2} begin{pspicture}(0,0)(4,3) malla pscurve[showpoints=true]{<->} (0,0)(1,2)(2,3)(3,3)(4,2) end{pspicture} psecurve es muy similar al anterior, pero la curva no pasan por el primer y último punto, el algoritmo trata de unir los extremos lo mejor posible, el siguiente ejemplo es igual al anterior pero usando psecurve. 0 1 2 3 4 0 1 2 3 psset{unit=2.2} begin{pspicture}(0,0)(4,3) malla psecurve[showpoints=true]{<->} (0,0)(1,2)(2,3)(3,3)(4,2) end{pspicture}
  • 25. 24 1.6. Manejo de Colores Por último tenemos psccurve la cual es similar a pscurve pero ésta genera una curva cerrada uniendo el primer y último punto: 0 1 2 3 4 0 1 2 3 psset{unit=2.2} begin{pspicture}(0,0)(4,3) malla psccurve[showpoints=true]{<->} (0,0)(1,2)(2,3)(3,3)(4,2) end{pspicture} 1.6 Manejo de Colores En PStricks se puede trabajar con los siguientes colores: red green blue cyan magenta yellow PSTricks también maneja colores en escala de grises: Negro (black), gris oscuro (darkgray), gris (gray), gris claro (lightgray), y blanco (white) 1.6.1. Creación de nuevos colores Además de estos colores podemos definir nuevos con las siguientes in- strucciones: newgray y newrgbcolor
  • 26. 1. Gráficos con PSTricks 25 newgray{color}{n} Este comando se utiliza para generar nuevos tonos de gris, color será el nombre de nuestro nuevo color, n es la intensidad entre 0 y 1, donde 0 es negro y blanco es 1. newrgbcolor{color}{r g b} Esta instrucción se usa para generar nuevos coleres con el formato RGB (red, green y azul), color será el nombre de nuestro nuevo color y {r,g,b} son números entre 0 y 1. newhsbcolor newhsbcolor{color}{h s b} La anterior instrucción se usa para generar nuevos colores con el for- mato HSB (hue, saturation, brightness), {color} será el nombre de nuestro nuevo color y {h,s,b} son números entre 0 y 1. newcmykcolor newcmykcolor{color}{c m y k} Esta instrucción se usa para generar nuevos colores con el formato CMYK (Cian, magenta, yellow, black), {color}será el nombre de nue- stro nuevo color y {c,m,y,k} son números entre 0 y 1. Ejemplo:
  • 27. 26 1.6. Manejo de Colores 0 1 2 3 4 5 6 7 8 -3 -2 -1 0 1 2 3 Favoritismo en los editores de texto LATEX Word Otros psset{unit=2.0} begin{pspicture}(0,-3)(8,3)malla newgray{girisclaro}{0.9} newrgbcolor{elcolorlatex}{0.1 0.1 1.0} newhsbcolor{elcolorword}{0.1 0.9 1.0} newcmykcolor{elcolorotro}{0.1 0.3 0.3 0.3} pspolygon[linewidth=0.01,fillstyle=solid, fillcolor=girisclaro](0.8,1.8)(0.8,2.3) (6.3,2.3)(6.3,1.8) pswedge[linewidth=0.04,fillstyle=solid, fillcolor=elcolorlatex](3.7,-0.3){1.86}{53.8}{271.5} pswedge[linewidth=0.04,fillstyle=solid, fillcolor=elcolorword](3.7,-0.3){1.86}{347.2}{54.3} pswedge[linewidth=0.04,fillstyle=solid, fillcolor=elcolorotro](3.7,-0.3){1.86}{268.6}{347.0} rput(3.6,2.0){Favoritismo en los editores de texto} rput(2.7,0.1){LaTeX} rput(4.6,0){Word} rput(4.3,-1.1){Otros} end{pspicture} Para usuarios avanzados de PostScript, no es recomendado usar col-
  • 28. 1. Gráficos con PSTricks 27 ores cmyk y HSB, pues en algunas ocasiones requiere de otros con- troladores y puede generar errores al compilar. Se recomienda hacer RGB para generar nuevos colores. Recordemos que con el comando psset{...} podemos configurar opciones de color y con el comando fillcolor podemos indicar que todos los objetos creados de ahí en adelante sean dibujados con ese color de relleno, la opción linecolor sirve para definir el color de las lineas de contorno. Veamos el siguiente ejemplo: 0 1 2 0 1 2 psset{unit=2.0, fillcolor=yellow,linecolor=blue} begin{pspicture}(0,0)(2,2) malla psellipse(1,.5)(1,.5) end{pspicture} Podemos ver en el ejemplo anterior que la elipse, aunque está pintada de contorno azul, no se rellenó de color amarillo, así que para ello, debemos tener en cuenta los siguientes parámetros: linewidth=n Con este determinamos el ancho de la línea de cualquier objeto (líneas, círculos, etc), por defecto es 8pt. fillstyle=s Este comando permite definir el estilo de llenado de los objetos, este puede ser none, el cual hace que el objeto no tenga ningún relleno. La opción solid, permite que se pueda rellenar un objeto bien sea con un color o con una textura. Para definir un color de llenado, se usa el comando fillcolor=c, donde c es uno de los colores antes mencionado. Veamos un ejemplo:
  • 29. 28 1.6. Manejo de Colores 0 1 2 3 0 1 2 3 4 5 psset{unit=1.0} begin{pspicture}(0,0)(3,5) malla psellipse[fillstyle=solid, fillcolor=lightgray, linecolor=red](1,.5)(1,.5) psellipse[fillstyle=solid, fillcolor=red, linecolor=blue](2,2)(0.5,0.5) psframe[fillstyle=solid, fillcolor=green, linecolor=magenta](0,5)(1,4) pscircle[fillstyle=solid, fillcolor=cyan, linecolor=green](2,4){1} end{pspicture} 1.6.2. Texturas Recordemos que fillstyle=s con la opción solid puede dibujar un objeto con un relleno que puede ser un color o una textura, el cuadro 1.4 muestra las opciones para rellenado con texturas Nombre efecto none Es el valor por defecto, no rellena el objeto con ningún color o textura vlines líneas verticales con una inclinación de 45o hlines líneas horizontales con una inclinación de 45o crosshatch Lineas cruzadas verticales y horizontales a 45o gradient Da al objeto una textura de degradado en- tre dos colores Cuadro 1.4: Texturas en PSTricks En el siguiente ejemplo se usan los mismos objetos que en el ejemplo anterior, pero esta vez usaremos las texturas mencionadas, excepto el gradiente al cual dedicaremos más tiempo:
  • 30. 1. Gráficos con PSTricks 29 0 1 2 3 0 1 2 3 4 5 psset{unit=1.0} begin{pspicture}(0,0)(3,5) malla psellipse[fillstyle=vlines] (1,.5)(1,.5) psellipse[fillstyle=hlines] (2,2)(0.5,0.5) psframe[fillstyle=none] (0,5)(1,4) pscircle[fillstyle=crosshatch] (2,4){1} end{pspicture} El cuadro 1.5 muestra otras opciones que se pueden aplicar a las tex- turas, como cambiar el ángulo de inclinación, el color de las líneas, etc. Nombre efecto hatchsep Separación entre líneas, por defecto es 4pt hatchwidth Grosor de las líneas, por defecto es 0.8pt hatchcolor Color de las líneas, por defecto es negro hatchangle Inclinación de las líneas Cuadro 1.5: Parámetros adicionales para texturas Veamos el siguiente ejemplo: 0 1 2 3 0 1 2 3 psset{unit=1.0} begin{pspicture}(0,0)(3,3) malla psellipse[fillstyle=hlines, hatchcolor=red,hatchangle=22] (2,0.5)(0.5,0.5) psframe[fillstyle=vlines, hatchangle=0 ](0,1)(1,0) pscircle[fillstyle=crosshatch, hatchsep=2pt](1.5,2){0.5} end{pspicture}
  • 31. 30 1.6. Manejo de Colores 1.6.3. Degradados Uno de los efectos más vistosos y usados de PSTricks es el degradado, sólo necesitamos poner fillstyle=gradient y podemos obtener un efecto de degradado lineal en dos colores: 0 1 2 3 0 1 2 3 psset{unit=1.5} begin{pspicture}(0,0)(3,3) malla psframe[fillstyle=gradient] (2.8,1)(0.2,3) end{pspicture} Las siguientes opciones determinan la configuración del degradado: gradbegin=color Es usada para escoger el color inicial del degradado, por defecto es azul oscuro. gradend=color Es usada para escoger el color final del degradado, por defecto es azul claro. gradmidpoint=n n debe ser un número entre 0 y 1, y se utiliza para escoger la posición del punto intermedio del degradado. gradangle=ang Denota el álgulo de rotación para el degradado medido en grados, el valor por defecto es 0. gradlines=n Determina el número de líneas del degradado, el valor predeterminado es 500, mientras más líneas más fino es el efecto del degradado.
  • 32. 1. Gráficos con PSTricks 31 El siguiente ejemplo muestra el poder de los degrados para gráficos matemáticos: Máquinas Nivel de α M1 M2 M3 M4 N1 N2 N3 N4 psset{unit=1.5} begin{pspicture}(0,-3.5)(9.5,3.5) psline[linewidth=0.04cm]{->}(1.6,-2.7)(1.6,2.7) psline[linewidth=0.04cm]{->}(1.6,-2.7)(7.6,-2.7) psframe[linewidth=0.02,fillstyle=gradient, gradlines=2000,gradmidpoint=1.0](2.7,1.2)(2.1,-2.7) psframe[linewidth=0.02,fillstyle=gradient, gradlines=2000,gradbegin=red,gradend=cyan, gradmidpoint=1.0](3.9,-0.04)(3.3,-2.7) psframe[linewidth=0.02,fillstyle=gradient, gradlines=2000,gradbegin=magenta, gradend=yellow,gradmidpoint=1.0](5.2,1.9)(4.6,-2.7) psframe[linewidth=0.02,fillstyle=gradient, gradlines=2000,gradbegin=green,gradend=red, gradmidpoint=1.0](6.4,-1.6)(5.8,-2.7) psline[linewidth=0.03cm,linestyle=dashed, dash=0.16cm 0.16cm](1.6,-1.6)(6.3,-1.6)
  • 33. 32 1.7. Manejo de objetos psline[linewidth=0.03cm,linestyle=dashed, dash=0.16cm 0.16cm](1.6,1.9)(5.1,1.9) psline[linewidth=0.03cm,linestyle=dashed, dash=0.16cm 0.16cm](1.7,0)(3.7,0) psline[linewidth=0.03cm,linestyle=dashed, dash=0.16cm 0.16cm](1.7,1.2)(2.4,1.2) rput(8.6,-3.1){psframebox[linewidth=0.04]{Máquinas}} rput(1.4,3.1){psframebox[linewidth=0.04] {Nivel de $alpha$}} rput(2.3,-3.1){$M_1$} rput(3.5,-3.1){$M_2$} rput(4.8,-3.1){$M_3$} rput(6,-3.1){$M_4$} rput(1.0,-1.6){$N_1$} rput(1.0,0){$N_2$} rput(1.0,1.2){$N_3$} rput(1.0,1.9){$N_4$} end{pspicture} En PSTricks existe algo que se llama comandos estrella, los cuales dan atributos por defecto a los objetos que vamos a dibujar, por ejemplo: pscircle*[linestyle=dashed](1.5,1.5){1} Como podemos ver aparece un * después de invocar el comado pscircle, con esto le indicamos al compilador de LATEX que rellene el objeto con el color determinado por linecolor, linewidth toma el valor de 0, fillstyle toma el valor de solid, linestyle el valor de none y fillcolor toma el valor determinado por linecolor. Debemos tener especial cuidado en configurar los valores anteriormente mencionados si queremos usar los comandos estrella, pues, pueden producir una gráfica no deseada. 1.7 Manejo de objetos En los ejemplos anteriores hemos visto el uso de algunos comandos como rput para ubicar objetos, tambien usamos el objeto malla que
  • 34. 1. Gráficos con PSTricks 33 hemos creado a partir de un nuevo comando. En esta sección estudi- aremos más a fondo el uso de estas herramientas: 1.7.1. El comando rput Ya hemos tenido algún contacto con este comando, pues lo hemos apli- cado en ejemplos anteriores. Veamos sus parámetros completos: rput[P]{Ang}(x,y){Obj} El comando ubica un objeto “obj” que puede ser un texto una tabla o una gráfica en un punto (x, y), con el argumento P podemos cambiar la posición en que se coloca la caja de LATEX, por defecto este valor es [c], lo que nos indica que el objeto aparece centrado en la posición (x, y). Además de [c] existen otros valores con los que podemos hacer que los objetos no aparezcan en el centro, el siguiente gráfico ilustra los demás valores: c tr brbb l r ttl Objeto Caja imaginaria Es fácil ver de donde vienen los demás valores (left, top, etc). El parámetro ang determina el ángulo de rotación del objeto y se mide en grados sexagesimales entre -360 y 360, sin embargo, se pueden abre- viar algunos ángulos especiales, como los de 90, 180, etc, el cuadro 1.6 muestra las abreviaciones: Veamos el siguiente ejemplo:
  • 35. 34 1.7. Manejo de objetos Ángulo letra N 0o L 90o D 180o R 270o W −90o S −180o E 270o Cuadro 1.6: Ángulos espciales Recta Tangente Recta Secante Diámetro psset{unit=1.0} begin{pspicture}(0,-2)(5,2) psline[linewidth=0.04cm]{<->}(1.5,1.9)(4.8,-0.1) psline[linewidth=0.04cm]{<->}(4.6,-1.8)(0.0,-1.1) pscircle[linewidth=0.04](2.4,-0.4){1.5} psline[linewidth=0.04cm](2.5,1.1)(2.5,-1.9) rput{-30.0}(3.4,1.1){Recta Tangente} rput{-8.0}(2.6,-1.3){Recta Secante} rput{W}(2.2,-0.3){Diámetro} end{pspicture} 1.7.2. Resortes Este objeto permite construir curvas en forma de resortes o zig-zags, La estructura del comando es la siguiente:
  • 36. 1. Gráficos con PSTricks 35 pscoil[par]{flechas}(x1,y1)(x2,y2) El cual extiende un resorte del punto (x1, y1) hasta (x2, y2). El sigu- iente comando permite hacer el efecto de zig-zags con los mismos parametros: pszigzag[par]{flechas}(x1,y1)(x2,y2) Para configurar la apariencia de los resortes y zig-zags se tiene las op- ciones mostradas en el cuadro 1.7. Parámetro Efecto coilwidth=n Amplía o reduce el ancho del resorte o zig- zag, por defecto es 1cm. coilheight=h Con h > 0 esta opción determina el número de repeticiones del zig-zag o re- sorte. Mientras más pequeño sea este valor más repeticiones se harán. coilArmA=n Representa la longitud del brazo que está en el punto (x1, y1) del resorte. coilArmB=n Es la longitud del brazo que está en el pun- to (x2, y2) del resorte. coilArm=n Provoca que coilArmB y coilArmA tengan el mismo valor. coilaspect=ang Cambia el ángulo con que se dibujan los resortes, por defecto es 45 pero se puede modificar 0 ≤ ang < 90, este parámetro no afecta a los zig-zags. coilinc=ang Por defecto es 10, y determina la suavidad con que se dibujan los resortes, no afecta a los zig-zags. Cuadro 1.7: Parámetros de los resortes y zig-zags Este ejemplo muestra la versatilidad de ambos comandos:
  • 37. 36 1.7. Manejo de objetos B1 R1 l1 l2 M1 m1 r1 psset{unit=0.8} begin{pspicture}(0,-2.5)(9.5,2.4) psline(0,-1.8) psline(0,-1.8)(2.1,-1.8) psline(3.2,-1.8)(4.9,-1.8) psline(4.9,-1.8)(4.9,-0.2) psline(5.5,0.18)(4.9,0.7) psline(4.9,0.7)(4.9,1.9) psline(4.9,1.9)(2.8,1.9) psline(1.6,1.9)(0.0,1.9) psframe(2.8,2.4)(1.6,1.5) psdots[dotsize=0.2](5.5,0.2) rput(2.1,2.0){$B_1$} rput(4.2614064,0.39890626){$R_1$} rput(2.4,-1.1){$l_1$} rput(1.1,0.8){$l_2$} psframe(8.4,2)(7.2,1.1) pscircle(7.8,-1.4){0.5} rput(7.8,1.5){$M_1$} rput(7.8,-2.3){$m_1$} rput(9.1,0.5){$r_1$} pszigzag[coilheight=0.2]{o-*} (0,0)(0,1.8) pszigzag[coilheight=0.1]{o-*} (2.1,-1.8)(3.2,-1.8) pscoil[coilheight=0.5]{*-*} (7.8,1.1)(7.8,-0.9)
  • 38. 1. Gráficos con PSTricks 37 1.7.3. Ejes coordenados Los ejes coordenados son uno de los objetos más utilizados en la com- posición de textos matemáticos, PSTricks tiene una herramienta lla- mada psaxes, con la cual podemos dibujar casi cualquier tipo de eje cordenado, veamos la sintaxis: psaxes[par]{flechas}(x0,y0)(x1,y1)(x2,y2) Lo anterior, permite que se dibuje un eje coordenado entre el rectán- gulo con vértices opuestos (x1, y1) y (x2, y2) y el origen del sistema está en (x0, y0). El comando psaxes tiene los siguientes parámetros (cuadro 1.8) Parámetro Efecto labels= all es el valor por defecto y provoca que se pongan las etiquetas de los ejes x y y, x/y dibuja la eti- queta para el correspondiente eje y none no dibuja ninguna etiqueta. showorigin= false/true Con esta opción podemos hacer que aparezca o no el origen de los ejes . axesstyle= Por defecto es axes y hace que el eje se dibuje con las dos líneas rectas usuales, frame dibuja un frame o rectángulo y none no dibuja los ejes. Ox= y Oy= Determina el número donde comienzan a numer- arse los ejes, por defecto es 0. Dx= y Dy= Representa el incremento entre etiquetas, por de- fecto es 1. dx= y dy= determina la distancia entre las marcas (ticks). Cuadro 1.8: Parámetros de los ejes Ejemplo:
  • 39. 38 1.7. Manejo de objetos 0 1 2 3 4 5 6 7 8 9 1 2 3 f(x) psset{unit=0.8} begin{pspicture}(0,-3)(5,3) rput(0.3,-2.1){psaxes[linewidth=0.04, tickstyle=bottom,dx=0.5cm,dy=1.2cm] {<->}(0,0)(5,0)(0,5)} psbezier[linewidth=0.04]{<->} (0.0,-1.7)(1.6,-2.9)(1.9,1.7)(4.9,0.2) rput(5.1,0.71){$f(x)$} psline[linewidth=0.04cm, linestyle=dashed, dash=0.16cm 0.16cm](3.7,0.5)(3.7,-2.1) end{pspicture} El cuadro 1.9 muestra la forma en que se pueden configurar los ticks (líneas que acompañan a las etiquetas de los ejes). Ejemplo:
  • 40. 1. Gráficos con PSTricks 39 Parámetro Efecto ticks= Por defecto es all y sirve para mostrar las lineas que acompañan a los números en los ejes, si quer- emos que aparesca solo los del eje x o y utilizamos la opción x/y,con none se eliminan de ambos ejes. tickstyle= Este parámetro determina la ubicación de las líneas que acompañan a las etiquetas de los ejes. full es el valor por defecto y hace que estas líneas se extiendan por ambos lados de los ejes, botton hace la misma acción al lado donde estan las eti- quetas, y top lo hace al lado opuesto. ticksize=n Determina la longitud de las marcas, por defecto es 3pt. Cuadro 1.9: Parámetros de los ticks -3 -2 -1 0 1 2 3 4 5 6 -3 -2 -1 0 1 2 3 1 2−1−2 1 2 −1 −2 psset{unit=1.0} begin{pspicture}(-3,-3.22)(6.0,3.22)malla psaxes[linewidth=0.02, arrowlength=1.4]{<->}(0,0)(-3,-3)(3,3) pscircle[linewidth=0.04,dimen=outer](0,0){2.0} psline[linewidth=0.04cm]{<->}(-1,3)(3.5,0) pscircle[linewidth=0.04](3,2){1.0} end{pspicture} Ejemplo:
  • 41. 40 1.7. Manejo de objetos 0 1,5 3,0 4,5 6,0 7,5 9,0 0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 psset{unit=1.0} begin{pspicture}(0.5,0.5)(5,5.5) psaxes[Dx=1.5,Dy=0.5]{->}(10,5) psplot[linecolor=blue]{0}{10.5} {x 180 mul 1.52 div cos 2 mul 2.5 add} psplot[linecolor=red]{0}{10.5} {x 180 mul 1.52 div sin 2 mul 2.5 add} end{pspicture} El la sección 1.9.1 estudiaremos la función psplot. 1.7.4. Grillas Las grillas o mallas son un complemento ideal para trabajar con los ejes coordenados, inclusive pueden hacer las veces de éste si asi se re- quiere, su sintáxis es la siguiente: psgrid[par](x1,y1)(x2,y2) La ejecución del comando anterior produce una malla en el rectán- gulo con extremos (x1, y1) y (x2, y2), si no ubicamos estas coorde- nas, psgrid ubicara una malla en las coordenadas establecidas por begin{pspicture}(x1,y1)(x2,y2) . El cuadro 1.10 muestra los difer- entes parámetros para configurarla:
  • 42. 1. Gráficos con PSTricks 41 Parámetro Efecto gridwidth= n Determina el ancho de las líneas principales de la grilla, por defecto es 0.8pt. subgridwidth= n Igual al anterior pero con las líneas secundarias gridcolor= color Es el color de las líneas principales, por defecto es black. subgridcolor= color Color de las líneas secundarias, por defecto es gray. gridlabels=n Tamaño de los números que enmarcan la grilla, por defecto es 10 pt. gridlabelcolor = color Color de los números que enmarcan la grilla, por defecto es black. griddots=n Las líneas principales son punteadas con n pun- tos por unidad y n > 0. sub griddots=n Igual al anterior pero con la grilla segundaria y n > 0. Cuadro 1.10: Parámetros de psgrid Ejemplo: 0 1 2 0 1 2 -2 -1 0 1 2 -1 0 1 2 3 psset{unit=0.8} begin{pspicture}(0,-2.8)(8.6,2.8) rput(0.3,0.4){psgrid[gridwidth=0.02, subgridwidth=0.01,gridlabels=6.0pt, subgridcolor=blue](0,0)(0,0)(2,2)} rput(6.76,-1.3) {psgrid[gridwidth=0.02, subgridwidth=0.01, gridlabels=5.0pt,subgriddiv=8,griddots=1,unit=1.3cm, gridcolor=gray,subgridcolor=black](2,0)(-2,-1)(2,3)}
  • 43. 42 1.8. Manejo de texto end{pspicture} {footnotesizebegin{verbatim} 1.8 Manejo de texto El texto es una parte fundamental en la elaboración de documentos matemáticos, PSTricks posee herramientas para la inclusión de texto científico en nuestros libros o arctículos, ya hemos visto que lo pode- mos hacer con el comando rput, sin embargo es posible hacer muchos otros efectos que se pueden utilizar en presentaciones o ecuaciones muy elaboradas. 1.8.1. El comando uput Con este comando podemos ubicar etiquetas en nuestros gráficos, tiene la siguiente sintáxis: uput{s}[r]{ang}(x,y){objeto} El parámetro s hace que la etiqueta aparezca separada del punto (x, y) una distancia determinada, por defecto es 5pt. La opción r determina el ángulo de la etiqueta. Ejemplo: 0 1 2 3 4 0 1 2 3 4 3 2 1 12 11 10 9 8 7 6 5 4 psset{unit=1.5} begin{pspicture}(0,0)(4,4) malla pscircle(2,2){2} uput{2.1cm}[0](2,2){$3$} uput{2.1cm}[30](2,2){$2$} uput{2.1cm}[60](2,2){$1$} uput{2.1cm}[90](2,2){$12$} uput{2.1cm}[120](2,2){$11$} uput{2.1cm}[150](2,2){$10$} uput{2.1cm}[180](2,2){$9$}
  • 44. 1. Gráficos con PSTricks 43 uput{2.1cm}[210](2,2){$8$} uput{2.1cm}[240](2,2){$7$} uput{2.1cm}[270](2,2){$6$} uput{2.1cm}[300](2,2){$5$} uput{2.1cm}[330](2,2){$4$} pspolygon[fillstyle=solid, fillcolor=lightgray](2,2) (2.5,2.1)(3,2)(2.5,1.9)(2,2) pspolygon[fillstyle=solid, fillcolor=lightgray](2,2) (1.5,2.2)(0.9,2.7)(1.5,2.4)(2,2) qline(2,2)(2.5,0.5) end{pspicture} 1.8.2. Texto en recuadros Estos comandos son independientes de PSTricks, así mismo se pueden usar en otros contextos. Su tamaño depende de la cantidad de texto que se les aplique. La sintáxis es la siguiente y es igual para todas: psframebox[par]{texto} Las opciones par son las que estudiamos en las secciones anteriores y texto es lo que deseamos enmarcar. El ejemplo siguiente mostrará la sintaxis y el resultado obtenido: 0 1 2 3 4 5 6 7 0 1 2 3 4 psframebox psdblframebox pstribox psdiabox pscirclebox psovalbox psset{unit=1.8} begin{pspicture}(0,0)(7,4)malla rput[tl](0,3.5){psframebox{$backslash$psframebox}} rput[tl](0,2.5){psdblframebox{$backslash$psdblframebox}} rput[tl](0,1.5){pstribox{$backslash$pstribox}} rput[tl](4,3.5){psdiabox{$backslash$psdiabox}} rput[tl](4.5,2.5){pscirclebox{$backslash$pscirclebox}}
  • 45. 44 1.8. Manejo de texto rput[tl](4.5,.8){psovalbox{$backslash$psovalbox}} end{pspicture} 1.8.2.1. Sombras En realidad cualquier figura cerrada de PSTricks puede generar som- bra, como los polígonos cerrados, los círculos, las cajas de texto, etc. Para ubicar este efecto sólo se usa el parámetro shadows=true/false, el cual, por defecto es false . Otro parámetro que se usa es el shadowsize=n, el cual cambia el tamaño de la sombra y por defecto es 3pt. shadowangle=ang se usa para ubicar el ángulo de la sombra, por defecto es -45, pero se puede usar entre -360 y 360 grados. Por último está shadowcolor=color el cual se usa para poner color a la sombra que por defecto es darkgray. 0 1 2 0 1 2 Λ Π Ω Φ psset{unit=1.5} begin{pspicture}(0,0)(2,2) malla rput(1,1.5) {pscirclebox[fillstyle=solid, fillcolor=blue, shadow=true] {white Huge $Lambda$}} rput(1,0.5) {pscirclebox[fillstyle=solid, fillcolor=red, shadow=true, shadowangle=45] {white Huge $Pi$}} rput(0.5,1) {pscirclebox[fillstyle=solid, fillcolor=cyan, shadow=true, shadowcolor=yellow] {white Huge $Omega$}} rput(1.5,1) {pscirclebox[fillstyle=solid, fillcolor=magenta, shadow=true, shadowsize=5pt] {white Huge $Phi$}} end{pspicture} 1.8.3. Texto sobre curvas Para aplicar este efecto usamos la instrucción: pstextpath[pos]{curva}{texto}
  • 46. 1. Gráficos con PSTricks 45 El argumento pos puede tomar los siguientes valores: l para ubicar el texto a la izquierda de la curva, [c] para ubicarlo al centro, y por último [r] para ubicarlo a la derecha. Se puede usar cualquier curva de PSTricks (circunferencia, polígonos, rectas, etc), para el parámetro curva. Ejemplo. 0 1 2 3 4 0 1 2 3 4 Un iversid ad Del Q uindí o Ser libres para con ocer ycon ocer para ser l ibres psset{unit=1.5} begin{pspicture}(0,0)(4,4)malla pstextpath[c]{psarcn[linestyle=none] (2,2){1.7cm}{180}{0}}{Huge green bf Universidad } rput(2,2){Huge green bf Del} pstextpath[c]{psarc[linestyle=none] (2,2){1.7cm}{180}{0}}{Huge green bf Quindío} pstextpath[c]{psarcn[linestyle=none] (2,2){3.7cm}{180}{0}}{Huge blue bf Ser libres para conocer} pstextpath[c]{psarc[linestyle=none] (2,2){3.7cm}{180}{0}} {Huge blue bf y conocer para ser libres}
  • 47. 46 1.8. Manejo de texto end{pspicture} Ejemplo: 0 1 2 3 4 5 6 0 1 2 Esta es la hermosa función sin(x) psset{unit=1.8cm} begin{pspicture}(0,0)(6,2)malla pstextpath[c]{pscurve[linestyle=none] (0,1.5)(1.5,0.5)(4,1.5)(6,0.5)} {Huge Esta es la hermosa función $sin (x)$} end{pspicture} 1.8.4. Texto con efectos especiales Como ya hemos visto podemos agregar color, tamaño y forma al texto, ahora con la instrucción pscharpath agregaremos efectos en el con- torno del texto: pscharpath[par]{texto} Ejemplo: pscharpath[linestyle=dashed]{ Huge Universidad del Quindío} pscharpath[linestyle=none, fillstyle=gradient] { Huge Universidad del Quindío}
  • 48. 1. Gráficos con PSTricks 47 1.9 Trazado de curvas En la sección 1.5.1 trazamos curvas con los comandos pscurve, pse- curve, psccurve, sin embargo, podemos tener algunas limitantes dado que la curva resultante no necesariamente es la que debería pasar por los puntos indicados. Para ello, PSTricks diseñó las siguientes fun- ciones especializadas en la interpolación de puntos: Primero debemos designar la lista de puntos que vamos a dibujar, eso lo hacemos con el comando: savedata{fun}[{x1,y1},...{xn,yn}] Una vez guardados los puntos procedemos a dibujarlos, eso lo logramos con el siguiente comando: dataplot[par]{fun} Con la opción fun le asignamos cualquier nombre a la lista de puntos, siempre que no sea un comando LATEX. La función readdata hace el mismo efecto que savedata, pero ésta lo puede leer de un archivo. Si observamos, la gráfica no es exacta, debido a que sólo usamos 10 puntos, pero si utilizamos 100, nuestro gráfica sería muy exacta pero consumiría más recursos del sistema. Con este comando podemos car- gar los puntos desde un archivo y estos pueden ser tomados desde otro programa como el Matematica. Ejemplo:
  • 49. 48 1.9. Trazado de curvas 0 1 2 3 4 1 2 f(x) = esin(x) psset{unit=1} begin{pspicture}(0,0)(5,3) psaxes[linewidth=0.04,dx=1.8cm, dy=1.8cm]{<->}(0,0)(5,0)(0,3) savedata{funcion}[{0,1}, {0.36,1.43}, {0.87,2.15}, {1.51,2.71}, {2.26,2.15}, {2.76,1.43}, {3.13,1.0}, {4.06,0.46}, {4.45,0.3}, {5.032,0.38}] dataplot[linewidth=0.01, plotstyle=curve, linecolor=red]{funcion} rput(3.8,2){large $f(x)=e^{sin (x)}$} end{pspicture} 1.9.1. Curvas a partir de su ecuación Para graficar una curva, lo ideal es tener los puntos a partir de la ecuación, para eso PSTricks implementa la siguiente función: psplot[op]{x1}{x2}{fun} La cual grafica una curva con el dominio (x1, x2), la función fun debe entrarse en notación sufija de PostScript, la cual mostraremos en el cuadro 1.11. Sin embargo, es necesario tener presente que siempre se debe usar la variable x, las funciones seno y coseno sólo aceptan grados sexages- imales. La función psplot sólo admite computos simples, por lo que no podemos graficar funciones muy complejas. Se debe tener especial
  • 50. 1. Gráficos con PSTricks 49 Sintáxis Significado x neg −x x y add x + y x y sub x − y x y mul x.y x y div x y x y exp xy x sqrt √ x x log log10 x x ln ln x x sin sin x x cos cos x Cuadro 1.11: Principales funciones de PostScript cuidado con las funciones que presenten asíntotas, pues generan un error (división por cero) y debemos sacarlas del dominio. Ejemplo: 1 2 3 4−1−2−3−4 1 2 3 4 −1 −2 −3 −4 f(x) = sin(100x) f(x) = x+1 x2+1 f(x) = ex f(x) = 1 x psset{unit=0.4} begin{pspicture}(-5,-5)(8,5)%malla
  • 51. 50 1.9. Trazado de curvas psaxes[linewidth=0.04,dx=0.71cm, dy=0.71cm]{<->}(0,0)(-5,-5)(5,5) psplot[linewidth=0.03, plotstyle=curve, linecolor=blue]{-5}{5}{x 100 mul sin} psplot[linewidth=0.03, plotstyle=curve, linecolor=green]{-5}{5}{ x 1 add x 2 exp 1 add div} psplot[linewidth=0.03, plotstyle=curve, linecolor=magenta]{-5}{1.5}{2.7 x exp} psplot[linewidth=0.03, plotstyle=curve, linecolor=yellow]{-5}{-0.2}{1 x div} psplot[linewidth=0.03, plotstyle=curve, linecolor=yellow]{0.2}{5}{1 x div} psdots[dotstyle=square*, linecolor=blue](4,4) rput(6.2,4){$f(x)=sin (100x)$} psdots[dotstyle=square*, linecolor=green](4,3) rput(6,3){$f(x)=frac{x+1}{x^2 + 1}$} psdots[dotstyle=square*, linecolor=magenta](4,-2) rput(6,-2){$f(x)=e^x$} psdots[dotstyle=square*, linecolor=yellow](4,-3) rput(6,-3){$f(x)=frac{1}{x}$} end{pspicture} 1.9.2. Curvas Paramétricas El comando parametricplot es muy similar psplot, sólo se requiere dar un dominio y una función paramétrica. parametrcplot[par]{t1}{t2}{x(t)y(t)} El parámetro par se usa para las opciones de línea que ya hemos us- ado, (t1, t2) es el dominio de la función y las funciones x(t), y(t) las cuales se deben escribir con la sintaxis de PostScript, una seguida de la otra sin comas ni puntos. (vea el cuadro 1.11). Veamos los siguientes ejemplos:
  • 52. 1. Gráficos con PSTricks 51 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 psset{unit=2} begin{pspicture}(-3,-3)(3,3)malla rput(1.5,1.5){parametricplot[linewidth=0.1, plotpoints=300]{0}{360}{2 t mul sin t cos mul 2 t mul sin t sin mul}} rput(-2.5,1.5){parametricplot[linewidth=0.1, plotpoints=300]{0}{360}{0.5 1.5 t cos mul add t cos mul 0.5 1.5 t cos mul add t sin mul}} rput(-1.5,-2){parametricplot[linewidth=0.1, plotpoints=300]{0}{360}{0.5 1.5 t cos mul add t sin mul 0.5 1.5 t cos mul add t cos mul}} rput(1.5,-1.5){parametricplot[linewidth=0.1, plotpoints=300]{0}{360}{1.5 t sin mul 1.5 t cos mul}} end{pspicture} 1.9.3. Regiones sombreadas Para implementar sombreado de regiones entre curvas, PSTricks dispone de la función pscuston la cual nos permite dibujar una textura entre dos curvas, que pueden ser psline, pscurve o psecurve, en realidad se puede hacer sobre cualquier tipo de curva, teniendo cuidado puesto
  • 53. 52 1.9. Trazado de curvas que se pueden producir graves mensajes de error. Veamos la sintaxis: pscuston[par]{curvas fill[op]} La función rellena la región limitada por las curvas con las opciones de llenado implementadas en fill[par].veamos un ejemplo: 0 1 2 3 4 5 6 0 1 2 3 4 5 psset{unit=0.8} begin{pspicture}(0,0)(6,5) pscustom[linestyle=none] {pscurve(0,0)(2,3) (3,3.5)(4,3)(6,0) fill[fillstyle=solid, fillcolor=lightgray]} psaxes(6,4) pscurve(0,0)(2,3) (3,3.5)(4,3)(6,0) end{pspicture} Veamos un ejemplo de relleno entre dos curvas: 0 1 2 3 4 5 0 1 2 3 4 5 6 psset{unit=0.6} begin{pspicture}(0,0)(6,7) pscustom[linestyle=none]{ psline(1,0.1)(1,1.5) pscurve(1,1.5)(2,2.5)(3,4)(4,6) psline(4,6)(4,0.5) psline(4,0.5)(0,0) fill[fillstyle=vlines ]} psaxes{->}(6,7) pscurve(0,1)(1,1.5)(2,2.5) (3,4)(4,6)(4.5,6.5) psline(4,0.5)(0,0) psline(4,0.5)(5,0.65) psline[linestyle=dashed] (1,0.1)(1,1.5) psline[linestyle=dashed] (4,0.5)(4,6) end{pspicture} En el ejemplo anterior podemos observar los siguientes detalles:
  • 54. 1. Gráficos con PSTricks 53 • En primer lugar, los puntos de las curvas deben seguir una secuencia, en este caso primero se ubica la línea recta verti- cal psline(1,0.1)(1,1.5), luego aparece la curva (que es la más importante); pscurve(1,1.5)(2,2.5)(3,4)(4,6), poste- riormente la otra recta vertical; psline(4,6)(4,0.5) y por úl- timo la recta psline(4,0.5)(0,0), que hace las veces de curva inferior, que en otros casos puede ser otra curva o el mismo eje x; • Luego de dibujar la región sombreada, podemos redibujar las curvas e inclusive agregarles más detalles, como por ejemplo hac- erlas más largas o asignarles etiquetas. Ejemplo: 0 1 2 3 4−1−2−3−4 2 3 4 5 6 psset{unit=0.6} begin{pspicture}(-4,0)(4,5) pscustom[linestyle=none]{ psline(-3,1)(-3,3) pscurve(-3,3)(-2,1.5)(-1,2)(0,4)(1,2)(2,1.5)(3,3) psline(3,3)(3,1) pscurve(3,1)(2,0.5)(1,0.8)(0,0)(-1,0.8)(-2,0.5)(-3,1) fill[fillstyle=solid, fillcolor=lightgray]} psaxes[linewidth=0.04,Oy=1](0,0)(-4,0)(4,5) psline[linestyle=dashed](-3,0)(-3,3) psline[linestyle=dashed](3,3)(3,0) pscurve(-3,3)(-2,1.5)(-1,2)(0,4)(1,2)(2,1.5)(3,3) pscurve(3,1)(2,0.5)(1,0.8)(0,0)(-1,0.8)(-2,0.5)(-3,1) end{pspicture}
  • 55. 54 1.10. Herramientas para árboles, grafos y diagramas 1.10 Herramientas para árboles, grafos y dia- gramas PSTricks ofrece una variada gama de herramientas para crear gráficos tipo árboles y diagramas. Para realizar este tipo de gráficos se han dividido los comandos en 3 tipos; Nodos, Conectores y Etiquetas. 1.10.1. Nodos En el cuadro 1.12 observaremos los distintos tipos de nodos: Nodo Descripción pnode(x,y){nom} Con él ubicamos en la coordenada (x, y) un nodo y le asignamos un nombre con nom dotnode[op](x,y){nom} Este nodo es similar al anterior, pero el nodo aparece con forma de punto y se le asigna un nombre con nom . Además que se puede agregar opciones de puntos como las vistas en la cuadro 1.2 cnode[op](x,y){r}{nom} En este caso, el nodo es de forma circular con un radio r. Cnode[op](x,y){nom} Es similar al anterior, pero el radio se establece de antemano con el parámetro psset{radius=...}. rnode{nom}{texto} En este caso se dibuja un borde rectangu- lar invisible, y se tiene la posibilidad de agregar texto, que puede ser en modo nor- mal o modo matemático. Este comando no tiene el característico punto (x, y), así que debemos usar el comando rput para ubi- carlo. Cuadro 1.12: Nodos de PSTricks La tabla 1.13 muestra otros tipos de nodos similares a rnode con formas geométricas: 1.10.2. Conectores A continuacion mostraremos los diferentes tipos de conectores con su respectivo ejemplo, tanto del nodo como de su conector:
  • 56. 1. Gráficos con PSTricks 55 Nodo Descripción trinode[op]{nom}{texto} Nodo en forma triangular. ovalnode[op]{nom}{texto} Nodo en forma ovalada. dianode[op]{nom}{texto} Nodo en forma de rombo. circlenode[op]{nom}{texto} Nodo en forma circular. Cuadro 1.13: Nodos tipo rnode de PSTricks Conectores ncline. La estructura básica de un conector es la siguiente: ncline[par]{flechas}{n1}{n2} Con los parámetros par podemos cambiar la forma del conector (líneas punteadas, guiones, etc), el segundo parámetro es el tipo de flechas y los dos últimos son el nombre de los conectores, en este caso el conector va de n1 a n2. 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 psset{unit=0.5} begin{pspicture}(0,0)(6,4) malla rput(3,3){circlenode{P1}{$P_t$}} rput(1,1){circlenode{a1}{$a_1$}} rput(5,1){circlenode{a2}{$a_2$}} ncline{->}{P1}{a1} ncline{<-}{P1}{a2} ncline{<->}{a1}{a2} end{pspicture} Conectores ncarc. Es similar al anterior, pero los nodos se unen por medio de arcos. El usuario debe tener en cuenta que los arcos se construyen como un parámetro arcangle, el cual determina el ángulo entre arco y la línea recta que une los nodos, su valor por defecto es 8 grados sexagesimales.
  • 57. 56 1.10. Herramientas para árboles, grafos y diagramas 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 psset{unit=0.6} begin{pspicture}(0,0)(6,5)malla rput(1,4){circlenode{P1}{$P_t$}} rput(1,1){trinode{a1}{$a_1$}} rput(5,3){ovalnode{a2}{$a_2$}} ncarc[arcangle=250]{<->}{P1}{a1} ncarc{<-}{P1}{a2} ncarc{<->}{a1}{a2} end{pspicture} Conectores ncdiag. En este caso se une los nodos con un segmento diagonal, además se pueden usar las opciones armA,armB, con los cuales se puede cambiar la longitud del brazo de salida y de llegada, que por defecto es 10pt. angleA,angleB, son los ángulos de llegada y salida del conector y su valor por defecto es 0. Igualmente, podemos usar la opción linearc que se utiliza para vértices redondeados. 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 psset{unit=0.6} begin{pspicture}(0,0)(6,5) malla rput(2,4){dianode{P1}{$P_t$}} rput(2,1){dianode{a1}{$a_1$}} rput(5,4){dianode{a2}{$a_2$}} ncdiag[armA=15pt, armB=15pt, angleA=45,angleB=90]{<->}{P1}{a2} ncdiag[angleA=270,angleB=270] {<->}{a2}{P1} ncdiag[angleA=180,angleB=180, linearc=10pt]{<->}{a1}{P1} end{pspicture} Conectores ncdiagg. Es igual al anterior, pero sin el brazo para el segundo nodo. 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 psset{unit=0.6} begin{pspicture}(0,0)(6,5)malla rput(1,4){dianode{P1}{$P_t$}} rput(3,1){dianode{a1}{$a_1$}} rput(5,4){dianode{a2}{$a_2$}} ncdiagg[angleA=0,angleB=90]{->} {P1}{a2} ncdiagg[angleA=180,angleB=180, linearc=10pt]{->}{a1}{P1} end{pspicture}
  • 58. 1. Gráficos con PSTricks 57 Conectores nccurve. Este conector traza curvas en forma de Bézier, se debe tener cuidado en la posición de los nodos, pues si están ubicados muy cerca, la curva parecerá una recta. 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 psset{unit=0.6} begin{pspicture}(0,0)(6,5)malla rput(2,4){dianode{P1}{$P_t$}} rput(1,1){trinode{a1}{$a_1$}} rput(6,3){ovalnode{a2}{$a_2$}} nccurve[angleA=45,angleB=90] {<->}{P1}{a2} nccurve[angleA=270,angleB=270] {<->}{a2}{P1} nccurve[angleA=180,angleB=180] {<->}{a1}{P1} end{pspicture} Conectores ncbar. Este conector tiene la particularidad de que forma ángulos rectos entre los conectores y los nodos, si es necesario se extienden los brazos de los conectores, además el ángulo de llegada y el de salida son el mismo y se controlan con el parámetro angleA. 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 psset{unit=0.6} begin{pspicture}(0,0)(6,5)malla rput(2,4){dianode{P1}{$P_t$}} rput(5,1){trinode{a1}{$a_1$}} rput(6,3){ovalnode{a2}{$a_2$}} ncbar[angleA=90]{<->}{P1}{a2} ncbar[angleA=270]{<->}{a2}{P1} ncbar[angleA=180]{<->}{a1}{P1} end{pspicture} Conectores ncangle. Es similar al anterior, pero los conectores se unen por medio de ángulos rectos únicamente. Para controlar la forma, se usan los parámetros armA,armB,angleA,angleB y linearc.
  • 59. 58 1.10. Herramientas para árboles, grafos y diagramas 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 psset{unit=0.6} begin{pspicture}(0,0)(6,5)malla rput(3,4){dianode{P1}{$P_t$}} rput(5,1){dianode{a1}{$a_1$}} rput(1,2){dianode{a2}{$a_2$}} ncangle[angleA=180, angleB=180] {->}{P1}{a2} ncangle[angleA=270, angleB=270] {<->}{a2}{a1} ncangle[angleA=0, angleB=270] {<->}{a2}{P1} ncangle[angleA=90, angleB=0] {<->}{a1}{P1} end{pspicture} Conectores ncangles. Tiene el mismo efecto que ncangle , pero usa un segmento adicional para unir los nodos. 0 1 2 3 4 0 1 2 3 a1 a2 psset{unit=0.6} begin{pspicture}(0,0)(4,3)malla rput(1,1){dianode{a1}{$a_1$}} rput(3,2){dianode{a2}{$a_2$}} ncangles[angleA=180, angleB=180]{->}{a1}{a2} ncangles[angleA=90, angleB=0]{<->}{a2}{a1} end{pspicture} Conectores ncloop. Este conector es útil para hacer loops en grafos, se puede cambiar el parámetro loopsize que por omisión es 1cm. Para este tipo de gráfico es mejor usar nccircle. 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 psset{unit=0.6} begin{pspicture}(0,0)(6,5)malla rput(3,4){ovalnode{P1}{$P_t$}} rput(5,1){ovalnode{a1}{$a_1$}} rput(1,2){ovalnode{a2}{$a_2$}} ncloop[angleA=0, angleB=45, loopsize=1cm, linearc=0.1]{->}{a1}{a1} ncloop[angleA=90, angleB=0, linearc=0.1]{->}{P1}{P1}
  • 60. 1. Gráficos con PSTricks 59 nccurve[angleA=270, angleB=270]{<->}{a2}{a1} nccurve[angleA=0, angleB=270]{<->}{a2}{P1} nccurve[angleA=90, angleB=0]{<->}{a1}{P1} end{pspicture} Conectores nccircle. Además de la sintaxis normal de los conectores, en el caso de nccircle se debe adicionar un parámetro más que corresponde al radio del loop. La separación entre el arco y el borde del nodo se puede determinar por el parámetro nodesepA. 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 psset{unit=0.6} begin{pspicture}(0,0)(6,5) malla rput(3,4){ovalnode{P1}{$P_t$}} rput(5,1){ovalnode{a1}{$a_1$}} rput(1,2){ovalnode{a2}{$a_2$}} nccircle[angleA=200, nodesepA=0pt ]{->}{a1}{0.4cm} nccircle[angleA=90, nodesepA=0pt ]{->}{a2}{0.5cm} nccircle[angleA=10, nodesepA=0pt ]{->}{P1}{0.5cm} nccurve[angleA=0, angleB=180]{<->}{a2}{a1} nccurve[angleA=90, angleB=270]{<->}{a2}{P1} nccurve[angleA=90, angleB=270]{<->}{a1}{P1} end{pspicture} 1.10.3. Etiquetas Las etiquetas se le asignan a los conectores de los diagramas, deben ubicarse después de construir el conector, y se asume que el conector va de izquierda a derecha. La tabla 1.14 muestra otros tipos de nodos similares a rnode con for- mas geométricas: Aquí mostraremos los tipos de etiquetas y los parámetros opcionales como nrot . En el siguiente ejemplo ubicamos etiquetas con el parámetro npos, que es un número entre 0 y 1 y determina donde aparece la etiqueta. El comando * provoca que la etiqueta borre los objetos que están debajo de ella, en caso contrario, la etiqueta será transparente.
  • 61. 60 1.10. Herramientas para árboles, grafos y diagramas Etiqueta Descripción ncput[op]{etiqueta} La etiqueta va sobre la línea del conector. naput[op]{etiqueta} La etiqueta va encima del conector. nbput[op]{etiqueta} La etiqueta va debajo del conector. tvput[op]{etiqueta} La etiqueta va en la misma linea del conector. Se usa en conectores verti- cales. tlput[op]{etiqueta} Igual a la anterior solo que la etiqueta se ubica a la izquierda del conector. tlput[op]{etiqueta} En este caso la etiqueta se ubica a la derecha del conector. Cuadro 1.14: Etiquetas para conectores en PSTricks 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 α1 β2 γ3 begin{multicols}{2} psset{unit=0.6} begin{pspicture}(0,0)(6,5) malla rput(1,2.5){ovalnode{P1} {$P_t$}}rput(5,1){ovalnode{a1} {$a_1$}}rput(5,4) {ovalnode{a2}{$a_2$}} nccurve[angleA=0, angleB=0]{<->} {a2}{a1}ncput*{$alpha_1$} nccurve[angleA=90, angleB=0] {<->}{a2}{P1} ncput*[npos=0.5]{$beta_2$} nccurve[angleA=270, angleB=0] {<->}{a1}{P1} ncput*[npos=0.7]{$gamma_3$} end{pspicture} En el siguiente ejemplo se usará la etiqueta naput y nbput con el parámetro labelsep, la cual nos determina la separación entre el conector y la etiqueta, por defecto es 0.5pt. 0 1 2 3 4 5 6 0 1 2 3 4 5 Pt a1 a2 ξ λ psset{unit=0.6} begin{pspicture}(0,0)(6,5) malla rput(3.5,4){dianode{P1}{$P_t$}} rput(1,2){dianode{a1}{$a_1$}} rput(4,2){dianode{a2}{$a_2$}} ncbar[angleA=0, angleB=180] {->}{P1}{a2}
  • 62. 1. Gráficos con PSTricks 61 naput[labelsep=0.3pt]{$xi$} ncbar[angleA=90]{->} {a1}{a2}nbput{$lambda$} end{pspicture} Para el siguiente caso, usaremos la etiqueta tvput con el parámetro nrot, el cual determina la rotación de la misma con un ángulo entre -360 y 360 grados sexagesimales, por defecto dicho parámetro es cero. 0 1 2 3 4 5 6 0 1 2 3 4 5 Pta1 a2 ξ incorrecto psset{unit=0.6} begin{pspicture}(0,0)(6,5) malla rput(5,1){ovalnode{P1}{$P_t$}} rput(1,1){ovalnode{a1}{$a_1$}} rput(5,4){ovalnode{a2}{$a_2$}} ncline{->}{P1}{a2}tvput{$xi$} ncline{->}{a1}{a2} naput*[nrot=35]{incorrecto } end{pspicture} Ahora veremos las etiquetas tlput, trput. 0 1 2 3 4 5 6 0 1 2 3 4 5 P1 a1 a2 P2ξ ψ ϕ psset{unit=0.6} begin{pspicture}(0,0)(6,5) malla rput(1,4) {dianode{P1}{$P_1$}} rput(1,1) {ovalnode{a1}{$a_1$}} rput(5,1) {ovalnode{a2}{$a_2$}} rput(5,4) {dianode{P2}{$P_2$}} ncline{->} {P1}{P2}ncput*{$xi$} ncline{->} {P1}{a1}tlput{$psi$} ncline{->} {P2}{a2}trput{$varphi$} end{pspicture} 1.10.4. Árboles La sintaxis de un árbol es la siguiente: pstree[par]{raiz}{ramas}
  • 63. 62 1.10. Herramientas para árboles, grafos y diagramas Para implementar un gráfico de árbol debemos tener en cuenta la ubi- cación de la raíz y las ramas, además la forma de ubicar los conectores. El cuadro 1.15 ilustrará los tipos de nodos. Nodo Descripción Tp[op] Nodo invisible. Tdot[op] Nodo en forma de punto. Tf[op] Nodo en forma de cuadro. Tfan[op] Nono invisible conectado a su nodo prede- cesor por una figura triangular. Tc[op]{r} Nodo circular con radio r. TC[op] Igual al anterior pero el radio se establece por defecto con el parámetro radius en el psset{...}. Por omisión es 2.5mm Tr[op]{texto} Nodo rectangular invisible con texto. Tcircle[op]{texto} Nodo circular con texto. Toval[op]{texto} Nodo ovalado con texto. Ttri[op]{texto} Nodo triangular con texto. Tdia[op]{texto} Nodo en forma de rombo con texto. Tn[op]{texto} Nodo con texto pero conectado a su prede- cesor por una línea invisible. Sólo se puede usar en las hojas del árbol no en su raíz. Cuadro 1.15: Nodos para los árboles en PSTricks Para el manejo de árboles, se debe tener especial cuidado con la ubi- cacion de hojas y subarboles. Al implementarlos, nos damos cuenta que es fácil caer en erorres por la ubicacón incorrecta de los nodos. 0 1 2 3 4 5 6 0 1 2 3 4 5 6 h psset{unit=0.6} begin{pspicture}(0,0)(6,6) rput[tl](1.5,5.5) {pstree{TC}{Tdia{$h$} Tdot pstree{TC}{Tc{1mm} Ttri{} }} }
  • 64. 1. Gráficos con PSTricks 63 Además de los tipos de nodos, podemos controlar la forma en que se crea el árbol, por ejemplo, si queremos que nuestro árbol sea de derecha a izquierda o de abajo hacia arriba, etc, sólo cambiamos las opciones que se muestran en el cuadro 1.16. Nodo Descripción treemode= Determina la dirección del árbol, Dconstruye el árbol hacia abajo, U lo construye hacia arriba, R y L derecha e izquierda. edge= Determina el tipo de conector (ncline, ncarc,etc ) . nodesep= Es la distancia entre el nodo y el conector, por defecto es 0pt. levelsep= Determina la distancia entre los niveles de un árbol, por defecto es 2cm. treesep= Me indica la distancia entre los descendi- entes de un mismo nodo, por defecto es 0.75cm. Cuadro 1.16: Parámetros para el trazado de árboles C R Q Z N I psset{unit=0.6} begin{pspicture}(0,0)(6,6) rput[tl](1.5,5.5) {pstree[levelsep=1cm, arrows=->]{Tcircle{$mathbb{C}$}} { pstree{Tcircle{$mathbb{R}$}} {pstree{Tcircle{$mathbb{Q}$}} {pstree{Tcircle{$mathbb{Z}$}} {Tcircle{$mathbb{N}$} } } Tcircle{$mathbb{I}$}} }} end{pspicture} En este caso mostraremos que una gráfica hecha con PSTricks se puede poner en el entorno figure como si fuésemos a cargar un archivo gráfico. Para el caso el árbol genealógico de los hijos de Borin.1. 1 J.R.R. Tolkien, Apéndices del Señor de los Anillos. Ediciones Minotauro. 2001
  • 65. 64 1.10. Herramientas para árboles, grafos y diagramas Borin Farin Fundin I Balin Dawlin Gróin Óin Glóin Gimli Figura 1.1: Genealogía de los hijos de Borin
  • 66. 1. Gráficos con PSTricks 65 begin{figure}[htbp] centering psset{unit=1.2} begin{pspicture}(0,-6)(13,6) rput[tl](0.5,5.5){pstree[edge=nccurve, angleB=180, treemode=R,treesep=2.5cm, arrows=->] { Toval{scriptsize Borin} }{ pstree{Toval{scriptsize Farin} } {pstree{Toval{scriptsize Fundin I}} {Toval{scriptsize Balin} Toval{scriptsize Dawlin} } pstree{Toval{scriptsize Gróin}}{Toval{scriptsize Óin} pstree{ Toval{scriptsize Glóin}}{Toval{scriptsize Gimli}}}}}} end{pspicture} caption{Genealogía de los hijos de Borin } label{hijosborin} end{figure} 1.10.4.1. Etiquetas para los nodos de los árboles Las etiquetas de los conectores del árbol se ubican exactamente de- spués del comando de cada nodo, su sintaxis es muy simple ~{etiqueta}. El parámetro tnpos= posiciona la etiqueta con relación al nodo. b es abajo (por defecto es b), a arriba y r y l son derecha e izquierda. Con tnsep= podemos cambiar la distancia entre el nodo y la etiqueta, por defecto es 5pt. Las etiquetas para los conectores se colocan inmedi- atamente después del primer nodo, con el comando naput, es decir, si tenemos dos nodos A y B, se ubicará después del nodo A. Ejemplo:2 2 J.R.R. Tolkien, El Silmarrillion. Ediciones Minotauro. 2001
  • 67. 66 1.11. Manejo de objetos 3D con PSTricks Elfos Eldar Calaquedi Fueron a Amán Vanyar Los hermosos Noldor Los Sabios Telerin Los Elfos del mar Avari Moriquendi No fueron a Amán psset{unit=0.6} begin{pspicture}(0,-6)(13,6) pstree[treemode=R,levelsep=3.8cm,treesep=2.5,arrows=->] {Toval{scriptsize Elfos}}{ pstree{Toval[tnpos=a]{scriptsize Eldar} ~{ textit{ scriptsize Calaquedi}}naput[nrot=:U] {tiny Fueron a Amán} }{Toval[tnpos=b] {scriptsize Vanyar}~{ textit{ scriptsize Los hermosos}} Toval[tnpos=b]{scriptsize Noldor} ~{ textit{ scriptsize Los Sabios}} Toval[tnpos=b]{scriptsize Telerin} ~{textit{ scriptsize Los Elfos del mar}}} Toval[tnpos=b]{scriptsize Avari}~{ textit{ scriptsize Moriquendi}}naput[nrot=:U]{tiny No fueron a Amán}} end{pspicture} 1.11 Manejo de objetos 3D con PSTricks PSTricks ofrece toda una librería para dibujar objetos tridimensionales como esferas, planos, vectores, superficies, etc. Para el manejo de esta
  • 68. 1. Gráficos con PSTricks 67 librería es necesario que el usuario esté familiarizado con los conceptos de Cálculo Multivariado, es decir, con la ubicación de puntos en el espacio, manejo de ecuaciones en R3 y otros conceptos. 1.11.1. El paquete pst-3dplot Con este paquete, podemos usar los comandos necesarios para dibujar los objetos 3D, además, se pueden incluir otros objetos matemáticos como ecuaciones y objetos 2D. Si usted no tiene este paquete, lo pude conseguir en la siguiente direccción: http://ctan.org/tex-archive/ graphics/pstricks/contrib/pst-3dplot/ 1.11.2. El eje cordenado 3D El eje coordenado de la librería es el mismo que podemos encontrar en cualquier libro de Cálculo, con el eje z perpendicular al eje y y al eje x: x y z Sin embargo, para acceder a este espacio necesitamos un punto de referencia o punto de visión, imaginemos que estamos parados junto al eje coordenado; estando allí podemos dar la vuelta, subir y bajar
  • 69. 68 1.11. Manejo de objetos 3D con PSTricks la mirada, levantar el eje coordenado para observar los objetos desde abajo, en fin, necesitamos mover la vista para visualizar mejor los ob- jetos que vamos a dibujar. Para resolver el problema, PSTricks toma como punto de partida 2 ángulos especiales α y β. El ángulo α representa la rotación horizontal con valores positivos en sentido antihorario. El ángulo β controla la rotación vertical u ortogonal del plano. Por defecto, los ángulos son α = 45 y β = 45, si queremos cambiar el punto de vista del plano, cambiamos los parámetros en el psset{...}.veamos el ejemplo: x y z x y z x y z psset{unit=1.0} begin{pspicture}(0,-1)(13,5) rput(3,2){pstThreeDCoor[Alpha=45, Beta=45, linecolor=red,xMax=3,yMax=3,zMax=3]} rput(8,2){pstThreeDCoor[Alpha=-60, Beta=10, linecolor=green,xMax=4,yMax=3,zMax=3]} rput(11,2){pstThreeDCoor[Alpha=45, Beta=50, linecolor=blue,xMax=4,yMax=3,zMax=3]} end{pspicture} En en ejemplo anterior, podemos ver que se pueden cambiar algunos parámetros, entre ellos esta xMin, xMax, yMin, yMax, zMin, zMax, los cuales determinan los límites de los ejes con *Min le damos el límite inferior y con *Max configuramos el límite superior. También podemos cambiar el ancho de las líneas o su forma. Debemos tener en cuen- ta donde ubicamos los parámetros Alpha y Beta, si lo hacemos en el psset todos los objetos rotarán al unísono con el eje, si lo hacemos en los parámetros de pstThreeDCoor, sólo los ejes rotarán, los demás
  • 70. 1. Gráficos con PSTricks 69 objetos no. 1.11.3. Ubicación de objetos con pstThreeDPut Este comando es muy similar a rput de la versión 2D, a continuación la sintaxis: pstThreeDPut[par](x,y,z){obj} Esta orden ubica en la posición (x, y, z) el objeto obj con diferentes opciones, las cuales mostraremos en los diferentes ejemplos. x y z ̟2 ξ1 ζ1 psset{unit=1.0} begin{pspicture}(-6,-3)(6,3) pstThreeDCoor[linecolor=red,xMax=4,yMax=4,zMax=3] pstThreeDPut(1,2,3){$varpi_2$} pstThreeDPut(2,0,3){$xi_1$} pstThreeDPut(3,3,0){$zeta_1$} end{pspicture} 1.11.4. Puntos Como ya es sabido, los puntos son de los objetos matemáticos más usados, PSTricks3D implementa la siguiente función: pstThreeDDot[par](x,y,z) El comando ubica un punto con coordenadas (x, y, z) con las opciones de colores que ya hemos visto, además del parámetro drawCoor que
  • 71. 70 1.11. Manejo de objetos 3D con PSTricks puede ser falsetrue , lo cual provoca que se dibujen las líneas par- alelas a los ejes. Veamos un ejemplo: x y z psset{unit=1.0, Alpha=80} begin{pspicture}(-6,-3)(6,3) pstThreeDCoor[linecolor=red,xMax=4,yMax=4,zMax=3] pstThreeDDot[drawCoor=true](1,1,2) pstThreeDDot[drawCoor=true](0,-2,1) pstThreeDDot[drawCoor=true](4,2,-0.5) end{pspicture} 1.11.5. Líneas rectas La sintaxis para una línea en el espacio tridimensional es la siguiente: pstThreeDLine[par](x1,y1,z1)(x2,y2,z2) La cual dibuja una recta del punto (x1, y1, z1) al punto (x2, y2, z2), las opciones son las típicas que hemos visto en la versión 2D. Ejemplo:
  • 72. 1. Gráficos con PSTricks 71 x y z v1 v2 v3 psset{unit=1.0, Alpha=45, Beta=45} begin{pspicture}(-6,-3)(6,3) pstThreeDCoor[xMax=4,yMax=4,zMax=3] pstThreeDLine[linewidth=2pt, linecolor=blue, arrows=->](0,0,0)(1,2,5) pstThreeDLine[linewidth=2pt, linecolor=blue, arrows=->](0,0,0)(-3,2,0) pstThreeDLine[linewidth=2pt, linecolor=blue, arrows=->](0,0,0)(4,0,3) rput(-2,0.5){$vec{v}_1$} rput(1.5,0.5){$vec{v}_2$} rput(1,2){$vec{v}_3$} end{pspicture} Como podemos observar, hemos usado el comando rput, en lugar de la versión 3D, si usted no conoce la ubicación de los puntos en 3D, lo puede hacer con la versión 2D sin ningún problema. 1.11.6. Triángulos Para dibujar triángulos, PSTricks3D implementa el siguiente comando: pstThreeDTriangle[par](P1)(P2)(P3) El parámetro drawCoor que puede ser falsetrue dibuja las rectas paralelas a los ejes, fillstyle debe estar en solid para que el trián- gulo sea llenado, de lo contrario, se dibujará transparente. El color se escoje con fillcolor . Los parámetros P1,P2,P3 son los puntos de los vértices del triángulo.
  • 73. 72 1.11. Manejo de objetos 3D con PSTricks x y z psset{unit=1.0, Alpha=45, Beta=45} begin{pspicture}(-6,-3)(6,3) pstThreeDCoor[xMax=4,yMax=4,zMax=3] pstThreeDTriangle[linewidth=1pt](3,-1,5)(1,1,5)(1,2,5) pstThreeDTriangle[drawCoor=true,linecolor=blue, linewidth=1pt, fillstyle=solid, fillcolor=yellow] (3,1,2)(1,4,2)(0,2,2) pstThreeDTriangle[drawCoor=true,linecolor=red, linewidth=1pt, fillstyle=solid, fillcolor=green] (3,0,4)(1,0,1)(0,0,2) end{pspicture} 1.11.7. Cuadros y rectángulos La sintaxis es la siguiente: pstThreeDSquare[Op](v1)(v2)(v3) En este caso, se dibuja un cubo o paralelepípedo imaginario, luego aparecen los vectores v1, v2 y v3. El primer vector determina el pun- to de origen del cuadro, los otros dos determinan el ancho y largo del cuadro. Estos vectores en realidad son los puntos finales de los vectores. Ejemplo:
  • 74. 1. Gráficos con PSTricks 73 x y z psset{unit=1.0, Alpha=45, Beta=15} begin{pspicture}(-6,-3)(6,3) pstThreeDCoor[xMax=4,yMax=4,zMax=3] pstThreeDSquare[fillcolor=blue,fillstyle=solid, drawCoor=true,dotstyle=*](1,1,3)(0,3,0)(1,0,0) pstThreeDSquare[fillcolor=green,fillstyle=solid, drawCoor=true,dotstyle=*](1,1,1)(4,0,0)(0,5,0) end{pspicture} 1.11.8. Cajas Una caja es un caso especial de los Cuadros de la sección anterior, la sintaxis es la siguiente: pstThreeDBox[par](v1)(v2)(v3)(v4) El primer punto (punto final de un vector) es el punto de inicio de nuestra caja, los demás vectores determinan el ancho, el alto y la pro- fundidad. Ejemplo:
  • 75. 74 1.11. Manejo de objetos 3D con PSTricks x y z psset{unit=1.0, Alpha=45, Beta=15} begin{pspicture}(-6,-3)(6,3) pstThreeDCoor[xMax=4,yMax=4,zMax=3] pstThreeDBox[fillcolor=yellow, fillstyle=solid](0,0,0)(3,0,0)(0,3,0)(0,0,1) end{pspicture} 1.11.9. Circunferencias y elipses En el siguiente gráfico podemos observar los componentes de una elipse: a b F2 F1 a a e e r1 r2 Ahora bien, lo que tenemos es: dos focos F1 y F2, los diámetros a y b y además la exentricidad determinada por e. (x − x0)2 a2 + (y − y0)2 b2 = 1 (1.1)
  • 76. 1. Gráficos con PSTricks 75 La ecuación 1.1 es la fórmula generalizada de una elipse con centro en (x0, y0), eje mayor a y eje menor b, (también llamados radios de la elipse).La exentricidad e determina que tan alargada o deforme es la elipse y debe ser 0 < e ≤ 1, si e = 1 la elipse se convierte en una circunferencia. La información anterior es de vital importancia si necesitamos dibujar elipses o circunferencias. Además, de esta información, podemos cambiar algunos parámetros de la elipse como el arco, permitiendo dibujar parte de la elipse o cir- cunferencia, esto lo logramos cambiando los parámetros que controlan el ángulo de inicio y el terminal; beginAngle que por defecto es 0 y endAngle que es 360, éstos valores indican que se dibujará toda la elipse. Recuerde que como estamos en el espacio tridimensional, es muy común que veamos una circunferencia como una elipse o viceversa, es re- comendable que se ajusten los parámetros de visión (Alpha y Beta) para que ésta distorsión no cause malos entendidos. la elipse entonces tiene la siguiente sintáxis: pstThreeDEllipse[OP](cx,cy,cz)(ux,uy,uz)(vx,vy,vz) El primer punto (cx, cy, cz) es el extremo de un vector c, este punto será el centro de nuestra elipse, en la ecuacion 1.1 serían (x0, y0). El punto (ux, uy, uz) y (vx, vy, vz) son los extremos de los vectores que me indicarán los valores de a y b. Ejemplo:
  • 77. 76 1.11. Manejo de objetos 3D con PSTricks x y z psset{unit=1.0, Alpha=45, Beta=25} begin{pspicture}(-4,-3)(4,3) pstThreeDCoor[xMin=-4,xMax=4,yMin=-4, yMax=4,zMax=3, arrows=<->] pstThreeDEllipse[linecolor=blue, linewidth=1.5pt](0,0,0)(3,0,0)(0,2,0) pstThreeDEllipse[linecolor=blue, linewidth=1.5pt](0,0,0.5)(2.5,0,0)(0,1.5,0) pstThreeDEllipse[linecolor=blue, linewidth=1.5pt](0,0,1)(2,0,0)(0,1,0) pstThreeDEllipse[beginAngle=0,endAngle=180, linecolor=green](0,0,2)(1,0,0)(0,1,0) pstThreeDEllipse[beginAngle=180,endAngle=360, linecolor=magenta](0,0,2)(1,0,0)(0,1,0) end{pspicture} Observe que la última elipse en realidad son dos semicircunferencias, una verde y la otra magenta, la perspectiva provoca que se vean como elipses. 1.11.10. Esferas La sintaxis es la siguiente: pstThreeDSphere[OP](x,y,z){r}
  • 78. 1. Gráficos con PSTricks 77 EL comando dibuja una esfera con centro en el punto (x, y, z) y de radio r, las opciones son las antes estudiadas. x y z psset{unit=0.8, Alpha=45, Beta=25} begin{pspicture}(-4,-3)(4,3) pstThreeDCoor[xMin=-4,xMax=4,yMin=-4, yMax=4,zMax=3, arrows=<->] pstThreeDSphere[linewidth=0, linecolor=green](0,0,2){0.8} pstThreeDSphere[linewidth=0, linecolor=blue](2,0,0){0.8} pstThreeDSphere[linewidth=0, linecolor=blue](0,2,0){0.8} end{pspicture} 1.11.11. Curvas paraméntricas en 3D PSTricks implementa la siguiente función: parametricplotThreeD[par](t1,t2)(u1,u2){x(t,u) y(t,u) z(t,u)} Sólo es posible usar las variables u y t. Los parámetros t1, t2 son los límites de t, u1, u2 son los límites inferior y superior de u. Recuerde que x(t, u), y(t, u) y z(t, u) se deben ingresar en la notación PostScript como lo vimos en la sección 1.9.1.
  • 79. 78 1.11. Manejo de objetos 3D con PSTricks Ejemplo: x y z psset{unit=0.8, Alpha=45, Beta=25} begin{pspicture}(-4,-2)(4,4) pstThreeDCoor[xMin=-4,xMax=4,yMin=-4, yMax=4,zMax=3, arrows=<->] parametricplotThreeD[linecolor=blue, linewidth=.25pt,xPlotpoints=200, plotstyle=curve,arrows=->](0,3.2){ t 360 mul cos t mul t 360 mul sin t mul t} end{pspicture} Ejemplo:
  • 80. 1. Gráficos con PSTricks 79 x y z psset{unit=2.6, Alpha=45, Beta=25} begin{pspicture}(-2,-2)(2,3) pstThreeDCoor[xMin=-2,xMax=2,yMin=-2, yMax=2,zMax=3, arrows=<->] parametricplotThreeD[linecolor=blue, linewidth=.25pt,xPlotpoints=200, plotstyle=curve,arrows=->](0,360)(0,360){ u sin t cos mul u sin t sin mul u cos} parametricplotThreeD[linecolor=blue, linewidth=.25pt,xPlotpoints=200, plotstyle=curve,arrows=->](0,360)(0,360){ t sin u cos mul t sin u sin mul t cos} end{pspicture}
  • 81. 80 1.11. Manejo de objetos 3D con PSTricks 1.11.12. Gráfica de funciones Para graficar funciones en el espacio, PSTricks implementa la función: psplotThreeD[OP](x0,xt)(y0,yt){f(x,y)} La funcion, recuerden, debe estar en lenguaje PostScript , sólo se admiten variables x y y. El comando dibuja la gráfica de la función f(x, y) en el dominio determinado por (x0, xt) para x y (y0, yt) para la variable y. Además, se debe tener encuenta los siguientes parámetros (ver cuadro 1.17 ). Opción Valor plotstyle Puede ser dots, line, polygon, curve, ecurve, ccurve, none (valor por defecto). y determina la forma de las líneas con que se dibujá la curva. showpoints Puede ser false/true y por omisión es false. Muestra los puntos. showpoints Puede ser false/true y por omisión es false. Muestra los puntos. xPlotpoints y yPlotpoints Por defecto es 25, y determina la cantidad de puntos a graficar. hiddenLine Por defecto es false y hace que se dibujen las líneas. Cuadro 1.17: Opciones de la función psplotThreeD Ejemplo: psset{unit=1.5, Alpha=45, Beta=20} begin{pspicture}(-3,-1.5)(6,5.5) pstThreeDCoor[xMin=-4,xMax=4,yMin=-4, yMax=4,zMax=3, arrows=<->] psplotThreeD[plotstyle=line,linecolor=blue, yPlotpoints=40,xPlotpoints=30, linewidth=0.5pt] (-1.5,1.5)(-1.5,1.5) { x 2 exp y 2 exp add x 5 div sub }
  • 82. 1. Gráficos con PSTricks 81 rput[tl](2,2){$f(x,y)=x^2 + y^2 - frac{x}{5}$ } end{pspicture} x y z f(x, y) = x2 + y2 − x 5 Recuerde que usted tiene el control sobre el dominio de las variables x y y, no sobre la variable z, tenga presente este detalle pues su gráfica puede salir de la zona delimitada. Ejemplo:
  • 83. 82 1.11. Manejo de objetos 3D con PSTricks x y z f(x, y) = cos(100x) − sin(100y) psset{unit=1.5, Alpha=45, Beta=30} begin{pspicture}(-3,-1.5)(3,4) pstThreeDCoor[xMin=-4,xMax=4,yMin=-4, yMax=4,zMax=3, arrows=<->] psplotThreeD[plotstyle=line,linecolor=blue, yPlotpoints=40,xPlotpoints=30, linewidth=0.5pt, hiddenLine=true](-2,2)(-2,2) { x 100 mul cos y 100 mul sin sub } rput[tl](-2,3.5){$f(x,y)=cos (100x) - sin (100y) $ } end{pspicture} Ejemplo:
  • 84. 1. Gráficos con PSTricks 83 x y z f(x, y) = sin2 (180x) psset{unit=1.0, Alpha=45, Beta=30} begin{pspicture}(-3,-2)(3,3) pstThreeDCoor[xMin=-4,xMax=4,yMin=-4, yMax=4,zMax=3, arrows=<->] psplotThreeD[plotstyle=ecurve,linecolor=blue, yPlotpoints=40,xPlotpoints=30, linewidth=0.5pt, hiddenLine=true](-2,2)(-2,2) { x 180 mul sin 2 exp } rput[tl](-3,2.5){$f(x,y)=sin ^2 (180x) $ } end{pspicture} Ejemplo:
  • 85. 84 1.11. Manejo de objetos 3D con PSTricks x y z f(x, y) = y2 − x2 psset{unit=1.0, Alpha=60, Beta=30} begin{pspicture}(-3,-2)(3,3) psplotThreeD[plotstyle=line,linecolor=blue, yPlotpoints=60,xPlotpoints=60, linewidth=0.5pt, hiddenLine=true, showpoints=true](-1.3,1.3)(-1.3,1.3) { y 2 exp x 2 exp sub } pstThreeDCoor[xMin=-2,xMax=2,yMin=-2, yMax=2,zMax=3, arrows=<->] rput[tl](-3,2.5){$f(x,y)=y^2-x^2$ } end{pspicture} Ejemplo:
  • 86. 1. Gráficos con PSTricks 85 x y z f(x, y) = 1 − x2 + y2 1 3 psset{unit=1.0, Alpha=60, Beta=30} begin{pspicture}(-3,-2)(3,3) psplotThreeD[plotstyle=line,linecolor=blue, yPlotpoints=60,xPlotpoints=60, linewidth=0.5pt, hiddenLine=true, showpoints=true](-1.3,1.3)(-1.3,1.3) { 1 x 2 exp y 2 exp add 1 3 div exp sub } pstThreeDCoor[xMin=-2,xMax=2,yMin=-2, yMax=2,zMax=1.5, arrows=<->] rput[tl](-3,2.5){$f(x,y)=1-left(x^2 +y^2 right)^{frac{1}{3}}$ } end{pspicture}
  • 87. 86 1.11. Manejo de objetos 3D con PSTricks
  • 88. CAPÍTULO 2 Herramientas para gráficos con PSTricks Para muchos usuarios de PSTricks, puede ser tedioso el uso de códigos más parecidos a un lenguaje de programación como Pascal o C++, que a un editor de gráficos matemáticos. El usuario de LATEX quiere que sus gráficos matemáticos queden con la mejor calidad, sin em- bargo, muchos de ellos no desean ni tienen tiempo de construir una gráfica matemática con base en instrucciones. Además, hay gráficos muy sencillos (o muy complejos) que no merecen que se tome el tiem- po necesario en construirlos de la forma tradicional. Para este tipo de usuarios, se desarrolló software como el JpicEdt© y LatexDraw©, estos programas permiten construir gráficos vector- izados y exportar su código a LATEX y PSTricks. En este capítulo mostraremos cómo implementar gráficos matemáticos con estos pro- gramas. 2.1 JpicEdt Este programa fue desarrollado por Sylvain Rainal del E.N.S.E.A de- partamento de física. Es un software libre y puede ser redistribuido 87
  • 89. 88 2.1. JpicEdt y/o modificarlo bajo los términos de la Licencia Pública General de GNU según es publicada por la Free Software Foundation. Como se mencionó anteriormente, el software es un editor de gráficos vector- izados que permite exportar a código PSTricks, Emulated LATEX y Epic/Eepic. El JpicEdt fue desarrollado en Java©, el cual debe estar instalado en el computador previamente. La instalación es muy sencilla, sólo se hace doble clic en el archivo jpicedt-install-1_4_pre_5.jar, luego, se procede a dar los parámetros de instalación, el programa se ubi- cará en su computador automáticamente. Como JpicEdt esta hecho en Java, puede funcionar en cualquier plataforma (Windows, Linux y Mac.). Para bajarlo y obtener más información, consulte la página http://jpicedt.sourceforge.net/site/index.php?language=en. Figura 2.1: Interfase principal de JPicEdt
  • 90. 2. Herramientas para gráficos con PSTricks 89 2.1.1. Ventanas JpicEdt tiene 3 ventanas principales, la primera de ella es la de trabajo. En la parte superior de esta ventana, aparecen varios menús desple- gables, el primero de ellos permite cambiar la malla o cuadrícula del área de trabajo, luego aparece un botón para activar o desactivar el “magnetismo de la malla”, es decir, la forma en como los objetos se acomodan e los vértices de la malla del área de trabajo. Luego aparece otro menú desplegable para cambiar la intensidad del magnetismo de la malla, la cual va de 10 a 0.625; ésta es muy importante para la construcción de nuestros gráficos matemáticos. En la parte media de la ventana, se encuentra el área de trabajo, el cual, esta enmarcado con una malla, en la parte superior e izquierda se encuentra la regla, una utilidad para medir o referenciar nuestros gráficos. En la parte inferior izquierda aparece una etiqueta donde se resalta la posición del mouse sobre el área de trabajo. Luego aparece la ventana de atributos, la cual, me permite cambiar las propiedades o atributos de los objetos que se construyan.
  • 91. 90 2.1. JpicEdt La ventana consta de ocho submenus: Lleno, Rayar, Trazo, Som- bra, Flechas, Polydots, Text y una opción llamada PSTricks. Lleno: Con esta opción, podemos escojer el color de relleno de los objeto cerrados, es decir, figuras planas cerradas (círculos, elipses, polígonos). La ventana muestra las opciones de colores en paletas RGB, HSB y colores predefinidos por PSTricks. Además, tiene un menú desplegable que permite escojer el tipo de textura o relleno para nuestros objetos, las opciones que maneja son: transparente (por defecto), solido, líneas verticales transparentes, líneas verticales con color de fondo, líneas horizontales transparentes y con fondo, y dos opciones para trama en forma de ladrillo con fondo trans- parente y con color de fondo. Como hemos visto, no debemos preocuparnos por el código en PSTricks para la inclusión de nuevos colores, JpicEdt lo hace automaticamente, Además la ventana cuenta con una opción de color reciente, que le permite al usuario seguir trabajando con los mismos colores.
  • 92. 2. Herramientas para gráficos con PSTricks 91 Rayar: Esta opción permite cam- biar las formas de las texturas que se impusieron a los objetos en la opción de lleno. Tiene tres op- ciones, la primera, puesta en la parte superior izquierda, permite cambiar el ancho de las líneas de las texturas; si estas son muy an- chas, se puede obtener un color sólido. La segunda opción permite cambiar la separación entre las líneas de la textura y la última opción modifica el ángulo de inclinación de las líneas. En la parte inferior se presenta un menú de colores similar a la pestaña anterior donde se pueden escoger colores de la forma RGB, HSB y predeterminado por PSTricks. Trazo: En esta pestaña, encon- tramos las opciones para el en- torno de los objetos. Inicialmente aparece un menu desplegable que me permite selecionar la forma del contorno, puede ser invisible, nor- mal, en guiones y punteada. En la parte superior derecha aparece la opción de ancho de la línea. Los dos comandos en la zona media, son usados para ajustar la sepa- ración entre los guiones y el ancho de los mismos. Tambien, allí aparece la opción para la líneas punteadas, con este comando se pueden cam- biar la separación de los puntos. La opción Overstrike hace que las líneas pierdan la capacidad de ser transparentes. Sombra: Esta opción permite aplicarle el efecto de sombra a los ob- jetos planos cerrados (polígonos, círculos, etc)
  • 93. 92 2.1. JpicEdt Sólo tiene dos parámetros, el primero modifica el ancho de la sombra y el segundo el ángulo donde esta se va a proyectar. Flechas: Permite implementar el efecto de flechas a las líneas con las mismas opciones que aparecen en la sección 1.3.1.1. La pestaña ofrece la posibilidad de cambiar el tipo de flecha al comienzo y al final de la línea, la forma y el tamaño de la misma. Polydots: Esta pestaña permite activar los puntos de una curva o una línea recta, la pestaña pre- senta un menú desplegable con los tipos de puntos dados por PSTricks. Las diferentes opciones de esta pestaña permiten cambiar el ángulo de los puntos, tamaño y escala. Text: Para los efectos de texto, la pestaña ofrece la posibilidad de cambiar el punto de referencia de la etiqueta con el texto, permitiendo ponerla en la parte inferior, superior, izquierda o derecha, además, permite cambiar el ángulo de rotación del texto. La pestaña tambien incluye una herramienta para enmarcar el texto en rectángu- los o círculos.
  • 94. 2. Herramientas para gráficos con PSTricks 93 PSTricks: En esta pestaña pode- mos incluir opciones de PSTricks que el software no maneja, sólo debemos escribirlas en el espacio de PS custom y oprimir el botón aceptar. 2.1.2. Herramientas de edición La ventana de “Caja de útiles” presenta las herramientas de edi- ción básicas para contruir nue- stros gráficos matemáticos. Inici- amlente, esta ventana la encon- traremos junto a las que apare- cen por omisión cuando el progra- ma arranca, si no es el caso, vaya al menú Útiles y allí encontrará las mismas opciones. Tambien la podemos encontrar en el menú Ventanas/Caja de útiles. Para el manejo de estas herramietas, se debe tener en cuenta que los objetos a modificarse deben estar seleccionados. En realidad, cualquier persona que haya tenido contacto con programas como FreeHand o CorelDraw no tendrá dificultad en manejarlo. Enseguida, mostraremos el uso de las diferentes herramientas de edición.
  • 95. 94 2.1. JpicEdt Permite hacer zoom en la gráfica que estamos construyendo. Selecciona los objetos que componen la gráfica. Permite editar los nodos que componen las curvas Bezier. Al seleccionar uno o varios obejto, podemos moverlos con este comando. Escala los objetos seleccionados, bien sea en forma vertical u horizontal. Rota los objetos seleccionados. Permite la inclusión de texto. Si es texto científico, recuerde ponerlo entre los comandos “$” Permite crear líneas rectas. Herramienta para crear rectángulos. Herramienta para crear paralelogramos. Permite construir curvas bezier, el fin de la curva se logra haciendo clic derecho. Igual a la anterior, pero la curva bezier es cerrada
  • 96. 2. Herramientas para gráficos con PSTricks 95 Herramienta para la creación de elipses y circunferencias. Comando para crear “tortas” o secciones de círculos. Esta herramienta es similar a la anterior, pero el arco se une por una cuerda. Tambien es similar a la anterior, pero sin la cuerda. Esta herramieta se llama herramienta cerrada, pero su diferencia consiste en imprimir a la elipse el efecto de perspectiva. Torta con efecto de perspectiva. Arco y cuerda con efecto de perspectiva. Arco sin cuerda con efecto de perspectiva. Circunferencia determinada por tres puntos, los cuales estan sobre la circunferencia. Torta determinada por tres puntos. Arco con cuerda determinada por tres puntos. Arco sin cuerda determinada por tres puntos.
  • 97. 96 2.1. JpicEdt Curva poligonal abierta “Smood” Curva poligonal cerrada “Smood” Curva de interpolación abierta Curva de interpolación cerrada Edición de puntos de anclaje para ampliar o disminuir el tamaño. 2.1.3. Preferencias y configuración JpicEdt puede ser configurado desde la ventana de preferencias, la cual, se localiza en el menú Editar/Preferencias; esta opción abre un menu con los siguientes items. General: Esta pestaña permite configurar la apariencia de las ven- tanas, el estilo de estas, así como el idioma; que puede ser, inglés, francés, español y alemán. Tambien aparece la fuente y el formato por defecto en que se exportará el código, recuerde que puede ser PSTricks, emulated LATEX y Epic/Eepic. Apariencia: En este item aparecen cinco cajas de chequeado, para configurar la forma en que apareceran las figuras dibujadas en el área de trabajo, entre ellas están: Anti-alising, Anti- alising de texto, Calidad (vs velocidad), Dither Colours y usar métrica fraccional. Plantilla/Zoom: La opción permite configurar las opciones del tamaño de la malla, así como el estilo de la malla (sólido o en puntos). Tambien se puede configurar la imantación de la malla y el Zoom. Colores: Esta pestaña sólo presenta dos items, el color de fondo del escritorio del programa y el color de la malla.
  • 98. 2. Herramientas para gráficos con PSTricks 97 Repertorios: Esta opción permite configurar las rutas del la carpeta de archivos temporales y la carpeta de inicio de JpicEdt, la cual, es necesaria para los archivos temporales que utiliza el programa. Shortcuts: La pestaña presenta una lista con los Shortcuts de las diferentes opciones, menús y herramientas. Comandos: La opción presenta campos para la configuración de las rutas de acceso al compilador de LATEX y al programa Yap. Esto debido a que JpicEdt puede compilar el documento hecho y ver un previo de su dibujo. Formato de página Permite configurar las márgenes de la zona de trabajo. LATEX Opción que permite configurar algunos parámetros esen- ciales de PSTricks, además, JpicEdt crea un documento TEX temporal, el cual puede ser configurado desde esta pestaña. Epic/Eepic y PSTrics Estas dos pestañas son muy similares a la anterior, permiten configurar el archivo temporal que se compilará, LATEX , Epic/Eepic y PSTrics tienen paquetes diferentes y pueden ser modificados o actualizados desde esta pestaña. 2.1.4. Otras herramientas de JpicEdt Además de las mencionadas, JpicEdt tiene otras utilidades que pueden ahorrar gran trabajo a los usuarios de PStricks. Inicialmente en los menús fragmentos/electricity y fragmentos/mechanic se encuen- tran macros especializados para esa área, en el primero podemos en- contrar macros como el and, or, capacitor, trancistor y voltage entre otros. Mientras que en el segundo menú, encontramos dos opciones: Frame-oxy y shock absorber. A continuación veremos un ejemplo de estos macros.
  • 99. 98 2.1. JpicEdt I & + − ≥ 1 = 1 R O y x f & ≥ 1 Otra de la herramientas y tal vez la más llamativa para los matemáti- cos, es la posibilidad de graficar curvas de ecuaciones. En el menú Scrips/math se encuentran tres opciones para hacer este tipo de grá- ficos, la primera de ellas es add curve la cual, despliega la siguiente ventana: Ésta permite incluir una o más curvas en R2. JpicEdt no usa el co- mando psplot para graficar las curvas, el programa usa la misma ecuación para encontrar los puntos que la componen y luego crear una curva bezier que emule la curva original. Como podemos apreciar en la ventana aparece la opción step, la cual, permite ajustar el incre- mento en el eje x para obtener los puntos necesarios al crear la curva,
  • 100. 2. Herramientas para gráficos con PSTricks 99 si ponemos este parámetro muy grande la curva se vera defectuosa, si el incremento es muy pequeño la curva se verá más fina pero será más pesada para el computador. Tomemos la gráfica de las funciones f y g. f(x) = sin(x) y g(x) = cos(x) La función f la graficaremos con la herramienta de JpicEdt y g la graficaremos usando PSTricks puro. Con JpicEdt tenemos 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5 6,0 6,5 7,0 7,5 8,0 8,5 9,0 9,5 −0,8 −0,6 −0,4 −0,2 −0,0 0,2 0,4 0,6 0,8 x y sin(x) Como vemos, la curva se presenta con una excelente calidad, sólo debe- mos incluir la ecuación de la curva y cambiar los parámetros de colores, tipos de línea de la curva y oprimir el botón add this curve y listo, la gráfica se crea automáticamente en la zona de trabajo, inclusive, ubica en la parte superior derecha una etiqueta con la ecuación y ad- hiere efectos de sombra. Ahora lo haremos con PSTriks puro para la función g(x) = cos(x), usaremos el comando psplot
  • 101. 100 2.1. JpicEdt g(x) = cos(x) 1 2 3 4 5 6 Como podemos ver, la gráfica de f y g son muy similares en calidad, sin embargo, la gráfica de g toma mucho más tiempo en hacerla que la de f, pues el usuario debe hacer uso de los comandos apropiados para adecuarla al documento, cambiar el color, los tamaños de letra, etc. Mientras que en la gráfica de f teniamos una agradable interface tipo Windows y el tiempo en configurar y hacerla fue mínimo. Ahora comparemos los códigos, en este caso, PSTriks puro sólo usa 7 líneas de código, mientras que la hecha por JpicEdt1 usa unas 120 líneas. Veamos el código en PStricks puro. begin{pspicture}(-1,-1)(6.5,1) rput(2,1){$g(x)=cos (x)$} footnotesize psaxes[linewidth=0.02]{<->}(0,0)(-1,-1)(6.5,1) psplot[linewidth=0.04,linecolor=blue]{0}{6.2} { x 50 mul cos } end{pspicture} Además de esta herramienta, JpicEdt tiene en el mismo menú, otra muy similar a la anterior llamada plot funtion, la cual, hace el mis- mo proceso pero con una gráfica más sencilla y con parámetros más simples. 1 Recordemos que JpicEdt exporta en código PSTricks, lo que queremos indicar es que el código hecho por el programa es más extenso.