Apuntes de LATEX
Cap´ıtulo 9-2: Dibujando con LATEX
(M´as cosas sobre PSTricks)
1 Nodos y conexiones
Cargando el paquete pst-node, podemos conectar informaci´on y poner etiquetas dentro
de una documento, sin conocer la posici´on exacta de los objetos a conectar. Se pueden
definir tres tipos de objetos:
Definiciones de nodos Para asignar un nombre y una forma a un objeto
Conexiones entre nodos Para conectar dos nodos, previamente identificados por sus
nombres
Etiquetas de conexiones Para fijar etiquetas a las conexiones
1.1 Definici´on de nodos
Para declarar que un objeto LATEX es un nodo se puede utilizar:
\rnode[Posici´on]{NombreNodo}{Objeto}
donde el argumento optativo Posici´on tiene la misma sintaxis que para el comando
\rput; se utiliza esta informaci´on para determinar, m´as adelante, el punto desde donde
saldr´an las conexiones. NombreNodo sirve para referirnos al nodo (el nombre debe con-
tener s´olo letras y numeros, comenzando por una letra) y Objeto es el elemento LATEX
correspondiente a ´ese nodo. Para utilizar nodos en un entorno pspicture, basta con
declararlos dentro del argumento de un comando \rput
Existen otras variantes para crear nodos con formas predefinidas:
\pnode(x,y){NombreNodo} → Crea un nodo 0-dimensional (punto) en las coor-
denadas (x,y).
\cnode[Par´ametros](x,y){R}{NombreNodo} → Dibuja un c´ırculo en las coor-
denadas (x,y), de radio R, y le asigna un nombre de nodo.
1
\circlenode[Par´ametros]{NombreNodo}{Objeto} → Encierra Objeto en un
c´ırculo y le asigna un nombre de nodo.
\ovalnode[Par´ametros]{NombreNodo}{Objeto} → Encierra Objeto en un ´ovalo
y le asigna un nombre de nodo
1.2 Conexiones
Para conectar dos nodos, existe una variedad de comandos, que se diferencia en el modo
en el que se establece la conexi´on (recta, curva, zig-zag, etc..). Todos ellos comienzan
por “nc” y tienen la misma sintaxis:
\ncTipodeConexion[Par´ametros]{TipoDeFlecha}{NodoA}{NodoB}
donde en Par´ametros podemos especificar diversas propiedades de la l´ınea de conexi´on
(grosor, color, tipo, etc...), y y en TipoDeFlecha si queremos puntas de flecha. NodoA y
NodoB son los nombres de los nodos que queremos conectar. Veamos ahora con ejemplos
gr´aficos sencillos los distintos tipos de conexi´on:
• \ncline
\begin{pspicture}(4,2)
\rput(1,0){\rnode{A}{Idea 1}}
\rput(4,2){\rnode{B}{Idea 2}}
\ncline[nodesep=4pt,%
linewidth=1pt]{<->}{A}{B}
% nodesep es la separaci´on entre
% un nodo y el final de la l´ınea
% de conexi´on
\end{pspicture}
Idea 2
Idea 1
• \nccurve
Los par´ametros angleA y angleB determinan la orientaci´on con la
que se establecen las conexiones
\begin{pspicture}(4,2)
\rput(1,0){\rnode{A}%
{\psframebox{Idea 1}}}
\rput(4,2){\ovalnode{B}{Idea 2}}
\nccurve[linewidth=1pt,angleA=90,%
angleB=-90]{<->}{A}{B}
\nccurve[linewidth=1pt,%
linestyle=dashed,
angleA=0,angleB=180]{<->}{A}{B}
\end{pspicture}
2
Idea 2
Idea 1
• \ncarc
\begin{pspicture}(4,2)
\rput(1,0){\circlenode{A}{X}}
\rput(4,2){\circlenode{B}{Y}}
\psset{nodesep=3pt,%
linewidth=1.5pt,arrowsize=8pt}
\ncarc{->}{A}{B}
\ncarc{->}{B}{A}
\end{pspicture}
Y
X
• \ncbar
angle controla los ´angulos a los que salen las conexiones,
y arm la longitud del brazo de la conexi´on
\rnode{A}{Conexiones}
\rnode{B}{dentro}
\rnode{C}{de} un \rnode{D}{texto}
\ncbar[linewidth=1.2pt,nodesep=3pt,
angle=90]{->}{A}{D}
\ncbar[linewidth=1.2pt,nodesep=3pt,
angle=-90,arm=20pt]{<-}{B}{C}
Conexiones dentro de un texto
• \ncdiag (n´otese en en ejemplo como se pueden modificar los par´ametros angleA,
angleB, armA y armB
\begin{pspicture}(4,2)
\rput(1,0){\rnode{A}%
{\psframebox{Idea 1}}}
\rput(4,2){\ovalnode{B}{Idea 2}}
\ncdiag[linewidth=1.5pt,angleA=90,
angleB=-90,linearc=2mm]{->}{A}{B}
\ncdiag[linewidth=1.5pt,%
linestyle=dashed,
angleA=0,angleB=-45,
armA=1.5,armB=0.8]{<-}{A}{B}
\end{pspicture}
Idea 2
Idea 1
3
• \ncdiagg
Similar al anterior, pero con armB=0 (s´olo dos brazos)
\columnbreak \vspace*{0.1cm}
\cnode(0,0){4pt}{a}
\rput[l](3,1){\rnode{b}{H}}
\rput[l](3,-1){\rnode{c}{T}}
\ncdiagg[angleA=180,armA=2cm,
nodesepA=3pt]{b}{a}
\ncdiagg[angleA=180,armA=2cm,
nodesepA=3pt]{c}{a}
H
T
• \ncangle
Tres segmentos en ´angulo recto; se pueden especificar los ´angulos
de uni´on angleA y angleB, as´ı como el brazo armB
\rput(1,0){\rnode{A}%
{\psframebox{Nodo A}}}
\rput(4,-2){\ovalnode{B}{Nodo B}}
\ncangle[angleA=-90,angleB=90,%
armB=1cm,linestyle=dashed]{A}{B}
Nodo A
Nodo B
• \ncangles Cuatro segmentos en ´angulo recto; se pueden especificar los ´angulos
de uni´on angleA y angleB, as´ı como los brazos armA y armB
\rput(1,0){\rnode{A}%
{\psframebox{Nodo A}}}
\rput(4,-2){\ovalnode{B}{Nodo B}}
\ncangles[angleA=-90,angleB=0,%
armA=1cm,armB=0.5cm]{A}{B}
Nodo A
Nodo B
• \ncloop Se pueden especificar los ´angulos angleA, angleB (con una diferencia
de ±180 grados) los brazos armA, armB, y la distancia del bucle loopsize; n´otese
como tambi´en se puede especificar arm, que equivale a hacer armA=armB
\psset{linewidth=1.5pt,
arrowsize=7pt}
\rnode{a}{\psframebox{\huge Bucle}}
\ncloop[angleA=0,
angleB=180,loopsize=1,
arm=.5cm,linearc=.2]{->}{a}{a}
\ncloop[angleA=90,angleB=-90,
loopsize=2,arm=1cm,linearc=.2,
linestyle=dashed]{->}{a}{a}
4
Bucle
• \nccircle Coloca un circulo alrededor del nodo, se puede cambiar el ´angulo
de inicio angleA; su sintasis es: \nccircle{NodoA}{Radio}
\circlenode{A}{\Large X}
\nccircle{->}{A}{1.2cm}
\nccircle[angleA=90,%
linestyle=dashed]{->}{A}{0.8cm}
X
1.3 Etiquetas
Para poner etiquetas a las conexiones, existen varias posibilidades b´asicas:
\naput[Par´ametros]{Objeto} −→ Coloca Objeto encima de la conexi´on
\nbput[Par´ametros]{Objeto} −→ Coloca Objeto debajo de la conexi´on
\ncput[Par´ametros]{Objeto} −→ Coloca Objeto en medio de la conexi´on
\ncput*[Par´ametros]{Objeto} −→ Coloca Objeto en medio de la conexi´on,
partiendo la l´ınea de conexi´on
Todos estos comandos deben escribirse inmediatamente a continuaci´on del que de-
fine la conexi´on (\ncline, \nccurve, etc...). Podemos ajustar mediante par´ametros
la rotaci´on de la etiqueta (nrot= ´Angulo) y la posici´on de la misma a lo largo de la lista
de conexi´on (npos=N´umero); ´esta se determina a trav´es de un n´umero que ha de ser una
fracci´on del n´umero total de segmentos que posea la conexi´on; as´ı, para cuatro segmentos
(\ncangles) puede variar entre 0 y 4; para 3 segmentos (\ncangle, por ejemplo) entre
0 y 3, etc...
\begin{pspicture}(5,4)
\rput(1,2){\circlenode{A}{X}}
\rput(3,0){\circlenode{B}{Y}}
\rput(3,4){\circlenode{C}{T}}
\rput(5,2){\circlenode{D}{U}}
\ncarc{A}{B}\naput[npos=0.3]{a1}
\nbput[npos=0.7]{a2}
\ncangle[armB=6mm,angleA=0,
angleB=180]{B}{D}
\ncput[npos=1]{b1}\ncput[npos=1.5]
{\pscirclebox[fillstyle=solid,
fillcolor=gray]{\bfseries b2}}
\ncline{->}{D}{C}\ncput*{c2}
\ncline{->}{A}{C}\naput[nrot=45]{d1}
\end{pspicture}
5
X
d1
a1
a2
T
c2
b2
U
Y
b1
1.4 El entorno psmatrix
El paquete pst-node proporciona, adem´as, el entorno psmatrix, el cual posee la misma
estructura que el entorno matem´atico matrix. En ´este entorno, cada celda define
autom´aticamente un nodo etiquetado por sus coordenadas de posici´on en la matrix.
Podemos utilizar comandos de conexiones empleando tales coordenadas de posici´on,
as´ı como a˜nadir etiquetas a las conexiones, con la sintaxis ^ / _ / > / < para etique-
tas arriba/abajo/derecha/izquierda, respectivamente. La separaci´on entre filas y entre
columnas se cambia con los par´ametros rowsep y colsep; tambi´en pueden enmarcarse
los nodos con el par´ametro mnode (que puede tomar los valores circle, oval, tri, dia,
...). Ve´anse los siguientes ejemplos (notando c´omo, en el primer caso, al tener formato
matem´atico algunos de los elementos de matriz, se debe abrir y el modo matem´atico
antes de comenzar psmatrix):
$
\begin{psmatrix}
[colsep=1.5cm,rowsep=1.5cm]
U & & \\ & X\times_Z Y & X \\
& Y & Z % (Definici´on de la matriz)
\psset{arrows=->,nodesep=1mm}
\everypsbox{\scriptstyle}
% (para hacer etiquetas peque~nas)
\ncline{1,1}{2,2}_{y}
\ncline[linestyle=dashed,
doubleline=true]{-}{1,1}{2,3}^{x}
\ncline[linecolor=red]{2,2}{3,2}<{q}
\ncline[linecolor=red]{2,2}{2,3}_{p}
\ncline[linecolor=red]{2,3}{3,3}>{f}
\ncline[linecolor=red]{3,2}{3,3}_{g}
\end{psmatrix}
$
\begin{psmatrix}[fillstyle=solid,
fillcolor=yellow,mnode=circle,
colsep=1.5] & p \\ q & r \\ & s & t
\end{psmatrix}
\psset{linecolor=blue,arrows=->,
labelsep=1mm,shortput=nab}
\nccircle{1,2}{0.5cm}^{6}
\ncline{1,2}{2,1}^{12}
\ncline{1,2}{2,2}^{8}
\ncline{1,2}{3,3}^{9}
\ncline{2,1}{2,2}^{5}
\ncline{2,2}{3,2}^{3}
\ncline{3,3}{2,2}^{10}
\ncarc[arcangle=10]{3,3}{3,2}^{7}
\ncarc[arcangle=10]{3,2}{3,3}^{4}
6
U
x
y
X ×Z Y
q
Y
X
f
Z
p
g
12
5
q
6
p
8
3
r
s
9
10
4
7
t
2 Dibujando funciones
Hemos visto anteriormente el comando \dataplot, ´util para representar conjuntos de
datos. Por otra parte, el paquete pst-plot proporciona dos comandos para representar
gr´aficamente funciones matem´aticas dependientes de una variable:
\psplot[Par´ametros]{xmin}{xmax}{funci´on} −→ Para representar funciones de la
forma y = f (x)
\parametricplot[Par´ametros]{tmin}{tmax}{funci´on} −→ Para representar funciones
en forma param´etrica: (x(t), y(t))
En ambos casos, se deben especificar los valores m´aximo y m´ınimo para los que se cal-
cula el valor de la funci´on. Podemos cambiar el n´umero de puntos en los que se evaluar´a
la funci´on a trav´es del par´ametro plotpoints (por defecto, igual a 50).
La forma de la funci´on debe expresarse en lo que se conoce como “Reverse Polish
Notation” (RPN). As´ı, por ejemplo, para representar la funci´on y = x3 − x el valor
del argumento funci´on debe ser igual a: “x 3 exp x sub” (siempre la inc´ognita debe
escribirse como “x”, en el caso de funciones expl´ıcitas, y “t” para funciones en forma
param´etrica). Afortunadamente, dado que esta notaci´on es bastante compleja, LATEX
proporciona una herramienta de traducci´on; cargando el paquete pst-infixplot podemos
cambiar de la notaci´on RPN a la notaci´on normal (infix). El p
Comentarios de: Apuntes de LATEX Capítulo 9-2: Dibujando con LATEX (0)
No hay comentarios