Unam
Unam
Unam
Francisco
Solsona y Elisa Viso
Universidad, explorando nuevos sistemas de cmputo,
programando, o dando clases, nos encontrars discutiendo nuevos proyectos e ideas para difundir y ensear computacin. As
nacieron, hace ya ms de un lustro, las ideas plasmadas en el libro
MANUAL DE SUPERVIVENCIA EN
que tienes en tus manos. Por un lado intenta ser un vehculo para
introducirte al mundo del software libre, a Linux y a la prograLINUX
macin y por el otro, un manual de supervivencia y referencia de
aplicaciones tiles para consolidarte como programador.
La vida del computlogo es muy divertida y llena de
emociones al trabajar con aplicaciones de software, sistemas de
Francisco Solsona
cmputo y en general, con nuevas tecnologas. Algunas veces, sin
embargo, moverte en el mundo de posibilidades que ofrece la
Elisa Viso
computacin es abrumador, sobre todo en el terreno del software
Temas de computacion
MANU
AL DE SUPERVIVENCIA EN LINUX
cionales suelen ofrecer.
Imgen de portada:
Naturaleza Muerta (leo sobre lienzo)
Pablo Picasso
10 de abril de 1947
Francisco
Solsona y Elisa Viso
Universidad, explorando nuevos sistemas de cmputo,
programando, o dando clases, nos encontrars discutiendo nuevos proyectos e ideas para difundir y ensear computacin. As
nacieron, hace ya ms de un lustro, las ideas plasmadas en el libro
MANUAL DE SUPERVIVENCIA EN
que tienes en tus manos. Por un lado intenta ser un vehculo para
introducirte al mundo del software libre, a Linux y a la prograLINUX
macin y por el otro, un manual de supervivencia y referencia de
aplicaciones tiles para consolidarte como programador.
La vida del computlogo es muy divertida y llena de
emociones al trabajar con aplicaciones de software, sistemas de
Francisco Solsona
cmputo y en general, con nuevas tecnologas. Algunas veces, sin
embargo, moverte en el mundo de posibilidades que ofrece la
Elisa Viso
computacin es abrumador, sobre todo en el terreno del software
Temas de computacion
MANU
AL DE SUPERVIVENCIA EN LINUX
cionales suelen ofrecer.
Imgen de portada:
Naturaleza Muerta (leo sobre lienzo)
Pablo Picasso
10 de abril de 1947
FRANCISCO SOLSONA
MANUAL
SUPERVIVENCIA
EN
ELISA VISO
(COORDINADORES)
DE
LINUX
FACULTAD
DE
CIENCIAS, UNAM
2007
ndice general
Prefacio
XII
1. Introduccin a Unix
1
1.1. Historia . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .
1
1.1.1. Sistemas UNIX libres . .
. . .
. . . . . . . . . . . . .
2
1.1.2. El proyecto GNU . . . . .
. . .
. . . . . . . . . . . . .
3
1.2. Sistemas de tiempo compartido . .
. . .
. . . . . . . . . . . . .
4
1.2.1. Los sistemas multiusuario
. . .
. . . . . . . . . . . . .
4
1.3. Inicio de sesin . . . . . . . . . . . . .
. . . . . . . . . . . . .
5
1.4. Emacs . . . . . . . . . . . . . . .
. . .
. . . . . . . . . . . . .
6
1.4.1. Introduccin a Emacs . . .
. . .
. . . . . . . . . . . . .
6
1.4.2. Emacs y t . . . . . . . .
. . .
. . . . . . . . . . . . .
7
. .
10
. .
.
14
.
14
.
18
.
20
.
20
. .
. .
. .
. .
.
.
.
.
.
. .
. .
.
9
.
.
.
.
.
10
.
.
.
.
.
.
.
.
.
.
.
9
3. Sistema de Archivos
23
3.1. El sistema de archivos . . . . . . . . . . . . . .
. . . . . . . . . . . . . 23
3.1.1. Rutas absolutas y relativas . . . . . . .
. . . . . . . . . . . . . 26
3.2. Movindose en el rbol del sistema de archivos
. . . . . . . . . . . . 27
3.2.1. Permisos de archivos . . . . . . . . . .
. . . . . . . . . . . . . 30
3.2.2. Archivos estndar y redireccionamiento
. . . . . . . . . . . . . 34
3.3. Otros comandos de Unix . . . . . . . . . . . .
. . . . . . . . . . . . . 37
ii
4. Edicin
55
4.1. La guerra de los editores de texto . . . . .
. . . . . . . . . . . . . 55
4.1.1. Vieja guardia contra nueva guardia
. . . . . . . . . . . . . 56
4.2. Kate: un editor para programadores . . .
. . . . . . . . . . . . . 56
4.2.1. Introduccin . . . . . . . . . . .
. . . . . . . . . . . . 56
4.2.2. Empezando a utilizar Kate . . . .
. . . . . . . . . . . . . 57
4.2.3. Editando archivos . . . . . . . . .
. . . . . . . . . . . . . 59
4.3. Emacs . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 64
4.3.1. Comandos . . . . . . . . . . . .
. . . . . . . . . . . . . 65
4.3.2. Movimiento . . . . . . . . . . . .
. . . . . . . . . . . . . 66
4.3.3. Matando y borrando . . . . . . .
. . . . . . . . . . . . . 67
4.3.4. Reencarnacin de texto . . . . . .
. . . . . . . . . . . . 68
4.3.5. Regiones . . . . . . . . . . . . .
. . . . . . . . . . . . . 68
4.3.6. Rectngulos . . . . . . . . . . . .
. . . . . . . . . . . . 68
4.3.7. Registros . . . . . . . . . . . . .
. . . . . . . . . . . . . 69
4.3.8. Archivos . . . . . . . . . . . . .
. . . . . . . . . . . . . 70
4.3.9. Buscar . . . . . . . . . . . . . .
. . . . . . . . . . . . . 70
4.3.10. Reemplazar . . . . . . . . . . . .
. . . . . . . . . 70
4.3.11. Guardar . . . . . . . . . . . . . .
. . . . . . . . . . . . . 71
4.3.12. Ventanas . . . . . . . . . . . . .
. . . . . . . . . . . . . 71
4.3.13. Marcos (frames) . . . . . . . . .
. . . . . . . . . . . . . 71
4.3.14. Ayuda en lnea . . . . . . . . . .
. . . . . . . . . . . . 72
4.3.15. Lista de buffers . . . . . . . . . .
. . . . . . . . . . . . . 72
4.3.16. Anzuelos (Hooks), setq y otros . .
. . . . . . . . . . . . . 72
4.3.17. Ortografa . . . . . . . . . . . . .
. . . . . . . . . . . . 73
4.3.18. Extendiendo Emacs . . . . . . . .
. . . . . . . . . . . . . 74
iii
5. Internet
77
5.1. Redes de computadoras . . . . . . . . . . . . . . .
. . . . . . . . .
77
5.1.1. Relacin cliente-servidor . . . . . . . . . .
. . . . . . . .
78
5.1.2. TCP/IP . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
79
5.2. Web . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
80
5.3. Redes y direcciones . . . . . . . . . . . . . . . . .
. . . . . . . . .
81
5.3.1. Domicilios estndar en Internet . . . . . .
. . . . . . . .
81
5.3.2. Nomenclatura antigua e internacional . . .
. . . . . . . . .
81
5.4. WWW . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
82
5.4.1. URL: especi cacin de objetos en Internet
. . . . . . . .
83
5.4.2. Navegadores . . . . . . . . . . . . . . . .
. . . . . . . . .
83
5.4.3. Google . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
85
5.4.4. Wikipedia . . . . . . . . . . . . . . . . . .
. . . . . . . . .
85
5.5. Los programas de correo de Unix . . . . . . . . . .
. . . . . . . . .
86
5.6. Netiquete . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
87
5.6.1. Algunos puntos del netiquete . . . . . . . . .
. . . . . . . . .
87
5.7. KMail: lector de correo electrnico . . . . . . . . .
. . . . . . . .
89
5.7.1. Introduccin . . . . . . . . . . . . . . . .
. . . . . . . .
89
5.7.2. Utilizando KMail . . . . . . . . . . . . . .
. . . . . . . . .
90
5.8. FTP . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
93
5.8.1. Qu es un FTP annimo? . . . . . . . . .
. . . . . . .
93
5.8.2. Comandos para FTP . . . . . . . . . . . .
. . . . . . . . .
93
5.9. SSH: Secure Shell . . . . . . . . . . . . . . . . . .
. . . . . . . . .
95
5.9.1. Accediendo a sistemas remotos . . . . . .
. . . . . . . . .
96
5.9.2. Copiando archivos entre sistemas . . . . .
. . . . . . . . .
96
5.10. PGP: Pretty Good Privacy . . . . . . . . . . . . .
. . . . . . . . .
97
5.10.1. Funcionamiento de PGP . . . . . . . . . .
. . . . . . . . .
98
5.11. RSS: sistema de noticias . . . . . . . . . . . . . .
. . . . . . . . .
99
5.11.1. Introduccin . . . . . . . . . . . . . . . .
.
5.12.
. .
.
.
.
.
5.13.
. .
.
.
5.14.
. .
.
. . . . . .
99
5.11.2. Akregator . . . . . . . . . . . . . . . . . .
. . . . . . .
99
Mensajera instantnea . . . . . . . . . . . . . . .
. . . . . . 101
5.12.1. Introduccin . . . . . . . . . . . . . . . .
. . . . . . 101
5.12.2. Kopete . . . . . . . . . . . . . . . . . . .
. . . . . . . 101
5.12.3. Creando cuentas . . . . . . . . . . . . . .
. . . . . . . 103
5.12.4. Funciones bsicas . . . . . . . . . . . . . .
. . . . . . 104
5.12.5. Extensiones . . . . . . . . . . . . . . . . .
. . . . . . . 105
Rdesktop: Remote Desktop Protocol Client . . . .
. . . . . . . 106
5.13.1. Utilizando Rdesktop . . . . . . . . . . . .
. . . . . . . 106
Kontact, una suite de productividad en KDE . . . .
. . . . . . . 106
5.14.1. Resumen . . . . . . . . . . . . . . . . . .
. . . . . . . 108
5.14.2. Correo, KMail . . . . . . . . . . . . . . .
. . . . . . . 108
iv
.
. .
5.15.
. .
5.14.3.
. .
5.14.4.
. .
Emacs
. .
5.15.1.
. .
5.15.2.
. .
5.15.3.
. .
5.15.4.
. .
5.15.5.
. .
5.15.6.
. .
Contactos, KAddressBook . . . . . . . .
. . . . . . 108
Calendario y pendientes con KOrganizer
. . . . . . 112
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 119
VM . . . . . . . . . . . . . . . . . . . .
. . . . . . 121
BBDB . . . . . . . . . . . . . . . . . . .
. . . . . . 128
w3m . . . . . . . . . . . . . . . . . . .
. . . . . . 131
ERC . . . . . . . . . . . . . . . . . . . .
. . . . . . 136
TRAMP . . . . . . . . . . . . . . . . . .
. . . . . . 139
Diccionario . . . . . . . . . . . . . . . .
. . . . . . 140
6. LATEX
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
143
6.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 143
6.2. Componentes de un texto . . . . . . . . . . . . . . . .
. . . . . . . . . . 144
6.3. Ambientes para formato . . . . . . . . . . . . . . . .
. . . . . . . . . . 145
6.3.1. Posibles errores . . . . . . . . . . . . . . . . .
. . . . . . . . . . 147
6.4. Formato general de un documento . . . . . . . . . . .
. . . . . . . . . . 149
6.4.1. Cartas . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 152
6.5. Tipos y tamaos de letras . . . . . . . . . . . . . . . .
. . . . . . . . . 153
6.6. Listas de enunciados o prrafos . . . . . . . . . . . . .
. . . . . . . . . 156
6.6.1. Numeraciones . . . . . . . . . . . . . . . . .
. . . . . . . . . . 157
6.6.2. Listas marcadas . . . . . . . . . . . . . . . . .
. . . . . . . . . . 160
6.6.3. Descripciones . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 161
6.6.4. Listas ms compactas . . . . . . . . . . . . . .
. . . . . . . . . 163
6.7. Tablas . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 164
6.7.1. Multicolumnas . . . . . . . . . . . . . . . . .
. . . . . . . . . . 166
6.7.2. Separacin de renglones y columnas . . . . . .
. . . . . . . . . 168
6.7.3. Lneas incompletas verticales y horizontales
. . . . . . . . 172
6.7.4. Espacio entre los renglones . . . . . . . . . . .
. . . . . . . . . . 173
6.8. Matemticas en LATEX . . . . . . . . . . . . . . . . . .
. . . . . . . . . 174
6.8.1. Frmulas matemticas . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
. . . . . . . . . 176
6.9. Emacs y LATEX . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 178
6.9.1. Anotaciones en los smbolos . . . . . . . . . .
. . . . . . . . . 192
6.9.2. Arreglos de frmulas . . . . . . . . . . . . . .
. . . . . . . . . 193
6.10. Imgenes y guras . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 197
6.10.1. Tablas, guras, etc. . . . . . . . . . . . . . . .
. . . . . . . . . 197
6.10.2. Cortando guras . . . . . . . . . . . . . . . .
. . . . . . . . . 204
6.10.3. Colores . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 205
6.10.4. Dibujando objetos geomtricos . . . . . . . . .
. . . . . . . . . 207
6.10.5. Lneas . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 207
6.10.6. Acomodando objetos . . . . . . . . . . . . . .
. . . . . . . . . . 226
6.11. Referencias e ndices . . . . . . . . . . . . . . . . . .
. . . . . . . . . 231
v
.
.
.
6.12.
. .
.
. .
231
. .
. . . . . . 237
.
. . .
. . . . . . . 237
. . .
. . . . . . . 238
. . .
. . . . . . . 241
. . .
. . . . . . . 242
.
.
.
.
.
.
.
.
.
.
7. Lenguajes de marcado
7.1. XML . . . . . .
. . . . . .
7.2. HTML . . . . . .
. . . . . .
7.2.1. XHTML
. . . . . .
7.3. CSS . . . . . . .
. . . . . .
7.3.1. Javascript
. . . . . .
7.4. Emacs . . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
245
.
246
.
249
.
249
.
250
.
253
.
255
.
.
.
.
.
.
.
.
.
.
.
.
271
.
272
272
273
275
278
.
.
.
.
.
.
283
285
289
289
289
290
298
299
299
301
301
305
vi
9.5.
9.6.
9.7.
9.8.
A. Distribuciones de Linux
A.1. Ubuntu
. . . . .
A.1.1.
. . . . .
A.1.2.
. . . . .
A.2. Debian
. . . . .
A.2.1.
. . . . .
A.2.2.
. . . . .
A.3. Fedora
. . . . .
A.3.1.
. . . . .
A.3.2.
. . . . .
. . .
Filosofa
. .
Manejo de
. . .
. . . . .
. . .
Filosofa
. .
Manejo de
. . .
. . . . .
. . .
Filosofa
. .
Manejo de
. . . . .
. .
. . . . .
. . .
software
. .
. . . . .
. .
. . . . .
. . .
software
. .
. . . . .
. .
. . . . .
. . .
software
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
337
.
337
.
337
.
338
.
340
.
340
.
340
.
340
.
340
.
341
ndice de
guras
3.1.
.
3.2.
. .
3.3.
. .
3.4.
. .
3.5.
. .
3.6.
. .
3.7.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
11
. .
12
.
.
.
. .
12
. .
. . 14
. . .
. . 15
. . .
. . 16
. . .
. . 16
. . .
. . 18
. . .
. . 19
. . .
. . 20
25
.
.
29
47
48
49
49
50
5.6.
.
KAddressBook . . . . . . .
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
. .
109
viii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . 231
6.13. Ejemplo de LATEX usando BIBTEX
. . . . . . . . . . . 233
6.14. Salida de LATEX al ejecutar BIBTEX . . . . . . .
. . . . . . . . . . . . . . 234
6.15. Ejemplo de una base de datos BIBTEX . . . . .
. . . . . . . . . . . . . . 235
6.16. Ejemplo usando los estilos BIBTEX . . . . . . .
. . . . . . . . . . . . . . 236
6.17. Preview en accin . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 243
.
.
.
.
ndice de tablas
1.
x
5.17.
.
5.18.
. . .
5.19.
. . .
5.20.
. .
5.21.
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
135
.
136
.
137
.
138
.
141
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
. .
6.25.
.
6.26.
.
6.27.
.
6.28.
.
6.29.
.
6.30.
.
6.31.
.
6.32.
. .
6.33.
. .
6.34.
. .
. . . . . . . . . . 205
Colores bsicos con los que se cuenta . . . . . .
. . . . . . . . . . 206
Modi cadores para el trazo de lneas y guras . .
. . . . . . . . . 212
Opciones de grosor y estilos de lneas . . . . . .
. . . . . . . . . . 213
Ejemplos de guras en TikZ . . . . . . . . . . .
. . . . . . . . . . 214
Lneas dobles . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 214
Tipos de puntas de echas en TikZ . . . . . . . .
. . . . . . . . . . 215
Figuras geomtricas que se pueden lograr en TikZ
. . . . . . . . . . 216
Gra cacin de funciones comunes en TikZ . . .
. . . . . . . . . 218
Smbolos para marcar curvas que se gra can . . .
. . . . . . . . . 219
Emacs: comandos de AUCTEX . . . . . . . . . .
. . . . . . . . . . 239
. .
. .
. .
. .
. .
. .
.
. .
. .
. .
xi
8.2.
. .
8.3.
.
8.4.
. .
8.5.
.
8.6.
. .
Prefacio
Este libro presenta las aplicaciones y el enfoque que un estudiant
e de computacin o un
futuro programador debe dominar para sacar el mayor provecho de su ens
eanza profesional en programacin y, en general, en las ciencias de la computacin. Hemo
s vertido aqu
la experiencia de media docena de aos impartiendo cursos propeduticos de
supervivencia
para estudiantes de la licenciatura en ciencias de la computacin de la
Facultad de Ciencias
de la Universidad Nacional Autnoma de Mxico.
Convenciones tipogr cas
Tabla 1
Descripcin
Utilizamos este tipo de letra (font) para enfa
tizar o resaltar
Enfatizado
palabras o frases.
Las utilizamos para modismos, palabras o frase
s en ingls y
itlicas
xiv
Tabla 1 Convenciones tipogr cas
ntina de la pgina anterior
Entidad
Co
Descripcin
Este smbolo es el logo del ambiente KDE y
Distribucin y ambientes
Algunas de
A lo largo del libro encontrars muchos ejemplos que funcionarn
bien en cualquier
estas notas
distribucin de Linux. Sin embargo, y a pesar de nuestros mejores
esfuerzos, hemos incluimuestran
do aplicaciones que no son parte esencial de las distribuciones
de Linux ms utilizadas.
comandos
Cada vez que esto sucede te mostramos, en una nota al margen, el
comando que debes
ejecutar como sper-usuario para instalar dicha aplicacin.
Para lograr esto, por supuesto, nos hemos visto en la necesi
dad de utilizar una distribucin y optamos por Ubuntu y como administrador de paquetes utiliza
mos apt. Por ejemplo,
vers en notas al margen algo parecido a esto:
% smart install kate
lo que constituye (como vers en el Captulo 1) una lnea de comandos
que, al ser ejecutada,
se conecta a la red, localiza la aplicacin kate, la descarga a tu
computadora y la instala.
En el apndice A se presenta una relacin de algunas de las dist
ribuciones ms impor-
xv
entre otros datos interesantes de cada distribucin, la manera preferida de admini
strar aplicaciones.
En el apndice B se presentan las opciones que se tienen para instalar paquete
s o funciones de tu distribucin favorita. Podrs ver ah cmo compilar para instalar algunos d
e
los servicios que se presentan en este libro.
Finalmente, en el apndice C colocamos los archivos principales para tu archiv
o .emacs
que fuimos construyendo a lo largo de este material, as como los archivos necesar
ios para
correo e internet.
Introduccin a Unix
1
1.1. Historia
La primera versin de UNIX, llamada Unics, fue escrita en 1969 por Ken T
hompson.
Corra en una computadora PDP-7 de Digital. Ms adelante, los laboratorios Bel
l, el MIT
y General Electric se involucraron en la creacin del sistema Multics, grand
e en tamao,
y el primer sistema de tiempo compartido que inclua muchas ideas innovadora
s acerca
de sistemas operativos. Thompson y algunos de sus colegas admiraban las ca
pacidades de
Multics; sin embargo, pensaban que era demasiado complicado. Su idea era d
emostrar que
era posible construir un sistema operativo que proporcionara un ambiente d
e desarrollo
cmodo de una forma ms simple. Y afortunadamente, tuvieron un xito admirable e
n el
desarrollo de esta idea; a pesar de esto, UNIX es irnicamente mucho ms compl
icado de
lo que Multics nunca lleg a ser.
En 1970 Thompson, junto con Dennis Ritchie, port UNIX a la PDP-11/20. R
itchie
dise y escribi el primer compilador de C para proveer un lenguaje que pudiera
ser usado
para escribir una versin porttil del sistema. En 1973, Ritchie y Thompson re
escribieron
el kernel de UNIX, el corazn del sistema operativo, en C.
Inicialmente se otorgaron licencias gratuitas para utilizar UNIX a uni
versidades con
propsitos meramente educativos (en 1974). Esta versin fue la quinta edicin (l
as ediciones hacen referencia a las ediciones del manual de referencia de UNIX). La
sexta edicin
fue liberada en 1975; sin embargo, fue hasta la sptima edicin, liberada por
los laboratorios Bell en 1979, donde se logr la meta deseada: portabilidad; esta edic
in fue la que
sirvi como punto de partida para la generacin de este nuevo y maravilloso mu
ndo: el
mundo UNIX. sta es considerada la edicin clsica de UNIX. Las dos vertientes ms
2
Introduccin a Unix
fuertes creadas a partir de esta edicin de UNIX son: System V (no confu
ndirlo con la
quinta edicin) y el sistema BSD (Berkeley Software Distribution).
A pesar de que ambos sistemas surgieron de la misma in uencia y comp
arten muchas
caractersticas, los dos sistemas se desarrollaron con personalidades mu
y distintas. System
V es ms conservador y slido; mientras que BSD es ms innovador y experimen
tal. System
V era un sistema comercial, mientras que BSD no.
La historia es mucho ms detallada y an hay mucho que contar acerca d
el desarrollo
de cada una de estas vertientes, de las cuales surgieron todava muchas
vertientes ms de
UNIX.
En el caso de la licenciatura en Ciencias de la Computacin en la Fa
cultad de Ciencias,
como en muchas otras universidades de prestigio, el servicio al que ac
ceden los estudiantes
y la mayora de los profesores es utilizando una implementacin de UNIX, L
inux, con
computadoras conectadas en una red, por lo que todo lo que sucede entr
e los estudiantes y
la computadora ser en el contexto de esta red.
1.1.1.
El proyecto GNU
4
Introduccin a Unix
1.2. Sistemas de tiempo compartido
UNIX es un sistema de tiempo compartido. Esto signi ca que las compu
tadoras que
trabajan con UNIX pueden aceptar ms de un usuario al mismo tiempo. La c
omputadora
principal (la parte del hardware que ejecuta realmente la mayora del tr
abajo) recibe el
nombre de computadora an trin. Una de las tareas del sistema operativo es
asegurar que
los recursos de la computadora an trin se compartan entre todos los usuar
ios.
Para trabajar con UNIX normalmente usars una terminal. Una terminal
UNIX bsica
consta de una pantalla, un teclado y algunas cosas ms. No obstante, com
o se ver ms
adelante algunas terminales son ms complejas que otras.
Cada vez que oprimes una tecla, la terminal enva una seal a la compu
tadora an trin.
Como respuesta, esta ltima enva su propia seal de regreso a la terminal,
indicndole que
despliegue el carcter correspondiente en la pantalla. UNIX fue con gurado
de tal forma
que cuando la computadora an trin efecta el eco, puedes ver que lo que tec
lea se recibe
bien y que la conexin entre la computadora an trin y la terminal est intact
a.
1.2.1.
4
Esto no signi ca que la estacin de trabajo no tenga capacidades mul
tiusuario o multitarea; la estacin
de trabajo es una mquina con capacidades limitadas tanto en espacio en
disco como en velocidad de procesamiento, razn por la cual es conveniente que slo una persona la utilice
.
6
Introduccin a Unix
que le des instrucciones una vez iniciada la sesin.
Figura 1.2 Inicio de una sesin en un sistema UNIX.
Fedora Core r e l e a s e 2 ( Tettnang )
K e r n e l 2.6.5 1.385 on an i 6 8 6
l o g i n : juan
Password :
L a s t l o g i n : Tue Nov 28 11 : 2 0 : 5 4 from bar . f c i e n
c i a s . unam . mx
[ juan@estNum j d] %
Es comn equivocarse al teclear la contrasea. Si esto sucede, el sis
tema responder
con un mensaje de contrasea invlida y proceder a pedirte nuevamente el
inicio de sesin,
desde la clave de usuario:
Figura 1.3 Equivocacin al teclear la contrasea.
I n c o r r e c t password . Try again
login :
Puedes corregir la contrasea mientras no hayas oprimido la tecla Ente
r , si oprimes si
multneamente las teclas Control u 6 , lo que borra todos los carcteres
tecleados hasta
ese momento y puedes volver a empezar a teclearla. Esto es convenien
te por dos razones: la
primera de ellas, para ahorrarte el tener que volver a teclear la cl
ave de usuario y la segunda
porque el sistema te dar un nmero mximo de oportunidades (generalmente
entre tres y
cinco) para entrar en sesin, por lo que es deseable evitar introducir
mal la contrasea.
1.4. Emacs
1.4.1.
Introduccin a Emacs
1.4 Emacs
7
Decimos que es avanzado porque tiene muchas ms funciones de la
s que comnmente
encontramos en editores de pantalla, como son control de subproce
sos, facilidades para la
edicin de archivos fuente de varios lenguajes de programacin, as com
o una gran cantidad
de utileras para hacer nuestra vida ms fcil.
C h es
El que sea auto documentado signi ca que en cualquier momento p
uedes teclear una
Control
secuencia especial, que es C h, y saber cules son tus opciones; ta
mbin puedes encontrar
junto con h
qu hace cualquier comando o encontrar documentacin espec ca de un tema
.
El que sea con gurable signi ca que puedes cambiar las de niciones
de los comandos
de Emacs, es decir, controlar su comportamiento para que se adapt
e a tus necesidades o tus
preferencias.
Extensible signi ca que puedes ir ms all de la simple con guracin y
escribir coman
dos completamente nuevos, usando un lenguaje de programacin llamad
o Emacs Lisp, del
cual tambin aprenders algo en estas notas en la Seccin 9.2.
1.4.2.
Emacs y t
Ambientes gr cos
en Linux
2
2.1. Ambientes de escritorio
Un escritorio ofrece una interfaz gr ca de usuario1 para interactuar con
la computa
dora. La otra opcin para interactuar con la computadora es mediante una int
erfaz de lnea
de comandos2 . Para la mayora de las personas el escritorio ms comn es Window
s de
Microsoft, para otras cuantas MAC OS. En Linux se tienen muchos escritorio
s que puedes
utilizar en tu computadora. La base de todos estos escritorios es el siste
ma de ventanas
X, que es un sistema que provee los elementos bsicos para que se dibujen la
s ventanas y
se interacte con ellas. La interaccin ms comn entre el servidor de X y el usua
rio es
cuando el cliente est corriendo en la misma computadora que el servidor. Es
to es lo que
ocurre cuando inicias tu computadora de forma normal. Existen otras posibi
lidades como
exportar todo tu escritorio desde otra computadora o exportar algunas vent
anas.
Tomando como base a X, existen varios escritorios para Linux. Como en
la mayora de
las aplicaciones en UNIX, existen ms de una para realizar la misma tarea. A
lgunos de los
ms comunes son:
KDE
GNOME
1
GUI, del ingls Graphic User Interface
2
CLI, del ingls, Command Line Interface
10
ientes gr cos en Linux
Amb
Enlightenment
Xfce
2.2. KDE
KDE es un escritorio libre para estaciones de trabajo UNIX. La mot
ivacin de los des
arrolladores es tener un escritorio para UNIX con el que sea fcil traba
jar, y que tenga una
aplicacin equivalente a las disponibles en los sistemas operativos prop
ietarios. KDE hace
uso de QT, una caja de herramientas (toolkit) gr co de la compaia Trolltec
h. Cuando
se tom esta decisin en 1996, por el autor Matthias Ettrich3 , hubo varia
s crticas por esa
decisin. El problema es que en esas fechas QT no tena una licencia de so
ftware libre y
a la gente del proyecto GNU le preocupaba que se usara algo as para cre
ar un escritorio
que quera ser libre. Dada esta situacin se inici otro proyecto, GNOME, qu
e no hara uso
de QT y sera totalmente libre. En Noviembre de 1998 Trolltech cre una nu
eva licencia Q
Public License bajo la cual distribua a QT. Finalmente en Septiembre de
l 2000, Trolltech
liber la versin de QT para UNIX bajo la GPL, adems de la QPL, por lo que
ahora KDE
es totalmente libre.
2.2.1.
Versin de KDE
Nombre del sistema
Nombre del usuario
Versin del ncleo del sistema
2.2 KDE
13
Escritorios mltiples
Accesos rpidos
En la categora Regional y Accesibilidad, se encuentra el mdulo Acces
os rpidos de
teclado. Mediante ellos es posible asociar una accin a una combinacin de
teclas. Es de
esa forma que al presionar las teclas Alt+Tab cambias de una ventana a
otra. Existen varias
combinaciones predeterminadas como Alt+F4 para cerrar una ventana. Des
de aqu puedes
crear combinaciones de teclas para ejecutar tus acciones ms comunes sin
tener que separar
las manos del teclado.
Internacionalizacin
Hay ocasiones en las que puedes desear tener ms de una idioma con gur
ado en tu
sistema. De esa forma puedes hacer que KDE despliegue todos sus mensaj
es en el idioma
de tu preferencia. Para poder hacer eso es necesario que instales el p
aquete de interna
cionalizacin de KDE que corresponde al idioma que quieres utilizar. El
nombre de estos
paquetes es de la forma kde i18n XX en donde XX es el cdigo de dos letr
as para el idio
ma que quieres instalar. Para espaol el nombre del archivo es kde i18n
es mientras que
para italiano es kde i18n i t. Para instalar dicho paquete es necesari
o que ejecutes apt get
install kde i18n es. Una vez hecho eso puedes regresar al centro de co
ntrol y dentro de
la categora Regional y Accesibilidad, en el mdulo Pas/Regin e idioma podrs
agregar el
idioma que acabas de instalar.
posicin del te
clado afecta a todas las aplicaciones o slo a la aplicacin que est activa
en el momento en
el que realizas el cambio. Para cambiar la disposicin del teclado de fo
rma rpida puedes
usar el atajo por omisin de KDE que es CTRL+ALT+K; o si seleccionaste l
a opcin para
mostrar la bandera, puedes hacer click sobre ella.
2.2 KDE
15
provee al usuario de una interfaz sencilla para poder quemar CD o DV
D. Hay que sealar
que K3b es slo la interfaz gr ca ya que el trabajo real lo llevan a cabo
las aplicaciones
cdrecord, cdrdao y growisofs. En la gura 2.6 se muestra la ventana in
icial de K3b.
Figura 2.5 El escritorio
2.2 KDE
17
portantes son Grabando y Descripcin del volumen. En la primera es neces
ario seleccionar
cul dispositivo se va a usar para quemar el disco y a qu velocidad, qu mo
do de grabacin
y qu opciones queremos emplear. En los modos de grabacin puedes seleccio
nar uno de
los siguientes:
DAO
TAO
l disco.
En bruto No procesa los datos (til para copiar imgenes).
un disco de datos.
5
Para mayor informacin sobre Emacs y el proyecto GNU, visita http:
//www.gnu.org.
6
XEmacs es otra versin de Emacs. Su nfasis est en el soporte de inte
rfaces gr cas de usuario. Algunos
de los autores del presente trabajo usamos XEmacs y otros Emacs; sin
embargo, prcticamente todo lo que
veremos aqu puede ser usado, sin cambio alguno, en ambas versiones. Si
quieres ms informacin sobre
XEmacs visita el sitio, http://www.xemacs.org.
Sistema de
Archivos
3
3.1. El sistema de archivos
El sistema de archivos de Unix es la forma en la que los usuarios y el
sistema operativo
organizan su informacin. ste consiste de un conjunto de archivos, cada uno d
e los cuales
tiene un nombre llamado nombre de archivo. Hay tres clases de archivos:
Archivos regulares, que contienen informacin.
Directorios1 , que contienen un conjunto de archivos. Los conjunto
s de archivos se
identi can por el nombre del directorio que los agrupa.
Archivos especiales de varias clases:
Archivos especiales de dispositivo, que proveen acceso a dispo
sitivos tales co
mo terminales o impresoras.
Archivos especiales FIFO (First In First Out, cola), algunas v
eces llamados
named pipes, que proveen un canal para comunicacin entre proc
esos indepen
dientes y que tienen un nombre asociado.
Como la mayora de los sistemas operativos modernos, Unix organiza su sis
tema de
archivos como una jerarqua de directorios. La jerarqua de directorios es un r
bol (tree),
pero dibujado como un rbol de cabeza o de lado. Un directorio especial, roo
t, es la
1
Los directorios tambin se conocen como carpetas.
24
istema de Archivos
raz de la jerarqua. Ms adelante veremos comandos para navegar y modi car el rbol
de
directorios.
Un directorio puede contener subdirectorios, archivos regulares y archi
vos especiales.
Unix trata a los subdirectorios como tipos particulares de archivos. Si uno
despliega los
contenidos de un directorio, los subdirectorios se listan junto con los dems
archivos.
Unix ve a un archivo, no importando su tipo, como una sucesin de bytes,
almacenados
en dispositivos externos como un disco duro, un diskette, un CD, un DVD o u
na unidad de
almacenamiento USB. Los programas que usan al archivo identi can cualquier es
tructura
interna que el archivo pueda tener.
Un nombre de archivo puede tener hasta 255 carcteres en la mayora de los
sistemas;
antes se limitaba el tamao de un nombre a 14 carcteres.
El nombre de un archivo puede contener cualquier carcter excepto / o el ca
rcter
nulo; sin embargo, algunos otros como & y (espacio en blanco) pueden causar p
roble
mas por sus signi cados especiales para su interpretacin en la lnea de comandos
. Si tu
sistema permite carcteres fuera del conjunto ASCII, tales como letras acentu
adas (como
nuestra letra ), tambin se puedes usarlas para nombrar archivos. Los nombres
de archivos
son sensibles a las maysculas y minsculas, esto es, archivo y Archivo identi ca
n a dos
archivos distintos. Por convencin, los archivos cuyo nombre comienza con un
punto (.),
llamados dot les, por lo general se usan como archivos de con guracin para prog
ramas.
Algunos programas esperan que sus archivos de entrada y salida estn comp
uestos de un
identi cador seguido de un punto y luego una extensin. En general es una conve
ncin muy
til para el usuario utilizar extensiones en los nombres de sus archivos para
identi carlos
fcilmente. Por ejemplo:
txt
Se re ere a archivos de texto
jpg Se re ere a imgenes en formato JPEG
java Programas de Java
cc
Programas de C++
tex Documentos para LATEX
c
Programas de C
En el caso de los sistemas Unix, el nmero de carcteres en la extensin no e
st li
mitado, ms que en cuanto a que el nombre total del archivo no puede tener ms
de 255
carcteres.
En Unix, como ya mencionamos y al igual que en otros sistemas operativo
s, los archivos
se almacenan en una estructura jerrquica de rbol, cuyo primer nivel es el dir
ectorio raz, el
cual se denota por el carcter /. Dicho directorio almacena todos los archivos
del sistema,
que a su vez pueden ser directorios.
En los sistemas Unix, cada usuario tiene un directorio personal, en el
cual almacena
sus archivos. Dicho directorio se conoce como el hogar (home). Una vez que
entres en
sesin, cada programa que se ejecuta se encuentra situado en un directorio de
trabajo. El
shell inicia, por omisin, en el directorio hogar del usuario. Un ejemplo sim
pli cado de un
fulano
tareas
Tarea1
vaz
sbin
win98
26
Sistema de Archivos
3.1.1.
Las rutas son expresiones que se usan para identi car un archivo o u
n conjunto de ar
chivos. Se construyen bajando por el rbol del sistema de archivos, como
el que se muestra
en la gura 3.1.
Para referirse al directorio raz se utiliza el carcter /; a partir del
directorio raz se
puede descender en la jerarqua de directorios, siguiendo ramas del rbol,
hasta llegar al
archivo o directorio deseado, separando cada directorio con el carcter /.
Por ejemplo,
para referirse al archivo llamado ash que se encuentra en el directori
o bin, podemos usar
la ruta /bin/ash.
Cuando se hace referencia a un archivo o directorio a partir del d
irectorio raz utilizando
una ruta, se dice que es una ruta absoluta. No es necesario referirse
a un archivo o directorio
a partir de la raz, sino que tambin se puede hacer a partir del director
io de trabajo, es decir,
en el directorio en el que el usuario se encuentra parado. Cuando una
referencia a un archivo
o directorio se hace a partir del directorio de trabajo, se dice que e
s una ruta relativa.
La forma de presentar una ruta relativa es similar a la usada por
las rutas absolutas, con
la diferencia de que al principio no se pone el smbolo /. As, el descens
o en la jerarqua
por las ramas del rbol no se lleva a cabo a partir de la raz sino a part
ir del directorio de
trabajo. Por ejemplo, supn que tu clave de usuario es fulanito y tu dir
ectorio hogar es
/home/fulanito. Al iniciar una sesin te encontrars en este directorio. S
upongamos que te
quieres referir al archivo Tarea1 que est en el directorio tareas de tu
propio directorio.
Dicho archivo se representa usando la ruta absoluta
/home/fulanito/tareas/Tarea1
y usando una ruta relativa
tareas/Tarea1.
El directorio actual se denota por . y su padre se llama ... Haciendo
uso de dicha
notacin puedes usar trayectorias que vayan hacia arriba o hacia abajo e
n la jerarqua de
directorios. Siguiendo con el ejemplo anterior, si el directorio de tr
abajo es /home/fulani
to/tareas, entonces la ruta relativa del archivo Ejemplo.java en el di
rectorio algoritmos
del usuario fulanito es
../algoritmos/Ejemplo.java
El signi cado de esta ruta es: Estando en el directorio tareas vamos al
padre del mismo
que es fulano utilizando ... De ah bajamos por la rama algoritmos. Siguie
ndo esa ruta
s conveniente
poder preguntar cul es el directorio de trabajo (o directorio actual
) y esto se hace con el
comando:
pwd
(Print Working Directory), a lo que el sistema responde con la ruta
absoluta del directorio
en el que te encuentras.
28
istema de Archivos
al con less
root
root
root
root
root
root
root
root
root
root
4096
4096
2612
60592
263064
Apr
Jun
Mar
Feb
Feb
19
6
7
3
3
2000 .
05:08 . .
2000 arch
2000 ash
2000 ash . s t
root
root
9968
Feb
root
root
Feb
root
root
root
root
root
root
root
root
5756
316848
446800
3
Mar
Feb
Feb
Feb
7
27
2
17
root
root
9528
Feb
3 2000 aumixminima
2000
2000
2000
2000
basename
bash
bash2
bsh >
7 2000 c a t
Con
tina en la siguiente pgina
30
Sistema de Archivos
Figura 3.2 Resultado de entubar ls al con more
ntina de la pgina anterior
rwxrxrx
1 root
root
rwxrxrx
1 root
root
rwxrxrx
1 root
root
rwxrxrx
1 root
root
l e c h a r s
rwxrxrx
1 root
root
rwxrxrx
1 root
root
l i n e s 118
3.2.1.
Co
12044
13436
11952
49680
Mar
Mar
Mar
Mar
7
7
7
6
2000
2000
2000
2000
chgrp
chmod
chown
c on s o
33392
45712
Mar
Feb
7
9
2000
2000
cp
cpio
Permisos de archivos
n archivo contra
modi caciones no intencionales o de borrarlo accidentalmente suprimien
do su permiso w.
32
Sistema de Archivos
En efecto, el bit set uid habilita a un usuario para acceder a
un archivo como tarea
indirectamente con mam pato como agente pero no directamente.
El ejemplo clsico del uso del bit set uid es el comando passwd.
El dueo del
archivo /etc/passwd es root (el superusuario) y debe ser escrit
o solamente por el
programa passwd. Los usuarios ordinarios deben ser capaces de p
oder ejecutar el
comando passwd, pero no de modi car directamente el archivo passw
d. Por lo
tanto, el bit set uid est encendido2 para el programa passwd, lo
que le permite
escribir en el archivo /etc/passwd, mientras que esa habilidad
permanece negada
para usuarios ordinarios.
El bit set gid. El bit set gid es como el set uid excepto que se aplic
a a los permisos de
grupo en lugar de a los permisos de dueo. El bit set gid se espec
i ca con una s en
la posicin de la x en los permisos del grupo.
El locking bit. Si el locking bit de un archivo est prendido, un progra
ma que est leyen
do o escribiendo el archivo puede bloquear otros intentos de lee
r o escribir en l al
mismo tiempo. Prender este bit previene que accesos simultneos a
un archivo pue
dan corromper su signi cado y dejarlo en un estado inconsistente.
El locking bit est
representado por una l reemplazando a la x en los permisos del g
rupo.
El sticky bit. Cuando se aplica a un directorio, el sticky bit previen
e que los archivos
dentro de l sean borrados o renombrados por otra persona que no
sea su dueo.
Cuando se aplica a un archivo ejecutable, es la herramienta ade
cuada para retener
al programa en memoria cuando dicho programa puede ser comparti
do por varios
usuarios. Slo el superusuario o el dueo del archivo puede activar
el sticky bit. Este
bit est indicado por una t en el lugar de la x en los permisos d
e otros.
Construccin de permisos
Los comandos chmod, umask y nd hacen uso de la habilidad para const
ruir conjuntos
de permisos simblicamente. Esto lo puedes lograr especi cando un modo sim
blico que
les indique cmo modi car un conjunto existente, posiblemente vaco, de perm
isos.
Un modo simblico consiste de una o ms clusulas separadas por comas. C
ada clu
sula, en turno, consiste de cero o ms letras quin seguidas por una secuenc
ia de una o
ms acciones a aplicar a la categora designada por las letras quin. Cada acc
in consiste
de un operador seguido ya sea de una o ms letras de permisos, de una le
tra quin o de
nada en absoluto. Estas son las letras quin:
u Permiso para el usuario del archivo.
g Permiso para el grupo del archivo.
2
En este contexto, utilizaremos indistintamente prendido, encendid
o, arriba o puesto, para indicar que ese
bit ha sido activado por medio de alguna utilera vlida como el comando c
hmod.
34
Sistema de Archivos
Permisos para archivos recin creados
Cuando un programa crea un archivo, especi ca un conjunto de permiso
s para ese ar
chivo. Conjuntos tpicos son u=rw g=rw o=rw (rw rw rw , o 666 en octal)
para archivos
de datos y u=rwx g=rwx o=rwx (rwxrwxrwx, o 777 en octal) para archivos
ejecutables.
Los permisos iniciales son pocos debido a la mscara de creacin de archiv
os, tambin
conocida como la umask (user mask).T puedes cambiarla con el comando umas
k. En
otras palabras, los bits en la mscara de creacin de archivos representan
permisos que
sern negados a los archivos recin creados.
Los permisos de un archivo recin creado se calculan restando lgicame
nte los bits en la
mscara de creacin de archivos de los permisos especi cados por el programa
que lo crea.
Por lo tanto, si tu mscara vale algo como rwxrwxr x (octal 002), que ex
cluye el permiso
de escritura de otros, aqullos fuera de tu grupo no podrn escribir o bor
rar archivos que t
crees a menos que les cambies los permisos ms tarde (con chmod, por eje
mplo).
Un valor tpico para umask es rwxr xr x (octal 022), que niega los p
ermisos de es
critura a todos menos a ti. Con este valor de mscara, un archivo creado
con permisos
especi cados como u=rw g=rw o=rw es en realidad creado con permisos u=rw
g=r o=r.
La reduccin de permisos por el valor de umask se aplica tanto a la crea
cin de nuevos
directorios como de nuevos archivos.
3.2.2.
e un resultado cuando
manda algo a la salida estndar. En la terminologa tradicional de Unix
se dice que imprime
el resultado. Esta terminologa viene de los das en los que la mayora d
e las estaciones de
trabajo estaban conectadas a un teletipo en lugar de un monitor, pe
ro no debe confundirse
con la accin de enviar un archivo a la impresora.
3
Nota que como no das ms que el nombre del archivo, la trayect
oria se re ere al directorio de trabajo.
36
istema de Archivos
Entubamientos y ltros
Puedes usar la salida de un comando como la entrada de otro comando
, conectando
ambos comandos con un tubo (pipe). La construccin resultante es un pipe
line o entuba
miento. Al igual que con las formas de redireccionamiento discutidas a
nteriormente, los
programas conectados no tienen por qu saber de dichas conexiones.
Sintcticamente, creas un entubamiento escribiendo dos comandos con u
n pipe (el sm
bolo |) entre ellos. Por ejemplo, la lnea de comandos
grep pest phones | sort
llama al programa grep, que extrae del archivo phones todas las lneas q
ue contengan
la cadena pest y produce esas lneas como su salida estndar. Esta salida
se entuba a la
entrada del programa sort, que ve dicha salida como su entrada. La sal
ida de la lnea de
comandos completa es una lista ordenada de todas las lneas en phones qu
e contienen
pest.
En una lnea que contenga tanto redireccionamientos como entubamient
os, los redirec
cionamientos tienen mayor precedencia: primero los redireccionamientos
se asocian con
comandos y despus los comandos con sus redireccionamientos se pasan por
los entuba
mientos.
La creacin de un entubamiento implica la creacin de un par de proces
os, uno para
el comando que produce la informacin entubada y otro para el proceso qu
e consume esta
informacin. Estos procesos los crea el shell que interpreta la lnea de c
omandos.
Un ltro es un programa que lee datos de la entrada estndar, los tran
sforma de algu
na manera y luego escribe esta informacin transformada a la salida estnd
ar. Uno puede
construir un entubamiento como una sucesin de ltros; estas sucesiones pr
oveen una for
ma muy poderosa y exible de usar comandos simples para que al combinarl
os alcanzar
grandes metas, posiblemente muy complejas. Generalmente este tipo de e
ntubamientos se
comandos la
siguen. Muchos comandos de nidos por POSIX tienen una forma moderna y
una sintaxis
obsoleta, por compatibilidad con sistemas viejos. La razn de esto es
que muchos progra
mas importantes y muy viejos que an estn en uso, siguen sintaxis vieja
de algunos
comandos. Siempre que hablemos de la sintaxis de un comando, tratare
mos de apegarnos
a la sintaxis moderna de POSIX, pero mencionaremos de vez en cuando
la sintaxis vieja
para algunos de ellos.
Aun en sistemas modernos hay una gran cantidad de comandos que n
o se apegan al
estndar. Por ejemplo, el estndar especi ca que las opciones de los coman
dos (no as, los
operandos) pueden aparecer en cualquier orden, pero algunos comandos
pueden requerir
que las opciones aparezcan en un orden particular y muchas veces est
o no est mencio
nado explcitamente en la pgina del manual del comando. En estos y otro
s casos hacer
experimentos siempre es una buena idea.
Un comando consiste de una sucesin de palabras separadas por espa
cios en blanco
(estos espacios en blanco pueden ser espacios sencillos, tabuladores
e incluso en algunos
shell, solamente nuevas lneas escapadas5 ). La primera palabra es el
nombre del coman
do y las palabras subsecuentes son sus argumentos u opciones. El nom
bre del comando
se re ere a un programa o guin de shell a ser ejecutado. Los operandos
consisten de las
opciones del programa, si hay alguna, seguidas de sus operandos, si
hay alguno. Las opcio
nes controlan o modi can lo que el comando hace. Los operandos especi ca
n nombres de
trayectorias o con lo que va a trabajar el comando.
Especi cacin de opciones. Las opciones se especi can con una sucesin de pa
labras.
Cada palabra es un grupo de opciones o una opcin argumento. Las
opciones gene
38
ma de Archivos
Siste
s un
error sobre una opcin q que no reconoce.
Un solo guin representa a la entrada estndar en un contexto en que el
programa
espera una trayectoria. Por ejemplo, el comando
diff
qq
encuentra las diferencias entre la entrada estndar y el comando q
q
Comando
cat
lgunos usos comunes
Descripcin
El comando cat copia y concatena archivos. Tiene a
que no implican concatenacin y que lo hacen uno de
los comandos ms
tiles de Unix (en prcticas posteriores lo usaremos e
xhaustivamente).
ln
stentes. Las nue
40
Sistema de Archivos
Tabla 3.1 Comandos de Unix importantes
ina de la pgina anterior
Comando
mv
, el directorio
Cont
Descripcin
El comando mv mueve uno o ms archivos de un directorio
fuente (source), a otro directorio, el directorio des
cp
ln y mv, cp s
vos involucrados.
cp no es la nica forma de copiar archivos en Unix, ya
que cat provee un
mtodo alternativo. Ms adelante les diremos cmo. pax con
las opcio
nes
on la opcin p
es otra (tampoco lo veremos) y tar tambin provee otra
opcin (ste s lo
veremos, pero con un propsito distinto al de copiar ar
chivos). La forma
rm
s ordinarios o di
de
cp
cp
El
cp es:
[ p] iarchivo oarchivo
[ prR] iname. . . odir
comando rm borra ligas a archivos, ya sean archivo
more
en tu termi
nal una pgina a la vez. Tambin lo puedes usar para exam
inar la entra
da estndar y por lo tanto examinar la salida de un pro
grama haciendo
un entubamiento hacia more (espero que despus de este
prrafo te des
cuenta de la cantidad de terminologa que ya debes ms o
menos ma
nejar; si no has ledo el material que se encuentra ant
es de esta seccin,
Comando
Descripcin
more [ ceisu] [ n number] [ t tag] [ p cmd] [archiv
less
o. . . ]
s capacidades
most
ida a emacs. Tam
interactivas de more.
Hace lo mismo que more, pero con una interfaz parec
bin extiende las capacidades de more utilizando coma
ndos y enlaces de
lpr (lp)
ea enviado a la cola
teclas a la Emacs.
Este comando ocasiona que un conjunto de archivos s
de impresin. Recibe varias opciones, pero la forma u
lpr archivo. . .
Despliega el estado de las solicitudes de impresin.
Hace lo mismo que lpstat.
Muestra la cola de impresin.
Borra un archivo de la cola de impresin (debes ser d
el superusuario para poder eliminar un archivo de l
a cola de impresin).
nd
de archivos
42
Sistema de Archivos
Tabla 3.1 Comandos de Unix importantes
ina de la pgina anterior
Comando
which
cutable; esto es,
Cont
Descripcin
El comando which te permite localizar un programa eje
determina su trayectoria absoluta. La forma de la lnea
de comandos para
le
which es:
which progname. . .
El comando le (archivo) intenta clasi car un archivo exami
nando sus
cmp
l comando diff
chmod
es:
diff [ bcefhr] [ C n] archivo1 archivo2
El comando chmod cambia los permisos de un archivo. P
ra de crea
cin de archivos, tambin llamada umask value. El comando
umask est
incluido en el shell en lugar de ser un programa inde
pendiente (de hecho,
en shells avanzados, como bash o zsh, la mayora de los
comandos de es
ta seccin estn incluidos en el shell). La sintaxis de l
a lnea de comandos
es:
umask [ S] [perm]
chown
Los comandos chown y chgrp te permiten transferir la
propiedad perso
chgrp
nal y grupal de un conjunto de archivos y directorio
s a alguien ms. La
forma general de estos comandos es:
chown [ R] owner[.group] archivo. . .
chgrp [ R] group archivo. . .
Contina
en la siguiente pgina
Co
Descripcin
El comando wc cuenta el nmero de carcteres, palabras
archivo o conjunto de stos. Una palabra es consider
ujo de inf
44
ema de Archivos
Sist
3.5.1.
Iniciando Konqueror
46
istema de Archivos
3.5.2.
La
Vista
Vista
Vista
Vista
Vista
Vista
Vista
lbum
de iconos.
multicolumna.
de rbol.
de lista informativa.
de lista detallada.
de texto.
de tamao de archivo.
de fotos.
dministrador
de archivos.
3.6 Emacs
51
compleja para su lnea de comandos; las siguientes son algunas de las
opciones ms impor
tantes:
Tabla 3.2 Emacs: opciones de inicio
Opcin
Descripcin
Edicin en lote. Con esta opcin el editor man
dar mensajes
a la salida estndar. Debes usar las opcione
s l, f y eval para
batch
llamar. Durante el
nando bien.
q
tuyo.
Lo mismo que user.
Imprime el mensaje de uso de Emacs y sale.
Imprime informacin sobre la versin de Emacs
y sale.
rle ningn argu
funcall <function>
f <function>
mento.
Lo mismo que funcall <function>.
Evala la forma de Lisp pasada como parmetro
a eval. Ten
la precaucin de escapar adecuadamente la ex
presin para que
eval <form>
el intrprete de comandos no la ejecute ante
s de que llegue a
load <archivo>
Emacs.
Carga el archivo nombrado de cdigo en Lisp
l <archivo>
Igual que
en Emacs.
load <archivo>.
52
Sistema de Archivos
3.6.2.
Conceptos esenciales
Dado que Emacs es ms, mucho ms, que un editor de texto, para integra
r tantas ope
raciones distintas en un nico paquete y mostrarlas en una sola ventana,
se crearon varios
conceptos para referirse a estas distintas partes de Emacs.
Adems, y sta es la caracterstica que distingue a Emacs como un sistem
a para in
crementar la productividad del programador, todo comando que puede eje
cutarse puede y
usualmente est asociado a una combinacin de teclas. Puedes utilizar cual
quier tecla co
mo parte de estas combinaciones de teclas y a menudo involucran las te
clas control ( ctrl
en algunos teclados) y meta ( meta ya no existe en teclados modernos y
usualmente se
sustituye por alt ).
Buffers
Emacs, y en general cualquier editor, no modi ca directamente el arc
hivo, sino que
toman una copia del mismo y la coloca en un buffer, el cual contiene t
oda la informacin
del estado actual de la edicin. El estado actual del archivo no cambia
sino hasta que le
indicas a Emacs que deseas guardar los cambios en el disco.
Al igual que los archivos, los buffers tambin tienen un nombre, el
cual generalmente
se corresponde con el del archivo que se est editando. Sin embargo, en
otros casos el
nombre de un buffer no corresponde con el de ningn archivo, sino simple
mente con algn
propsito espec co; es decir, no todos los buffers estn ligados a un archivo
sino que sirven
para interactuar con Emacs. En este sentido es importante que entienda
s la diferencia entre
un buffer y un archivo.
Modos mayores y menores
La versatilidad de Emacs se debe, en buena medida, a que tiene dif
erentes modos de
operacin, de acuerdo con el tipo de texto que se est editando o proceso
que se est ejecu
tando. Esto quiere decir que Emacs se adapta a las necesidades de edic
in de cada tipo de
texto. Por ejemplo, para escribir una carta est el modo de texto; para
editar un programa
Emacs cuenta con modos para una gran cantidad de lenguajes de programa
cin. Esto le
permite a Emacs ser el tipo de editor que t deseas.
Estos modos de operacin se conocen simplemente como modos, y vienen
en dos sa
bores: existen los modos mayores, que son los que proveen caracterstica
s que cambian
radicalmente la manera en que se edita el texto; por ello un buffer si
empre est asociado
exactamente con un modo mayor.
Por otro lado existen los modos menores que aaden comportamientos e
spec cos a un
modo mayor. Por ejemplo, si deseas que se produzca un cambio de lnea cu
ando rebases
una cierta cantidad de carcteres en una lnea, puedes usar un modo menor
llamado Auto
3.6 Emacs
53
ll mode. A diferencia de los modos mayores, un mismo buffer pued
e utilizar cualquier
cantidad de modos menores.
La lnea que aparece en la parte inferior de todo buffer se c
onoce como la lnea de
modo. Esto es porque parte de la informacin que nos proporciona
es precisamente el modo
o modos en el que se est editando el buffer (que aparecen entre
parntesis). Lo primero
que aparece entre estos parntesis es el modo mayor, seguido de t
odos los modos menores
que el buffer en cuestin tenga activados.
Aparecen otros datos en la lnea de modo, como el nombre del
buffer, pero no son
relevantes por el momento.
En el siguiente captulo, en la seccin 4.3, explicaremos el re
sto de los conceptos im
portantes de Emacs y los comandos (y su combinacin de teclas aso
ciadas) de edicin.
En lo que resta de este captulo te mostraremos cmo Emacs puede ej
ecutar comandos de
Linux e incluso un intrprete de comandos completo.
3.6.3.
Dired
C x C f
Es un modo utilitario para manejo de directorios. Este modo
se activa cuando el archivo
( nd le)
que se intenta abrir es un directorio. Por ejemplo, si ejecutas C x
C f y luego completas
permite abrir
o tecleas el nombre de un directorio, digamos /pruebas, Emacs ab
rir dicho directorio
archivos
en el modo dired.
En este modo puedess observar los archivos en un directorio
, cambiar sus permisos y
propietarios, copiar, borrar o mover archivos y directorios. Al
gunos de los comandos que
puedes usar en este modo son:
Tabla 3.3 Emacs: comandos del modo dired
Combinacin
v
Descripcin
Abre el archivo nicamente en modo de l
ectura.
.
Abre el archivo en otra ventana pero
te deja en la que actual
C o
mente ests.
Marca los archivo o directorios (para
copiar o mover, por ejem
m
C
R
d
x
plo).
Copia los archivos marcados.
Mueve los archivos marcados.
Marca archivos para eliminacin.
Elimina archivos marcados.
54
Sistema de Archivos
Tabla 3.3
Combinacin
+
Enter
ue ests parado.
3.6.4.
Descripcin
Crea un directorio.
Abre el archivo o directorio en el q
6
Emacs tambin utiliza esta rea para informar al usuario y en este
caso se conoce como rea de eco y no
como minibuffer. Por ejemplo, cuando escribes un comando como C x C
f, si haces una pausa prolongada
despus de escribir C x, Emacs presenta esa parte en el rea de eco com
Edicin
4
4.1. La guerra de los editores de texto
En la cultura geek1 hay un gran debate entre la comunidad de programad
ores sobre cul
editor de texto de propsito general es el mejor. Aunque es una guerra que s
iempre tiene
nuevos contendientes, los grandes campeones hasta la fecha, sobre todo en
el mundo Unix,
son los seguidores de Emacs y los de Vi.
La comunidad de hackers2 trata con reverencia a sus piezas de software
favoritas, mu
chas veces rayando en el fanatismo, y los editores de texto son probableme
nte las piezas
de software ms difundidas y apreciadas. Es cierto, hay otras guerras y muy
violentas, co
mo las de los sistemas operativos o los lenguajes de programacin, pero la d
e los editores
Emacs y Vi es digna de leyendas e historias de encuentros salvajes y cruen
tos entre sus
seguidores.
Nosotros, los autores de este compendio, nos contamos y a mucha honra
entre los se
guidores de Emacs. Vi es malo, de hecho, para los iniciados en el arte de
la edicin (lo cul
sers t tambin al nal de este captulo); es claro que Vi es el editor del in erno y
nos
1
Geek es el sobrenombre que reciben aquellas personas fascinadas, pro
bablemente en forma obsesiva, con
algunos temas espec cos u obscuros de algn rea del conocimiento o de la imagina
cin. En aos recientes,
geek se utiliza generalmente para los obsesionados con tecnologa o computac
in. Es probable que si ests
interesado en los temas del presente libro, t mismo(a) cali ques como geek, bi
envenido(a) al club!
2
hacker es aquella persona que crea o modi ca software o hardware de co
mputadora, incluyendo tareas de
programacin, administracin de sistemas y seguridad. Hack, por otro lado, tie
ne una connotacin negativa y
es algo as como un chicano x, una compostura poco elegante para un programa
o sistema.
56
Edicin
referiremos a l por su nombre completo: vi vi vi (666, en romano)
, el editor de la bestia.
Hablaremos de Emacs ms adelante, en la seccin 4.3. Linux, y de man
era ms general el
software libre, te ofrece una nica cosa y hay que valorarla: la f
acultad de elegir.
4.1.1.
minar o explicar
en una vida, menos an en este captulo. Sin embargo, en KDE existe
una nueva camada
de editores que han llamado nuestra atencin porque hacen lo que u
n buen editor debe
hacer, pero adems se integran al resto del ambiente, lo cual, a l
a larga, ofrece otra gama
de posibilidades.
En este captulo revisamos los editores Kate en la siguiente s
eccin y Emacs en la
seccin 4.3. En captulos subsecuentes revisaremos otros editores es
pecializados, como
Kile en el captulo 6. Es importante que tomes en cuenta, sin emba
rgo, que durante tu vida
acadmica y profesional te encontrars en situaciones donde no conta
rs con un ambiente
gr co para trabajar, como KDE, y es aqu donde Emacs muestra su super
ioridad, ya que
tambin puede ejecutarse en una terminal o consola de texto.
4.2. Kate: un editor para programadores
4.2.1.
Introduccin
$ smart
Kate es el editor de texto preferido por programadores en KD
E. Algunas caractersticas
install kate
de Kate que revisaremos en este libro incluyen resaltado con gurab
le de sintaxis para una
gran variedad de lenguajes, desde C o C++ hasta XML o guiones de
shell; la habilidad para
crear y mantener proyectos; una interfaz para varios documentos
(MDI por sus siglas en
ingls) y un emulador de terminal integrado.
58
Edicin
En el captulo 5 se describen varios protocolos de red; KDE ofrece so
porte transparente3
para varios de ellos.
Sesiones
Kate soporta sesiones, que son una forma de mantener distintas lis
tas de archivos y
con guraciones. Puedes tener tantas sesiones como desees y stas pueden se
r annimas o
tener un nombre.
Por omisin, cuando inicias Kate se inicia en la sesin predeterminada
, pero cuando lo
inicias con una sesin, el nombre de sta aparece en el ttulo de la ventana
. Puedes iniciar
Kate desde la lnea de comandos e indicarle que abra una sesin:
% kate s nombre lista de archivos
Si la sesin llamada nombre no existe, Kate la crear. En caso de exis
tir una sesin
abierta con ese nombre, los archivos especi cados se anexarn a esa sesin.
Tambin se pueden crear y manejar sesiones desde un ejemplar de Kate
en ejecucin a
travs del men, eligiendo Sesiones.
La lista de documentos
La lista de archivos muestra todos los documentos actualmente abie
rtos en Kate. Los
archivos que han sido modi cados muestran un icono de disco magntico a la
izquierda
para indicar su estado.
Si hay dos o mas archivos abiertos con el mismo nombre (que viven e
n distintos di
rectorios), Kate antepone < 2 > al nombre del segundo, < 3 > al nombre
del tercero y as
sucesivamente. La ventana de informacin te mostrar la ruta completa del
archivo para
que selecciones el adecuado.
Para mostrar en la ventana activa el archivo deseado, basta con qu
e hagas click sobre el
nombre en la lista.
La lista de archivos puede ordenarse de distintas formas; para ell
o Kate ofrece un botn
a la derecha que te permite ordenar con alguno de los siguientes crite
rios: por orden de
apertura, por nombre (alfabtico) y por URL.
Esta lista aparece por omisin, aunque puede moverse, al lado izquie
rdo de la ventana
de edicin.
El selector de archivos
El selector de archivos es un visor de carpetas, que te permite nav
egar tu espacio de
archivos y abrir el archivo adecuado. Su funcionamiento es idntico al d
e otras aplicaciones
KDE, particularmente Konqueror.
3
Editando archivos
l o vertical. En ambos
casos, las dos partes o marcos, contendrn el archivo que ests editand
o, pero slo uno de
ellos ser el marco activo, lo que se representa por medio de un indi
cador verde.
Avpg
Repg
Ins
iceversa. Cuando
Descripcin
Mueve el cursor un carcter a la izquierda.
Mueve el cursor un carcter a la derecha.
Mueve el cursor una lnea arriba.
Mueve el cursor una lnea abajo.
Mueve el cursor una pgina hacia arriba.
Mueve el cursor una pgina hacia abajo.
Pasa de modo insercin a modo sobreescritura y v
est en modo insercin el editor aadir cualquier carc
ter introdu
cido al texto y empujar los carcteres previament
e introducidos a
la derecha del cursor de texto. El modo de sob
reescritura hace que
la entrada de cada carcter elimine el carcter in
mediatamente a la
derecha del cursor de texto.
BackSpace
Inicio
Fin
Supr
lquier texto seleccio
Shift
Shift
F1
Shift F1
Cf
F3
Cb
Cc
Cn
Borra
Mueve
Mueve
Borra
el
el
el
el
nado).
Marca el texto un carcter a la izquierda.
Marca el texto un carcter a la derecha.
Ayuda.
Ayuda: qu es esto?
Buscar.
Repetir la bsqueda.
Insertar un marcador.
Copiar el texto marcado al portapapeles.
Nuevo documento.
C
62
Edicin
Tabla 4.1 Kate: enlaces de tecla para acceso rpido
ntina de la pgina anterior
Co
Enlace
Descripcin
Cp
Cq
Cr
Cs
Cv
Cx
Imprimir.
Salir
cerrar la copia activa del editor.
Reemplazar.
Salvar archivo.
Pegar.
Borrar el texto marcado y copiarlo al portapape
Cz
CShiftz
Deshacer.
Rehacer.
les.
Descripcin
Aqu va la cadena de bsqueda.
Si est activado, la cadena de bsqueda
Maysculas y minsculas
Desde el cursor
culas y minsculas.
Si est marcado, la bsqueda iniciar de
ser interpre
tre mays
sde el punto
e el punto
actual hacia el inicio del documen
to.
Reemplazar con
Preguntar al reemplazar
reguntando la
accin que debe llevar a cabo Kate c
ada vez que en
cuentre la cadena de bsqueda. Las p
osibles respuestas
son: s, no, todo y cerrar.
Para iniciar una bsqueda puedes utilizar el men Editar Buscar o bi
en C f ; para
reemplazar debes utilizar Editar Reemplazar o C r .
Marcadores
Los marcadores sirven para sealar lneas interesantes en el docume
nto y volver a ellas
fcilmente en el futuro. Puedes establecer y eliminar marcadores, mov
iendo el cursor a esa
lnea y activando la opcin Marcadores Cambiar o presionando C b . Desp
us, para
recorrer los marcadores en el documento puedes utilizar en el men
Marcadores Siguiente ( CAvpg ) o Anterior ( CRepg ).
Ajustes de lnea y sangrado
Kate tiene una opcin para que le indiques que debe cortar las lne
as que sean ms
largas que cierto tamao. Esto lo puedes con gurar en las preferencias,
en la pgina de
Editor.
Cuando est activada esta opcin de ajuste de lnea, al llegar al nmer
o mximo de
carcteres permitidos, Kate insertar (en un espacio en blanco apropiad
o) un salto de lnea.
En cuanto al sangrado del documento, Kate soporta una amplia ga
ma de sangrados
automticos especializados en distintos tipos de entrada. Puedes util
izar uno de los mo
dos disponibles a travs del men Herramientas Sangrado. En la siguient
e tabla se
64
Edicin
muestran algunos de los sangrados disponibles en Kate:
Tabla 4.3 Kate: sangrados disponibles
Enlace
Ninguno
el sangrado autom
Normal
lar al de la lnea ante
Descripcin
Seleccionando este modo se desactiva completamente
tico.
Este sangrado simplemente mantiene un sangrado simi
rior con cualquier contenido diferente a un espacio
personal.
Es un sangrado para los lenguajes C y similares, co
vascript. Sin embargo, no funciona con lenguajes de
PHP.
Es un sangrado alternativo para los lenguajes C y s
restricciones.
Un sangrado espec co para el lenguaje de script python
.
XML
ntes utilizarlo con
e estilo antiguo
(etiquetas abiertas como <br>)
4.3. Emacs
Emacs es el editor de los Dioses, por directa contraposicin con
su odiado archi
enemigo vi (asegrate de leer dos veces la introduccin de este captulo
, en la seccin 4.1).
En el captulo anterior (seccin 3.6.2) te mostramos algunos de lo
s conceptos esenciales
de Emacs y en esta seccin concluimos la exposicin de conceptos y te
ensearemos a
utilizar una pltora de comandos para edicin. No tienes que aprenderl
os todos para utilizar
Emacs, pero es importante los conozcas y practiques cada vez que t
engas oportunidad.
4.3.1.
Comandos
Meta x
Los comandos en Emacs tienen un nombre auto descriptivo. En mucha
s ocasiones estos
sirve para
comandos estn formados por dos o ms palabras separadas por un guin y,
como puedes
ejecutar
imaginar, ejecutar estos comandos llamndolos por su nombre puede re
sultar engorroso.
comandos
4.3 Emacs
65
Por esta razn, Emacs crea un vnculo entre un comando y una secuencia d
e teclas y pue
des ejecutarlo ya sea invocndolos por su nombre, por ejemplo Meta x nd
le, o bien
tecleando la secuencia asociada, en este caso C x C f .
Las secuencias asociadas lucen complicadas al principio, pero de
spus de utilizarlas un
tiempo te dars cuenta que estn ah por muy buenas razones. De hecho, not
ars que los
comandos ms usuales tienen asociadas secuencias de teclas cortas. Ema
cs fu diseado
por programadores, para programadores, por lo que la e ciencia lo es t
odo.
Cada vez que tienes que despegar una de tus manos de la parte ce
ntral del teclado para
buscar con el ratn un comando en los mens, pierdes tiempo valioso. Int
enta: compara el
tiempo que te toma teclear la secuencia C x C f contra el tiempo que
te toma encontrar en
el men el mismo comando nd le. Ahora imagina una sesin de edicin donde es
cribirs
una decena de cuartillas y ejecutars varios cientos de comandos.
Entre ms utilices Emacs menos tendrs que pensar en las secuencias
de los comandos,
tus manos se harn cargo. Esto se conoce como memoria dactilar. Una ve
z que te sien
tas cmodo con los comandos de Emacs que dominas, regresa a este captul
o e investiga
algunos de las secciones que a continuacin presentaremos y aprende nu
evas secuencias.
En la seccin 3.6.2 te dijimos que las teclas Control y Meta ( alt
y alt gr ) son
usualmente utilizadas en secuencias de teclas. De hecho, ya hemos ut
ilizado algunas de
stas a lo largo de este material, pero en nomenclatura de Emacs no mo
stramos el nombre
de estas teclas completo, sino que las sustituimos as: Ct rl es C y M
eta es M. Entonces
una secuencia as: Cx , signi ca mantener presionada Ct rl y sin soltar p
resionar x .
Sucede lo mismo con M, aunque aqu tenemos una pequea variante y es
que la tecla de
escape, esc , puede utilizarse en sustitucin de Meta . Cuando se ejec
uta una secuencia
Mx utilizando esc , sin embargo, no se mantienen presionadas de maner
a simultnea.
Es decir, primero presionamos esc , soltamos, y a continuacin x .
El guin nos sirve para indicar que esas teclas se presionan junt
as, los espacios en la
secuencia nos indican que debemos soltar la(s) tecla(s) anterior(es)
antes de iniciar con las
teclas despus del espacio. Por ejemplo, Cx Cf se teclea as: simultneament
e Ct rl y
x , liberamos ambas y de manera simultnea presionamos Ct rl y f .
66
Edicin
Escribir texto o ejecutar comandos
Puedes estarte preguntando si eventualmente Emacs sirve para e
ditar texto o slo para
ejecutar comandos. Por raro que parezca, Emacs sirve exclusivament
e para ejecutar coman
dos y el ms ejecutado es self insert command, que es ejecutado por
cada tecla y cuya
nica funcin es imprimir el carcter que representa la tecla en el buff
er actual, o sea, la
que acabas de oprimir.
Para redactar una carta, escribir tus tareas, programar o hace
r una presentacin, sim
plemente tienes que ejecutar Emacs, visitar un archivo (con nuestr
o ya viejo amigo: C x
C f ) y comenzar a teclear. Ms adelante te decimos como salvar el
contenido del buf
fer (seccin 4.3.11); recuerda teclear C x C c para terminar la ejec
ucin de Emacs.
4.3.2.
Movimiento
Adelante
C f
M f
C p
M a
M {
C v
Atrs
C b
M b
C n
M e
M }
M v
arlo:
4.3 Emacs
67
Tabla 4.5
4.3.3.
Inicio
C a
M<
Fin
C e
M>
Matando y borrando
4.3.4.
Adelante
Atrs
carcter (borrado)
C d
BackSpace
palabra
Md
MBackSpace
lnea
C k
C u 0 C k
enunciado
Mk
C x Supr
Reencarnacin de texto
68
Edicin
racin se le conoce como yank y el comando para realizarla es C y . La e
jecucin de este
comando inserta el ltimo texto muerto en el punto actual.
Como es de esperarse, puedes reencarnar texto que hayas matado con
anterioridad.
Esto se logra con el comando My , el cual, si el comando inmediato ante
rior fue un yank,
reemplaza el texto que ste insert con el texto inmediato anterior en el
kill ring. Esto
ltimo se puede repetir sacando sucesivamente lo que est guardado en el k
ill ring.
Los elementos del kill ring son el resultado de acomodar adecuadam
ente bloques de
operaciones matar; por ejemplo si matas dos lneas seguidas, estas dos ln
eas forman parte
de un mismo bloque en el kill ring.
4.3.5.
Regiones
Rectngulos
4.3 Emacs
69
Tabla 4.7
4.3.7.
Operacin
Cortar (kill) un rectngulo
Pegar (yank) un rectngulo
Abrir un rectngulo
Borrar un rectngulo
Registros
Operacin
Copia la regin en un regis
tro. Te pregunta
C x x
por el nombre del registr
o.
Guarda el rectngulo selecc
ionado en el re
C x r r R
er un carcter o un
C x r s R
egistro R.
C x r Space R
or en el registro R.
registro R, si ste es
C x r i R
C x r j R
n el registro R.
Agrega el texto (que te s
er pedido en el mini
C x r t
en la regin rectan
to hacia la derecha.
70
Edicin
4.3.8.
Archivos
Buscar
Reemplazar
4.3 Emacs
71
4.3.11.
Guardar
4.3.12.
Ventanas
4.3.13.
Marcos (frames)
Adems de las ventanas, en X tambin podemos crear lo que Emacs llama
frames,
que en terminologa estndar de X se llama ventanas. Confundidos? Es muy
fcil: estos
frames de Emacs lucen como ejecuciones distintas de Emacs, mientras
que las ventanas
son sub divisiones de un mismo frame.
4.3.14.
Ayuda en lnea
No podramos decir que Emacs es un editor de texto autodocumentado s
i no contara
con un sistema de ayuda en lnea. Si tecleas la secuencia Ch ? ? , Emac
s te mostrar
una lista con las opciones de ayuda que tiene a tu disposicin. Por ej
emplo, con la secuencia
Ch k , Emacs te pedir teclear una secuencia de teclas y te dir todo lo
que sabe de esa
secuencia, a qu comando est asociada y la documentacin del comando.
72
Edicin
4.3.15.
Lista de buffers
Ortografa
4.3 Emacs
73
en Linux para revisar ortografa se llama Aspell y, dependiendo de tu
instalacin, puede o
no contener un diccionario en espaol.
Con las siguientes lneas en tu /.emacs le vamos a indicar varias
cosas a Emacs. En
la lnea 1 le indicamos que queremos utilizar el programa de Linux as
pell para revisar
ortografa y, en las lneas 2 y 3 le indicamos detalles sobre el tipo d
e carcteres que incluye
el espaol y algunos argumentos para el programa mismo. Por ejemplo,
la secuencia d es
le indica a aspell que utilice el diccionario llamado es. Finalment
e, en la ltima lnea le
indicamos que utilice por omisin este diccionario en todos los buffe
rs.
1 ( s e t q i s p e l l programname " a s p e l l "
2
i s p e l l e x t r a args ( " W" " 3 " )
3
i s p e l l d i c t i o n a r y a l i s t
4
( cons
5
( " spanish " " [ [ : alpha : ] ] " " [ ^ [ : alph
a : ] ] " " [ . ] "
6
n i l (" B" "d " " es " ) n i l u t f 8)
7
i s p e l l d i c t i o n a r y a l i s t )
8
)
9 ( setd e f a u l t i s p e l l l o c a l d i c t i o n a r y " spa
nish " )
Es importante sepas que con el comando ispell change dictionary
puedes cambiar a
otro diccionario. Estos cambios no son globales y funcionarn nicament
e para el buffer
actual.
Utilizando ispell
Ahora que hemos con gurado un revisor ortogr co en Emacs, en la sigu
iente tabla te
mostramos los comandos ms importantes, con los que puedes revisar la
ortografa de una
palabra o de una porcin del buffer.
Tabla 4.9
Operacin
Activa el modo Flysp
74
Edicin
Operacin
Completa la palabra ant
Revisa la ortografa en la
Revisa la ortografa en el bu
Revisa la ortografa de la re
Extendiendo Emacs
Instalando paquetes en 1, 2, 3
Aunque el procedimiento para instalar paquetes vara grandemente
de uno a otro, en
general tienes que seguir los siguientes pasos:
4.3 Emacs
75
1. Localizar el archivo y descargarlo de la red. Si est comprimido
, tienes que expan
dirlo.
2. Copiarlo o moverlo a tu directorio /elisp. Si es un archivo con
extensin .el, pasa
al siguiente paso; si es un directorio, tienes que agregar el
directorio a la ruta de
bsqueda. Por ejemplo, si el directorio se llama foo, agregas es
to a tu /.emacs:
% (add to list load path (expand le name "/elisp/foo"))
Usualmente cuando el paquete viene en un directorio, incluye i
nstrucciones espe
ciales para instalacin. Generalmente incluyen un archivo README
o INSTALL
con instrucciones. En estos casos puedes revisar el procedimie
nto explicado en el
Anexo B para instalar programas paso a paso.
3. Despus tienes que leer el archivo principal del paquete y copia
r las lneas de inicia
cin a tu /.emacs. Generalmente tienen la forma: (require foo), do
nde foo es el
nombre del archivo con extensin .el.
En los siguientes captulos de este libro utilizaremos este procedi
miento para instalar
algunas extensiones importantes de Emacs. A manera de ejemplo, sin e
mbargo, a continua
cin agregaremos una extensin muy sencilla para modi car los colores de E
macs.
Poniendo color a tu vida
Dependiendo del tipo de archivos que editas, Emacs reconoce dist
intas unidades sin
tcticas de esos archivos. Por ejemplo, cuando programas reconoce pala
bras reservadas,
cadenas, etc. Para activar los colores de manera global agrega lo si
guiente a /.emacs:
( r e q u i r e f o n t l o c k )
( addhook f o n t l o c k modehook t u r n onf a s t l o c k )
( g l o b a l f o n t l o c k mode 1 )
Qu puedes hacer si no te gustan los colores de Emacs? La respuesta
sencilla sera
cambiarlos. Por desgracia, la cantidad de variables que controlan lo
s colores en Emacs es
muy grande, por lo que esta tarea sera muy complicada.
Afortunadamente hay alternativas; por ejemplo, podemos instalar l
a extensin de Emacs,
color theme, que puedes obtener de la siguiente direccin:
http://download.gna.org/color theme/
Despus de instalar y compilar el programa, agrega esto a tu /.emacs:
( addto l i s t loadpath ( expandf i l e name " / e l i s p / c
o l o r theme " ) )
( r e q u i r e c o l o r theme )
( c o l o r theme i n i t i a l i z e )
76
Edicin
Puedes recorrer la lista y con Enter puedes seleccionar el tema en la lnea a
ctual. Cuando
seleccionas un tema, inmediatamente Emacs ajustar todos los colores.
Recorre la lista y selecciona el tema que ms te guste y, una vez que ten
gas tu favo
rito, agrega el comando que lo activa a tu /.emacs; as, cada vez que regreses
, Emacs
recordar tu tema predilecto. Por ejemplo:
( c o l o r themec h a r c o a l b l a c k )
Internet
5
5.1. Redes de computadoras
La palabra red, cuando se habla de computadoras, hace referencia a dos o
ms com
putadoras conectadas entre s. Las computadoras se conectan en red con el pro
psito de
compartir recursos.
Cuando las computadoras estn conectadas directamente (usando algn tipo de
cable),
el sistema se denomina red de rea local o LANa (por su nombre en ingls Local
Area
Network). Una LAN tpica se encuentra en un solo edi cio o en algunas ocasiones
en el
mismo piso. Sin embargo, la conectividad no tiene por qu terminar en una red
local. Varias
LAN estn conectadas a otras redes, formando lo que se denomina Red de rea Amp
lia o
WAN (Wide Area Network).
En varias organizaciones las computadoras estn conectadas entre s por red
es de rea
local. En ocasiones, estas LAN estn conectadas con un enlace de alta velocid
ad (deno
minado soporte principal o backbone) que rene a las LAN pequeas para formar u
na red
de rea amplia. Las organizaciones grandes, con muchos departamentos, pueden
tener ms
de un soporte principal. Esto signi ca, entre otras cosas, que es posible env
iar un correo
electrnico desde cualquier computadora dentro de la organizacin hacia cualqui
er otra
computadora (siempre y cuando estn conectadas por la red). De hecho, enviar
un mensa
je que atraviese todo el pas puede ser tan sencillo como enviar un mensaje h
acia el otro
extremo de un corredor.
78
Internet
5.1.1.
dora an trin
UNIX es mediante una terminal. Como la computadora que se tiene en cas
a no es una
terminal, el programa de comunicaciones que se utilice debe hacer que
la computadora
casera acte como una terminal. Se dice entonces que el programa est emul
ando una
terminal. Los sistemas UNIX pueden trabajar con muchas marcas y tipos
de terminales,
pero existe una que por costumbre es la que se emula cuando se trabaja
con una lnea
telefnica. Se trata de la terminal tipo VT100.
1
En ocasiones el nombre servidor se emplea para referirse a una c
omputadora y no a un programa.
TCP/IP
80
Internet
ii. Ordena stos en secuencia.
iii. Agrega cierta informacin para el control de errores.
iv. Y despus los distribuye.
El proceso en el otro extremo es:
i. TCP recibe los paquetes.
ii. Veri ca si hay errores.
iii. Y los vuelve a combinar para convertirlo en los datos origina
les.
iv. Si existe algn error, el programa TCP destino enva un mensaje so
licitando que
se vuelvan a enviar determinados paquetes.
La tarea de IP es llevar los datos a granel (es decir, los paquetes),
de un sitio a otro. Las
computadoras que encuentran las vas para llevar los datos de una red a otra
, ruteadores,
utilizan IP para trasladar los datos.
Si el usuario est interesado en ver la ruta que va desde su computadora
hasta otra,
puede usarse el comando traceroute. El problema es que este comando no se
encuentra
disponible en todos los sistemas. El comando se usa de la siguiente manera
:
% traceroute computadora
5.2. Web
Internet, como ya mencionamos, es una coleccin mundial de redes que tra
nsmiten da
tos usando el protocolo IP. Ahora la pregunta a resolver es qu se puede hace
r en Internet?
Son siete los servicios principales que Internet puede ofrecer:
Correo: Se pueden enviar y recibir mensajes.
Transferencia de archivos: Se pueden copiar archivos de una computadora a
otra.
Entrar a un sistema remoto: Podemos entrar a otra computadora y trabajar e
n ella como
si nuestra terminal estuviera conectada directamente a ella.
Grupos de inters (Usenet): Se pueden leer y escribir artculos en los miles d
e grupos
de inters de Usenet (tambin llamados foros).
Software compartido: Podemos obtener copias gratuitas de cualquier tipo de
software y
nosotros mismos podemos compartir nuestros programas con otras person
as.
Acceso a informacin: Se puede buscar y recuperar cualquier tipo de informac
in. Si no
se est seguro de dnde buscar, existen programas especiales que nos pued
en ayudar.
Comunicacin con otras personas: Se puede sostener una conversacin con otras
perso
nas usando el teclado y la pantalla (puede ser una sola persona o incl
uso un grupo).
2
Nota: los domicilios de Internet no son sensibles a maysculas
y minsculas, por lo que es lo mismo
teclear una direccin con letras maysculas o con letras minsculas o con
una mezcla de ambas. Aunque es
82
Internet
Tabla 5.1
Signi cado
Organizacin comercial
Institucin educativa
Institucin gubernamental
Organizacin internacional
Ejrcito
Organizacin de redes
Organizacin no lucrativa
5.4 WWW
83
en hipertexto, si quieres ms informacin acerca de un tema en particular
que fue mencio
nado, usualmente puedes hacer click sobre el tema para leer con ms det
alle. De hecho, los
documentos pueden estar ligados a otros documentos de autores complet
amente diferen
tes, mucho como las referencias al pie de pgina, pero puedes sumergirt
e en ella de forma
instantnea.
El trmino hipermedia es un super conjunto de hipertexto; esto es,
cualquier medio con
apuntadores a otro medio. Esto signi ca que los navegadores pueden desp
legar no slo
archivos de texto, sino imgenes, sonidos o animaciones.
Existen diferentes sitios donde todos los usuarios pueden encontr
ar todo tipo de infor
macin y hacer bsquedas en la red. Por ejemplo:
Google: www.google.com
Yahoo: www.yahoo.com
5.4.1.
n objeto en
Internet, tal como el nombre de un archivo. Los URL se ven como los q
ue ac siguen:
ftp://ftp.fciencias.unam.mx/pub/cursos/677/tarea.txt
http://www.fciencias.unam.mx/admin/directorio.html
La primera parte del URL, antes de los dos puntos, especi ca el mtod
o de acceso. La
parte del URL despus de las dos diagonales indica el nombre de la mquin
a y cada diago
nal separa la ubicacin del archivo dentro de dicha mquina; en el caso d
el primer ejemplo
mencionado anteriormente se lee como: dentro de la mquina ftp.fciencia
s.unam.mx, uti
lizando el protocolo FTP, en la ruta pub/cursos/677 encontrars el arch
ivo tarea.txt.
El mtodo de acceso http es acrnimo de HiperText Transfer Protocol y
es el mtodo
de acceso ms comn, por lo que si no aparece un mtodo de acceso explcitame
nte, la
mayora de los sistemas suponen que se trata de http.
5.4.2.
Navegadores
e la ventaja de
funcionar en casi todos los UNIX, as como en ambientes Windows.
Microsoft poco despus sac el navegador Internet Explorer, desbancan
do as a Nets
cape Navigator. En aos recientes Netscape Communications Corporation l
iber el cdigo
84
Internet
fuente de su navegador y de esta manera naci el proyecto Mozilla. Sin embarg
o ste fue
reescrito desde cero tras decidirse a desarrollar y usar como base un nuevo
conjunto de
herramientas multiplataforma basado en XML llamado XUL.
A nales de 2004 apareci en el mercado Firefox, una rama de desarrollo de M
ozilla
que pretende hacerse con parte del mercado de Internet Explorer. Se trata d
e un navegador
ms ligero que Mozilla.
La comunicacin entre el servidor web y el navegador se realiza mediante
el protocolo
HTTP. Su funcin principal es mostrar documentos HTML en pantalla. En la actu
alidad,
no solamente se descargan este tipo de documentos sino tambin documentos con
im
genes, sonidos e incluso videos en diferentes formatos. Adems, permiten alma
cenar la
informacin en el disco o crear marcadores (bookmarks) de las pginas ms visitad
as.
Algunos de los navegadores web ms populares se incluyen en lo que se den
omina una
Suite. Estas Suites disponen de varios programas integrados para leer notic
ias de Usenet y
correo electrnico mediante los protocolos NNTP, IMAP y POP.
Actualmente existen diferentes navegadores y todos cumplen con el mismo
objetivo:
permitir al usuario recuperar y visualizar documentos de hipertexto, comnmen
te descritos
en HTML, desde servidores web de todo el mundo a travs de Internet. Algunos
de los ms
utilizados en el mundo Linux son:
Firefox: http://www.mozilla.com
Opera: http://www.opera.com/
Konqueror (integrado con KDE)
Galeon (integrado con Gnome)
rec
cam
Net
que la
Go to si
campo.
5.4 WWW
85
Actividad 5.1
(a) Abre un navegador y visita la pgina de la Facultad de Ciencias
de la U.N.A.M.
ubicada en http://www.fciencias.unam.mx
(b) Localiza los servicios en lnea para estudiantes.
5.4.3.
Google
Google es una compaa cuyo principal producto es el motor de bsqueda
del mismo
nombre. Fue fundada el 27 de septiembre de 1998 por dos estudiantes
de doctorado de la
Universidad de Stanford, Larry Page y Sergey Brin. Aunque su princi
pal producto es el
buscador, la empresa tambin cuenta con otros servicios: un comparado
r de precios lla
mado Froogle, un motor de bsqueda para material almacenado en discos
locales llamado
Google Desktop Search y un servicio de correo electrnico gratuito ll
amado Gmail, que ha
revolucionado los sistemas de correo electrnico en el web.
A continuacin se listan algunos de los servicios que ofrece Googl
e actualmente:
Tabla 5.2
5.4.4.
Servicios
Gmail
Video
Maps
Calendar
Earth
Talk
Books
Wikipedia
86
Internet
otros idiomas encontramos ingls (el de mayor cobertura), espaol, fran
cs y alemn.
La carcterstica principal de la wikipedia es la posibilidad de ed
itar los artculos de la
enciclopedia. En general, a los sitios web que permiten la edicin (e
n lnea y sin mayores
restricciones) de su contenido se les conoce como wikis.
El objetivo de la wikipedia es almacenar artculos sobre temas co
nsiderados enciclop
dicos; sin embargo dentro de sta puedes encontrar otros proyectos de
contenido diverso,
como:
Tabla 5.3 Otros servicios de la Wikipedia
Servicio
Wikinoticias
Wikiversidad
Wikilibros
Wikisource
Wikiquote
Meta Wiki
Wikiespecies
Descripcin
El noticiario libre
La universidad libre
La casa editorial libre
La biblioteca libre
Citas y frases famosas
Coordinacin de proyectos
Directorio de especies
5.6 Netiquete
87
5.6. Netiquete
La palabra netiquete se deriva de dos raices, Net, que signi c
a red y etiquete que se
re ere az las reglas de etiqueta para comportarse en un cierto mbit
o, por lo que el trmino
se re ere a la etiqueta que debemos seguir cuando usemos la red, e
s decir, son ciertas
reglas (de etiqueta) que sera deseable seguir cuando estemos util
izando cualquier forma
de comunicacin a travs de la red. Estas reglas no son obligatorias
pero si deseables. En
resumen Netiquete se re ere a la forma adecuada de comportarse en
Internet.
Antes de entrar en materia, es esencial que cada usuario en
la red reconozca su res
ponsabilidad, al tener acceso a servicios, sitios, sistemas vast
os y personas, pues es ste el
responsable por sus acciones al acceder a servicios de la red.
Internet, o la red, no es una simple red; es ms que eso: un grupo
de miles de
redes individuales que han escogido permitir pasar tr co entre ella
s. El tr co enviado a
Internet puede atravesar varias redes diferentes antes de llegar
a su destino. Por eso, los
usuarios involucrados en estas redes interconectadas deben de es
tar informados de la carga
que imponen en otras redes participantes.
Como un usuario de la red, se te permite acceder a otras red
es (y/o los sistemas de
computadora unidos a esas redes). Cada red o sistema tiene su pr
opio grupo de polticas
y procedimientos. Acciones que estn rutinariamente permitidas en
una red pueden estar
controladas, o igualmente prohibidas en otra red. Es responsabil
idad de los usuarios regirse
por las polticas y procedimientos de estas otras redes. Recuerda,
el hecho que un usuario
pueda ejecutar una accin particular no implica que deba tomar tal acc
in.
El uso de la red es un privilegio, no un derecho, que puede
temporalmente ser revocado
en cualquier momento, por conducta abusiva. Tal conducta incluira
el poner informacin
ilegal en un sistema; el uso abusivo o de, por otra parte, lengu
aje inaceptable tanto en
mensajes pblicos o privados; el envo de mensajes que den como resu
ltado la prdida de
trabajo del destinatario o de sus sistemas; el envo de artas caden
a"; o la "transmisin"de
mensajes a listas o individuos y cualesquiera otros tipos de uso
que causen congestin de
la red o que inter eran con el trabajo de otros.
5.6.1.
stas son algunas de las reglas que todo usuario de Internet debera
cumplir:
El volumen y mantenimiento del buzn electrnico de un usuario
es responsabilidad
del propio usuario.
Cuando cites a otra persona, borra cualquier cosa que no s
ea directamente aplicable
a tu respuesta. No permitas que tu email o software de Use
net cite automticamente
todo el cuerpo de los mensajes que se responden cuando no
sea necesario. Tmate el
88
Internet
tiempo de editar lo citado a un mnimo como para proveer contexto a
la respuesta. A
nadie le gusta leer un mensaje largo citado tres o cuatro veces,
slo para ser seguido
por una lnea de respuesta como: "S, yo tambin".
Usa palabras en mayscula slo para destacar un punto importante o di
stinguir un
ttulo o cabecera. El usar palabras en mayscula que no sean ttulos su
ele ser consi
derado como GRITOS.
Nunca mandes cartas cadena por Internet. El hacerlo puede causarte
la prdida de
tu acceso a Internet.
S cuidadoso cuando uses sarcasmo y humor. Sin comunicaciones cara
a cara tu chis
te puede verse como una crtica. Cuando trates de ser gracioso, usa
emoticons para
expresar humor. (Voltea tu cabeza hacia la izquierda para ver el
emoticon sonrisa: : )
= carita de humor feliz).
Recuerda que algunas listas de discusin y grupos Usenet tienen mie
mbros de mu
chos pases.
No des por hecho que ellos van a entender una referencia a un
programa de TV,
pelculas, cultura popular o hechos actuales de tu propio pas.
Si debes usar la
referencia, por favor explcala.
No des por hecho que ellos van a entender referencias geogr cas q
ue son lo
cales o nacionales.
Si alguien enva un comentario o pregunta fuera del tema de la list
a, no respondas a
la lista y no mantengas el tema de fuera de la lista en la conver
sacin pblica.
No
No
No
No
No
debers
debers
debers
debers
debers
izacin.
8. No debers apropiarte del trabajo intelectual de otras personas.
9. Debers pensar acerca de las consecuencias sociales del programa qu
e escribes.
10. Debers usar una computadora en formas en que muestres consideracin
y respeto.
Introduccin
5.7.2.
Utilizando KMail
90
Internet
Filtros de mensajes.
Muchas veces se tienen problemas para ordenar los nuevos mensajes cuando ll
egan a
la bandeja de entrada. Los ltros te permiten realizar ciertas tareas automtic
amente
sobre los mensajes entrantes y llevar a cabo acciones manualmente sobre los
mensajes
seleccionados en una carpeta.
Los ltros constan de criterios de ltrado, cuyas reglas determinan si un ltro a
plica a
un mensaje; y una lista de acciones de ltro, que describe qu hacer con el men
saje.
Los ltros se consideran uno despus de otro, comenzando por el primero de la l
ista. El
primero en el que coincida el patrn de bsqueda ser ejecutado.
Patrones de bsqueda: Los criterios por los que un ltro puede buscar:
Mensaje. Busca en todo el mensaje (es decir cabeceras, cuerpo y adjuntos,
si los hay).
Cuerpo. Busca en el cuerpo del mensaje (es decir, todo el mensaje salvo l
as cabece
ras).
Cualquier cabecera. Busca en las cabeceras del mensaje.
Destinatarios. Busca en los campos Para y CC del encabezado del mensaje.
Tamao en bytes. Establece los lmites inferiores o superiores del tamao del m
en
saje.
Edad en das. Establece los lmites superiores o inferiores de la antigedad de
l men
saje.
Estado. De ne las restricciones al estado del mensaje.
Cualquier otro nombre. Busca el campo de la cabera indicado por ese nombr
e.
Acciones de ltrado.
El uso ms frecuente de los ltros es el de ordenar los mensajes entrantes en
diferentes
carpetas. Las posibles acciones son:
Mover a carpeta. Esto mover el mensaje a otra carpeta, eliminndolo de su ca
rpeta
actual si fuera necesario.
Copiar en carpeta. Copiar el mensaje en otra carpeta.
De nir identidad. De nir la identidad que se va a usar si respondes al mensaje
.
Marcar. Esto permite marcar los mensajes como ledo, importante, reenviado
o con
testado.
Enviar MDN falso. Enviar un mensaje de noti cacin de disposicin falso (es deci
r
un recibo de lectura) al remitente del mensaje.
De nir transporte. Esto establecer el mtodo de transporte (por ejemplo SMTP)
que se va a usar si respondes al mensaje.
De nir Responder. Modi car el campo Responder a de este mensaje. Esto es til
para la listas de correo.
Reenviar. Reenviar el mensaje en la lnea a otras direcciones de correo elec
trnico.
Redirigir. Redirigir el mensaje como si hubiera sido para otra direccin de
correo
electrnico.
e nido para la
identidad de ese mensaje.
Recibir un mensaje cifra. Selecciona el mensaje y escribe tu fra
se de paso. Luego,
92
Internet
KMail intentar descifrar el mensaje y lo mostrar en texto plano si ha conse
guido
descifrarlo con tu clave pblica.
Recibir una clave pblica. Puedes recibir una clave pblica como un adjunto, o
va
http o ftp, para cifrar un mensaje al propietario de la clave. Luego pued
es aadir esta
clave junto con el resto de claves pblicas tecleando
pgp ka nombre_archivo
en la lnea de rdenes (usando PGP) o tecleando
gpg import nombre_archivo
en la lnea de rdenes (usando GnuPG).
Anti correo basura.
KMail usa herramientas externas y especializadas para el correo basura. Alg
unas de las
herramientas admitidas son:
Bogo lter. Bogo lter es un ltro que detecta spam en la fase inicial de entrenami
ento.
SpamAssassin. SpamAssassin es una herramienta que no necesita entrenamiento
y
depende principalmente de su con guracin.
Filtro de correo de GMX. Usa el contenido del campo de encabezado del mensa
je para
determinar si es o no correo basura.
Antivirus.
KMail usa herramientas externas y especializadas para la deteccin de virus d
entro de
correos. La deteccin de mensajes que contienen virus se realiza de niendo acci
ones a
travs de una herramienta dentro de un ltro especial. Otro ltro tiene las regla
s para
veri car los mensajes con virus detectados y acciones para marcarlos.
Seguridad.
Las opciones de seguridad relativas a la lectura de mensajes son:
Convertir HTML a texto plano.
Permitir a los mensajes cargar referencias externas desde Internet.
Disponer de las noti caciones de mensajes.
No enviar MDNs en respuesta a los mensajes cifrados.
Importar automticamente las claves y los certi cados.
Las opciones de validacin S/MIME son:
Validar certi cados usando CRL.
Validar certi cados en lnea (OCSP).
Validar URL del OCSP.
Validar rma del OCSP.
Ignorar la URL para el servicio de certi cados.
No comprobar las polticas de certi cados.
No consultar nunca una CRL.
Obtener certi cados de los emisores que no se tengan.
No realizar ninguna peticin HTTP.
Ignorar puntos de distribucin de certi cados de CRL por http.
5.8 FTP
93
Usar el proxy HTTP del sistema.
Usar proxy para peticiones http.
No realizar ninguna peticin LDAP.
Ignorar los puntos de distribucin de certi cados de CRL por LDAP.
Validar la mquina principal para las peticiones LDAP.
Groupware.
Hace posible almacenar las entradas de las aplicaciones de Kontact
(KOrganizer, KAd
dressBook y KNotes).
5.8. FTP
FTP (File Transfer Protocol) se utiliza para transferir archivos
entre dos computadoras,
generalmente conectadas va Internet. Cuando usas FTP, lo que realmente
ests usando
es un programa llamado cliente, que se conecta con otra computadora q
ue mantiene los
archivos, llamada servidor.
5.8.1.
Qu es un FTP annimo?
94
Internet
Tabla 5.4
Descripcin
Cambia a modo ascii.
Cambia a modo binario.
Cambia de directorio en la computadora remot
a.
dir
n la computadora re
ls
mota.
Es parecido a dir, pero a veces muestra meno
get
s informacin.
la tuya.
help
n el programa ftp.
lcd
s por local).
lpwd
putadora.
mget
ta a la tuya.
pwd
ra remota.
96
Internet
%
%
%
%
Puedes copiar archivos del sistema local a una mquina remota o vice
versa, o an entre
dos sistemas remotos usando el comando scp. Para especi car un archivo e
n un sistema
remoto simplemente hay que agregar como pre jo el nombre del sistema rem
oto seguido
de dos puntos (:).
La sintaxis simpli cada para copiar archivos a sistemas remotos de f
orma segura con
scp es:
scp [[usuario@]sistema_orig:]archivo [[usuario@]sistema_dest:]arch
ivo_o_dir
Si no tecleas el nombre del archivo donde se copiar o no especi cas u
n directorio,
se usar el nombre del origen. Una forma sencilla de obtener una copia d
e un archivo
remoto en el directorio actual es usando un punto como destino; por ej
emplo, para copiar
el archivo hola de la mquina beta al directorio donde estamos actualmen
te y usando el
mismo nombre de usuario, hacemos lo siguiente:
98
Internet
5.10.1.
Funcionamiento de PGP
No existe un mtodo que pueda romper el cifrado PGP por medios cripto
gr cos o de
cmputo. Adems, en comparacin con otros protocolos de seguridad, como SSL
que slo
protegen la informacin momentneamente mientras estn en trnsito a su destin
o, PGP
puede ser utilizada para proteger la informacin en medios de almacenami
ento de larga
duracin como discos duros. La seguridad en el mtodo de cifrado PGP se ba
sa en el hecho
de que los algoritmos utilizados son inquebrantables con las tcnicas de
l criptoanlisis
moderno.
Introduccin
Akregator
$ smart
Akregator es un lector de RSS como parte de la integracin de KDE
utilizado princi
install
palmente en sistemas UNIX. RSS contiene noticias y actualizaciones
de sitios Web y Web
Akregator
logs. Los fuentes de RSS pueden ordenarse dentro de categoras, se pu
eden hacer bsque
das incrementales para los ttulos de todas las entradas de la base d
e datos y Akregator
puede ser con gurado para que actualice los fuentes en intervalos reg
ulares de tiempo.
Provee integracin con Konqueror y un navegador interno para leer not
icias.
5.1 RSS
El lector de RSS en Gnome es blam, est escrito en C# para el proyect
o Mono y GTK#.
Utilizando Akregator
Una vez instalado, Akgregator se encuentra en en el men principa
l, dentro de la catego
ra de Internet; o puedes iniciarlo desde una terminal con el comando
akgregator. Akregator
Introduccin
Kopete
$ smart
Kopete es un cliente de mensajera instantnea, desarrollado por y
para el ambiente
install
gr co de KDE. Te permite comunicarte con amigos utilizando varios serv
icios de men
kopete
sajera instantnea. Proviene de la palabra chilena copete utilizada pa
ra referirse a bebidas
alcohlicas.
Kopete soporta los siguientes protocolos:
AOL Instant Messenger
Gadu Gadu
102
Internet
ICQ
Internet Relay Chat
Jabber (XMPP)
MSN Messenger
Novell GroupWise
SMS
Skype (via Kopete Skype)
Yahoo! Messenger
Lotus Sametime
La idea es tener una nica herramienta que permita acceder a los difere
ntes sistemas
de mensajera instantnea de una manera fcil de utilizar. El sistema est integr
ado con
otras aplicaciones KDE de manera que te permite acceder a los contactos d
e la agenda
de direcciones y otras utileras proporcionadas. Tambin provee herramientas
para guar
dar conversaciones, cifrado de mensajes, ltrado de contactos e intercambio
de archivos;
adems es un sistema extensible al que se le pueden agregar fcilmente nuevos
accesorios
como protocolos de comunicacin, edicin en LATEX, traductores de texto, etc.
Kopete introduce la idea de metacontactos, que permite combinar las d
iferentes for
mas que tienes de contactar a alguien en una sola persona. Otras aplicaci
ones listan a una
misma persona con varias cuentas de mensajera de manera separada (como si
se tratara
de personas diferentes por tener diferentes cuentas de mensajera); un meta
contacto es una
persona y los contactos son las diferentes formas de comunicacin con sta. A
s, los con
tactos se reconocen fcilmente mediante iconos pequeos que representan el pr
otocolo de
comunicacin que puedes utilizar.
o el men de
KDE localiza la seccin de internet, que mostrar todos los servicios de inte
rnet disponibles
en tu sistema y selecciona kopete.
5.12.5.
Extensiones
106
Internet
5.13. Rdesktop: Remote Desktop Protocol Client
Rdesktop es un cliente RDP(Remote Desktop Protocol)3 para la mayora
de los sistemas
Unix, como son Linux o FreeBSD. Fue creado por Matthew Chapman. Es una
herramienta
libre y de cdigo abierto, escrita bajo la licencia de GNU (General Publ
ic License) que
permite al usuario interactuar con terminales Windows NT/2000.
5.13.1.
Utilizando Rdesktop
108
Internet
cmo con gurar cada una de ellas para realizar slo las operaciones ms sencil
las.
5.14.1.
Resumen
Correo, KMail
Contactos, KAddressBook
mquina remota. La ventaja de tener una agenda en una mquina remota radic
a en poder
compartir contactos con distintas personas, y poder acceder a esa info
rmacin desde dife
rentes computadoras. Existen varias formas para hacer eso, pero en est
e captulo veremos
122
Internet
5.15.1.
VM
5.15 Emacs
123
si te arrepientes acerca de borrar el mensaje, puedes seleccion
arlo y presionar u (vm
undelete message) y rescatas el mensaje.
La accin de eliminar para siempre los mensajes borrados se c
onoce como expulsin y
se logra tecleando # # # (vm expunge folder).
Puedes utilizar h (vm summarize) para que VM te muestre una
ventana con un resu
men del contenido de la carpeta actual. En esta lista aparecen
los mensajes presentados por
nmero de mensaje, con el autor, fecha, tamao (en lneas y bytes) y
el asunto del mensaje.
Adems, a la izquierda de cada resumen, aparecen una serie de let
ras que te indican, entre
otros, si el mensaje es nuevo, no ledo o marcado para ser borrad
o.
Una vez que terminas de leer y manejar tu correo, debes gua
rdar la carpeta actual para
que la prxima vez que entres a VM, ste sepa cules ya fueron ledos,
cules ya contestas
te, etc. La tecla S (vm save folder) salva la carpeta. Puedes o
ptar por terminar la visita
de esta carpeta con q (vm quit), que salva la carpeta antes de
terminar su revisin.
En cualquier momento durante tu sesin de VM puedes utilizar
el comando g (vm
get new mail) para revisar si arribaron nuevos mensajes para es
ta carpeta. Si hay nuevos
mensajes, este comando los mover de la bandeja de entrada (en in
gls spool) a la carpeta
actual.
Tu carpeta de correo base
Por omisin VM intentar asociar tu buzn local con tu carpeta de
correo base, por
lo que si este comportamiento no es adecuado, y en la mayora de
los casos no lo ser,
debes indicarle dnde vive tu correo. Por ejemplo, nuestro viejo
amigo Juan Prez tiene lo
siguiente en su /.vm para indicarle a VM de dnde debe obtener el
correo nuevo:
1
( s e t q vmspool f i l e s
2
( ( " / INBOX "
3
" imaps s l : g a l a d r i e l . f c i e n c
i a s . unam . mx: 9 9 3 :
4
i n b o x : l o g i n : Juan . Perez :
"
5
" / INBOX .CRASH " ) )
6
)
Como puedes apreciar, la variable vm spool les recibe una lista
de listas. Esto signi ca
varias cosas. Primero, que VM puede manejar varias bandejas de
correo electrnico dis
tintas, sin importar si stas son bandejas locales o remotas. Seg
undo y menos obvio, que
puedes asociar en una misma carpeta correo proveniente de diver
124
Internet
entrada de correo; despus procesa todos los mensajes almacenados en la car
peta de recu
peracin y los mueve a la carpeta de entrada.
Gracias a esto ltimo, VM ofrece un excelente soporte para errores, ya
que si algo sale
mal durante el proceso de tu correo o se interrumpe la ejecucin de Emacs p
or cualquier
motivo, tu correo no se pierde y cuando ejecutes VM nuevamente, ste buscar
en la ban
deja de entrada y la carpeta de recuperacin, y procesar los mensajes que en
cuentre y los
mover a tu carpeta de inicio.
Finalmente, en las lneas 3 y 4 del ejemplo de con guracin arriba5 , Juan
le indica a
VM que para acceder a su correo tiene que utilizar estos parmetros:
Protocolo: El protocolo que soporta el servidor de correo donde Juan tien
e su cuenta es
IMAP y requiere cifrado con SSL. VM adems soporta los protocolos de
correo local
y POP3.
Servidor: El servidor es galadriel.fciencias.unam.mx.
Puerto: 993, que es el puerto estndar para IMAP sobre SSL. El puerto usual
para IMAP
es 143, para POP3 el 110 y para POP3 sobre SSL el 995.
Bandeja de entrada: La bandeja de entrada en el servidor es inbox.
Mecanismo de autenticacin: El mecanismo para que Juan se autentique con el
servidor que utiliza en este caso es login, pero VM tambin soporta
preauth y cram
md5, que son mecanismos comunes en muchos servidores IMAP sobre SS
L.
Direccin de correo: Juan adems le indica a VM que su cuenta de correo en el
ser
vidor tiene el identi cador Juan.Perez.
Contrasea: Finalmente, por razones de seguridad, Juan le indica a VM que l
a con
trasea para acceder al servidor deber solicitarla (utilizando el min
i buffer) cada vez
que l quiera acceder a su carpeta de inicio.
Una vez que VM recibe la contrasea y logra autenticarse exitosament
e con el servi
dor, almacena la contrasea por el resto de la sesin, por lo que Juan
solamente debe
teclear su contrasea una vez durante su sesin actual de Emacs.
Seleccin de mensajes
Para poder leer, borrar o realizar cualquier accin con un mensaje, pri
mero debes se
leccionarlo o, en terminologa VM, convertirlo en el mensaje actual. La may
ora de los
comandos de VM surten efecto sobre el mensaje actual.
5
En realidad estas dos lneas (3 y 4) deben aparecer como una sola, per
o la dividimos en dos por razones
de legibilidad.
5.15 Emacs
125
Tabla 5.5
Comando/Descripcin
(vm next message) se mueve hacia adelant
e en la carpeta ac
n
tual. Salta mensajes marcados como borra
dos.
(vm prev message) se mueve hacia atrs en
la carpeta actual.
p
Salta mensajes marcados como borrados.
(vm goto message) te pedir un nmero de men
saje, N , y sal
Enter
tar a ese mensaje.
(vm goto message last seen) te llevar al l
timo mensaje
Tab
revisado.
el mensaje si
N
arcado como ledo o
no.
(vm {next(prev)} unread message) se mueve ha
cia adelante
M n
M p
(atrs) hasta encontrar el siguiente (ante
nto.
Si deseas que los comandos bsicos n y p se salten tambin los mens
ajes ledos, de
bes asignar t a la variable vm skip read messages; y si adems deseas
que los mensajes
en la carpeta VM los recorra como en una lista circular, es decir q
ue al llegar al ltimo y
seleccionar el siguiente (con n ), VM te lleve al primer mensaje, t
ambin debes asignar t a
la variable vm circular folders.
Una vez seleccionado un mensaje VM te lo mostrar. Como ya mencio
namos anterior
mente, esto es un trabajo de dos pasos: vista previa y mensaje comp
leto.
La vista previa te muestra una pequea parte del mensaje para que
puedas decidir si
quieres o no verlo completo. Con Space accedes al mensaje completo
y puedes paginarlo.
126
Internet
Existen variables en VM que te permiten controlar si deseas o n
o ver ciertos contenidos
MIME. Por ejemplo, vm auto displayed mime content types, cuyo valor
por omisin
es ("textimagemultipart") y que incluye algunos de los valores comu
nes para mensajes de
correo codi cados con MIME.
Enviando mensajes
Cuando envas mensajes desde VM utilizas el modo mayor Mail de Em
acs, ms algunas
extensiones con los siguientes enlaces:
Tabla 5.6 Emacs: comandos para manipular la composicin de correo en VM
Enlace
C c C y
eta padre al buf
Comando/Descripcin
(vm yank message) copia un mensaje de la carp
fer de composicin. Lee el nmero de mensaje dese
osicin. Cuan
do enves el mensaje, VM insertar el archivo y l
o codi car utili
C c C m
zando MIME.
(vm mime attach message) anexa un mensaje de
correo a la
composicin. Te preguntar el nmero del mensaje qu
e anexar y
cuando enves tu correo, VM aadir el mensaje como
un digerido
C c C b
MIME.
(vm mime attach buffer) aade un buffer de Emac
C c C e
sicin.
(vm mime encode composition) codi ca el mensaje
s a la compo
elaborado
utilizando MIME, pero no lo enva. Esto es til s
i quieres
rmar el
mensaje con PGP antes de enviarlo. Despus de e
el mensaje con C c C c .
(vm preview composition) Te muestra una vista
saje actual en elaboracin. En la vista previa
5.15 Emacs
127
enviar el mensaje utilizando M r (vm resend bounced message). Este
mensaje tendr
un nuevo encabezado Resent To donde debes poner la direccin correcta
del receptor que
fue rechazado.
Los comandos ms interesantes de Mail y que son heredados por VM
son:
Tabla 5.7 Emacs: comandos de Mail
Enlace
C c C s
Comando/Descripcin
(mail send) enva el mensaje y mant
C c C c
composicin seleccionado.
(mail send and exit) enva el mensa
iene el buffer de
je y selecciona
otro buffer. Este es el comando ms
comn para con
cluir la composicin de mensajes y
enviarlos.
C c C f C t
C c C f C s
uno si no existe.
(mail subject) mueve el punto al
Comando/Descripcin
(vm reply) contesta al autor del mensaje actual
.
R
ensaje actual y cita el
f
el mensaje actual.
F
receptores del mensa
128
Internet
Tabla 5.9
Comando/Descripcin
(vm forward message) este comando te sita en un b
uffer de com
posicin, similar al comando m , pero el mensaje o
riginal aparece
@
en el buffer.
(vm send digest) funciona como z , excepto que t
je recibido, pe
ro que no aparezca encapsulado (que es lo que ha
ce z ) entonces
debes utilizar este comando y VM iniciar un buffe
r de composicin
con una rplica del mensaje, pero agregar un encabe
zado Resent To
que debes llenar con la direccin deseada.
Marcas de mensajes
La mayora de los comandos mencionados para enviar, contestar y t
raspasar mensajes
reciben argumentos numricos pre jos (con C u N , donde N es un nmero) y
pueden
trabajar sobre mensajes marcados. VM provee marcas de propsito gener
al que pueden
aplicarse a cualquiera o a todos los mensajes dentro de un folder.
Para marcar el mensaje actual teclea M M (vm mark message). Si
le pasas un ar
gumento numrico N , marcar tambin los siguientes N 1 mensajes siguient
es; con un
argumento negativo, los N 1 previos. Un asterisco (*) aparecer a la
derecha de los nme
ros de mensaje marcados.
Para quitar la marca a un mensaje puedes utilizar M U (vm unmar
k message).
M m marca todos los mensajes en la carpeta actual y M u les quita
la marca.
Con guracin de correo saliente
VM intentar enviar los mensajes que compones utilizando el mtodo
de nido por Mail
de Emacs, esto es, por el valor de send mail function, el cual por
omisin intentar utilizar
el programa sendmail local.
Dependiendo de tu servicio y con guracin de acceso a la red, puede
ser que no cuentes
con un programa sendmail o con un equipo capaz de enviar directamen
te correo electr
nico. En estos casos es comn que tu servicio de correo incluya un se
5.15 Emacs
129
utilizar otro programa para enviar mensajes llamado smtpmail y po
ner algo similar a lo
que nuestro amigo Juan puso en su /.vm:
( s e t q vmmail headerfrom " Juan Perez <Juan . Perez@ciencias . un
am . mx>"
sendmail f u n c t i o n smtpmailsend i t
smtpmailsmtps e r v e r " g a l a d r i e l . f c i e n c i
a s . unam . mx"
smtpmaill o c a l domain " c i e n c i a s . unam . mx"
smtpmailsendtodomain " c i e n c i a s . unam . mx"
)
5.15.2.
BBDB
$ smart
BBDB es una base de datos para manejar contactos en Emacs. BBD
B viene de Insidious
install bbdb Big Brother Database y ofrece las siguientes caractersticas:
Integracin con distintos lectores de correo:
Despliega de manera sencilla la entrada correspondiente a
l remitente del mensaje
actual.
Permite la creacin automtica de entradas basado en el conte
nido del mensaje
actual.
Permite agregar de manera automtica datos a campos de la e
ntrada que corres
ponde al remitente del mensaje.
Muestra una lista de registros que casan con una expresin reg
ular.
Para activar BBDB debes poner lo siguiente en tu /.emacs:
( r e q u i r e bbdb )
( bbdb i n i t i a l i z e )
Con lo anterior tendrs una base funcional que te permite reali
zar bsquedas y mani
pular registros. Sin embargo, no est asociada con ninguno de los l
ectores de correo. Para
utilizarlo con VM (ver la Seccin 5.15.1) y poder enviar mensajes a
provechado tu base de
contactos, debes utilizar algo como esto:
( r e q u i r e bbdb )
( bbdb i n i t i a l i z e
vm)
Adems, para utilizarlo desde VM debes agregar lo siguiente a tu
/.vm.
( bbdbi n s i n u a t e vm)
Esta lnea agrega enlaces de teclas a VM y lo con gura para que l
e noti que a BBDB
cuando se carguen nuevos mensajes. Tambin agrega el enlace MTAB al
modo Mail con
el cul puedes completar direcciones que salen de tu base de contac
tos en BBDB.
Utilizando BBDB
Ahora que hemos instalado y activado BBDB, podemos utilizarla
para agregar, revisar
130
Internet
/.bbdb y puedes cambiarlo asignando un nuevo valor a la variable bbdb l
e.
La base de datos de BBDB consiste de un conjunto de registros y c
ada registro corres
ponde a una persona. Cada registro tiene varios campos y estos campos
pueden tener dis
tintos tipos; en la tabla 5.10 te mostramos los tipos prede nidos.
Tabla 5.10 Emacs: tipos vlidos para campos BBDB
Tipo
name
Descripcin
El nombre de la persona, o vaco si corresponde a un
company
AKA
net
adress
phone
notes
a organizacin.
Comando/Descripcin
(bbdb edit current eld) edita el campo en la lnea actua
l.
;
comentarios.
d C k
la lnea ac
DB te preguntar si
C o
istro actual.
n
p
en la siguiente pgina
5.15 Emacs
131
Con
tina de la pgina anterior
Enlace
m
Comando/Descripcin
(bbdb send mail) inicia la composicin de un mensaje
de correo elec
s
r
actual con otro re
de la misma persona.
(bbdb create) crea un nuevo registro en la base de
no mata el buffer.
(bbdb add or remove mail alias) aade un nuevo alias
ue este comando
de correo para
persona.
Para crear tu primer registro, ejecuta M x bbdb create (o simpl
emente c dentro del
buffer *BBDB*). Inmediatamente despus de ejecutar este comando, BBDB
te preguntar,
utilizando el mini buffer para ello, los siguientes datos: Name, Or
ganization, Net, Address
(direccin postal en varias lneas), Phone y nalmente Notes. Nota que a
excepcin de los
primeros tres, puedes teclear Enter y BBDB dejar en blanco (y no des
plegar) ese campo.
En general, los comandos que acabamos de mencionar en la tabla
5.10, no los utilizars
frecuentemente, porque BBDB ofrece una interfaz ms e caz para manejar
tus contactos.
Adems, con las lneas que agregamos al /.emacs arriba, la mayora de las
modi cacio
nes a tu base de contactos se realizan de manera automtica cuando re
dactas nuevos correos
electrnicos o lees correo dirigido a ti.
De hecho, notars que cuando entras a VM y seleccionas un correo,
en el fondo de
la pantalla BBDB te mostrar el registro de tu base de contactos con
la informacin del
remitente. Si no existe ya un registro para ste, BBDB crear uno por t
i. De hecho, los
registros de la base cuentan con un nuevo campo llamado mail alias
que te permite asignar
nombres especiales, o simplemente alias, a ciertos contactos para e
nviar mensajes.
Por ejemplo, si agregamos (con el enlace a ) el campo mail alias
al registro de Eli
132
Internet
5.15.3.
w3m
le.
Descripcin
Arranca emacs w3m y despliega la pgina
est especi cada por la variable w3m home
page.
w3m nd le
en el mini buffer y
5.15 Emacs
133
Moverte en un buffer de emacs w3m no es difcil, pues la mayora de las
teclas de Emacs
funcionan de la misma forma. Por ejemplo, C n , C v y C s (que usua
lmente sirven para
moverte una lnea hacia abajo, una pgina o buscar una palabra) tambin s
on operaciones
vlidas en los buffers de emacs w3m.
Para seguir una liga utiliza la tecla Enter . Debes mover el pu
nto a la liga, lo cual es
sencillo pues las ligas se destacan del texto normal ya sea que estn
subrayadas o tengan un
color distinto. Aqu est una lista de enlaces para navegar dentro de u
n buffer emacs w3m:
Tabla 5.13 Emacs: siguiendo ligas con w3m
Enlace
Enter
l punto. El com
Comando/Descripcin
(w3m view this url) despliega la pgina sealada con e
portamiento exacto de este comando depende de las
propiedades de la
liga en cuestin.
g
r y har que emacs
G
l mini buffer y
c
mostrada en el
u
a pgina objetivo del
R
to es particular
134
Internet
Tabla 5.14
Enlace
Space
bajo. Si utilizas
Comando/Descripcin
(w3m scroll up or next url) recorre la pgina hacia a
VM ya debes estar acostumbrado a este comportamient
o, pues as fun
delete
>
<
/
/,
M l
acia arriba.
a.
.
erda.
recha.
lmente hasta
que la posicin actual quede en el centro.
El modo mayor de emacs w3m, w3m mode, de ne adems una serie de coma
ndos
para moverse entre distintos objetos, tales como ligas, formas o img
enes.
Tabla 5.15 Emacs: puntos de inters en la pgina ala w3m
Enlace
Tab
Comando/Descripcin
(w3m next anchor) mueve el punto a la siguiente l
M Tab
iga (o ancla, en
erior.
ma.
via.
agen.
revia.
Por ejemplo, si ests viendo la pgina http://www.google.com, (s, la
del afamado
buscador), puedes realizar los siguientes pasos: ] , Enter , (tecle
a lo que sea que quieras
buscar en google) y nalmente C c C c para localizar lo deado.
Ahora que ya sabes moverte dentro de una pgina, resta revisar lo
s mecanismos que
ofrece emacs w3m para movernos entre pginas. Dado que estas pginas so
n buffers de
Emacs, bien podramos utilizar los mecanismos ya provistos por Emacs,
tales como C c C b .
Sin embargo, esto sera muy lento; por ello contamos con las siguient
es formas de hacerlo:
5.15 Emacs
135
Tabla 5.16 Emacs: movimiento entre pginas con w3m
Enlace
B
Comando/Descripcin
(w3m view preview page) se mueve una pgina atrs en la his
toria. Con un
N
na en la histo
H
ar la pgina de
e de la p
gina desplegada. Por ejemplo, intentar moverse a http://
foo/ cuando
http://foo/bar/ sea la pgina actual. Esto tiene sentido
porque es comn que
busques algo en el sitio que no se encuentra ah, la pgina
ya no existe u otros
a al
Space
nal de buffer
problemas similares.
(w3m scroll up or next url) cuando el punto se encuentr
y no puedes avanzar hacia adelante, entonces la tecla S
pace te llevar a la
siguiente pgina donde la siguiente pgina es aqulla de nida p
or el encabe
zado especial next en la pgina actual. Este comando no t
iene relacin alguna
con la historia.
Por ejemplo, si continuamos con la bsqueda que realizamo
s en google arri
ba, notars que al llegar al
ultados y teclear
Del
cuentra al inicio
136
Internet
La primera opcin, q , ejecuta el comando w3m close window que esco
nde la venta
na de emacs w3m y selecciona otro buffer, mientras que la segunda, Q
, ejecuta w3m quit,
que salva la historia de navegacin al disco y termina la ejecucin de em
acs w3m.
Imgenes y ms
Por omisin, emacs w3m no mostrar las imgenes de las pginas; sin embar
go, la
mayora de encarnaciones de Emacs modernas soportan mostrar imgenes en b
uffers. Con
el comando T puedes cambiar la opcin para mostrar o no imgenes en emacs
w3m.
Si deseas que emacs w3m despliegue siempre las imgenes, debes asig
nar t a la variable
w3m default display inline images.
Adems de esto, emacs w3m te permite agrandar o achicar las imgenes,
guardarlas al
disco o verlas con un visor externo. Aqu estn los comandos ms relevantes
:
Tabla 5.17 Emacs: manejo de imgenes en w3m
Enlace Comando/Descripcin
T
(w3m toggle inline images) cambia entre mostrar o no imgenes
en los buf
I
M i
M [
M ]
n actual.
Favoritos
Emacs w3m tambin soporta listas de ligas favoritas o bookmarks y,
para no variar, te
ofrece varias formas de indicarle qu ligas quieres conservar y cmo quie
res referirte a
ellas. As, tenemos las opciones que se listan en la tabla 5.18 de la s
iguiente pgina.
Una vez que tienes ligas favoritas almacenadas, puedes acceder a
ellas con el coman
do v (w3m bookmark view) desde cualquier buffer de emacs w3m. Otra po
sibilidad es
visitar el URL especial: about://bookmark/. En esta pgina vers tus liga
s favoritas orga
nizadas por seccin.
Emacs w3m tiene muchas ms acarctersticas que, por cuestiones de espa
cio, no po
demos explicar aqu. Por ejemplo puedes interactuar con tu buscador de
web favorito con
una sola tecla, S (w3m search) o puedes acumular varios URLs y abrirl
os todos con un
solo movimiento. Pero todas estas caractersticas las dejaremos como ej
ercicio al lector.
5.15 Emacs
137
Tabla 5.18 Emacs: ligas favoritas en w3m
Enlace
a
tegrar la pgina ac
Comando/Descripcin
(w3m bookmark add current url) te permite in
tual a tu lista de favoritos. Si lo llamas c
do con el pun
to a los favoritos.
5.15.4.
ERC
5.2 ZenIRC
ZenIRC es otra alternativa popular para acceder a servidores de IR
C. Al igual que
ERC, ZenIRC no es parte estndar de Emacs y puedes encontrarlo en la
direccin
http://www.zenirc.org/.
$ smart
ERC es un cliente de IRC6 para Emacs. ERC es poderoso, modular
y extensible. Por
install erc omisin ofrece las siguientes caractersticas:
Control de inundacin (detecta y detiene ataques electrnicos).
Fechas.
Puede conectarte a ciertos canales de manera automtica.
Convierte en botones (ligas) a los URLs, nombres de usuario
s, etc.
Rompe lneas muy largas para facilitar su lectura.
Completa nombres de usuario y comandos.
Mantiene una historia de tus entradas.
Te informa de actividades en el canal utilizando la lnea de
modo.
Utilizando ERC
Una vez instalado ERC, que como ya dijimos no es parte estndar d
e Emacs, debes
agregar lo siguiente a tu /.emacs:
6
IRC son siglas del protocolo de Internet Internet Relay Chat (
RFC 1459), que especi ca una red inter
nacional para conectarse y charlar en tiempo real.
138
Internet
( r e q u i r e erc )
( r e q u i r e ercs p e l l i n g )
Y para iniciar el programa debes utilizar el comando M x erc selec
t, quien te pregun
tar por el nombre del servidor al que debe conectarse. Una vez en un bu
ffer de ERC tienes
los siguientes comandos a tu disposicin:
Tabla 5.19 Emacs: comandos de ERC
ea o al
Enlace
C a
nal del prompt.
Enter
Comando/Descripcin
(erc bol) te lleva al inicio de la ln
(erc send current line) enva la lnea a
ctual.
Tab
mpt, completa la pa
, se mueve a la siguiente
M Tab
alabra actual utilizan
C c C b
ffer de ERC al que te
C c C c
va/desactiva el intrpre
liga o botn.
(ispell complete word) completa la p
do ispell.
(erc iswitchb) te pregunta por un bu
quieres cambiar.
(erc toggle interpret controls) acti
te de secuencias como comandos en lo
s mensajes.
C c C d
tiva, ingresa una accin
C c Tab
canal en uno por invita
C c C j
ar a un canal. Si el punto
5.15 Emacs
139
Mdulos
ERC viene con una manera poco estndar de agregar funcionalidad q
ue involucra la
utilizacin de mdulos. Hay mdulos de muchos tipos y para muy diversas f
unciones; para
activarlos debes asignar los deseados a la variable erc modules y a
continuacin ejecutar
erc update modules.
Aqu est una lista de los mdulos disponibles:
Tabla 5.20 Emacs: mdulos para extender ERC
Mdulo
autoaway
Descripcin
Asigna el estado de ausente (away) de manera au
autojoin
tomtica.
a.
bbdb
seccin 5.15.2).
button
textos interesantes.
ll
log
match
notify
tos usuarios.
pcomplete
readonly
replace
ring
scrolltobottom
smiley
spell
stamp
track
a lnea de modo.
truncate
unmorse
140
Internet
5.15.5.
TRAMP
Utilizando TRAMP
Aunque hasta el momento todo lo que hemos dicho de TRAMP suena com
plicado, te
sorprender lo sencillo que es utilizarlo. Imagina que deseas abrir el a
rchivo UNARCHIVO
en la mquina remota MAQUINA; entonces necesitas visitar el archivo, s, c
on el comando
C x C f ( nd le) y le das la siguiente ruta: /MAQUINA:UNARCHIVO. El mtodo
de
acceso por omisin es ssh; si deseas cambiarlo debes asignar el nuevo va
lor a la variable
tramp default method, por ejemplo con la lnea que aparece a continuacin:
( s e t q trampd e f a u l t method " scp " )
Aqu estn algunos ejemplos de las rutas para distintos archivos en sitios
remotos:
/moria.fciencias.unam.mx:.emacs, para editar tu /.emacs en tu dire
ctorio raz en
la mquina moria.fciencias.unam.mx.
/moria.fciencias.unam.mx:/.emacs, para editar el mismo archivo, ya
que se
expande a tu directorio raz.
/ada.fciencias.unam.mx:/etc/issue, para editar el archivo /etc/is
sue en el servidor
ada.fciencias.unam.mx.
Lo anterior supone que tu nombre de usuario en la mquina local es i
dntico al de la
5.15 Emacs
141
Tambin puedes especi car el mtodo de conexin para abrir cierto archi
vo, como
en: /ssh:juan@galadriel.fciencias.unam.mx:/home/juan/miarchivo.txt,
que se conec
tar utilizando ssh al servidor galadriel.fciencias.unam.mx como el u
suario juan.
5.15.6.
Diccionario
Utilizando dictionary
Puedes ejecutar el comando dictionary o utilizar alguno de los
enlaces de tecla que
de nimos arriba, C c s o C c m , para acceder al diccionario.. Todos
estos comandos
te llevarn a un nuevo buffer, con el modo mayor Dictionary.
Este buffer de dictionary est dividido en dos partes. La primer
a es la seccin de boto
nes que te permiten navegar las de niciones, buscar nuevamente, selec
cionar diccionarios
o salir del diccionario. La siguiente es la seccin de de niciones. Una
vez que dictionary
localiza una o varias de niciones solicitadas, las muestra en esta se
ccin.
Notars que en las de niciones aparecen palabras resaltadas con ot
ro color. stas son
referencias cruzadas y funcionan como hipertexto, es decir, son lig
as que puedes seguir y
142
Internet
Tabla 5.21
Comando/Descripcin
nary.
e dictionary.
palabra para
la pala
n o Tab
la siguiente liga.
p o Shift
la liga anterior.
m
y lista todas
Enter
LATEX
6
6.1. Introduccin
Una de las aplicaciones ms importantes de la computadora hoy en da es la
preparacin
de texto, sea ste para notas, una carta, un libro, reporte, artculo, tarea,
etc.
Un procesador de texto es un paquete al que le tecleas texto, con algu
nas observacio
nes y el paquete procede a formatear el texto. Entre las operaciones que de
seamos haga
con el texto estn las siguientes:
1. Armar los renglones de tal manera que quede el texto bien repartido.
2. Armar pginas de tal manera que se vayan numerando y que tengan todas el
mismo
tamao.
3. Facilitar el cambio de tipo de letra y proveer distintos tipos de letr
as como itlicas,
negritas, etc..
4. Facilitar la edicin de tablas de distintos tipos.
5. Facilitar la construccin de ecuaciones matemticas.
6. Facilitar la insercin de guras en el texto.
Muchos de los procesadores de texto pretenden hacer mucho trabajo por
ti. Por ejem
plo, al escribir una carta proveen maneras directas y fciles de formar la c
arta, pidiendo
nicamente el destinatario, el remitente, la rma, etc..
Hay fundamentalmente dos tipos de procesadores de texto, aquellos que
van mostran
do el resultado de la edicin en la misma pantalla, conforme se va escribien
do como es
el caso de Word y aquellos que funcionan con comandos de control y que eje
cutan un
144
LATEX
programa para poder ver cmo queda el texto ya formateado. LATEX es de este l
timo tipo.
Llamemos a los primeros de tipo intrprete, porque van interpretando conform
e van reci
biendo el texto, y a los segundos de tipo compilador, porque primero recib
en todo el texto
y despus lo transforman a las pginas correspondientes.
Cada uno de estos tipos de procesadores tiene sus ventajas y sus desve
ntajas. La prin
cipal ventaja del intrprete es que es ms fcil de usar y detectas inmediatamen
te cuando
algo no es como lo quieres. La principal desventaja es que supone demasiad
os parmetros
respecto a cmo quieres el texto, y toma muchas decisiones que son difciles d
e deshacer.
La principal ventaja de los compiladores es que te da un manejo ms preciso
del formato
que quieres, permitiendo de esta manera una edicin ms rpida. La principal des
ventaja
es que requiere un nivel de abstraccin mayor, ya que como no ests viendo1 el
resultado
de lo que haces, y tienes que compilarlo para verlo, trabajas ms a ciegas.
Se eligi LATEX para trabajar ac por varias razones, entre ellas:
(a) Es un paquete de distribucin gratuita, disponible en prcticamente todos
los sistemas
Unix y que est ampliamente documentado.
(b) La documentacin viene con LATEX, por lo que est accesible.
(c) Cuenta con un gran nmero de gente trabajando continuamente en el proye
cto, por lo
que hay muchos paquetes adicionales para casi cualquier cosa que se t
e pueda ocurrir,
como gra cacin, msica, animacin, entre otros.
(d) Es el ms usado en el medio de Ciencias de la Computacin y Matemticas par
a la
elaboracin de trabajos.
En suma, aun cuando no logres ver ms que una pequea parte, la estructura
de LATEX
es tal que el resto de los paquetes los podrs aprender a manejar por su cue
nta, conforme
los vayas requiriendo.
6.2. Componentes de un texto
Muchos se re eren a los procesadores de texto como procesadores de palab
ra, reco
nociendo con esto que el componente bsico de un texto son las palabras. Sin
embargo,
es en la forma de agrupar palabras donde realmente se formatea texto. Veam
os algunos
componentes importantes de un texto:
palabras
oraciones
prrafos
subsubsecciones subsecciones secciones
captulos
partes
documento
A partir de las subsubsecciones puedes poner ttulos y subttulos.
1
Esto, en realidad, ya no es del todo cierto, pues LATEX cuenta ya con i
146
LATEX
\ a d d t o l e n g t h { v o f f s e t } { 2cm}
O, en general, establecer propiedades de los objetos con que vas a tr
abajar o incluir
de niciones:
\ input { definiciones }
\ i n c l u d e o n l y { segundo }
El documento propiamente dicho que empieza con
\ begin { document }
y termina con
\ end { document }
y entre estas dos marcas puede haber texto;
s t e es un documento que t r a e conceptos b s i c o s
comandos de LATEX;
\ begin { c e n t e r }
...
\ end { c e n t e r }
o, en general, comandos que insertan en ese lugar texto de otros arch
ivos:
\ include { primero }
\ i n c l u d e { segundo }
Actividad 6.1 En esta primera prctica de LATEX escribirs las observaciones e
n un ar
chivo de texto simple. Para ello, utilizando Emacs, debers abrir un archivo
nuevo donde
vayas escribiendo.
Actividad 6.2 Carga en tu Emacs el archivo template1.tex que se encuentra
en el subdi
rectorio indicado en la pgina 3.1.
Actividad 6.3 Compila el archivo fuente. Para hacerlo, vas a llevar a cabo
el siguiente
dilogo en la ventana de comandos. Irs anotando lnea por lnea la interaccin. Deb
er
estar subrayado lo que Emacs escribe y sin subrayar las respuestas.
Cc Cc
para invocar al compilador de LATEX.
Save le /home/usuario/template1.tex?(y/n)
pregunta si se desea actualizar la copia del archivo en el disco. La respu
esta deber ser s
(y) para que LATEX trabaje con la ltima versin.
Command: (Default LATEX )
6.3.1.
Posibles errores
\ end { document }
148
LATEX
\
\
\
\
begin { compactenum }
item . . . .
item . . . .
end { compactenum }
\ begin { c e n t e r }
...
\ end { c e n t e r }
A estos comandos les llamamos de ambiente porque delimitan a un texto pa
ra que
se les apliquen determinadas reglas.
ii. Tambin tenemos comandos que marcan el inicio y nal de un cierto tipo de
datos;
por ejemplo, carcteres matemticos. Para esto, cuando quieres que la frmul
a vaya
insertada entre el texto, puedes usar cualquiera de los dos ambientes
que siguen.
$
.... $
\(
. . . . \)
y cuando quieres que aparezca en un prrafo separado, tienes para ello cu
alquiera de
los dos ambientes que siguen.
$$
....
$$
\[
....
\]
iii. Aquellos que marcan lo que sigue, y que aparecen nicamente como comand
os de
control. A estos les llamamos comandos de estado, porque cambian el e
stado del am
biente:
Ejemplos:
\ bf
\ large
Estos comandos funcionan hasta nuevo aviso. Puedes delimitar tambin su ran
go de
accin si colocas entre llaves al comando y a todo a lo que quieres que s
e aplique:
\ l a r g e Esta es una prueba
y entonces el comando se referir nicamente a lo que est en las llaves ms i
nternas.
iv. Aquellos comandos que actan sobre sus parmetros:
\ s e c t i o n { Primera }
\ setcounter { section } { 4 }
v. Y por ltimo, aquellos comandos que simplemente se usan como abreviaturas
conve
nientes o para denotar smbolos especiales. Siempre empiezan con \
\ cdot
\ uparrow
150
LATEX
adecuadamente el texto de acuerdo a los comandos que recibe. Distin
gue una palabra de
otra por al menos un espacio en blanco, y un prrafo de otro por al m
enos un rengln en
blanco. La forma como aparece el texto fuente, en ausencia de separ
aciones de palabras o
prrafos, no tiene nada que ver con el formato nal, ni en el tamao del
rengln, ni en la
manera en que silabea.
LATEX se encarga de generar espacios entre los prrafos cuando en
cuentra dos cambios
de rengln seguidos (al menos un rengln en blanco). Tambin, cada vez qu
e empieza un
captulo, seccin, subseccin, etc. genera espacios verticales en blanco.
LATEX ofrece la posibilidad de manipular directamente los espac
ios que se dejan entre
prrafos o el cambio de rengln. En los comandos que siguen, <num> repr
esenta a un entero
positivo o negativo y <mdda> representa una unidad de medida, que p
uede ser pt, in, cm,
mm, ex, em o cualquier variable de longitud ex representa la altura
de una x mientras
que em representa el ancho de la letra m . Los comandos con que cue
ntas para manipular
los espacios se muestran en la tabla 6.2.
Tabla 6.2
Descripcin
Indica que se deje incondicionalmente un
espacio en blan
co; puede ser necesario cuando LATEX ge
nera algn cdigo
o que el compi
.
\\
\\[< num><mdda>]
margen izquierdo.
Da un cambio de rengln, pero salta, adems
pieza en el
de al rengln
\\ [< num><mdda>]
l nmero es negati
a continua
\vspace {<num><mdda>}
es
do. Si el nme
vamente, el
texto en un cuarto
\medskip
ip), media lnea ba
\ bigskip
saltos relativos
na en la siguiente pgina
Descripcin
Hace que un prrafo o rengln empi
quierdo de la hoja, en lugar d
fuerza a LaTeX
a obedecer la instruccin.
Tanto \vspace como \hspace pudieran ser inhibidos por LATEX si
es que el compilador
considera que no se vera bien. Por ejemplo, si el desplazamiento ver
tical toca a principio
de una pgina, decide no hacerlo.
Todo documento, menos las cartas, deben tener un ttulo, autor(es
) y la fecha en que
fue impreso. Algunas veces se agrega una nota de agradecimiento. En
general, a esto se le
llama el ttulo. En el prembulo (antes de que empiece el documento pro
piamente dicho)
debes colocar los datos para que LATEX pueda armar el ttulo que se d
esea. Los comandos a
LATEX son:
\ t i t l e { E j e r c i c i o s de Latex }
Este es un comando con un parmetro que le indica a LATEX que el ttulo
del documento es
Ejercicios de Latex. Nota que el argumento debe ir entre llaves.
\ a u t h o r { E l Chapuln Colorado \ and Pepe G r i l l o }
Si se trata de ms de un autor, los nombres de los autores irn separad
os por la palabra
\and.
\ date { E l da ms b e l l o d e l p l a n e t a \ \
\ today }
En la fecha puedes poner lo que quieras, aunque se espera una fecha
. Las dos diagonales
inversas \\ sirven para cambiar de rengln, y las puedes utilizar en
casi cualquier momento.
El comando \today sirve para que LATEX inserte la fecha de hoy.
\ thanks { Gracias a l o s v o l u n t a r i o s de e s t e
t a l l e r }
Sirve para agregar, al pie de la pgina, algn comentario que se desee.
Este comando deber
aparecer una vez iniciado el documento propiamente dicho.
Como ya mencionamos, dependiendo de la clase de documento LATEX
se comportar de
manera diferente al compilar el texto fuente (la especi cacin de \docu
mentcl ass).
Actividad 6.4 Agrega encabezado al documento. Ponte t como autor, ju
nto con tus mejo
res amigos, el ttulo que a t ms te parezca y algn comentario respecto a
la fecha. Agrega
152
LATEX
un prrafo de agradecimiento tan grande como quieras. Recuerda nada ms qu
e debe ir
despus de \begin{document}. Compila y ve el efecto.
Actividad 6.5 El objetivo ahora es ver el efecto que tienen las distin
tas clases de docu
mento sobre lo que se imprime. En todas las acciones que siguen, haz e
l cambio, compila
y ve el resultado. Anota cul es el efecto del cambio. Convierte en come
ntarios (ya sea con
% o con \begin{comment} ... \end{comment} para conseguir que compile b
ien. Comenta tus
observaciones y qu es lo que tuviste que quitar para que compilara bien.
Cada vez que
cambies a un nuevo tipo de documento, quita los comentarios que hayas
puesto.
Actividad 6.6 Cambia el tipo de documento a article . Vuelve a compila
r y reporta lo que
observas, en cuanto al formato de la hoja.
Actividad 6.7 Haz lo mismo que en la actividad anterior, pero con la c
lase book.
6.4.1.
Cartas
Para escribir cartas, todo indica que el formato que le tiene que
dar LATEX es muy distinto
al de los documentos que hemos visto hasta ahora. Puedes meter en un m
ismo documento
varias cartas, ya que se espera que el remitente y la rma sean los mism
os para todas las
cartas incluidas en el documento. Por ello, una vez iniciado el docume
nto, debes especi car
estos dos parmetros. Veamos primero el remitente:
Remitente: Se re ere a lo que normalmente aparece en el tope de la carta
y que es la
direccin de aqul quien rma la carta:
\ address { Dra . Genoveva B i e n v i s t a \ \
Cub c u l o 003. E d i f . de Matem t i c a s \ \
F a c u l t a d de Ciencias , UNAM}
Puede consistir de uno o ms renglones. Si deseas ms de un rengln en e
l remitente,
separas los renglones con \\.
Firma: Para la rma se especi ca de manera similar al remitente:
\ s i g n a t u r e { Dra . Genoveva B i e n v i s t a \ \
P r o f e s o r T i t u l a r B}
Una vez que tienes de nidos estos parmetros, se procede a escribir ca
da una de las
cartas. Se delimita cada una de stas por
\ begin { l e t t e r }
. . .
\ end { l e t t e r }
Dentro de cada carta colocars los parmetros que se re eren a cada una de
ellas. Vea
mos cmo se hace:
154
LATEX
Veamos una lista de tamaos de letras con sus nombres en la tabla 6.3
.
Tabla 6.3
scriptsize
footnotesize
creciendo un poco
small
normalsize
large
una muestra agrandada un poco
Large
Agrandamos la muestra un poco ms
LARGE
Muy grande
huge
Mucho muy grande
Huge
Sper extra grande!
HUGE
Sper dper extra grande!
Como se ve, tienes a tu disposicin siete tamaos distintos de letr
as (aunque en realidad
no hay casi diferencia entre huge, Huge y Huge. En cualquier lugar
donde puede aparecer
texto, ste puede aparecer agrandado o empequeecido. Sin embargo, cuan
do se est usan
do ambiente matemtico estos comandos no tendrn efecto alguno dentro d
el ambiente y
pueden causar un mensaje de aviso.
Actividad 6.9 Vuelve a cargar el archivo CalcProp.tex para que vuel
vas a tener la versin
original.
Actividad 6.10 Localiza en el documento fuente aquellos renglones q
ue estn precedidos
por la palabra \item. A cada uno de ellos, ponle uno de los tamaos d
e letra listados ante
riormente, encerrando el comando y el texto correspondiente entre l
laves. Compila y ve el
resultado.
Actividad 6.11 Quita las llaves que delimitan el texto. Compila y v
e el resultado.
Actividad 6.12 Haz que la primera letra de cada prrafo empiece en ca
da uno de los
tamaos especi cados. Compila y ve el resultado.
Abr.
Comando
\textmd {...}
Descripcin
Medium Series, se re e
\ bfseries
\ bf
\ textbf {...}
Boldface Series, se
\rmfamily
\rm
\textrm {...}
\ sffamily
\ sf
\ textsf {...}
\ ttfamily
\ tt
\ texttt {...}
Typewriter Family, l
re a tipo normal
re ere a negritas
o de letra
etras simples
etra
como de mquina de esc
ribir
\upshape
\itshape
\slshape
\ it
\ sl
\textup {...}
\ textit {...}
\ textsl {...}
\scshape
\sc
\ textsc {...}
T EXTO EN MAYSCULAS E
\textnormal {...}
Texto normal
clinado
S C A L A DAS
\normalfont
156
LATEX
\ t e x t b f { Quieres que aparezca en n e g r i t a s , excepto
\ textnormal { este t e x t o } }
Quieres que aparezca en negritas, excepto este texto
Actividad 6.13 Modi ca el archivo CalcProp.ltx para que las primeras dos pa
labras de
cada prrafo sean con un tipo de letra distinto y un tamao distinto. Usa tod
os los tipos
listados, aunque repitas.
Actividad 6.14 Compila y reporta tus resultados.
A veces puedes combinar dos o ms tipos y tamaos de letras. Por ejemplo,
puedes
querer tener negritas de itlicas:
Negritas itlicas
Este tipo de combinaciones las consigues utilizando los comandos que
corresponden a
la declaracin, cuyo uso es de comando de estado:
{ \ b f s e r i e s \ i t s h a p e N e g r i t a s i t l i c a s
} } comparadas
con \ t e x t i t { I t l i c a s }
que produce
Negritas itlicas comparadas con itlicas
Si se utilizan los dos comandos de abreviatura
{ \ i t \ b f I t l i c a s n e g r i t a s } comparadas con \ t
e x t b f { n e g r i t a s }
nicamente se veri car el ltimo (ms interno) cambio de estado que se haya solici
tado:
Itlicas negritas comparadas con negritas
Lo mismo suceder con cualquier combinacin que se desee de dos tipos de letr
as: debers
combinar usando una como cambio de estado y la otra como comando con argu
mento
aunque la e cacia de esto depende del orden o las dos en modo de declaracin.
6.6. Listas de enunciados o prrafos
Un prrafo es un conjunto de oraciones que empiezan y terminan con dobl
e Enter .
En el documento fuente puedes observar un rengln en blanco para nalizar cad
a prrafo.
El aspecto en el documento formateado depender de los parmetros que tenga L
ATEX para
compilar ese texto aunque se pueden modi car, no lo haremos por el momento.
LATEX provee mecanismos para presentar listas de prrafos, ya sean nume
rados, etique
tados o con una marca separndolos entre s. En general, tienen el siguiente
formato:
Numeraciones
158
LATEX
1. Este es el primer prrafo en el primer nivel
a) Queremos ver qu pasa al anidar en el segundo nivel
1) Anidamos una vez ms para el tercer nivel
2) Otro inciso para que se vea qu pasa en el tercer nivel
a Numeracin en el cuarto nivel
b) Otro inciso en el segundo nivel de numeracin
2. Otro inciso en el primer nivel de numeracin
Como puedes observar, cada nivel lleva su propio contador y usa sus pr
opios mtodos
de numeracin. Los valores por omisin, como acabas de ver, son los nmeros arbig
os
seguidos de un punto para el primer nivel; las letras minsculas seguidas de
un parnte
sis para el segundo nivel; nuevamente nmeros arbigos, pero seguidos de un pa
rntesis
para el tercer nivel; y nuevamente letras maysculas, pero seguidas de un aps
trofo para
el cuarto nivel. LATEX admite nicamente cuatro niveles de anidamiento para
las nume
raciones. Las numeraciones tambin tienen de nidas espacio entre los distintos
niveles y
sangras para los mismos. Puedes de nir qu tipo de numeracin utilice. La manera
ms
fcil es incluyendo el paquete para numeraciones en el prembulo de tu documen
to fuente,
\usepackage{enumerate} y entonces podrs marcar qu tipo de numeracin deseas, c
olocan
do el que correspondera al primero de la lista:
\ begin { enumerate } [ ( a ) ]
\ i t e m Es un paquete de d i s t r i b u c i n g r a t u i t a , d i s p
o n i b l e
en p r c t i c a m e n t e todos l o s sistemas Unix , y que
e s t
ampliamente documentado .
\ i t e m La documentacin v i e n e con \ t e x t n o r m a l { \ LaTeX {
} } ,
por l o que e s t a c c e s i b l e .
\ end { enumerate }
Con esta opcin, produces la numeracin con las etiquetas que deseas:
(a) Es un paquete de distribucin gratuita, disponible en prcticamente todos
los sistemas
Unix, y que est ampliamente documentado.
(b) La documentacin viene con LATEX, por lo que est accesible.
160
LATEX
6.6.2.
Listas marcadas
Cuando simplemente quieres marcar a cada prrafo con algn carcter, co
mo un guin,
un punto o algo similar, puedes utilizar las listas de prrafos:
\ begin { i t e m i z e }
\ item . . .
\ item . . .
. . .
\ end { i t e m i z e }
Tambin estas listas las puedes anidar entre s hasta cuatro niveles
de profundidad,
cambiando el carcter que marca a los distintos prrafos. Observa el sig
uiente ejemplo, con
el cdigo de LATEX a la izquierda y el resultado a la derecha.
\ begin { i t e m i z e }
\ i t e m Primero d e l p r i
ro del primer nivel
\ begin { i t e m i z e
\ i t e m Primero d e l
mero del segundo nivel
\ begin { i t e m
Primero del tercer nivel
\ i t e m Primero
m e r n i v e l
}
segundo n i v e l
i z e }
d e l t e r c e r n i v e l
Prime
Pri
e m i z e }
d e l t e r c e r n i v e l
z e }
Seg
Segun
segundo n i v e l
m e r n i v e l
\ begin { i t e m i z e }
Primero del primer nivel
\ \ i t e m [
\ begin
+ Primero del segundo
\ i t e
] Primero d e l p r i m e r n i v e l
{ i t e m i z e }
nivel
m [ + ] Primero d e l segundo n i v e l
d e l c u a r t o n i v e l
c u a r t o n i v e l
c e r n i v e l
v e l
e l
6.6.3.
Descripciones
El formato para las descripciones es:
\ begin { d e s c r i p t i o n }
. . .
prrafos marcados
. . .
\ end { d e s c r i p t i o n }
162
LATEX
\ begin { d e s c r i p t i o n }
\ i t e m [ enumerate : ] Cada n i v e l se va numerando manteniendo un
c o n t a d o r para t a l e f e c t o .
\ begin { d e s c r i p t i o n }
\ i t e m [ segundo n i v e l ] Es una prueba para v e r s i t i e
n e s e n t i d o
meter o t r o n i v e l ms en d e s c r i p c i o n e s .
\ begin { d e s c r i p t i o n }
\ i t e m [ t e r c e r n i v e l ] Otra p r u e b i t a ms d
e l asunto
\ begin { d e s c r i p t i o n }
\ i t e m [ c u a r t o n i v e l ] Y an hay ms
\ begin { d e s c r i p t i o n }
\ i t e m [ q u i n t o n i v e l ] A v e r s i e
n e s t e t i p o de l i s t a s
s se v a l e
\ end { d e s c r i p t i o n }
\ end { d e s c r i p t i o n }
\ end { d e s c r i p t i o n }
\ end { d e s c r i p t i o n }
\ i t e m [ i t e m i z e : ] Cada p r r a f o se marca con un determinado
c a r c t e r ,
dependiendo d e l n i v e l de anidamiento .
\ i t e m [ d e s c r i p t i o n : ] S i r v e para poner e x p l i c a
c i o n e s o d e f i n i c i o n e s .
\ end { d e s c r i p t i o n }
que produce el siguiente texto:
enumerate: Cada nivel se va numerando manteniendo un contador para tal efe
cto.
segundo nivel Es una prueba para ver si tiene sentido meter otro niv
el ms en des
cripciones.
tercer nivel Otra pruebita ms del asunto
cuarto nivel Y an hay ms
quinto nivel A ver si en este tipo de listas s se vale
itemize: Cada prrafo se marca con un determinado carcter, dependiendo del ni
vel de
anidamiento.
description: Sirve para poner explicaciones o de niciones.
Es importante que notes que en el caso de las descripciones puedes ani
dar tantas veces
como lo desees.
Vamos a crear un archivo nuevo para escribir algunas preguntas y respu
estas respecto a
las listas de prrafos que te acabamos de presentar. Para ello:
Actividad 6.15 Crea un archivo con clase de documento article y que use lo
s mismos
paquetes que usa CalcProp.tex.
Listas ms compactas
164
LATEX
\ usepackage [ newenum , newitem ] { p a r a l i s t }
Si usas este paquete, es conveniente ya no cargar el paquete enumerate
. Proporciona los
siguientes ambientes:
\ begin { compactenum }
...
\ end { compactenum }
\ begin { compactitem }
...
\ end { compactitem }
\ begin { compactdesc }
...
\ end { compactdesc }
Estos tres ambientes resultan muy cmodos para compactar un poco el text
o que se est
produciendo. En este libro es ms comn que usemos estos ambientes que los ori
ginales de
LATEX. paralist tiene adems listas corridas en un nico rengln, pero no las revi
saremos
en este momento.
6.7. Tablas
En general, LATEX provee comandos para de nir tablas de los tipos ms varia
dos. Vere
mos ac nicamente las ms sencillas, aunque no por eso poco poderosas.
Una tabla es un conjunto de renglones alineados por columnas. Por ello,
para que LATEX
vaya acomodando las columnas le debes dar el nmero de columnas y el formato
de de
cada una de ellas. El formato general de una tabla de texto es el siguient
e:
\ begin { t a b u l a r } [ <pos> ] { <cols> }
<renglones>
\ end { t a b u l a r }
Es necesario aclarar que una tabla puede aparecer en cualquier posicin
donde aparezca
una palabra. Por ello, es conveniente en la inmensa mayora de los casos pre
ceder y suceder
a la tabla con un rengln en blanco.
El argumento que va entre corchetes, <pos> se re ere al caso en que dese
es que la tabla
aparezca a continuacin de una palabra, si la queremos alineada desde arriba (
[ t ] ), desde
abajo ( [b]) o centrada [c] , que es el valor por omisin. Este parmetro no t
endr sentido si
se deja, como acabamos de mencionar, un rengln en blanco antes y despus de l
a tabla.
El argumento <cols> se re ere al formato que debern tener las columnas de
la tabla,
y que ser aplicado a cada uno de los renglones. Debes especi car el formato p
ara cada
una de las columnas que deseas tener en la tabla. Tambin especi cas si se deb
e colocar
6.7 Tablas
165
algo entre las columnas. De esto, <cols> corresponde a una lista de
especi cadores, que
se re eren a la sucesin de columnas e intercolumnas:
Tabla 6.5
car pegado a la
izquierda, y ocupar tanto espacio como requiera p
ara quedar conte
r
c
p{<ancho>}
nido en un rengln.
Similar al anterior, pero pegado a la derecha.
Similar al anterior, pero centrado.
Da un ancho jo para la columna. LATEX acomodar el
texto como si
fuera un prrafo, ocupando tantos renglones como s
ea necesario.
m{<ancho>}
un nmero distinto
e el contenido de
las columna.
Para estas dos opciones, el {<ancho>} deber estar dado en:
in
pulgadas
cm
centmetros
mm
milmetros
pt
puntos
em
ancho de carcter
Algn nombre de longitud
|
Una lnea vertical que separa columnas.
||
Dos lneas verticales separando las columnas.
En los primeros tres casos, el tamao
de todos los
renglones de la tabla. Si es que va a haber mucho texto en cada col
umna, te recomendamos
usar la cuarta o quinta descripcin, para que el rengln se doble y se co
nforme un prrafo.
Los renglones se componen de material que quieres en cada column
a. Cada vez que
deseas cambiar de columna, debes insertar un carcter & y cada vez qu
e quieras cambiar de
rengln debers agregar al nal del rengln \\.
Puedes colocar lneas entre cada dos renglones con el comando \hli
ne. Cuando no es el
primero de los renglones, debe venir a continuacin de un cambio de r
engln. Veamos un
ejemplo sencillo a continuacin.
166
LATEX
\ begin { t a b u l a r } [ t ] { cccc }
l e t r a s y smbolos \ \
palabras & oraciones
& p r r a f o s & subsecciones \ \
secciones & cap t u l o s
& p a r t e s & documento
\ end { t a b u l a r }
Se tiene una tabla con cuatro columnas y dos renglones y se usa & p
ara separar las
columnas entre s. Se utilizan \\ para separar los renglones. La tabla q
ueda de la siguiente
manera:
letras
pa
sec
Es importante que notes que lo que corresponde a un rengln formado
no forzosamente
tiene que aparecer en el mismo rengln en el cdigo. Slo en el caso en que
la especi
cacin de la columna sea p o m, el introducir un rengln en blanco ser inter
pretado
como cambio de prrafo, que lo realiza dentro del mismo rengln de la tabl
a y en la misma
columna.
Actividad 6.19 Crea un archivo Tablas.tex y copia el prembulo de CalcPr
op.tex. Copia
la de nicin de la tabla anterior, compila y ve el resultado.
Actividad 6.20 Modi ca la tabla anterior para que quede de la siguiente
manera:
letras y smbolos
prrafos
captulos
palabras
subsecciones
partes
oraciones
secciones
documento
don
de la primera columna est justi cada a la izquierda, la segunda centrada
y la tercera a la
derecha. La tabla tiene tres columnas en lugar de cuatro.
6.7.1.
Multicolumnas
seccio
6.7 Tablas
167
\ begin { t a b u l a r } [ t ] { cccc }
\ m u l t i c o l u m n { 2 } { c } { l e t r a s y smbolos
} \ \
palabras
& o r a c i o n e s & p r r a f o s & subsecciones \ \
secciones & cap t u l o s & p a r t e s & documento
\ end { t a b u l a r }
prrafos
partes
subsecciones
documento
168
LATEX
\ begin { t a b u l a r } [ t ] { cccc }
\ m u l t i c o l u m n { 1 } { r } { l e t r a s y }&
\ m u l t i c o l u m n { 1 } { l } { smbolos } \ \
palabras
& o r a c i o n e s & p r r a f o s & subsecciones \ \
secciones & cap t u l o s & p a r t e s & documento
\ end { t a b u l a r }
El texto formado queda como se muestra a continuacin. Nota que, aho
ra s, desapare
ci el espacio de ms entre y y smbolos.
letras y smbolos
palabras oraciones
prrafos
subsecciones
secciones captulos
partes
documento
Tambin puedes aprovechar las multicolumnas para poner ttulos a la tab
la o pies de
pgina:
Componentes de un documento de LaTeX
letras y smbolos
palabras oraciones
secciones captulos
prrafos
partes
subsecciones
documento
6.7 Tablas
169
Ambiente
Reporte
s que un libro o un art
Nombre
report
Descripcin
Se utiliza para cosas menos formale
culo. No tiene captulos, sino que ag
article
nes.
Es, tal vez, el ambiente que ms seguid
entrega de tareas, elaboracin de peq
s encabezados de
columnas con lneas dobles y ponerlos en negritas, de la siguiente ma
nera:
\ hline \ hline
\ b f Ambiente& \ Large \ t e x t b f { Nombre } & \ sc D e
s c r i p c i n \ \
\ hline \ hline
Integrados estos cambios, la tabla se ve como sigue:
170
LATEX
Ambiente
Reporte
s que un li
Nombre
report
D ESCRIPCIN
Se utiliza para cosas menos formale
bro o un artculo. No tiene captulos,
sino que
Artculo
article
o uti
lizarn para la entrega de tareas, el
aboracin de
pequeos manuales, etc. Permite escri
bir en dos
columnas fcilmente.
Supongamos que le agregas dos renglones ms, pero que por el momento no t
ienes
decidido qu escribir en la descripcin:
A c e t a t o s&seminar \ \ \ h l i n e
Cartas& l e t t e r \ \ \ h l i n e
Y veamos cmo se ve la tabla:
Ambiente
Reporte
s que un li
Nombre
report
D ESCRIPCIN
Se utiliza para cosas menos formale
bro o un artculo. No tiene captulos,
sino que
Artculo
article
o utili
zars para la entrega de tareas, elab
oracin de
pequeos manuales, etc. Te permite es
cribir en
dos columnas fcilmente.
Acetatos
Cartas
seminar
letter
Nota que falta la lnea vertical al nal. Esto es porque no especi caste nad
a para la
tercera columna. Cuando tienes lneas verticales para separar columnas, debe
s completar
todas las columnas en cada rengln. Los renglones agregados debieron tener l
a siguiente
forma:
A c e t a t o s &seminar & \ \ \ h l i n e
Cartas & l e t t e r & \ \ \ h l i n e
Veamos cmo queda la tabla, que se muestra a continuacin.
6.7 Tablas
171
Ambiente
Reporte
Nombre
report
D ESCRIPCIN
Se utiliza para cosas menos f
ormales que un li
bro o un artculo. No tiene capt
ulos, sino que
Artculo
article
seguido utili
zars para la entrega de tareas
, elaboracin de
pequeos manuales, etc. Te perm
ite escribir en
dos columnas fcilmente.
Acetatos
Cartas
seminar
letter
Ambiente
Reporte
ormales que un li
bro o un artculo. No tiene capt
ulos, sino que
Artculo
article
seguido uti
lizarn para la entrega de tare
as, elaboracin de
pequeos manuales, etc. Permite
escribir en dos
columnas fcilmente.
De los ejemplos anteriores, es claro que cuando colocas carctere
s entre las columnas,
dejar renglones en blanco no es trivial.
Al igual que cuando no tienes lneas entre las columnas, puedes u
tilizar \multicolumn
172
LATEX
A partir de la segunda columna, cada columna debe rede nir su lnea dere
cha.
Actividad 6.22 Codi ca la siguiente tabla, que es una nueva versin de la
tabla anterior.
Ten cuidado con las lneas que separan las columnas. Observa que puedes
trabajar a partir
de la tabla ya codi cada.
Tema:
Ambiente
Reporte
formales que un li
Nombre
report
article
as, elaboracin de
pequeos manuales, etc. Te pe
rmite escribir en
dos columnas fcilmente.
** La lista no es exhaustiva
6.7.3.
e
PAR & PAR & NON & 1 \ \ \ h l
i n e
NON & NON & PAR & 0 \ \ \ h l
i n e
\ end { t a b u l a r }
Tienes tambin el comando \vline que introduce una lnea de separacin de
columna,
6.7 Tablas
173
que cubre toda la columna. Se codi c como se muestra a la derecha de
la tabla formada.
\ begin { t a
b u l a r } { | c | l | }
\ hline
Esta es &
una prueba \ \
Esta es
Para mostrar la divisin
a r \ v l i n e \
la
una prueba
arti cial
\ hline
Para m o s t r
d i v i
s i n & a r t i f i c i a l \ \ \
\ hline
\ end { t a b
u l a r }
Como se puede ver, en la cuarta lnea del cdigo aparece, a mitad
de la columna, el
comando \vline. Va seguido de la secuencia \ que obliga a dejar un
espacio en blanco
entre el comando y lo que sigue. Tambin hay que recordar que el for
mato del cdigo no
in uye en el de la tabla, por lo que puedes partir renglones arbitra
riamente en el cdigo.
6.7.4.
espacio entre
renglones de una tabla, forzando a que las separaciones de columna
se mantengan. Esto
es deseable cuando quieres que haya ms separacin entre renglones que
la normal, pero
no tanto espacio como lo da un rengln en blanco. Puedes modi car la d
istancia dada
por el cambio del rengln colocando un argumento a continuacin de \\
con el formato
[< num > < medida >]. Veamos un ejemplo, en el que agregamos 4 y 1
0 puntos al
cambio de rengln. El cdigo se encuentra a la derecha y la tabla form
ada a la izquierda.
\ begin { t a b u l
a r } { | c | l | }
\ hline
Esta es & una pr
ueba \ \ [ 4 p t ]
Esta es
una prueba
\ hline
Para mostrar la divisin arti cial
Para m o s t r a r \
v l i n e \
la
d i v i s i n
&
a r t i f i
c i a l \ \ [ 1 0 pt ]
\ hline
\ end { t a b u l a
r }
Observa que las lneas verticales que separan a las columnas se
extienden para cubrir
toda la columna.
< num > puede ser negativo tambin, forzando a que haya un retroc
eso. El cdigo
se encuentra a la derecha de la tabla formada:
174
LATEX
\ begin { t a b u l a
r } { | c | l | }
\ hline
Esta es & una pru
eba \ \ [ 6 p t ]
Esta es
r \ v l i n e \
una prueba
\ hline
Para m o s t r a
arti cial
d i v i s i n
& a r t i f i c i a l
la
\ hline
\ m u l t i c o l u m n
mostramos \
v l i n e \
e l e f e c
t o de s u b i r
l a raya }
\ \ [ 6 p t ]
\ hline
\ end { t a b u l a r
}
Actividad 6.23 Codi ca la siguiente tabla:
Ao
1971
72
73
el siguiente carcter o bien est con gurado el teclado para que la combinacin d
e tecla
con Alt produzca los carcteres acentuados . Sin embargo, pudiera ser que no
estuviera
Acentos
\{o}
\{o}
\{o}
\={o} o
\.{o}
o
\v{o} o
\c{o} o
\H{o} o
\d{o} o.
\^{o}
\b{o} o
\"{o}
\u{o}
o
\t{oo} o o
\{\i}
Smbolos no ingleses
\ae
\oe
\aa
\AA
\OE
\O
\l
\L
\o
\ss
\AE
?
\S
\copyright
c
\P
\ddag
\pounds
\#
\%
\&
\_ \&
\$ $
{ }+
&
_ &&verb+
{}
Finalmente, cuando se trate de que un smbolo aparezca tal cual, si
n que sea interpretado por LATEX (por ejemplo, la diagonal inversa \) simplemen
te usas el comando
\verb+texto+ y todo el texto que aparece entre los smbolos + no ser int
erpretado y
aparecer en la pgina tal cual lo tecleaste2 .
2
Usando este comando es como se han escrito algunos de los com
andos en todo este texto.
176
LATEX
Actividad 6.24 Crea un archivo nuevo copiando el prembulo que hemos vis
to hasta ahora.
Actividad 6.25 Construye una tabla de cinco columnas en las que veas e
l resultado de
aplicar seis de los tipos de acentos a las cinco vocales.
6.8.1.
Frmulas matemticas
d o t \ et ^ 3 \ ]
l y m t h }
p h _ i =2\ c d o t \ et ^3
l y m t h }
n
1}\]
n
\(2\ frc {n}{n +1\}\)
2
n+1
2 n+1
temtics.
Exponentes
m n cn+m
2
xy
2y
x
x2 y
178
LATEX
Subndices
Funcionan de la misma manera que los exponentes, excepto que se usa el
smbolo _ de
subrayado en lugar del ^. Las mismas reglas aplican para subndices que par
a exponentes.
Siguen algunos ejemplos:
$a_m b_n c_{n+m}$
$x_{y_2}$
$x_{2y}$
$x_2y$
am bn cn+m
x y2
x2y
x2 y
Smbolos griegos
\thet
\be a
\vartheta
\gamma
\io a
\delta
\ka
\e
silon
\lamb a
on
Minsculas
\alpha
\varepslon
\pi
\varrho
\mu
\sigma
\varigma
\zeta
\nu
\eta
\xi
\Gamma
\Lambda
\Dlta
\Xi
\Upslon
\Tta
\Pi
\h
\tau
\u
sil
\ph
\rho
\varp
\va
h
\chi
\pi
\omega
Mayslas
\Sgma
\Psi
\Omga
edes ver qe no para todas las letras gregas hay la versn en
maysla. S no
aparee en esta lsta es porqe no la hay. Tambn este, para algn
as de ellas, la versn
para varable.
Atvdad 6.28 Haz na tabla qe ontenga namente las letras greg
as para las ales
hay mayslas, y aqllas para las ales hay versn en var. En la prm
era olmna de
la tabla deber apareer el nombre de la letra en mnsla; en la segnd
a olmna
deber mprmrse el smbolo; en la terera olmna, s es qe hay, el
smbolo para la
maysla; y en la arta olmna, s es qe hay, el smbolo para la va
rable.
Smbolos on
ehas
En matemtas, y en omptan en general, se san my reentem
ente dstntos
tpos de
180
Tabla 6.10
ATE
Smbolos on
ehas
\ letarrow
\ongletarrow
\longrghtarrow
\Rghtarrow
\ leftrightarrow
\ longleftrightarrow
Longleftrightarrow
\uparrow
\downarrow
\Downarrow
\Updownarrow
\mapsto
eftarrow
\hookrightarrow
\rightharpoonup
!
\leftharpoondown
\ rightleftharpoons
\leadsto
\searrow
\swarrow
etarrow
\ longletarrow
\
\ rghtarrow
\Longrightarrow
\ Leftrightarrow
\Uparrow
\updownarrow
\longmapsto
\hookl
\leftharpoonup
"
\rightharpoondown
\nearrow
\nwarrow
Operadores
En la tabla 6.11 te mostramos smbolos comnmente usados en matemtica
s como
operadores y smbolos relacionales.
Tabla 6.11 Operadores y smbolos relacionales
\pm
d
\cap
\diamon
\oplus
\mp
\cup
\ bigtriangleup
\times
\ominus
\uplus
\ div
\sqcap
\oslash
\as
\bigt
riangledown !
\otimes
#
\ triangleleft $
t
\sqcup
\ triangleright %
\odot
\ star
&
\vee
\ bigcirc
\wedge
\rhd
\dagger
\setminus
\unlhd
\cdot
\wr
\amalg
\leq
\geq
\quiv
\modls
|=
\prc
\succ
\sim
\prp
\prcq
\succq
\si
\ circ
t
\ bulle
ger
d
mq
\ld
la siguint pgina
\ddag
(
\unrh
Contina n
Conti
\mid
%$
=
(
\gg
\asymp
\ paralll
\subst
\supst
\approx
\bowti
\substq
\supstq
\cong
\sqsubst
<
\sqsupst
=
=
\ ll
\Join
\nq
<=
\smil
'
\sqsubstq
\sqsupstq
>
\dotq
.
=
\frown
\ ni
\ notin
\vdash
\dashv
\ in
/
\propto
C
Atvdad 6.29 Cod a en ATE las sgentes rmlas:
(y )i log[fX (yi )i ]
6 X i
(k)
62 fX dX
mbolos varios
Notars qu a psar d qu mos dado ya mucsimos smbolos matmticos
, todava
nos faltan algunos qu ya conocs como l para todo. En la tabla 6.12
ponemos algnos
smbolos ms qe te van a ser de tldad.
182
ATE
Smbolos varos
Tabla 6.12
\aleph
\ nty
\hbar
\Bo
\Damond
\ trangle
\ lbst
\damondst
\ heartst
\spadest
\prme
\ orall
\ ests
\emptyset
\math
\nabla
\jmath j
\srd
\ ell +
\top
\ natral
\wp
\bot
\sharp
\Re
\|
\baslash \
\Im
\angle
\neg
at
\ partal
\mho 0
gras (psta: tlza
4
Nombres de nones omnes
ATE proporona varos nombres de nones omnes para qe l
as esrbas de ma
nera espeal, y no smplemente omo adenas. stas se presentan en l
a tabla 6.13.
Tabla 6.13 Nombres de nones omnes
\aros ar os
ep
\er
er
sinh
\ arcsin arcsin
\gcd
gcd
\ lg
lg
\sup
sup
\arctan arctan
\ep
\sinh
\os
\lmsp
\cosh
os
lm sup
cosh
\ ln
ln
\cot
cot
\s s
\min mn
\deg deg
\Pr
Pr
\det det
\hom
hom
\ lim
tan
\arg
\tan
\ inf
lm
arg
nf
\log
\coth
log
coth
\sec sec
\dim dim
lm inf
\max
max
\ sin
sin
tanh
a \mod b
a mod b
\pmod{b}
(mod b)
Nota que como estamos trabajando en espaol (paquete babel) aquell
as abreviaturas
que lo requieren llevan acento.
Fracciones
En el modo matemtico tienes dos maneras de escribir fracciones.
La primera de ellas
es con la diagonal, como en
$3/4$
3/4
$1/(n+1)$
1/(n + 1)
Tambin se puede usar el comando \frac{numerador}{denominador} qu
e es
cribe la fraccin de la siguiente forma:
$\ frac {3}{4} $
3
4
3
\[\ frac {3}{4}\]
4
1
n+1
1
\[\ frac {1}{ n+1}\]
n+1
Si \ frac usas en el modo matemtico en lnea, LATEX va a tratar de
ajustar la frmula al
alto de un rengln, mientras que si usas el modo matemtico de recuadro
, ocupar tanto
espacio vertical como requiera.
Actividad 6.32 Codi ca en LATEX las siguientes frmulas:
xn + xn1 xn xn1
zn = xn yn = xn
=
2
2
2Xmax /M
fX (x) log
i
c (x)
Racs
nindol como
184
LATEX
Puds tambin ponr valor n l radical, agrgando s valor ntr
corcts como
primr argumnto d \ sqrt :
\ frac {x+y}{1+\sqrt[n ]{\ frac {y}{+1}}}
x+y
y
1 + n +1
Actividad 6.33 Codi ca n LATEX las siguints frmulas:
2
b b2 a c
2a
1
1
3 () = ( 2
)
( + 1)2
Smbolos agrandables
Tenemos en matemtas mhos smbolos, omo el de la ntegral o las
seres, qe
deben tomar el tamao dado por todo lo qe est a s dereha. Como vmos
en el ejero
anteror, la raz adrada, por ejemplo, ree al tamao qe toma s arg
mento. Esto lo
hae atomtamente. os smbolos en la tabla 6.14 son on los qe ent
a ATE para
el modo matemto. El tamao amenta namente ando aparee en el modo
en qe
aomoda a la rmla en n prrao, no en na lnea.
Tabla 6.14 Smbolos agrandables
\sm
\bgodot
\bgap
\bgotmes
\bgopls
\prod
\bgp
\oprod
\bgsqp
\ nt
\bgpls
\ ont
Cando pones sbnde
E los aomo
dar de tal manera qe se
\ [ \ sm_{ \ n t y
) \ ]
|Y ( |yj
\bgvee
\bgwedge
|yj )
g(y)2 .
185
\ [ \ n t _ 0 n ( ) 2 g ( y ) 2 \ ]
n
()2 g(y)2
0
Mentras qe s los pones en modo de lnea, apareern omo sge:
$\sm_{\nty}\ nty _{|Y}(_ | y_j)$ se orma
|Y (
n
se orma a 0 ()2
$\nt_0n ()2g(y)2$
2 ( + 1)2
M
yn =
ai xni +
bi yni
i=0
i=1
M
bi
(k)
D(k) =
(
(x yi )2 fX (x) x
i=1
bi1 k)
186
LATEX
\
\
\
\
bil
Bil
bil
Bil
\
\
\
\
bi
Bi
bi
Bi
Po ejem
lo, la siuien e fmula
\ [ \ B i l \ { \ b i l [ \ B i l ( \ b i l |
ueba \
b i | \ B i ) \ b i ] \ B i \ } \ ]
se foma
e la siuien e manea:
ueba
La lis a
e los smbolos que
ue
es usa omo
elimi a
oes y que se
aan
an se
enuen a en la abla 6.15.
Tabla 6.15 Delimi a
oes
ow
\u
aow
\Downaow
{
\{
\U
ownaow
S
\ l oo
\ eil
ownaow
l
\anle
/
|
mous ahe
ve
\U
aow
"
6
\ lanle
|
\lmous ahe
\ou
\Aowve
\
6
\}
\ oo
\
owna
\u
U
\ lei
\bakslash
\|
\lou
\aow
\baeve
Pun os sus
ensivos (eli
ses)
Cuan
o en mo
o ma em io (o
e ex o)
eseas
one
un os sus
ensi
vos, el elealo
ie amen e en LATEX omo es
un os seui
os no
a el efe o
esea
o, ya que aea
muho en e s a los
un os. Po ello uen as on
os maneas
e
one
un os sus
ensivos:
187
\ [ \ e x { v a l o e s
aa } x_1 , \ l
o s , x_n \ ]
valoes
aa x1 , . . . , xn
on
e los
un os sus
ensivos se oloan alinea
os on la
a e infe
io
e la lnea ( \ l
o s );
o bien, alinea
os on la
a e en al
e la lnea ( \
o s):
\ [ 1 + \ f a { 1 } { x ^2}+\ f a { 1 } { x ^4}+\
o s +\
f a { 1 } { x ^{2^ n } } \ ]
1
1
1
1+ 2
+ 4 + + 2n
x
x
x
on
e los
un os sus
ensivos se alinean on el o
ea
o
aa
ale
on inui
a
. Tambin
.
.
uen as on
un os sus
ensivos ve iales, \v
o s:(..) y
iaonales
, \
o s ( . . ).
A ivi
a
6.36 Co
i a en LATEX las siuien es fmulas:
F () = a
+ a
1
1 + + a1 1 + a0 0
n
f () = d
+ d1
+ + 0
dn
d1n
n
Cambos de tpos y tamaos de letras
En el modo para matemtas no van a nonar
mban el tpo o
tamao de letra. Tampoo vas a poder tlzar las
los smbolos qe no
son del doma ngls. ara nteralar n smbolo
matemto lo
debes oloar omo argmento de n omando \mbo.
:
(qo, a)
y m a h }
box { \ b { o } } , a )
y m a h }
\ bein {
i s
l a
\
e l a ( q \ m
\ en
{
i s
l a
En el mo
o ma em io am
oo van a funiona las nei as u o o
s ambios en el i
o
e le a. El mo
o ma em io iene sus
o
ios i
os, que se mues an
en la abla 6.16.
Tabla 6.16 Ti
os
e le as en mo
o ma em io
$\ma hal{ABCDEF...}$
ABCDEF...
$\ma hi { i \au e{a}lias \
o 2^{ f }\ Psi \lo [\
si
]} $
i alicas 2 ft log[]
$\mathrm{roma a \cdot 2^{ft}\Pi \!og [\ pi ]} $
roma a 2ft !og[]
Co ti a e !a iguie te pgi a
188
LATEX
Ta!a 6.16
g [\ pi ]} $
BLACKBOARD C
ON BORDES DOBLES
Dee otar "ue todo eto tipo de !etra ma tie e a! texto e
modo matemtico.
Tami e importa te repetir "ue para eparar pa!ara dee tec!ear
u epacio \ ,
pue i o e! modo matemtico o repeta epacio e !a co.
E! primer # !timo tipo ( \mathca! # math icame te !o puede u
ar co ma#cu!a.
Cua do pide egrita e modo matemtico co \mathf ha# mo!o "
ue o e imprime e egrita. Oerva "ue e e! cuarto ejemp!o, !o mo!o co
rrepo die te a
!og[] o a!iero ocurecido. Para "ue a!ga ocurecido dee u
ar e! coma do
\ o!d#mo! { . . .
}
189
a } \ ]
\ [ = \ r a {b \pm \ s q r t { b24a } } { 2 a } \ \
\ t e t { Da l a s o l n de e a n adr t
=
b2 4a
2a
Tablas de rmlas
Hay dos maneras de organzar varas rmlas en na tabla. a pr
mera de ellas es
on n tablar y oloando en ada elda el modo matemto en lnea ($
\(... $\) ). a
otra manera es delarando n ambente de lnea o readro y oloando
all n arreglo
matemto, \begn{array }...\ end{array}. Es mportante nsstr en
qe n array slo pede
estar en n ambente matemto. as delaraones de olmnas y reng
lones las haes
eatamente gal qe on tablar , eepto qe el ontendo es nt
erpretado omo rmlas.
a eepn es ando para desrbr la olmna dste p{<nm><mdda>}
, pes en ese aso
atomtamente esa olmna qedar en modo teto.
Este meansmo se tlza tambn para mprmr matres o, en ge
neral, tablas qe en
s mayora van a ontener rmlas matemtas.
\ [ \ begn { a r r a y } { l l l }
a_ {11}& a_ { 1 2 } & \ l d o t s &a_ { 1m } \ \
a11
a12
a21
a22
...
a1m
a_ {21}& a_ { 2 2 } & \ l d o t s &\ l d o t s \ \
... ...
\ d o t s &\ d o t s &\ l d o t s &\ l d o t s \ \
... ...
a_ { n1}&a_ { n2 } & \ d o t s
&a_ {nm}
an1
an2
anm
\ end { a r r a y } \ ]
190
ATE
\ [ \ l e t [ \ begn { a r r a y } { l l l }
a11 a12 . . . a1m
21 a22 . . . . . .
...
...
0
0
0
0
0
... ...
a21 a 22
0
0
an1 an2
\ en
{ a a y } \ i h \ } \ ]
a
nm
Tambin
ue
es ene un aay en el mo
o lnea,
$\bein{aay }[ ]{ l }a+b\\ab\en
{aay}$,
que que
a a + b . Debes no a que usa an os enlones omo neesi e, o
iien
o el
ab
siuien e enln
aa que no se enime.
Las lneas en e olumnas y en e los enlones se u ilizan exa amen e
iual que en
el aso
e las ablas no numias ( abula ). Tambin habs no a
o que la
e
si
in
e
las olumnas se hae ambin
e la misma manea que en un abula . Tambin s
e
ue
en
e
e ni las olumnas.
A ivi
a
6.38 Co
i a en LATEX la siuien e abla:
(a + b)2 = a2 + 2ab + b2
Suma
e ua
a
os
a2 b2 = (a + b)(a b)
Difeenia
e ua
a
os
(a + b)n = an + 2an1 b + + bn Ex
ansin binomial
Ma ies y ombinaiones
Si bien
ue
es ama ma ies usan
o aays, LATEX
ovee oman
os es
eiales
aa
ello. Po ejem
lo, es muy omn que quieas
e ni una funin
o asos omo la
que
siue:
191
\ [ P_
{ j }=
bein { ases }
0&\ e x { s i j es im
a } , \ \
0
! ( 1 ) ^ { ( j ) / 2 }
Pj =
&\ e x { s i j es
a } .
!(1)(j)/2
si j es im
a,
si j es
a.
en { ases }
\
\]
\ [ P_
\ bein { a a y } { l l }
0&\ e x { s i j es im
a } , \ \
3
! ( 1 ) ^ { ( j ) / 2 }
0
si j es im
a,
Pj =
&\ e x { s i j es
a } .
!(1)(j)/2 si j es
a.
{ a a y }
\ en
\
ih .
\]
que
ue
es ooboa en la
a e izquie
a que foma exa amen e l
a misma euain. Po
ello, el ambien e
e asos es, sim
lemen e, un a ajo
aa o
i a es
e i
o
e ablas.
O o a ajo omn es el que se usa
aa ma ies. LATEX
e ne vaios
ambien es es
e
os
aa ma ies,
e
en
ien
o
e los
elimi a
oes que quieas ene
:
n {
m a i x }
f \ \
{
m a i x } \ ]
v m a i x }
\ [ \ bein
a&b
e f
&
h
\ en
{
\ [ \ bei
{ m a i x }
\ \
a b
e&
&h
\ en
m a i x } \ ]
\ [ \ bein { b m a i x }
\ [ \ bein {
i j
m n
i&j \ \
&n \ \
&
{ v m a i x }
k& l
o
\ en
{ b m a i x } \ ]
\ [ \ bein { V m a i x }
q& \ \
s&
\ en
{ V m a i x } \ ]
k l
o
\ en
0
0
0q 0
0
0
0s 0
Como
ue
es ve, lo que e ahoas al usa es os ambien es es l
a es
ei ain
e los
elimi a
oes y
e las olumnas
e a
a ma iz.
192
LATEX
A ivi
a
6.40 Co
i a la siuien e fmula:
n!
!(n )!
6.9.1.
\ovese {\ ih aow }{ a}
a
\un
ese {i =1}{\u
}
i=1
Como
ue
es no a, aun uan
o es emos en mo
o
e lnea, aomo
a el
ex o que le
in
iques
on
e le in
iques. El
ime
ame o LATEX lo esibe on un
amao meno y
lo oloa enima (ove) o
ebajo (un
e)
el seun
o aumen o. El se
un
o aumen o
niamen e
ue
e se un smbolo. El
ime aumen o, omo ya vimos,
ue
e se ual
quie osa. Paa aquellos smbolos que son muy omunes, enemos
e ni
os
oman
os
que oloan
e emina
o a e. s os se enuen an en la abla 6.17.
Tabla 6.17 Aen os en mo
o ma em io
a
\hat{a}
\bar{a}
a
\dot{a}
a
\check{a}
\vec{a}
a
\ddot{a}
a
\breve{a}
\acute{a}
\grave{a}
3a
\ tilde {a}
Muchas veces quieres poner una echa, raya, llave, encima de toda u
na expresin que
tiene ms de un smbolo. Para ello tenemos los siguientes smbolos que se e
xtienden para
cubrir a ms de un smbolo:
\ [ \ o v e r l i n e { a+b+c } = \ u n d e r l i n e { a+b+c } \
]
a+b+c=a+b+c
\ [ \ overbrace { a+b+c } = \ underbrace { a+b+c } \ ]
" 45 !
a+b+c=a5 +!"
b + 4c
\ [ \ o v e r r i g h t a r r o w { a+b+c } = \ u n d e r r i g h
t a r r o w { a+b+c } \ ]
a+b+c=a+b+c
a+b+c=a+b+c
\ [ \ o v e r l e f t r i
d e r l e f t r i g h t a r r o w { a+b+c } \
a+b+c=a+b+c
r o w { a+b+c } = \ u n d e r l e
g h t a r r o w { a+b+c } = \ u n
]
si A B
si B A
AB =
A B
6.9.2.
si A y B son ajenos
por la ley de De Morgan
Arreglos de frmulas
Rk
\ end { e q u a t i o n }
M k=1
(6.1)
.
Si quieres colocar varias frmulas alineadas, un array tiene el pr
oblema de que no im
porta si est en modo lnea o prrafo, nos dar modo lnea para cada rengln de
l arreglo.
3
Consulta alguno de los manuales de LATEX que se mencionan en
la bibliografa si as lo deseas.
194
LATEX
\ [ \ begin { a r r a y } [ t ] { l l }
x_1 = \ sum_ { k =1}^ n a_ky ^ k
n
x1
=
k=1
n
ak y k primer valor
&\ t e x t { p r i m e r v a l o r } \ \ [ 1 0 p t ]
k
x_2 = \ sum_ { k =1}^ n b_ky ^ k
k=1 bk y
segundo valor
&\ t e x t { segundo v a l o r }
\ end { a r r a y }
\]
x2
Si quieres varias lneas, pero cada una de ellas en modo prrafo, tienes que
usar el
ambiente de arreglos de ecuaciones \eqnarray.
\ begin { eqnarray }
n
x1 =
y k
Primer valor
(6.2)
x_1 = \ sum_ { k =1}^ n a_ky ^ k
&\ t e x t { Primer v a l o r } \ \
x_2 = \ sum_ { k =1}^ n b_ky ^ k
ak
k=1
n
x2 =
bk
y k segundo valor
(6.3)
&\ t e x t { segundo v a l o r }
k=1
\ end { eqnarray }
Nota que el modo matemtico se introduce junto con el ambiente eqnarray,
lo mismo que
sucede con equation. Si deseas eliminar el nmero de la(s) ecuacin(es) usa lo
s ambientes
eqnarray y equation respectivamente:
\ begin { eqnarray
n
x_1 = \ sum_ { k =1}^ n a_ky ^ k
ak y k
Primer valor
&\ t e x t { Primer v a l o r } \ \
x1 =
k=1
n
x2 =
bk y k segundo valor
\ end { eqnarray
}
k=1
}
i x }
x }
\ s q r t { 2 } }
i x }
\ end { m t r i x }
(6.4)
\ egin { m t r i x }
\ lph \ \
\ lph
\ nd { b m a t r
&\ bgin { b m a
\ s q r t { 2
0
\ nd { b m a t r
\ nd { s p l i t }
\ nd { q u a t i o n
1
1 1 1
+
2
2 1 1
2
i x } \ \ [ 1 0 p t ]
t r i x }
} \ alpa \ \
i x }
}
(6.6)
0
\ nd { b m a t r i x } \ \ [ 1 0 p t ]
&\ bgin { b m a t r i x }
\ s q r t { 2 } \ alpa \ \
0
\ nd { b m a t r i x }
% \ nd { s p l i t }
\ nd { qnarray }
196
LATEX
Existn otros ambints ms para matmticas. i los quirs rvisar,
consulta alguno
d los libros d LATEX.
Espacios n frmulas matmticas
En l modo d matmticas s mucas vcs ncsario acomodar d man
ra spc ca
algunos smbolos, movindolos acia la iquirda o acia la drca. En l
a tabla 6.18 v
mos los distintos tipos d spacios qu puds tnr. Estn divididos
ntr positivos (acia
la drca) y ngativos (d rtrocso).
Tabla 6.18 Comandos d spacio n modo matmtico
Espacio positivo
Abr
Complto
ormal
mu
\,
x
\mspac{1mu}
\tinspac
Ejmplo
xx
x \, x
xx
\:
\mdspac
\;
\tickspac
x \; x
xx
\nskip
x\nskip x
x x
\quad
x\quad x
x x
\qquad
x\qquad x
x
x
x
x\mdspac x
xx
xx
x
x
x
Espacio ngativo
Abr
Complto
ormal
\!
x
x
x
\ngtinspac
Ejmplo
x \! x
N
xx
\ngmdspac x\ngmdspac x xx
\ngtickspac x\ngtickspac x xx
N 1
2
i=0 i
N 1 2 N1
i=0 i
<= 1
= sn2
M1
= 0.4
<= sn2
M2
= 0.9
sn
<= sn1
sn
= sn1
<= sn2
M3
= 1.5
sn
= sn1
= sn2
M4
= 2.0
(6.9)
(6.10)
(6.11)
Actividad 6.44 Codi ca n
8
9
x01 x01
1
=
x10 x11
2
9
00 + 01 + 10 + 11 00 01 + 10 11
)
=
=
00 + 01 10 11 00 01 10 + 11
00 0,0 + 01 0,1 + 10 1,0 + 11 1,1
\ [ \ egin { p m t r i x }
c
\ e n s k i p \ oxed { }& &c \ \
Tls,
gurs
gurs, etc.
que se vn numerndo. Ms n, l numercin de ls tls, por ejemplo, es independient
e de l de ls
198
LATEX
gr cs o, en generl, gurs que quermos incluir. Esto se hce medinte
lo que LATEX
llm otntes. Les llm s porque le puedes indicr l compildor que
ls comode no
forzosmente donde precen, sino en l primer pgin en l que no oc
sionen que se deje
espcio en lnco innecesrio. Por supuesto que tmin le puedes indi
cr que ls coloque
exctmente donde precen, sin importr el rmdo de ls pgins que
ls preceden, o
hciendo t el rmdo pie.
Ls otntes que vmos revisr c son nicmente dos:
Figurs ( gure )
Tls ( tle )
Ams otntes tienen los mismos rgumentos, que tienen que ver fu
ndmentlmente
con dnde se dese que se les comode; ms proveen un espcio con l
posiilidd de
ponerles un ttulo ( \cption)4 . De nen un miente donde los cmios d
e tipo de letr o
tmo sern efectivos nicmente dentro de ese miente. En generl, el
miente tle
se us pr mteril que se present en form de tl o list, mien
trs que el de gure se
us pr mteril gr co. L sintxis de estos mientes es l siguiente
:
Pr gurs:
Pr tls (o cudr
os):
\ egin { f i g u r e } [ posiciondor ]
\ egin
{ t l e } [ posiciondor ]
Contenido
Co
ntenido
\ c p t i o n { Ttulo de l gur }
\ c
p t i o n { Ttulo de l tl }
\ end { f i g u r e }
\ end {
t l e }
Si el contenido
el ttulo precer
jo de l gur.
gln despus de que
empiez l gur o
puede ser:
Tl 6.19 Posiciones posiles
letr
t
in disponile.
prece.
rio, porque l
de l
gur o tl
otntes
signi cdo
top: Lo coloc en l prte superior de l primer pg
otntes, l primer q
coloc en l
6.10 Imgenes y
gurs
199
tl don-
letr
!
otntes
Co
signi cdo
Try hrder: Intent de mner ms
rme comodr l
gur o
\ c p t i o n { Conv
Cent
r } [ t ] { | r | r | }
32
40
4.5
80
27
f Cent \ \ \ h l i n e
l i n e
}
\ egin { t l e } [ !
Centgrdos }
\ egin { t u l
\ hline
\ f Fhr & \
32 & 0 \ \
40 & 4 . 5 \ \
80 & 2 7 \ \ \ h
\ end { t u l r
\ end { t l e }
200
LATEX
Tl 6.21
el siguiente
Ls lnes
Cent
32
40
80
4.5
27
...
\ end { c e n t e r }
se pueden usr pr centrr cu
lquier prrfo,
Cundo dejs que LATEX comode l tl o gur donde mejor pued
en usenci
de H deer her un rengln en lnco ntes y despus de l tl, pr
evitr que se
encimen o mezclen renglones que pusimos en prrfos seprdos.
En un otnte de tl puede colocr uno o ms rry, cuidndo nd
ms de declrr
un miente mtemtico dentro.
Actividd 6.45 Codi c en LATEX l tl 6.22 en l siguiente pgin. P
on el posicionmiento pr que prezc exctmente donde se tecle.
Tl 6.22 Representciones numrics
Deciml
1
2
3
5
7
8
15
16
Binrio
1
10
11
101
111
1000
1111
10000
Octl
1
2
3
5
7
10
17
20
Hexdeciml
1
2
3
5
7
8
F
10
6.10 Imgenes y
gurs
201
202
LATEX
Figur 6.2
cl reltiv
() Dist
() Mism horizontl y verticl
(d) Es
6.10 Imgenes y
gurs
203
) Rotcin de 180
() Rotcin de 45
204
LATEX
Tl 6.23
Comprcin de tmos
1
d
Entrd
r
nt
E
q1
0
Edo 0
q1
do
q0
E
q0
q0
q0
q0
q1
q1
q0
q1
q1
Cortando
guras
i n c l u d g r a p i c s
t ] \ { dummy . ps \ }
6.10 Imgns y
o ms laro.
6.10.3.
guras
205
En la
an e
e
f, ya
Nombe
ikz
Uso
\use
akae{ ikz}
illa
e usa
aa a
ema
aa oloes
oloes
ini
ales.
xkeyval
e
ame os
el
que
emi e ombina los
\use
akae{xkeyval} Pemi e asoia nombes
oes
on
ien es. Se
equiee ambin
aa o o
s
aque es.
ifon
bajo nivel
aa las
e e ikz.
aa
o
e ea
ema
aa haelo.
Desi
in
s e es el
aque e ms im
o
olo
use
akae{
ifon }
Se enaa el manejo e
as. Lo equiee el
aqu
\use
akae{olo}
Po
oiona una in efaz
nuevos oloes y un sis
.
5
ein
aloue.h ml
To
os es os
aque es
ue
en ob enese a ui amen e
e la
i
h
://www. ex.a.uk/ ex ahive/hel
/Ca aloue/a
206
LATEX
Tabla 6.25
o
e
w
Resul a
\ olo {blak}blak
\olobox{ay }{\ olo {whi e}whi e}
blak
whi
\ olo {e
}e
\ olo {yellow}yellow
e
yello
\
\
\
\
olo
olo
olo
olo
{yan}yan
{blue}blue
{een}een
{maen a}maen a
yan
blue
een
maen
ay
ay
\ olo {blak}blak
\ olo {
akay}
akay
blak
ak
\ olo {ay}ay
\ olo { lih ay } lih ay
ay
lih
whi e
aque e olo y a
his,
las lneas oes
on
ien es a olo y ve en la
an alla mo que
an (
e
safo una
amen e
la im
esin no mues a el olo, sino niamen e
is in os niveles
e
ises,
eo en la
an alla s lo
ue
es a
eia).
6.10 Imenes y uas
207
6.10.4.
Hay vaios
aque es que e
emi en
ibuja obje os eom ios
omo lneas, ulos,
aos, e . U ilizaemos a TikZ el sub
aque e sha
es y aows , que
nos ofee una an
vesa ili
a
. No veemos a ms que alunos obje os, ya que es e
aque
e es sumamen e
ex enso.
Paa
o
e usa oman
os
e ikz enemos que es a
en o
e un
ambien e
e es e
Am
neas
El omando qe permte dbjar lneas es \draw y hay qe darle om
o argmentos las
oordenadas de los pntos por los qe qeres qe pase. El ormato
ms smple del oman
do es el sgente:
208
ATE
\ draw ( <oord nal> ) ( <siuien e oo
ena
a> ) . . . ;
on
e los
un os suesivos in
ian que
ue
es
one an as oo
ena
as om
o
esees. Las
oo
ena
as se
ue
en
a omo
un os ela ivos on la uni
a
e loni u
el ambien e;
o bien
ue
e se aln obje o e ique a
o7 ; ambin
ue
e a
aee all una oo
ena
a on
una uni
a
e me
i
a es
e a. Si se a a
e oo
ena
as, onsis e
e una
a
eja on
los elemen os se
aa
os en e s
o oma,
on
e el
ime elemen o
e la
a
eja es el
es
lazamien o sobe el eje x y el seun
o sobe el eje y. Tambin es im
o
an e no a que
los oman
os
e ikz en su mayoa eminan on
un o y oma (;).
Es im
o an e meniona que el ex o seui inme
ia amen e
es
us
el
u
n o que el
oman
o onsi
ee que equiee. Veamos alunos ejem
los:
o
a
\ ikz [x=1
,y=1
]\
aw(0,0) (20,30) (30,0)
ve ialmen e
aa
a lua al azo y el ex o
l es
aio ou
l
aa
on ina a
a i
el nal
e
el
ibujo, enemos que h
on oman
os
e \vs
ae y \
seun
a oo
ena
a y e l ambio
\ i k z [ x=1
, y=1
] { \
aw (0 ,0)
\ hs
ae {30
} %
\ i k z [ x=1
, y=1
] { \
aw (0 ,0)
y l a s l neas se aomo
a omo se e s
y las lneas se aomo
an omo se es obsevan
o.
Veamos ms ejem
los
e alunas uas. Una manea
e
aomo
a alunas
e
\ i k z [ x=1
(60 ,15) %
(
\ i k z [ x=1
9 0 , 8 0 )
(
eja es
aio ve ia
6.10 Imenes y uas
209
\ bein {
\
aw
\
aw
\
aw
\
aw
\
aw
\ en
{
i
[ l
[ l
[ l
(70
[ l
i k
k z
i u e } [ x=1
, y=1
]
i n e w i
h =2
] ( 0 , 0 ) ( 3 0 , 2 0 ) ;
i n e w i
h =.13 i n ] (30 ,20) ( 5 0 , 0 ) ;
i n e w i
h =.15m ] (50 ,0) ( 7 0 , 2 0 ) ;
,20) ( 9 0 , 0 ) ;
i n e w i
h =1
] (90 ,0) ( 1 1 0 , 2 0 ) ;
z
i u e }
Tambin se
ue
e
a el anho
e lnea
aa o
o un ambien e,
onin
o
lo
e mo
i a
o
e
ambien e:
\ bein { i k z
i u e } [ x=1
, y=1
, %
l i n e w i
h =2
]
\
aw ( 0 , 0 ) ( 3 0 , 2 0 ) (30 ,20) %
( 5 0 , 0 ) (50 ,0) (70 ,20) %
(70 ,20) ( 9 0 , 0 ) (90 ,0) %
( 1 1 0 , 2 0 ) ;
\ en
{ i k z
i u e }
\ bein { i k z
i u e } [ x=1
, y=1
]
\
aw ( 0 , 0 ) e a n l e ( 1 4 0 , 1 2 0 ) ;
\ en
{ i k z
i u e }
Siem
e que in o
ues un ambien e ikz,
ebes
ensa que ese
vas un es
aio e anula
a
o
210
LATEX
\ bein { i k z
i u e } %[x=1
, y=1
]
\
aw [ x=1
, y=1
, oun
e
o n e s ]
(0 ,0) e anle (140 ,120);
\ en
{ i k z
i u e }
ones
oun
e
ones
=8
=16
6.10 Imenes y uas
211
\ bein { i k z
\
aw [ oun
e
( 4 0 , 1 2 0 ) ;
\
aw [ oun
e
n l e ( 1 2 0 , 1 2 0 ) ;
\
aw [ oun
e
a n l e ( 2 0 0 , 1 2 0 ) ;
\
aw [ oun
e
a n l e ( 2 8 0 , 1 2 0 ) ;
\ en
{ i k z
i
i u e } [ x=1
, y=1
]
o n e s ] ( 0 , 6 0 ) e a n l e
o n e s =4
] ( 8 0 , 6 0 ) e a
o n e s =8
] ( 1 6 0 , 6 0 ) e
o n e s =16
] ( 2 4 0 , 6 0 ) e
u e }
O os
e los mo
i a
oes que
ue
es
one a \
aw son el olo
e las mismas blue, e
,
yellow, yan, een, maen a ; el i
o
e lnea [ loosely |
ensely]{so
li
|
o e
|
ashe
} . Es os
l imos
ame os no llevan sino = o i
en i a
o uan
o a
aeen en el
on ex o
e un oman
o
\
aw y
ue
es usalos on uas, lneas o aos. Hay que meniona a
mbin que el e
on
eo
e
esquinas
ue
e a
liase niamen e a un semen o
e la aye oia
in a
a, si se oloa an es
e
las oo
ena
as a
a i
e la ual
ebe a
aee. Veamos un
equeo
ejem
lo:
\ bein { i k z
\
aw ( 0 , 0
\ en { i k z
i u e } [ x=1
) [ blue , oun
e
o
( 3 0 , 5 0 ) ( 8 0 ,
sha
o n e s ]
( 0 , 0 ) ;
i u e }
,
n
2
(
y
e
5
7
=1.5
]
s =10
]
)
5 , 75)
\ bein { i k z
\
aw ( 0 , 0
\ en { i k z
i u e } [ x=1
) [ blue , oun
e
o
( 3 0 , 5 0 ) ( 8 0 ,
sha
o n e s ]
y l e ( 2 7 , 1 2
i u e }
,
n
2
(
)
y =1.5
]
e s =10
]
5 )
7 5 , 75)
( 3 5 , 8 0 ) y l e ;
212
LATEX
Mo
i a
oes
aa el azo
e lneas y
Tabla 6.26
va a
in a
Pame o
Po omisin
olo=<olo>
olo: blak
amen e el
x=<
im>
im: 1m
y=<
im>
os ejes.
bonjun o
z=<
im>
line wi
h=<
im>
im: 1
vey hik
as que se
hik
vey hin
hin
a en=
a n
es ilo: soli
n ese
os que om
ein se ha
s on un o
a,
oun
e
ones
sha
ones
oun
e
ones=
im
sha
ones
ll
no
lo, el elle
Desi
in
Es
ei a el olo en que se
la lnea. Pue
e a
aee
ie
olo na
a ms.
Uni
a
es
aa a
a uno
e l
Son o
ionales ualquie su
e ellos.
Es
ei a el oso
e las lne
Rellena la ua o el
olono o
a n8 .
Dei
e el olo
e los az
onen al
a n.
In
ia si los ambios
e
i
en e
on
ea
os o no, y si
e
on
eo.
In
ia que la ua
ebe se sli
ellena
a. Si se in
ia el o
no
ebe se
e ese < olo
> ve
ua 6.5
on
e se ejem
li a e
s a o
as que se van a
uas
ashe
loosely
ashe
ensely
ashe
o e
soli
loosely
o e
ensely
o e
soli
in .
Da el i
o o es ilo
e line
8
ual
e TikZ.
Paa ve los i
os
e
a ones
is
onibles, onsul a el man
6.10 Imenes y uas
213
Tabla 6.27 O
iones
e oso y es ilos
e lneas
ensely o e
ensely o e
ensely o e
ensely o e
ensely o e
he
ensely ashe
he
ensely ashe
he
ensely ashe
he
ensely ashe
he
ensely ashe
vey hin
loosely o e
hin
loosely o e
nomal
loosely o e
hik
loosely o e
vey hik
loosely o e
vey hin
loosely ashe
as
hin
loosely ashe
as
nomal
loosely ashe
as
hik
loosely ashe
as
vey hik
loosely ashe
as
]
( 3 0 , 5 0 ) ( 8 0 , 2 5 ) [ sha
o n e
s ]
( 7 5 , 75) y l e ( 2 7 , 1 2 )
( 3 5 , 8 0 ) y l e ;
\ en
{ i k z
i u e }
214
LATEX
Tabla 6.28 Ejem
los
e
uas en TikZ
Coman
o
Fiua
\ ikz [x=1
,y=1
]{\
aw(25,10) elli
se (20
an
10
);}
e \ aw a el en o
o hoizon al y la
Como
ue
es obseva, la oo
ena
a
a
a a on inuain
e la eli
se, mien as que la
imea
imensin
a el
ime
seun
a el ve ial.
\ ikz [x=1
,y=1
]{\
aw (25,10) ile (12.5
);}
o el ulo, mien
En es e aso, ambin la
imea oo
ena
a nos
a el en
\ ikz [x=1
,y=1
]{\
aw (25,10) a (90:0:25
);}
el ulo om
le o,
en e
an esis
el eje oo
ena
o on
ue em
ieza el ao; el
en el sen i
o
e
\ ikz [x=1
,y=1
]{\
aw (5,0) .. on ols (15,15) an
(30,15) ..
zosamen e aos
e
aa
ibuja el bezie:
es anen e a la uva;
Es a ons uin e
emi e
ibuja uvas que no son fo
en e el oien y el
ime
un o la e a que los une
similamen e
aa el seun
o
un o.
0,0);
6.10 Imenes y uas
215
embulo
el
oumen o.
\ u s e i k z l i b a y { aows }
Alunas
un as
e ehas vienen
o omisin en TikZ. Los es ilos
e
l ue
o
e la eha
Ti
os
e
un as
e
ehas en TikZ
\
aw [aows=>] (0,0) (50,0);
\
aw [aows=>>] (0,0) (50,0);
\
aw [aows=|>] (0,0) (50,0);
,0);
;
,0);
,0);
,0);
Como
ue
es obseva hay bas an e jueo on el i
o
e eha y el
oien
el semen o. Paa
ms infomain, onsul a el manual
e TikZ.
O o as
e o boni o
e TikZ es que
ue
es
a
is in os
a one
s
aa el elleno
e uas. Es o
se loa aan
o el
aque e
e biblio ea
a ens en el
embulo
el
oumen o.
\ u s e i k z l i b a y {
a ens }
En el manual
e TikZ viene una lis a
e
a ones in eesan es que
ue
es
esea usa.
En las ablas 6.31 y 6.32
aemos ejem
los
e
is in os obje os
eom ios que
ue
es
in a
on TikZ. Es im
o an e que eue
es que las oo
ena
as que se
a
n su
onen que el oman
o
iniia en (0,0), y a
a i
e ah se alula la
osiin
el
ibujo. S
216
LATEX
Tabla 6.31
\ bein { i k z
i u e } [ x=1
, y=1
, l i n e
w i
h =3
] %
\ useasboun
inbox ( 0 , 0 ) e a n l e
(140 ,60);
\
aw[ l a e x , oun
e
o n e s] %
(100 ,50) (0 ,20) ( 5 0 , 0 ) ;
\ en
{ i k z
i u e }
\ bein { i k z
i u e } [ x=1
, y=3
]
\ useasboun
inbox ( 0 , 0 )
e anle (170 ,70);
\
aw [ h i k ] ( 0 , 6 0 ) ( 7 0 , 1 0 )
(70 ,60) (0 ,10)
yle ;
\
aw [ h i k , f i l l =e
] ( 9 0 , 6 0 )
(160 ,10) (160 ,60)
(90 ,10) yle ;
\ en
{ i k z
i u e }
;
) ;
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox ( 0 , 0 ) e a n l e ( 1 7 0 , 7 0 )
\
aw [ f i l l ] ( 1 0 , 1 0 ) e a n l e ( 8 0 , 6 0
\
aw [ f i l l = w h i e ] ( 2 0 , 2 0 ) e a n l e
( 4 0 , 4 0 ) ;
\ en
{ i k z
i u e }
) ;
(20
) ;
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox (0 , 10) e a n l e ( 1 4 0 , 6 0 ) ;
\
aw [ v e y h i k ] ( 3 0 , 3 0 ) i l e (20
\
aw [ v e y h i k , e
] ( 1 0 0 , 3 0 ) i l e
\ en
{ i k z
i u e }
Con ina en la
ina siuien e
6.10 Imenes y uas
217
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox ( 0 , 0 )
e anle (140 ,70);
\
aw [ v e y h i k , s e
=5mm, e
,
a en= f i v e
o i n s as ,
a e n o l o =e
] \
( 7 0 , 3 0 ) e l l i
s e (50
an
20
)
\ en
{ i k z
i u e }
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox (0 , 50)
e anle (170 ,100);
\
aw ( 8 0 , 6 0 ) a ( 5 0 : 9 0 : 1 0 0
) ;
\
aw [ f i l l ] ( 1 6 0 , 6 0 )
a (50:90:100
) ;
\
aw [ v e y h i n , l o o s e l y
ashe
]
( 1 6 0 , 6 0 ) (95 , 50)
(140 , 50) (95 , 50)
( 9 5 , 8 3 ) ;
\ en
{ i k z
i u e }
O o as
e o que es feuen e que quieas ene en un
oumen o
es la a ain
e funiones.
TikZ
o
oiona alunas funiones
ias que
ue
es quee a a,
omo lo son la
abola, el
ulo, seno y oseno. Paa o as funiones se en
n que
e
aa la
s ablas en un ahivo a
a e,
218
LATEX
Tabla 6.32
eo se
ue
en a a. Veamos
imeo es as ua o en la abla 6.32.
Ga ain
e funiones omunes en TikZ
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox ( 0 , 0 )
e anle (140 ,70);
\
aw [ h i k ] ( 4 5 , 5 0 )
a (60:360:20
) ;
\
aw [ h i k , f i l l ] ( 1 1 5 , 5 0 )
a (60:360:20
) ;
\ en
{ i k z
i u e }
]
0);
]
30);
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox ( 0 , 0 )
e anle (100 ,50);
\
aw ( 0 , 0 )
a a b o l a [
a a b o l a h e i h =30
(30 ,
\
aw ( 5 0 , 3 0 )
a a b o l a [
a a b o l a h e i h =30
(90 ,
\ en
{ i k z
i u e }
Pue
es ob ene
e
azos
e
abola si
as omo seun
a oo
ena
a al
o que no sea la
imaen
el
un o
e oien, o bien on mo
i a
oes:
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox ( 0 , 0 )
e anle (140 ,60);
\
aw ( 0 , 0 )
a a b o l a ( 3 0 , 4 5 ) ;
\
aw ( 5 0 , 0 )
a a b o l a [ ben
a en
]
(80 ,45);
\
aw ( 1 0 0 , 0 )
a a b o l a ben
(122.5 ,52.25) (130 ,45);
\ en
{ i k z
i u e }
Con ina en la siuien e
ina
6.10 Imenes y uas
219
aa
in a la a
ye oia om
le a
O o meanismo ambin muy im
o an e
aa a a funiones es el
e
o
e
ale una lis a
e
un os y que vaya man
olos on aln smbolo. Paa maa los
un o
s on smbolos equie
es
e la biblio ea
lo maks me
ian e el oman
o
\ u s e i k z l i b a y {
lo maks }
Una vez aa
a la biblio ea
e maas,
ue
es elei en e las
que se enuen an en la a
bla 6.33.
Tabla 6.33 Smbolos
aa maa uvas que se a an
i
in
iones
baas ve iales
ulos hueos
as eisos
es ellas
ina en la
ina siuien e
Maa
I en i ain
Des
mak=
u
mak=|
mak=o
mak=as eisk
mak=s a
Con
220
LATEX
Tabla 6.33 Smbolos
aa maa uvas que se a an
ina
e la
ina an eio
Maa
uma
o u o
u o
ame os.
Con
I en i ain
Desi
in
mak=o
lus
ulos on s
mak=o
lus
mak=o imes
ulos on
mak=o imes
ulos on
o
mak=squae
ua a o
mak=squae
ua a o sli o
mak= ianle
inulo
mak= ianle
inulo sli o
mak= iamon
iaman e
mak= iamon
iaman e sli o
mak=
en aon
en ono
mak=
en aon
en ono sli o
6.10 Imenes y uas
221
Maas un
un o iniial y a on inuain
ies que quiees a a
una funin (
lo ). A es a
l ima o
in le a
lias mo
i a
oes, omo el smbolo
aa las maas,
os
iblemen e si quiees o
no la uva suave (smoo h) y el olo
e las maas, que
ue
e no s
e el mismo que el
e la uva.
Sin embao, las as que
in amos en la ua 6.6 son ealmen e mu
y
obes. Quisia
mos
o
e
ibuja los ejes a esianos y oloa in
iaiones es
e
o a los valoes en es os ejes.
Tenemos
os fomas
e haelo.
Usan
o el oman
o \
aw on el aumen o i
, uya sin axis
es:
\
aw <esq. inf. izquie
a> i
[ <mo
i a
oes> ] <e
sq. su
.
eeha>;
La
a e
el [ < in evalo > ] oes
on
e a que an ea
a
quiees la ejilla
aa las oo
ena
as. Sin embao, on es a o
in no enemos o
ava los ejes
o las ano aiones en los
mismos. Veamos mo que
a en la ua 6.7.
Sin embao, on es a o
in
ebemos
one los ejes y las maa
s a
ie. Los ejes no es ninn
oblema
ues lo haemos sim
lemen e u ilizan
o \
aw, omo s
e mues a en la ua 6.8.
La o a foma
e
in a la e ula es a
ie . Afo una
amen e,
omo el
in a las lneas se
a a
e una aea e
e i iva,
ue
es usa la ons uin \fo
eah que
o
oiona TikZ. Es a
es una ons uin muy
o
eosa que funiona omo sus i uin
e
maos,
o lo que se
lo en la ua 6.9 y
es
us
analizaemos su foma o.
222
LATEX
Fiua 6.7
Im
esin
e la e ula
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox (0 , 2)
e anle (200 ,250);
\
aw [
o e
] ( 0 , 0 )
i
[ x s e
=15 , y s e
= 1 2 . 5 ]
(210 ,225);
\
aw ( 0 , 0 )
...
...
\ en
{ i k z
i u e }
(210 ,225);
\
aw [ v e y h i k , l a e x ]
( 0 , 0 ) ( 0 , 2 2 5 ) ;
\
aw [ v e y h i k , l a e x ]
( 0 , 0 ) ( 2 1 0 , 0 ) ;
\
aw ( 0 , 0 )
l o [ mak=x , smoo h ]
...
...
\ en
{ i k z
i u e }
= 1 2 . 5 ) ]
%e j e y
%e j e x
6.10 Imenes y uas
223
Fiua 6.9
Seun
a foma
e
in a la e ula
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox (0 , 2)
e anle (200 ,220);
\ foeah \ x i n {15 ,30 ,45 ,60 ,75 ,
90 ,105 ,120 ,135 ,
150 ,165 ,180 ,195 ,
210} {
\
aw [ l i n e w i
h =.3
,
o e
]
( \ x , 0 ) ( \ x , 2 2 5 ) ;
}
\ foeah \ y i n {12.5 ,25 ,37.5 ,50 ,
62.5 ,75 ,87.5 ,100 ,
112.5 ,125 ,137.5 ,
150 ,162.5 ,175 ,
187.5 ,200 ,212.5 ,
225} {
\
aw [ l i n e w i
h =.3
,
o e
]
( 0 , \ y ) ( 2 1 0 , \ y ) ;
}
\
aw ( 0 , 0 )
...
...
\ en
{ i k z
i u e }
Ambos ejem
los ienen una sola vaiable y las lneas que se
i
n an es n a in evalos ons an es.
En eneal, uan
o se
an es as
os on
iiones
ue
es eem
laza
a
a e o o
a la lis a
o una
lis a
on
e se in een los
un os que fal an y que iene la siuien
e foma:
,
, . . . ,
seun
o valo
l imo valo
ime valo
224
LATEX
Los
os \foeah que enemos los
o
amos habe esi o
e las fom
as que se mues an en el
lis a
o 6.1.
C
io 6.1
,135 ,
) ( \ x ,
) ( 2 1 0
) ( \ x ,
) ( 2 1 0
,... ,225} {
h =.3
,
o e
] ( 0 , \ y
Aunque a
aen emen e el oloa los nmeos sobe los ejes
ae
e senillo, no sabemos
mo oloa obje os uan
o abajamos on TikZ, y no se loa sim
l
emen e on un \
aw uyo
obje ivo es
in a lneas. En la siuien e sein esolveemos es e
6.10 Imenes y uas
C
io 6.2
8 0 ) ;
225
Dibujos abi aios
(1/2)
\ bein { i k z
i u e } [ x=1
, y=1
]
\ useasboun
inbox ( 3 0 , 3 0 ) e a n l e ( 3 5 0 , 1
% ojos
\ foeah \ x / \ y i n { %
50/160 ,100/160 , 140/90 ,190/90 ,310/100 ,280/150} { %
\
aw ( \ x , \ y ) i l e (12
) ;
\
aw [ f i l l ] ( \ x , \ y ) i l e ( 3
) ;
}
bb i n { %
% ejas
\ f o e a h \ x / \ y / \ xx / \ yy / \ a / \ b / \ aa / \
30/170/70/170/40/140/50/130 ,
80/170/120/170/40/140/50/130 ,
120/100/160/100/40/140/50/130 ,
170/100/210/100/40/140/50/130 ,
280/170/295/135/20/0/40/0 ,
310/120/325/85/20/0/40/0} {
\
aw ( \ x , \ y ) . . o n o l s + ( \ a : 2 0
) an
+ ( \ b : 2 0
) . .
( \ xx , \ yy ) ;
\
aw ( \ x , \ y ) . . o n o l s + ( \ aa : 3 0
) an
+ ( \ bb : 3 0
) . .
( \ xx , \ yy ) ;
}
% naiz
\ foeah \ x / \ y i n {0/75 ,90/0} { %
\
f
u a { \
f x y ( \ x , \ y )}{ %
\
aw [ oun
e
o n e s ] ( 7 5 , 8 0 ) ( 7 0 , 6
5 ) ( 6 5 , 6 0 )
( 7 0 , 5 5 ) ( 8 0 , 5 5 ) ;
\ f o e a h \ xx i n { 7 0 , 7 4 } { %
\
aw [ f i l l ] ( \ xx , 6 0 ) i l e ( 1
) ;
}
an
+(220:20
) . .
an
+(220:30
) . .
% boa
\
aw ( 4 0 , 4 5 ) . . o n o l s +(320:20
)
(110 ,45);
\
aw ( 4 0 , 4 5 ) . . o n o l s +(320:30
)
(110 ,45);
} %\
f
u a
} %f o e a h
226
LATEX
C
io 6.2
0 , 6 5 )
) ;
Dibujos abi aios
(2/2)
% Teea aa
\
f
u a { \
f x y ( 40 ,50)}{ %
\
aw [ oun
e
o n e s ] ( 3 3 0 , 7 0 ) ( 3 1
( 3 0 5 , 6 0 ) ( 3 1 0 , 5 0 ) ;
\ foeah \ x / \ y in {310/58 ,312/52}
\
aw [ f i l l ] ( \ x , \ y ) i l e ( 1
% boa
\
aw ( 2 7 0 , 7 0 ) . . o n o l s + ( 0 : 3 0
) an
+(80:30
) . .
(310 ,0);
\
aw ( 2 7 0 , 7 0 ) . . o n o l s +(340:10
)
an
+(70:10
) . .
(309 ,0);
} %
f
u a
\ en
{ i k z
i u e }
6.10.6.
Aomo an o obje os
El
o
e
in a una e ula
e la su
e ie que usamos
aa
ibuja
suele se il no na
a ms
) [
]
) {
} ;
mo
if ia
oes
a (
osiion
contenido
6.10 Imgenes y
guras
227
\foreach. Aunque e
dos veces), puedes par
t / \ c l o r
f
i t e ]
228
LATEX
Explicamos ahora algunos de los modi cadores.
La forma (shape) puede ser cualquiera de las que se encuentr
an en la biblioteca shapes de
TikZ, que se carga mediante el comando
\ u s e t i k z l i b r a r y { shapes }
colocado en el prembulo del documento. En este caso, en el ej
emplo no parametrizado utili
zamos rectangle, mientras que en el parametrizado utilizamos
diamond. La forma por omisin
es rectangle.
En algunos casos no deseas separacin entre la posicin del nodo
y su exterior. Esta separacin
se da por omisin alrededor del texto contenido en el nodo, au
n cuando no haya texto. Por eso
tienes que aclarar que la separacin entre el texto y el borde
(inner sep) y la separacin entre
el borde y el entorno (outer sep) es de cero puntos. Este mo
di cador lo utilizamos para marcar
que quieres colocarte exactamente sobre la lnea de la funcin.
Hay otra manera de hacer esto,
que veremos un poco ms adelante.
La opcin de dibujar o no contorno est dada por draw, que indic
a que s se haga. La opcin
por omisin es no pintar contorno.
Ya vimos la opcin de rellenar el nodo ( ll ). Para darle un co
lor al relleno y un patrn se
hace exactamente igual que con el comando \draw. El valor po
r omisin es transparente, por
lo que deja ver lo que sea que se haya pintado abajo; para que
no se viera la retcula abajo
de nuestras etiquetas es que rellenamos de blanco.
Por ltimo, el contenido de un nodo puede ser cualquier cosa,
entre otros, un arreglo, un
dibujo, otra retcula, ecuaciones (como lo hicimos nosotros). s
ta es una de las caractersticas
principales por las que nos gusta usar TikZ: te permite tras
plantar el podero y lo no de LATEX
a cualquier dibujo o gr ca.
Para colocar los nmeros a lo largo de los ejes haremos uso de l
a construccin \foreach y del
enunciado \node.
200
f (x) = x3
\ begin { t i k z p i c t u r e } [ x=1 pt , y=1 p t ]
\ useasboundingbox ( 0 , 0 )
rectangle (200 ,220);
...
\ foreach \ x i n {15 ,30 ,45 ,60 ,
...
\ foreach \ x / \ e t i q i n { %
30/1 ,60/2 ,90/3 ,120/4 ,
150/5 ,180/6 ,210/7} {
175
150
125
100
) = x2
f (x
\ node a t ( \ x , 5 ) { \ t i n y \ e t i q } ;
75
}
\ foreach \ y i n { %
50
25 ,50 ,... ,200} {
\ node [ l e f t ] a t ( 0 , \ y ) { \ t i n y \ y } ;
} ......
25
\ end { t i k z p i c t u r e }
1
2
6.10 Imgenes y
guras
229
anchor=north
anchor=north
anchor=north
anchor=west
anchor=east
anchor=south
anchor=south
anchor=south
left
right
left
right
west
east
west
east
1
0
a
b
1
230
LATEX
Cdigo 6.3
Dibujo de una gr ca
\ begin { t i k z p i c t u r e } [ x=1 pt ,
% C o l o c a c i n de l o
\ f o r e a c h \ name / \ e t i q / \ x /
a / a/10/40 ,b / b/110/40 ,
c / c /10/120 ,d / d/110/120} {
\ node [ c i r c l e , draw ] ( \ name
y=1 p t ]
s nodos
\ y i n {
) a t ( \ x , \ y ) {
\ e t i q } ;
}
\ f o
a
d
\
% d i b u j o de l o s arcos r e c t o s
r e a c h \ f f r / \ t t o / \ e t i q / \ pos i n {
/ b / 0 / above , b / d / 1 / r i g h t ,
/ c / 0 / above , c / a / 0 / l e f t } {
draw[ angle 6 0 ] ( \ f f r ) node [ \ pos ] { \ e t i q } (
\ t t o ) ;
}
% d i b u j o de l o s arcos curveados
\ f o r e a c h \ f f r / \ t t o / \ e t i q / \ pos / \ s a l
e / \ e n t r a i n {
b / a / 1 / above / 2 7 0 / 2 7 0 ,
d/b/0/ right /0/0}
{
\ draw[ angle 6 0 ] ( \ f f r ) . . c o n t r o l s + ( \ s a
l e : 4 0 p t )
and + ( \ e n t r a : 4 0 p t ) . . node [ \ p
os ] { \ e t i q } ( \ t t o ) ;
}
\ end { t i k z p i c t u r e }
Actividad 6.53 Haz el cdigo necesario para dibujar una cara similar
a la que se us en esta
seccin.
Con esto damos por terminada la parte de dibujar con LATEX. Sob
Yo
Ellos
T
6.11. Refeenias e n
ies
Un
oumen o ien o o, en eneal, un
oumen o
ofesional o
mo un a ulo, un libo, un
e
o e, equiee, a
ems
el on eni
o, una seie
e elemen os es i
os y
e ayu
a muy im
o an
es
aa el le o
e la oba. Es os elemen os inluyen: i
os
e
le as, sus amaos, la numeain
e
los a
ulos, seiones, fmulas, ua
os o ablas, as omo una seie
e elemen os (o
ionales)
omo ablas
e on eni
o,
e uas, n
ies. Al onjun o
e es os ele
men os se les onoe omo
i
oafa.
La i
oafa
e una oba, en eneal, la ja y a ien
e el e
i o
, sobe o
o en uan o a ues iones
es ias. Los n
ies y la biblioafa o efeenias son, neesaiamen
e,
ovis as
o el au o. En
muhos
e los asos, en
s que a ua omo ambos: au o y e
i o
e us abajos.
LATEX es i
eal
aa ayu
a e en la
e niin
e la i
oafa, inl
uyen
o los elemen os o
io
nales. En es e a
ulo hemos evisa
o ya
iamen e o
o lo que ne
esi as
aa ealiza
ou
men os om
lejos,
o lo que nos es a alaa mo ealiza alunos
e los elemen os o
ionales
que menionamos en el
afo an eio.
6.11.1.
232
LATEX
Hay vaias fomas
e
ale foma o a las biblioafas;
e heho, en la
mayoa
e los asos e
enon as siuien
o las elas que
aa al efe o
i e la e
i oial. P
o an o, una
e las aeas ms
im
o an es uan
o envas un libo, a ulo o ualquie o o abajo esi
o
aa su
ubliain, es
enea la lis a
e efeenias biblio as siuien
o
ihas elas.
En la
ehis oia
e la om
u a
oa
En la
e his oia
e las om
u a
oas, es
ei hae una vein ena
e
aos, enamos que om
aa los ulos.
2. Si ya ienes una lis a biblio a o
ena
a
e aue
o a ie o es ilo
,
o ejem
lo alfab i
o
o au o y ao, es ex ema
amen e
ifil
e onve i a o o es i
lo,
o ejem
lo usan
o
nmeos
e aue
o al o
en
e i a.
3. Es vi ualmen e im
osible man ene una an base
e efeenias bib
lio as que
ue
a se
eu iliza
a en
is in os
oumen os.
BIBTEX
que el i
o siem
e va en
inls.
(b) Una llave elei
a
o el usuaio que i
en i a la
ubliain. Es a lla
ve es la que
ebe usase
omo
ame o
aa el oman
o \ i e .
() Una seie
e am
os se
aa
os en e s
o omas,
on
e a
a am
o o
nsis e
e un i
en i
a
o
e am
o y sus
a os en e omillas o llaves,
o ejem
lo:
233
un os. Po ejem
lo, smi h:1987. BIBTEX lee las en a
as
el ahi
vo
e biblioafas, on ex ensin
.bib, y al foma o que se le
a a las en a
as lo on ola un ah
ivo
e es ilo, on ex ensin .bs .
Po azones
e es
aio, no
isu iemos en es e abajo los oman
os que
ue
en usase en los
ahivos
e es ilo, a
ems
e que, omo ya hemos meniona
o, hay mu
hos es ilos ya
e ni
os
o
esonas o
o oanizaiones,
o ejem
lo
o la Soie
a
Ma
em ia Ameiana (AMS,
o
sus silas en inls),
o la Assoia ion fo Com
u in Mahiney (A
CM), evis as
e
es iio,
asas e
i oiales. A on inuain
esibimos alunos es ilos muy us
a
os y que no es n asoia
os
a ninuna asoiain o asa e
i oial. Es im
o an e no a que no ne
esi as ob ene una o
ia
e los
ahivos
e es ilo (.bs )
e los que usamos aqu omo ejem
los, ya q
ue se inluyen on o
as las
is ibuiones
e LATEX.
Fiua 6.13
Ejem
lo
e LATEX usan
o BIBTEX
(1/2)
\
\
\
\
\
oumen lass { a i l e }
use
akae [ l a i n 1 ] { i n
u e n }
a e s y l e { em
y }
bein {
oumen }
s e i o n { Ejem
lo
e i a s }
234
LATEX
Fiua 6.13 Ejem
lo
e LATEX usan
o BIBTEX
(2/2)
I n i i a m o s on l a i a
e un l i b o ~ \ i e { no
naka95 : _knowl_ea _om
an }
y una e s i s
o o a l a o n i n u a i n ~ \ i e
{ van96 : _im
a_kbs } .
n n i o
n
Tambin q u i e e s i a un a u l o e s i o
o u
a u o ~ \ i e { boehm88 } y lueo o o
on
e hay ms
e u
us oes el oman
o
bib ex on el mismo aumen o y lueo
ebes ejeu a la ex
os ve
es
aa que LATEX
ue
a
esolve o
as las efeenias. El esul a
o,
ue
es a
eialo en
la ua 6.16,
on
e lo hemos
page 1
e n e d
n d e n e d on n p t l n e 6 .
aTe Warnng : C t a t o n van96 : _mpa_bs on page 1 n d
on n p t l n e 7 .
aTe Warnng : C t a t o n boehm88 on page 1 n d e n e
d on n p t
l n e 10.
aTe Warnng : C t a t o n boehm89 : _theor_w on page 1 n d
e n e d
on n p t l n e 1 1 .
aTe Warnng : C t a t o n 0 1 : _progr_web_hgh_level_langa
g on
d on
e n e d
page 1 n d e n e d on n p t l n e 1 3 .
aTe Warnng : C t a t o n wadlerhow on page 1 n d e n e
n p t l n e 15.
aTe Warnng : C t a t o n boehm89 : _theor_w on page 1 n d
on n p t l n e 1 5 .
No l e ejemplo . b b l .
235
r e o
p r o d t o n proesses } ,
{ U n v e r s e t van Amsterdan } ,
1996}
@ A r t l e { boehm88 ,
athor =
{ Boehm , B . } ,
ttle =
{ A s p r a l model o s o t w a
r e development and
enhanement } ,
jornal =
{ IEEE Compters } ,
year =
1988 ,
pages =
{61 62}}
@ A r t l e { boehm89 : _theor_w ,
athor =
{ Boehm , B . and Ross , R . } ,
ttle =
{ TheoryW s o t w a r e p r o j e
t management : p r n p l e s
and eamples } ,
jornal =
{ IEEE Trans . Sotw . Eng . } ,
year =
1989 ,
volme =
15 ,
nmber =
7,
pages =
{902 916}}
@roeedngs { 0 1 : _progr_web_hgh_level_langag ,
ttle =
{ rogrammng t h e Web w t h Hgh e
v e l angages } ,
year =
2001 ,
volme =
2028 ,
seres =
{ e t r e Notes n Compter S
ene } ,
month =
{ Aprl } ,
o r g a n z a t o n = {10 t h Eropean Symposm on rogramm
ng ,
ESO 2001} ,
pblsher =
{ Sprnger Verlag } }
t h o t
l " }
@ms { wadlerhow ,
a t h o r = " h l p Wadler " ,
t t l e = {How t o Add azness t o a S t r t angage W
Even Beng Odd } ,
r l = " t e s e e r . n j . ne . om/ 1 0 2 1 7 2 . h t m
236
ATE
$gra 6.16 Ejemplo sando los estlos BIBTE: am (arrba) y plan (abajo)
1
Ejemplo de tas
Inamos on la ta de n lbro [4] y na tess dotoral a ontn
aon [5].
Tambien queremos citar un artculo escrito por un unico autor [2] y
luego
otro donde hay mas de un autor [3]. Tambien queremos intentar, por su
puesto,
hacer una cita a unos proceedings de una conferencia [1] y para ter
minar vamos
a hacer una cita multiple, donde la primer entrada es a un artculo pub
licado
en el Web [6, 3].
References
[1] 10th European Symposium on Programming, ESOP 2001. Programming
the
Web with High Level Languages, volume 2028 of Lecture Notes in
Computer
Science. Springer Verlag, April 2001.
[2] B. Boehm. A spiral model of software development and enhancemen
t. IEEE
Computers, pages 6162, 1988.
[3] B. Boehm and R. Ross. Theory w software project management: pri
nciples
and examples. IEEE Trans. Softw. Eng., 15(7):902916, 1989.
[4] I. Nonaka and H. Takeuchi. The Knowledge Creating Company.
Oxford
Univ Press, New York, 1995.
[5] B Van Wegen. Impacts of KBS on cost and structure of prouductio
n pro
cesses. PhD thesis, Universeit van Amsterdan, 1996.
[6] Philip Wadler. How to add laziness to a strict language without
even being
odd.
1
Ejemplo de citas
Iniciamos con la cita de un libro [4] y una tesis doctoral a contin
uacion [5].
Tambien queremos citar un artculo escrito por un unico autor [2] y
luego
otro donde hay mas de un autor [3]. Tambien queremos intentar, por su
puesto,
hacer una cita a unos proceedings de una conferencia [1] y para ter
minar vamos
a hacer una cita multiple, donde la primer entrada es a un artculo pub
licado
en el Web [6, 3].
References
[1] 10th European Symposium on Programming, ESOP 2001. Program
ming the Web with High Level Languages (April 2001), vol. 2028
of Lecture
Notes in Computer Science, Springer Verlag.
[2] Boehm, B. A spiral model of software development and enhancemen
t. IEEE
Computers (1988), 6162.
[3] Boehm, B., and Ross, R. Theory w software project management: p
rin
ciples and examples. IEEE Trans. Softw. Eng. 15, 7 (1989), 90291
6.
[4] Nonaka, I., and Takeuchi, H. The Knowledge Creating Company. Ox
ford Univ Press, New York, 1995.
[5] Van Wegen, B. Impacts of KBS on cost and structure of prouducti
on
processes. PhD thesis, Universeit van Amsterdan, 1996.
[6] Wadler, P. How to add laziness to a strict language without eve
n being
odd.
6.12 Emacs
237
6.11.2.
ndices
6.12. Emacs
Como ya sabes, editar un archivo LATEX es simplemente editar u
n archivo de texto con comandos
especiales que interpreta el comando latex o pd atex . En este sentid
o, con lo revisado de Emacs en
la seccin 4.3, puedes editar cmodamente tus documentos LATEX.
Sin embargo y como una muestra ms de la versatilidad y podero de
Emacs, te mostraremos
algunos paquetes que extienden Emacs y lo convierten en un poderoso
238
LATEX
6.12.1.
AUCTEX
Sangras y formato
AUCTEX puede indentar tu cdigo automticamente conforme lo escrib
es. Si presionas C j
en lugar de Enter funcionar exactamente igual. Si presionas tab la
lnea actual es indentada
y el cursor permanece donde est. Incluso el comando format paragrap
h de Emacs, Mq , es
re implementado por AUCTEX para que haga lo correcto con tu docume
nto LATEX. Finalmente, la
funcin LaTeX ll buffer (que puedes ejecutar con Mx ) indenta todo tu
documento, lo cul es
particularmente til cuando alguien te mand un documento sin formato.
6.12 Emacs
239
( s e t q TeXparses e l f t )
( setqd e f a u l t TeXmaster n i l )
Edicin de documentos
AUCTEX estudia el comando \documentclass de tu documento y en f
uncin de eso te ayu
da a completar comandos de LATEX, lo cual tiene dos aplicaciones im
portantes y que a la postre
agradecers in nitamente.
1. Te permite completar comandos parcialmente escritos. Por ejemp
lo, puedes escribir \renewc
y presionar Mtab (TeX complete symbol) y AUCTEX hace el resto,
es decir, completar el
comando \renewcommand por ti. Si ms de un comando casa con el p
re jo, entonces AUCTEX
te ofrece una lista de los posibles comandos para que escojas.
2. Te ayuda a insertar ambientes, esto es pares de la forma \begi
n \end.
Un nmero importante de macros acompaan a AUCTEX y estn aqu para ayu
darte a editar
rpidamente. Las ms importantes son las siguientes:
Tabla 6.34 Emacs: comandos de AUCTEX
Comando
LaTeX environment
orma \begin \end.
C c C e
LaTeX section
r, \section, . . .
C c C s
TeX font
m{} , \ textit {} , \ textbf {} ,
C c C f seguido de
C r , C i , C b , . . .
LaTeX insert item
en un ambiente. Esto es til
MEnter
AUCTEX propone el forma
TeX insert macro
s insertar un macro en tu
( C c enter )
preguntar por los argu
Descripcin
Inserta un par de la f
Inserta uno de \chapte
Insertan uno de \textr
...
Inserta un nuevo item
en todo tipo de listas,
to adecuado.
Con este comando puede
documento y AUCTEX te
mentos del mismo.
240
LATEX
agregar a tu /.emacs lo siguiente:
( s e t q LaTeXs e c t i o n hook
( LaTeXs e c t i o n heading
LaTeXs e c t i o n t i t l e
LaTeXs e c t i o n t o c
LaTeXs e c t i o n s e c t i o n
LaTeXs e c t i o n l a b e l )
)
en la variable LaTeX math list y, por supuesto, puede con gurarse. As, por e
jemplo, estando en
modo matemtico la secuencia de teclas a inserta .
Not: pr nosotros, hispno prlntes, escriir centos es muy importnt
e y, en generl, sirve
pr poner centos invertidos, lo cul di cult el cceso l modo mtemtico
de AUCTEX. Por lo
tnto tienes dos opciones, presionr dos veces y luego l letr desed o
ien cmir el pre jo
utilizdo por AUCTEX.
6.12 Emcs
6.12.2.
241
RefTEX
Tl de contenidos
L tl de contenidos de un documento LATEX es lgo muy impor
tnte y te puede dr un visin
glol de l estructur de tu trjo. Sin emrgo, l tl de con
tenidos existe hst que compils tu
documento fuente y exclusivmente en el documento generdo como sl
id (DVI, PostScript, PDF,
etc.). Qu hrs y cmo provechrs el poder tener un tl de contenido
s generd dentro de
tu editor? Qu hrs con ell si dems est tl fuer nvegle?
El comndo reftex-toc ( C-c =) hce justo eso, te muestr secc
iones, etiquets y entrds de
ndice de nidos en tu documento y ms n, te permite sltr culquier d
e estos puntos rpidmente.
Etiquets y referencis
Crer etiquets pr los distintos elementos de tus documentos
como gurs, tls y frmuls
es usulmente un tre tedios y poco grti cnte. L gente se h in
ventdo frmuls y tcnics
pr signr etiquets ordendmente pr despus recordrls fcilment
e y hcer referenci sts
sin tener que uscr en todo el documento. Los resultdos vrn much
o, pero en generl puedes
segurr que es un ml ide y no funcion ien.
RefTEX te yud crer etiquets nics y encontrr l etiquet
decud cundo quieres
hcer un referenci rpidmente. RefTEX distingue entre etiquets p
r distintos mientes, conoce
todos los mientes estndr ( gure, eqution, tle) y puedes con gurrl
o pr que entiend n
ms tipos de etiquets cmindo el vlor de l vrile reftex-lel
-list.
242
LATEX
mientes).
L vrile reftex-insert-lel- gs control qu etiquets son cred
Preview
y ses es lgo que no sucede con LATEX. Sin emrgo, l intencin del
pquete preview pr Emcs
no es exctmente st.
Con preview se usc un lnce entre elementos gr cos y texto. Utili
z l slid gr c pr
cierts construcciones (con gurle); hce esto cundo se le solicit y
lo hce h mismo, dentro del
cdigo fuente. Cmir entre l versin gr c y el cdigo fuente es fcil y ntur
l y puede hcerse
pr cd imgen de mner independiente.
6.12 Emcs
243
Pr ctivr preview dees poner lo siguiente en tu /.emcs:
( l o d " previewl a t x . l " n i l t t )
Para vr/ditar l cdigo LATEX para un objto spc co, qu s prob
ablmnt ms til, puds
jcutar l comando prviw at point ( C c C p C p ) o bin prsion
ar l botn dl mdio dl
ratn sobr la vista prvia. Aora puds ditar l cdigo y gnrar un
a nuva vista prliminar con
C c C p C p nuvamnt.
Lnguajs d
marcado
7
Los lnguajs d marcado (markup languags) utilian txto comn y corrint
combinado con
informacin adicional qu sirv para d nir su smntica o su prsntacin (a vcs amba
s). En
palabras sncillas: sta informacin adicional nos dic qu signi ca l txto o cmo s
prsnta
al usuario. La informacin adicional sul star intrcalada n l mismo txto uti
liando marcas
spcials; d a l nombr d lnguajs d marcado.
Los lnguajs d marcado tinn sus orgns n la industria ditorial, muco
ants d la cra
cin d computadoras digitals: cuando un manuscrito s prparaba para imprsin, un
spcialista
(coloquialmnt conocido como marcador) esrba en los mrgenes anotaones espeale
s (mar
as) qe servan de ga a los qe transrban el teto en s orma nal ya lsta para
mprmrse.
Estas maras eran n lengaje de marado prmtvo (no haba neesaramente n estn
dar, n tenan
na sntas ormalmente de nda), qe serva para eplar la presentan del teto:
el tamao de
la ente, el tpo, el estlo, et.
Con la llegada de las omptadoras, los lengajes de marado ganaron adems l
a apadad de
obtener atomtamente norman semnta: por ejemplo, s en nestro lengaje de
marado
de nmos la mara AUTOR: para qe on ella dent qemos al ator del domento, es
trval
haer n programa qe atomtamente obtenga el ator o atores de todos los do
mentos dspo
nbles y haga na relan entre ellos.
Anqe hay mhsmos lengajes de marado atalmente (TE y ostSrpt son
lengajes
de marado proedrales), de espeal mportana es SGM, el engaje de Marad
o Estndar
Generalzado (Standard Generalzed Marp angage). SGM es n meta lengaje pa
ra de nr
lengajes de marado, y de ah se dervan los dos lengajes de marado probablemen
te ms amosos
y sados en la ataldad: M y HTM. Nos entraremos en estos ltmos drante el
resto del
aptlo.
246
engajes de marado
7.1. M
SGM es n metalengaje grande y omplejo. Implementar n progr
ama (o sstema de progra
mas) qe peda ldar on alqer lengaje de ndo on SGM tendr q
e ser galmente grande
y omplejo. a mayor parte de los programas qe se tlzan para ma
nejar lengajes de ndos on
SGM, en la prta slo soportan n sbonjnto de todas las opones
qe oree.
En gran medda por este motvo, y las neesdades espeales q
e presentan las aplaones
qe neestan omnarse por Internet (SGM preede por varos aos
a Internet), e qe se re
M, el engaje de Marado Epandble (Epansble Marp angage)
. M es n sbon
jnto smpl ado de SGM, lo qe hae el esrbr programas qe lo m
anejen mho ms l, y
adems est pensado para ompartr norman, espealmente a travs de l
a red.
M es nmensamente poplar y esten mhsmos lengajes de ndos
on M qe se san
hoy en da; por nombrar slo algnos: RSS (para notas), MathM (para
representar rmlas
matemtas omplejas), HTM (el sesor de ato de HTM), Salable
Vetor Graphs (para
gr os esalares), MsM (para notan msal) y mles ms. M tambn
es tlzado
por mhos programas para gardar ss arhvos, espealmente en el
mndo del sotware lbre:
OpenO e, AbWord, Gnmer y KO en san M para gardar ss dome
ntos, por nombrar
nos antos.
Un domento M presenta s norman en na estrtra jerrq
a, qe podemos ver o
mo n rbol. Todo domento M tene n elemento raz, qe a s vez p
ede tener ms elementos
y/o teto omn y orrente. Cada elemento a s vez pede tener ms ele
mentos y/o teto y as
sesvamente. Adems, ada elemento pede tener atrbtos. Veamos n
ejemplo en el lstado 7.1
Cdgo 7.1
Domento en M
a < / a t o r >
(1/2)
j e r o
nha
7.1 M
Cdgo 7.1
p o qe
247
Domento en M
(2/2)
<parrao >
En n l g a r de l a Manha , de yo nombre no
q e r o a o r d a r m e , no ha mho t e m
v v& a t e ; a n h d a l g o de l o s de l
a n z a en
& a t e ; n l a o
a s t l l e r o , a d a r g a a n t g a , r o
y galgo orredor .
<parrao >
...
</ a p t l o >
...
</ p a r t e >
...
</ l b r o >
Entdad
Smbo
&
>
<
'
&qot;
&
>
<
"
248
engajes de marado
Cdgo 7.2
+ ) >
t
a
p
p
r
p
a
a
a
a
e
a
t
t
r
r
p
p
s
r
o
t
t
r
l
r
e
e
t
t
m
a
o ( #CDATA) >
( #CDATA) >
( a p t l o + >)
nmero CDATA #REQUIRED >
l o ( resmen , p a r r a o + ) >
l o nmero CDATA #REQUIRED >
e n ( #CDATA ) >
o ( #CDATA ) >
7.2 HTM
249
7.2. HTM
HTM na as al msmo tempo qe la World Wde Web, de la nees
dad de poder presentar
norman en la red de orma rpda y senlla. SGM era my omplejo
omo para lo qe se
reqera y M todava no se nventaba; as qe HTM e el resltado de q
erer resolver n
problema my onreto de la orma ms senlla posble. Se tlz na e
strtra smlar a la de n
lengaje SGM, pero mho menos estrto y on mha tolerana a a
llos.
Eso, anado a qe al no no haba n estndar propamente sno slo
na sere de reglas no
my laramente espe adas, hzo qe HTM termnara sendo n lengaj
e poo onsstente y
demasado permsvo en s manejo de errores (en general los navegado
res desplegaban na pgna
no mportaba ntos errores tvera el domento HTM).
Con la ndan del Consoro de la World Wde Web (World Wde We
b Consortm), o W3C,
se empezaron a orregr mhos de los problemas qe nalmente tena
HTM; anqe ahora el
estndar de HTM es bastante estrto y ormalmente de ndo, todava es
ten mles de pgnas
en la red qe sgen sando (o absando) de las versones nales
de HTM.
El estndar atal es el de HTM 1.0 y 1.1 y es en se en el qe no
s entraremos aq.
7.2.1.
HTM
250
Cdigo 7.3
c t / / EN"
Lengujes de mrcdo
Documento en XHTML
<? xml v e r s i o n = " 1 . 0 " e n c o d i n g ="UTF8"?>
<!DOCTPE t m l P%BLIC " / /W3C / / DTD XHTML 1 . 0 t r i
" t t p : / / www. w3 . o r g / TR / x t m
l 1 /DTD/ xtml1 s t r i c t . d t d " >
< t m l xmlns =" t t p : / / www. w3 . o r g / 1 9 9 9 /
x t m l " xml : l a n g =" n " >
<ad >
< t i t l >P&a a c u t ; g i n a P r s o n a l d F
u l a n o d Tal < / t i t l >
</ ad >
<body >
<1 >P&a a c u t ; g i n a P r s o n a l d F u l a n
o d Tal < / 1 >
<p>
Hola , yo s o y F u l a n o d T a l y & a c u t ; s
t a
s mi p&a a c u t ; g i n a p r s o n a l .
</ p>
</ body >
</ tml >
c t / / EN"
(1/2)
"
l 1 /DTD/ xtml1 s t r i c t . d t
< t m l xmlns ="
x t m l " xml : l a n g =" n " >
<ad >
< t i t l > P
</ ad >
t t p : / / www. w3 . o r g / TR / x t m
d " >
t t p : / / www. w3 . o r g / 1 9 9 9 /
r u b a s d C < / t i t l >
7.3 C
253
Cdigo 7.6
i c t / / EN"
" t t p : / / www. w3 . o r g / TR / x t
m l 1 /DTD/ xtml1 s t r i c t . d t d " >
< t m l xmlns =" t t p : / / www. w3 . o r g / 1 9 9 9
/ x t m l " xml : l a n g =" n " >
<ad >
< t i t l > P r u b a s d C < / t i t l >
< l i n k r l =" s t y l s t " r f =" x
a m p l . c s s " t y p =" t x t / c s s " / >
</ ad >
7.3.1.
Javascript
254
Cdigo 7.7
Lnguajs d marcado
Documnto n XML
i c t / / EN"
" t t p : / / www. w3 . o r g / TR / x t
m l 1 /DTD/ xtml1 s t r i c t . d t d " >
< t m l xmlns =" t t p : / / www. w3 . o r g / 1 9 9 9 /
x t m l " xml : l a n g =" n " >
<ad >
< t i t l > Javacript </ t i t l >
< s c r i p t t y p =" t x t / j a v a s c r i p t "
s r c =" j a v a s c r i p t . j s " / >
</ ad >
<body >
<1 > J a v a c r i p t < / 1 >
< t a b l i d =" myTabl " >
<tr >
< t d >< s t r o n g > E l m n t o s < / s t r
o n g > </ t d >
< t d >< s t r o n g >N&u a c u t ; mro < / s t
r o n g > </ t d >
</ t r >
</ t a b l >
< i n p u t t y p =" b u t t o n " v a l u =" A g
r g a r r n g l&o a c u t ; n "
o n c l i c k =" add
Row ( documnt ) ; " / >
< i n p u t t y p =" b u t t o n " v a l u =" B o
r r a r r n g l&o a c u t ; n "
o n c l i c k =" dl
Row ( documnt ) ; " / >
</ body >
</ tml >
.8.
Cdigo 7.8
t
h
(
(
(
Documnto n XML
f u n c t i o n addRow ( documnt )
{
var t a b l = documnt . g t E l m n
B y I d ( myTable ) ;
v a r nmRows = t a b l e . rows . l e n g t
;
v a r newRow = t a b l e . n s e r t R o w
nmRows ) ;
var e l l 1 = newRow . n s e r t C e l l
0 ) ;
var e l l 2 = newRow . n s e r t C e l l
1 ) ;
e l l 2 . nnerHTM = nmRows ;
}
n t o n delRow ( doment )
{
var t a b l e
= doment . g e t E l e
m e n t B y I d ( myTable ) ;
v a r nmRows = t a b l e . rows . l e n g t
h ;
( nmRows > 1 )
t a b l e . d e l e t e R o w ( n
mRows 1 ) ;
}
7.4 Emas
255
Emas tene soporte para manplar HTM, M y HTM, nlyendo
valdan tlzando
el DTD. S planeas tlzar HTM, slo tenes qe aadr lo sgente a
l arhvo /.emas:
( addt o l s t a t o mode a l s t ( " \ \ . h t m l \
\ " . mlmode ) )
Al abrr n domento on etensn .html, el modo M se argar atomt
amente. ara argar
el DTD de ndo en el tpo de domento, slo hay qe oprmr C C
; lo va
li
as usan
o el
oman
o C Cv . Paa
e ni el
oama ex eno
aa vali
a
ue
es aa
i
lo siuien e al
ahivo /.macs:
%s %s " )
( customs t v a r i a b l s
( sgmlmlv a l d a t e ommand " m l l n t v a l d n o o
)
s se ena
Heamien as
aa
esaollo
8
8.1. Con ol
e vesiones
El on ol
e vesiones es el manejo
e ambios a la infomain. Des
e siem
e es e manejo ha
si
o io
aa los
oama
oes, ya que buena
a e
el
esaollo
e
sis emas involua ealiza
257
en
is in as om
u a
oas. En es e sen i
o, la habili
a
e ene v
aias
esonas mo
i an
o y
abajan
o sobe el mismo onjun o
e
a os,
es
e sus es
e ivos
luaes, mejoa las
osibili
a
es
e olaboain. Ca
a miembo
el equi
o a
o a al
oye o
e manea
ie a, sin in eme
iaios
y,
a
o que o
o es e ique a
o
o vesiones, no se oe el ieso
e sai a ali
a
al no ene
un l o
e ali
a
, ya que si aln ambio eien e es inoe o, sub
vesion
emi e eha a s
los ambios ealiza
os.
subvesion es una aqui e ua lien e sevi
o. Da
o que la i
ns alain y on uain
e se
viios
e e
esa
a el alane
e es e libo, aqu hablaemos bevem
en e
e los as
e os ela ivos
al lien e.
258
ien as
aa
esaollo
Heam
% svn hekou h
://svn.ollab.ne /e
os/svn/ unk
Obviamen e la lia ambia
aa e eja el e
osi oio
e u
oye o y
exis en
ivesos
o o
olos
aa es
ei alo. Pue
e se va h
, omo en el ejem
lo, o va el sis e
ma
e ahivos loal
o a avs
e ssh. En es e ejem
lo, ex aemos el
ie oio unk
el
oye
o, que enealmen e
inluye o
os los ahivos y
ie oios,
eo
ue
es seleiona u as ms
e alla
as
aa ob ene
ie as
a es
el
oye o.
Una vez que ienes una o
ia
e abajo, no ienes na
a ms que es
ea
. Pue
es omenza a
mo
i a esos ahivos y
ie oios e iniia el ilo
io
e abajo.
Cilo
e abajo on subvesion
subvesion iene muhas aa es ias y o
iones,
eo en eneal e
enon as siuien
o el
siuien e ilo
e abajo:
1. A ualiza u o
ia
e abajo:
svn u
a e
2. Realiza alunos ambios:
svn a
svn
ele e
svn o
y
svn move
3. Revisa us ambios:
svn s a us
svn
iff
svn eve
4. In eala los ambios
e o os on u o
ia:
svn u
a e
svn esolve
5. Finalmen e, om
ome e us ambios al e
osi oio en al. No olvi
e
s aom
aalos on un
omen aio in elien e.
svn ommi
En la abla 8.1 ex
liamos qu haen los oman
os ms omunes
e subvesi
on:
8.2 Emas
259
iones ms,
eo el
ilo que hemos
esen a
o es el ms omn.
260
Heamien as
aa
esaollo
8.2. Emas
o
oama
oes? En
es a sein e
emos amos
o qu es o es ie o, ya que evisaemos
uno
e los ms so s ia
os
mo
os
aa
oama en Java que exis en, JDEE, que son silas en
inls
e Java Develo
men
Envionmen fo Emas .
8.2.1.
JDEE
8.2 Emas
261
Seman i
Infaes u ua
aa
asea en Emas.
S
ee
ba
Navea
o
e. . . ualquie osa.
EDE
Maneja
o
e ahivos y enea
o
e Make le.
COGRE
Conne e
Ga
h E
i o.
Una vez que ob ienes e ins alas la l ima vesin,
ebes aea lo
siuien e a u /.macs:
( l o a d f i l " / l i s p / c d t / common /
c d t . l " )
( s m a n t i c l o a d n a b l cod l p r s )
igo para:
tndar.
cs stndar.
uffr.
JDEE: $nalmente estamos lstos para JDEE, qe sge na rta smla
r a las etensones anterores
y debes poner lo sgente en t /.emas
( addt o l s t l o a d p a t h ( epand l e name " / e l
s p / j d e / l s p " ) )
( reqre jde )
A partr de este momento ada vez qe vstes n arhvo relaon
ado on n proyeto o pro
grama Java, JDEE proveer ss ontroles para apoyarte en t sesn de de
sarrollo.
Regstro y selen de JDK
JDEE desansa en herramentas de desarrollo Java qe nonen e
n la lnea de omandos,
omo las qe oree Sn Mrosystems omo parte del Java 2 Sotware
Development Kt (SDK),
tambn onodo omo Java Development Kt (JDK). As qe antes qe ped
as tlzar JDEE para
omplar, deprar o ejetar aplaones, debes ndarle dnde vven
las herramentas adeadas.
or omsn JDEE spone qe el omplador, deprador y mqna vrt
al de java se llaman
java, jdb y java respetvamente y qe estn en n dretoro de la v
arable de ambente ATH. En
la mayora de los sstemas n modernos, las nstalaones de Java s
e loalzan en stos estndar,
por lo qe JDEE debe nonar peretamente.
262
alado;
ema;
ba;
8.2 Emas
263
Abrevatras
);)
Abrevatra
e
or
orter
Ennado
then
then else
or (nt I=0;I<U;I++)
or (Iterator = .terator(); .hasNet(
man
try
man method
try nally
264
rramentas para desarrollo
He
Comando
jde omplete
JDEE y le
eja
la aea
e om
le a a o o
e los
oman
os
aa om
le a.
j
e om
le e in line
imea o
in que
( C Cv . ). Es e oman
o u iliza la
enuen a
aa om
le a. Si hay ms
e
una o
in, e
emi e
e a la an eio en el buffe.
j
e om
le e menu
bili
a
es en un men e
Es e oman
o
es
liea o
as las
osi
in o
ue al buffe la que seleion
es.
j
e om
le e minibuf
aa
es
lea las
osibili
eleiones.
Desi
in
(j
e im
o n
an
im
o ) enea un enunia
o
en el
un o. Inse a el enunia
o en la abez
(j
e im
o all) im
o a o
as las lases que
a ual.
Los oman
os
aa im
o a e
emi en onve i un enunia
o omo:
im
o java . io .
en los siuien es:
im
o java . io . Buffee
Rea
e ;
im
o java . io . In
u S eamRea
e ;
im
o java . io . IOExe
ion ;
y vievesa (j
e im
o olla
se im
o s). JDEE a
ems inluye el oman
o j
e im
o oanize
que aumula los enunia
os im
o
el buffe en
os bloques, uno que
on iene o
os los java y
javax y
es
us
e una linea en blano, o
os los
ems. Den o
e a
a b
loque o
ena alfab ia
men e,
o ejem
lo:
8.2 Emas
265
im
o
im
o
im
o
im
o
java . io . In
u S eamRea
e ;
java . u i l . Hash able ;
j a v a x . s w i n . JFame ;
j a v a x . swin . J P a n e l ;
im
o jma h . LineaSys em ;
im
o jma h . Tes ;
Finalmen e, on j
e im
o kill ex a im
o s boas los im
o
que no son neesaios.
JDEE inluye a
ems una seie
e enea
oes
e
io o wiza
s, q
ue se mues an en la
abla 8.5.
Tabla 8.5 JDEE: enea
oes
e
io, wiza
s
Wiza
Sobeaa
e o
ea
oes
o que sobeaa o o
un o.
In efaz
Delea o
Clase abs a a
os
e una lase abs a a
o.
Ge /Se
e y se
aa los am
os
al
un o.
Desi
in
(j
e wiz ovei
e
me ho
). Un m o
hee
a
o
o la lase
on
e es el
(j
e wiz im
lemen in efae). Im
faz en la lase que on iene al
eo s as no ienen un
nio oman
o asoia
o y
ebes ejeu alas
es
e el men
e JDE. Po ej
em
lo,
aa ea un
buffe on una lase
blia enia
e Java,
ue
es u iliza Files JD
E New Class.
Compilando programas Java
Para compilar debes ejecutar C c C v C c (jde compile), lo que
ejecutar el comando
javac en el buffer actual y el resultado aparecer en un nuevo buffer
de compilacin.
Si ya exista un buffer de compilacin, el comando reutilizar el buf
fer; si no, crear uno nuevo.
Por omisin, si no existen errores en la compilacin, JDEE borra el buf
fer de compilacin dos (2)
segundos despus de terminada la compilacin.
El modo mayor de este buffer es compilation mode, que te permit
e moverte rpidamente a la
fuente de cada error, simplemente haciendo click o presionando Ente
r en el buffer de compilacin.
JDEE utiliza una serie de variables para controlar la manera de
compilar tu programa; para
cambiar la forma estndar debes utilizar la secuencia de mens y submens
de JDEE: JDE
Options Compile.
Si utilizas JDE Build, entonces JDEE llamar un programa para con
struir tu aplicacin. Por
266
Herramientas para desarrollo
omisin utiliza el comando make de Linux, pero puedes con gurarlo para que ut
ilice la herramienta
de compilacin Ant, del grupo Apache, o una funcin especial que t de nas. Las f
unciones pre
de nidas son: jde make y jde ant build y, para utilizar Ant, utiliza lo sig
uiente en tu /.emacs:
( s e t q j d e b u i l d f u n c t i o n ( j d e a n t b u i l d ) )
Existen muchas variables para controlar el comportamiento tanto de ma
ke, como de Ant, aun
que en la mayora de las distribuciones de Linux no debe ser necesario que
cambies los valores por
omisin de estas variables.
Ejecucin de aplicacin Java
JDEE te permite ejecutar tus aplicaciones Java desde un subproceso d
e Emacs. Puedes ejecutar
varias aplicaciones de manera concurrente, pero slo un ejemplar de cada ap
licacin en un momento
dado. JDEE te mostrar tanto la salida como el error estndar de tu aplicacin
en un buffer de Emacs
y, a travs de estos buffers, puedes interactuar con la aplicacin si sta es i
nteractiva.
Para ejecutar la aplicacin utiliza C c C v C r (jde run).
Por omisin en JDEE, el comando para ejecutar aplicaciones supone que
la clase en el buffer
actual contiene el mtodo main de tu programa. Si ste no es el caso, tienes
que indicarle cul es la
clase principal, asignando el nombre adecuado a la variable jderunapplicati
onclass.
Con la variable jderunworkingdirectory puedes indicarle un directorio d
istinto al actual para
ejecutar tu aplicacin.
Navegando excepciones
Si ocurren excepciones durante la ejecucin de tu programa, la mquina vi
rtual entrega como
salida un registro de excepcin. Este registro aparece en el buffer de ejec
ucin. Para ver la lnea de
cdigo correspondiente a un punto en el registro de excepcin, puedes hacerlo
con el botn derecho
del ratn.
Para navegar el registro de excepcin hay dos combinaciones de teclas: C c
C v C [ y C c C v C ] .
JDEE ofrece un excelente soporte para trabajar con applets, pero por
razones de espacio no lo
cubriremos en este libro.
Depurando aplicaciones
JDEE ofrece dos opciones para depurar aplicaciones Java:
Una interfaz en Emacs para jdb, el depurador en lnea de comandos que
se distribuye con JDK.
JDEbug, un depurador desarrollado espec camente para ser utilizado con
JDE.
8.2 Emacs
267
Depuracin a nivel de fuente. JDEbug mantiene un apuntador a la l
inea de cdigo que se est
ejecutando conforme avanzas. Te permite adems asignar puntos de
evaluacin en los buffers
fuente.
Despliega de manera automticas el valor de las variables.
Navegador de objetos. Puedes expandir el despliegue de la varia
ble local para mostrar los
campos del objeto a cualquier nivel de profundidad.
Te permite navegar la pila de ejecucin.
Puedes depurar varios procesos simultneamente en la misma sesin.
Evaluacin de expresiones. Puedes evaluar cualquier expresin que s
ea vlida en el punto
actual de suspensin.
Por omisin JDEE est con gurado para ofrecerte una interfaz de jdb, p
or lo que debes indicarle
que deseas utilizar JDEbug. Esto lo logramos asignando el valor JDEb
ug a la variable jdedebugger:
( s e t q j d e d e b u g g e r ( " \ command{ JDEbug } " ) )
JDEbug se apoya en la biblioteca JPDA, que en Linux se distribuy
e como parte de JDK, por lo
que no es necesario hacer nada ms.
Iniciando el depurador
Para iniciar el depurador selecciona Processes Debugger del men d
e JDEbug, con lo
que se inicia la ejecucin del depurador. Para depurar una aplicacin de
bes:
Iniciar la aplicacin dentro del depurador. Adelante te decimos cm
o.
Aadir el depurador a tu aplicacin si es que sta fue ejecutada fuer
a del depurador.
Poner el depurador en modo de escucha e iniciar la aplicacin fue
ra de ste.
Es muy importante que cuando hayas terminado de utilizar el depu
rador, termines su ejecu
cin seleccionando Exit Debugger del men JDEbug. De otra manera, aun cu
ando termines la
ejecucin de Emacs, pueden quedarse procesos (mquinas virtuales) hurfano
s ejecutados por el
depurador.
Iniciando procesos
JDEbug provee dos comandos para iniciar procesos:
1. JDEbug Processes Launch Process, que ejecuta un ejemplar de la
aplicacin sea
lada por jde run application class y, en caso de que su valor s
ea nil , la aplicacin corres
pondiente a la del buffer actual de java.
2. JDE Debug App; este comando realiza las siguientes acciones:
a) Inicia el depurador de ser necesario.
b) Lanza la aplicacin.
c) Asigna todos los puntos de revisin que hayas especi cado co
n anterioridad.
d)
Ejecuta la aplicacin.
268
Herramientas para desarrollo
Nota: si no asignaste ningn punto de revisin, la aplicacin ser eje
cutada sin interrupcin
hasta terminar.
Cualquiera de estos comandos que ejecutes, dividir la pantalla
de Emacs en dos y desplegar
una nueva ventana para las variables locales.
La pantalla superior de Emacs muestra el cdigo fuente, la sigui
ente muestra el buffer fuente o
el archivo donde pusiste puntos de revisin y, nalmente, la ventana de
l fondo muestra los mensajes
del depurador para el proceso recin lanzado.
En este momento, si el proceso fu iniciado exitosamente y no se
se ha ejecutado hasta terminar,
puedes depurar la aplicacin.
8.2.2. psvn
Descripcin
, p , C p
terior.
, n , C n
lnea.
Contina en la siguiente pgina
8.2 Emacs
269
Tabla 8.6 Emacs: comandos de psvn
tina de la pgina anterior
Enlace
Con
Descripcin
(svn status nd
(directorio) en la
Enter
lnea actual.
(svn status update buffer) Actualiza la vista en el b
uffer con respecto a tu
x
revisin local.
U
torio actual.
Extendiendo tu
ambiente
9
La capacidad de extender y acoplar el sistema a tus necesidades es una
de las principales ca
ractersticas de UNIX en general. Linux, por supuesto, hereda esta caracterst
ica y en este captulo
te mostraremos una de las formas ms poderosas de extender tu ambiente con l
a programacin en
shell.
Tambin te mostramos cmo extender Emacs a travs de su lenguaje de programa
cin de exten
sin, Emacs Lisp. De hecho, la gran mayora de subsistemas y paquetes para ext
ender Emacs que
revisamos en este libro, por ejemplo JDEE (seccin 8.2.1) o ERC ( 5.15.4), s
on programas escritos
en Emacs Lisp. Entonces, lo que sucede cuando cargas uno de estos programa
s en Emacs, es que
ste acta como mquina virtual e interpreta (ejecuta) el programa.
272
Extendiendo tu ambiente
sean de inters para la ejecucin del programa y cuentan con estructuras d
e control de ujo, algunas
de las cuales veremos ms adelante.
En un guin de shell tambin podemos tener comentarios, que son mensaj
es para los que lean el
guin (en particular, nosotros mismos despus de algn tiempo). Los comentar
ios son ignorados por
el shell al momento de ejecutar, as que no hacen dao y sirven para dar m
ayor claridad a nuestro
guin de shell. Los comentarios son todo lo que siga al carcter # hasta e
l n de la lnea.
Los guiones de shell pueden ser ejecutados de manera autnoma simple
mente cambiando los
permisos de ejecucin y poniendo un comentario especial en la primera lne
a del archivo. Esta lnea
luce algo as #!/ bin /bash y le indica al shell que debe de usar el pro
grama / bin /bash para procesar el
resto del archivo.
A continuacin te mostramos un guin de shell muy sencillo:
#! / usr / bin / bash
echo h o l a ;
Actividad 9.1 Crea un guin de shell que ejecute un ls la, lo redirija a
un archivo llamado
listado . dir y despliegue un mensaje al usuario, informndole de la cre
acin de este archivo; da
permisos de ejecucin y ejectalo un par de veces en directorios distintos
.
9.1.1.
Variables
Preparacin
Hasta ahora has aprendido cmo hacer algunos programas sencillos, hec
hos con base en los
comandos aceptados por el shell estndar de Linux, bash, y conectando la
salida de algunos con la
1
Esto es parte de la tradicin; se pueden usar minsculas tambin.
Nuestro primer programa, como todos los que seguirn, estar enfoca
do a resolver un problema,
a facilitarte la vida de alguna manera. Algo con lo que todo usuari
o de un sistema compartido debe
aprender a convivir es con los dems usuarios. Todos comparten un mis
mo disco duro, un mismo
procesador, una misma memoria; es necesario regular el uso de estos
recursos para garantizar su
disponibilidad a todos los usuarios. Es por ello que en muchos sist
emas de cmputo compartidos
se establecen polticas generales de uso de recursos. Por ejemplo, se
establecen cuotas mximas
de uso de disco. Mediante este procedimiento cada usuario del siste
ma tiene un lmite mximo
de espacio disponible, es decir, la cantidad de informacin guardada
en su directorio personal no
deber exceder nunca este lmite; en caso de que se pretenda rebasar el
lmite, el sistema lo impide:
es como si el disco duro se hubiese acabado. El usuario se entera d
274
Extendiendo tu ambiente
UNIX es du (disk usage). Puedes saber cuanto espacio ocupa tu director
io actual y cada uno de sus
subdirectorios con el siguiente comando: du k .2 .
Actividad 9.4 Logra que la salida de du se muestre paginada.
Actividad 9.5 Logra que du reporte slo el tamao del directorio actual, p
ero sin desglosar por
subdirectorios.
Lo malo de hacer du k . es que el listado de la cantidad de disc
o ocupada sale desordenado.
Si tienes muchos subdirectorios no es evidente cules son los que ms espa
cio ocupan y, por tanto,
a cules deberas prestar ms atencin. Pero afortunadamente existe el comando
sort, que permite
ordenar aquello que recibe como entrada. Como has hecho en el pasado,
puedes pasar la salida del
comando du como entrada del comando sort y rematar esto pasando la sal
ida de sort como entrada
de more (o less si lo pre eres). sort ordena creciente y quisieras (aunq
ue en gustos se rompen
gneros) que la salida fuera ordenada decreciente para que pudieras jarte
quizs en los 3, 5 o 10
subdirectorios ms grandes fcilmente; adems, quieres que para ordenar use
los valores numricos
entregados por du. Esto ltimo puede parecer evidente pero no lo es. Hay
dos maneras de ver un
423: como el nmero 423 o como la secuencia de tres smbolos 423, una cadena
de carcteres.
Visto de la primera forma, 423 es mayor que 52; pero desde el segundo
punto de vista, la cadena
423 es menor que 52 porque, en orden lexicogr co el 5 est despus del 4.
En sntesis, y agregando algunas lneas explicativas al programa, tie
nes lo siguiente:
1
# ! / bin / bash
2
#
3
# R e p o r t a e l e s p a c i o en K b y t e s o c u p a d o p o
r c a d a
4
# s u b d i r e c t o r i o d e l d i r e c t o r i o a c t u a l o
r d e n a n d o de mayor a
5
# menor ( o r d e n i n v e r s o p a r a s o r t ) .
6
#
7
e c h o " E s p a c i o o c u p a d o en d i s c o ( en K b y t e s
) "
8
e c h o " p o r e l d i r e c t o r i o a c t u a l : pwd y s u b d
i r e c t o r i o s "
9
du k . | s o r t n r | more
Nota que est entre entre comilla invertida (acento grave, que est en
la esquina superior izquier
da del teclado, junto al 1) el comando pwd en la segunda lnea de mensaje
lnea (8) . Cuando
se pone un comando entre ese tipo de comilla, al momento de ejecutar l
a lnea que lo contiene se
reemplaza el comando por su salida, es decir la ejecucin de la lnea (8),
echo "por el directorio actual:pwd y subdirectorios,
produce:
por el directorio actual: /home/users/jose y subdirectorios
Actividad 9.6 Haz que el monto de espacio ocupado se despliegue en meg
a bytes en vez de en kilo
bytes.
Actividad 9.7 Haz que la salida de sort sea en orden creciente y sea p
osible hacer paginacin.
2
El . se re ere al directorio actual.
Listado de directorios
Descripcin
$0 es el nombre del programa mism
o que invocaste, es de
cir, lo primero que pones en la ln
ea de llamada. $1 es el
l sera $1).
Anlogamente $2, . . . , $n
son los siguientes parmetros.
es el nmero de parmetros que pones
frente al nombre del
$#
programa, es decir no se cuenta $
0.
Co
ntina en la siguiente pgina
276
Extendiendo tu ambiente
Tabla 9.1
Descripcin
es el resultado del ltimo com
ma.
Nota adems que existe un medio para contar cuntos parmetros de ent
rada se le dieron a un
programa. Basta con observar el valor que posea la variable $# para
saber cuntas palabras (separa
das por espacios) se dieron frente al nombre del programa cuando ste
fue llamado a ejecutarse.
En nuestro programa requeriremos saber cuntos parmetros de entrad
a se dieron; si existe
algn parmetro, se debe ser la ruta de acceso al directorio del que se
desea conocer el listado
de subdirectorios. Llamemos a este directorio el directorio objetiv
o. Si no existe parmetro alguno
entonces supondremos que el directorio objetivo es el actual. En ca
so de que s exista el parmetro,
entonces deberemos cambiarnos al directorio objetivo especi cado por
dicho parmetro y listar slo
el nombre de sus subdirectorios.
Es decir, el esquema general de lo que debemos hacer es el siguient
e:
1 Si se dio l a r u t a del d i r e c t o r i o o b j e t i v o
2
n o s cambiamos a e s e d i r e c t o r i o .
3 S i no ,
4
no n o s movemos .
5 Ya p a r a d o s en e l d i r e c t o r i o o b j e t i v o , p a r
a c a d a e n t r a d a d e l l i s t a d o
6
de d i r e c t o r i o
7
S i l a e n t r a d a e s e l nombre de un s u b d i r e c t
o r i o ,
8
l a mostramos .
9
S i no ,
10
nos v a l e .
Nta que en las lneas 1 y 7 debes tomar decisiones, debes ser capa
z de preguntar si algo ocurre
o no. Esto lo puedes hacer en bash usando la construccin:
i f [ c o n d i c i n ]
then
# i n s t r u c c i o n e s que s e e j e c u t a n s i l a c
o n d i c i n e s v e r d a d e r a
else
# i n s t r u c c i o n e s que s e e j e c u t a n s i l a c
o n d i c i n e s f a l s a
fi
# ! / bin / bash
#
# E n t r e g a un l i s t a d o de a q u e l l a s e n t r a d
a s d e l d i r e c t o r i o que
4
# son s u b d i r e c t o r i o s .
5
#
6
# S i hubo un p a r m e t r o en l a l i n e a de comandos
7
# e s e l d i r e c t o r i o d e l que d e s e a m o s l o s s
u b d i r s .
8
i f [ $# ne 0 ] ; t h e n
9
cd $1
10
fi
11
# s i no , q u e r e m o s e l l i s t a d o d e l d i r e c t
o r i o a c t u a l
12
e c h o " S u b d i r e c t o r i o s en pwd "
13
f o r i i n l s aA ; do
14
i f t e s t d $ i ; t h e n
15
l s l d $ i
16
fi
17
done
278
Extendiendo tu ambiente
9.1.5.
Recorridos recursivos
d o un r
1
2
b
3
4
e
5
t
6
s
7
a del d i r
n d i r e c
mbiamos a
o
c
o
t
# ! / bin / bash
# P r o g r a m a r e c u r s i v o p a r a b a j a r p o r t o
l de d i r e c t o r i o s
e c h o " D i r e c t o r i o a c t u a l : " pwd
f o r i i n l s ; do
# Para cada e n t r a d
t o r i o
i f t e s t d $ i ; t h e n # s i l a e n t r a d a e s de u
r i o
cd $ i
# n o s ca
e
$HOME/ b i n / p a s e o _ r e c # Llamada r e c u r s i
v a
8
9
cd . .
e l i f t e s t f $ i ; t h e n # s i no , s i e s un a r c
h i v o
10
11
12
280
Extendiendo tu ambiente
Actividad 9.12 Modi ca el programa para que pregunte si realmente de
sea borrar cada archivo
de respaldo de Emacs, (sugerencia: man rm).
Cdigo 9.1
1
2
3
4
5
6
7
8
9
t o r i o
10
11
do
i f t e s t d $ i # s i l a e n t r a d a e s de un d i r e c
t o r i o
12
13
14
15
16
17
then
cd $ i
# entra al directorio
$HOME/ b i n / b o r r a m u g r e s . r e c
cd . .
fi
done
Un grep recursivo
Ya conoces el programa grep que te permite, en particular, bu
scar presencias de una cadena
cualquiera en conjuntos de archivos. En muchas situaciones es dese
able conocer no slo en cu
les archivos de un directorio aparece la cadena, sino en cules arch
ivos de sus subdirectorios, en
cules de los subdirectorios de stos y as sucesivamente. Es simple pen
sar en una situacin as;
por ejemplo, si quisieras saber cuntos y cules de los archivos conte
nidos en un directorio o sus
subdirectorios son programas para bash podras buscar la cadena /bin/
bash en todos los archivos.
Lo que quieres es hacer un grep recursivo que busque una cade
na en todos y cada uno de los
archivos contenidos en un directorio y sus subdirectorios. Tienes
que hacer que tu grep recursivo (al
que llamaremos rgrep) busque la cadena deseada en todos los archiv
os del directorio actual y luego
proceda a la manera de paseo_rec, metindose a cada subdirectorio qu
e se encuentra y llamndose
a s mismo. Cuando la entrada del directorio sea un archivo no haces
nada, como puedes ver en el
listado 9.2 de la siguiente pgina.
Actividad 9.13 Qu signi can las opciones Hns de grep que se usan en rg
grep recursivo
1
2
3
# ! / bin / bash
#
# Hace un g r e p r e c u r s i v o a mano ( e s d e c i r emul
ando
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# e g r e p r ) . Como h a c an l o s hombres de mi p o c a .
#
#
i f [ $# ne 1 ]
then
e x i t 1
fi
g r e p Hns $1
| more
for i in ls
do
i f t e s t d $ i
then
cd $ i
echo ""
e c h o " e s t o y en " pwd
$HOME/ b i n / r g r e p $1
cd . .
fi
done
282
Extendiendo tu ambiente
Seguramente ya has usado varias veces el comando ls con la opcin
l y habrs visto la salida
que produce. A diferencia de ls a secas, ls l despliega una lnea por
cada archivo. Si observas
esta salida, en el extremo izquierdo de cada archivo estn los permisos
de acceso del mismo. En
la seccin 3.2.1 revisamos con detalle el sistema de permisos de UNIX y
aqu vas a utilizar esta
informacin para acceder a cada subdirectorio.
1
2
3
# ! / bin / bash
#
# Programa p a r a cambiar permisos , e l p r o p i e t a r i o y e
l
4
# g r u p o de t o d o s l o s a r c h i v o s y d i r e c t o r i o
s r e c u r s i v a m e n t e
5
#
6
i f [ $# eq 3 ]
7
then
8
for i in ls
9
do
10
i f t e s t d $ i
11
then
12
chown $2 $ i
13
c h g r p $3 $ i
14
# l e ponemos p e r m i s o de e n t r a r t e m p o r a
l m e n t e
15
chmod +x $ i
16
cd $ i
17
e c h o " D i r e c t o r i o a c t u a l : " pwd
18
# OJO aqu s e pone l a r u t a c o m p l e t a a b s o l u
t a
19
# para a c c e d e r a e s t e programa
20
$HOME/ b i n / chmogr $1 $2 $3
21
cd . .
22
# l e ponemos l o s p e r m i s o s que n o s d i j e r o
n
23
chmod $1 $ i
24
e l i f t e s t f $ i
25
then
26
echo "
A r c h i v o : "$ i
27
chown $2 $ i
28
chmod $1 $ i
29
c h g r p $3 $ i
30
fi
31
done
32
else
33
e c h o "USO : $0 [ perm ] [ p r o p ] [ g r u p o ] "
34
e c h o " Cambia p e r m i s o s , p r o p i e t a r i o y g r u
p o r e c u r s i v a m e n t e "
35
e c h o " J o s + \ e+ G a l a v + \ i + , F a c u l t a d de C
i e n c i a s , UNAM. "
36
fi
9.1.6.
Comparando archivos
284
Extendiendo tu ambiente
Cdigo 9.3
# ! / bin / bash
#
# Programa p a r a comparar t o d o s l o s l o s a r c h i v o s
# d i r e c t o r i o a c t u a l con l o s de o t r o d i r e c t
d e l
o r i o
5
6
7
8
9
10
11
12
i r e c t o
13
p e c i f i
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
s "
36
#
CONTADOR=0
DIFER=0
IGUAL=0
i f [ $# ne 1 ]
then
e c h o " u s o : $0 < d i r e c t o r i o >"
e c h o " Se comparan uno a uno l o s a r c h i v o s d e l d
r i o "
e c h o " a c t u a l con l o s d e l d i r e c t o r i o e s
c a d o "
else
e c h o " Comparando l o s a r c h i v o s en pwd "
e c h o " con l o s de $1 . . . "
echo ""
for i in ls
do
i f [ f $ i ]
then
d i f f q s $ i $ 1 / $ i
i f [ $? eq 0 ]
then
l e t IGUAL=IGUAL+1
else
l e t DIFER=DIFER+1
fi
l e t CONTADOR=CONTADOR+1
fi
done
echo ""
e c h o "$CONTADOR a r c h i v o s c o m p a r a d o s "
e c h o "$IGUAL i g u a l e s "
e c h o "$DIFER d i f e r e n t e s o i n c o m p a r a b l e
fi
Actividad 9.18 Qu recibe como parmetro de entrada el programa?
9.1.7.
archivos viejos.
core Archivos que se llamen core en este ejemplo; en otros casos de e
ste mismo programa se
buscan aquellos que cumplan con el patrn *, por ejemplo, lo que s
igni ca los que terminan
con tilde (respaldos de Emacs).
print Este ltimo parmetro le indica a nd qu hacer con el archivo que e
ncuentre; en este
caso print signi ca imprime su nombre.
286
Extendiendo tu ambiente
Cdigo 9.4
nd
# ! / bin / bash
#
# Programa p a r a b o r r a r l a b a s u r a d e l d i r e c
r i o d e l u s u a r i o
4 #
5 cd $HOME
6 e c h o " L i m p i a n d o pwd . . . "
7 FECHA= d a t e + %d %m%y
8 echo date
9 rm r f I n f o r m e .
10 e c h o " S a l v a n d o e s t a d o a c t u a l de e s p a c
o c u p a d o . . . "
11 e c h o " A r c h i v o : I n f o r m e . $FECHA"
12 / u s r / b i n / du k s . > " I n f o r m e . $FECHA"
13 / u s r / b i n / du k s .
14 e c h o " B o r r a d o c a c h e de N e t s c a p e y T r a s
>> I n f o r m e . $FECHA
15 e c h o " L i m p i a n d o c a c h e de n e t s c a p e . . .
16 rm r f $HOME / . n e t s c a p e / c a c h e
17 mkdir
$HOME / . n e t s c a p e / c a c h e
18 e c h o " L i m p i a n d o e l b o t e de b a s u r a . . . "
19 rm r f $HOME/ D e s k t o p / T r a s h
20 mkdir
$HOME/ D e s k t o p / T r a s h
21 e c h o "ARCHIVOS BORRADOS">> I n f o r m e . $FECHA
22 # cores
23 echo " Borrando c o r e s . . . "
24 f o r i i n / u s r / b i n / f i n d . name " c o r e " p
25 do
26
rm f $ i
27
e c h o $ i >> $HOME/ I n f o r m e . $FECHA
28 done
29 # r e s p a l d o s de Emacs
30 e c h o " B o r r a n d o r e s p a l d o s de Emacs . . . "
31 f o r i i n / u s r / b i n / f i n d . name " " p r i
32 do
33
rm f $ i
34
e c h o $ i >> $HOME/ I n f o r m e . $FECHA
35 done
36 f o r i i n / u s r / b i n / f i n d . name " . " p r
37 do
38
rm f $ i
39
e c h o $ i >> $HOME/ I n f o r m e . $FECHA
40 done
t o
i o
h "
"
r i n t
n t
i n t
nd
# a r c h i v o s a u x i l i a r e s y de b i t c o r a de TeX
y LaTeX
42
e c h o " B o r r a n d o
e TeX y LaTeX . . . "
43
f o r i i n / u s r / b
t
44
do
45
rm f $ i
46
e c h o $ i >> $HOME/
47
done
48
f o r i i n / u s r / b
49
do
50
rm f $ i
51
e c h o $ i >> $HOME/
52
done
53
e c h o " S a l v a n d o
e s p a c i o o c u p a d o . . . "
54
e c h o " E s p a c i o a
HA
55
/ u s r / b i n / du k s
56
/ u s r / b i n / du k s
57
e c h o " E l d i r e c t
o . "
58
echo ""
a r c h i v o s a u x i l i a r e s d
i n / f i n d . name "
. l o g " p r i n
I n f o r m e . $FECHA
i n / f i n d . name "
. aux " p r i n t
I n f o r m e . $FECHA
e l nuevo e s t a d o a c t u a l de
c t u a l :" > > I n f o r m e . $FEC
. >> " I n f o r m e . $FECHA"
.
o r i o pwd ha s i d o l i m p i a d
288
Extendiendo tu ambiente
de /home/jose debe aparecer tu directorio personal, en vez de borramugres
debe aparecer el
nombre que le hayas dado al programa para borra basura y en vez de la dir
eccin de correo jo
se@pateame.fciencias.unam.mx debe aparecer la direccin de tu correo).
#
#
B o r r a d o de b a s u r a
#
#
# Se e f e c t a t o d o s l o s v i e r n e s a l a s 2 : 3 0 AM
#
30 02
6 ( / home / j o s e / b i n / b o r r a m u g r e s ) | / b i n
/ m a i l s
b o r r a m u g r e s j o s e @ p a t e a m e . f c i e n c i a s . u
nam . mx > / dev / n u l l 2>&1
#
Nota: A pesar de que se muestran dos lneas sin # en realidad es slo una
; si aparecen dos es
slo para mejorar la presentacin.
Esta lnea de crontab hace lo siguiente:
1. Ejecuta el comando entre parntesis, es decir nuestro programa que bor
ra basura.
2. La salida del programa, lo que ste escriba en la pantalla, se pasa a
mail con tema borramugres
y direccin de envo jose@pateame.fciencias.unam.mx. El resto de la lnea
es para redi
reccionar la salida estndar de errores a la salida estndar y a su vez
sta es enviada a /dev/null
(lo que equivale a tirarla a la basura).
Conviene ahora leer el manual de crontab para entender los primeros c
inco campos de la lnea,
que esencialmente indican cundo deber ejecutarse el resto de la lnea; en est
e caso todos los
viernes (da 6) a los 30 minutos despus de las 02 horas cualquier da (*) de c
ualquier mes (*).
Slo por no dejar
Hay una opcin ms para hacer el programa de eliminacin de basura. Como ya
se dijo antes,
el ltimo parmetro de entrada de nd es lo que tiene que hacer cada vez que se
encuentra un
archivo que cumple con las condiciones buscadas. Es posible decirle a nd q
ue, de hecho, ejecute
otro comando y pasarle a dicho comando el nombre del archivo encontrado p
or nd; eso hace que
puedas quitar los ciclos for que aparecen en el programa y que procesan l
a salida de nd. Esto lo
haras reemplazando todo el ciclo por una instruccin como la siguiente:
% /usr/bin/ nd . name "core" exec rm f {} ;
El signi cado de esta lnea hasta antes de exec es el que ya se ha expl
icado. exec le indica a
nd que ejecute un comando, en este caso rm. En el momento en que nd ha enco
ntrado un archivo
que cumple con la condicin, guarda el nombre del archivo encontrado para q
ue pueda ser pasado
como parmetro del comando que se ejecutar. Para hacer referencia a ese arch
ivo encontrado se
utiliza {}. Por ltimo, para avisarle al programa ejecutado por nd (rm en es
te caso) que se han
terminado los parmetros que le son pasados para su ejecucin, se pone un ; ent
re comilla simple
(para que el shell no crea que se trata de un terminador de instruccin). E
n sntesis, el signi cado
de la lnea mostrada es: nd busca a partir del directorio actual (.) archivo
s cuyo nombre ( name)
cumpla con la condicin de ser core; una vez que se encuentra uno de sos ord
ena la ejecucin
9.2 Emacs
289
( exec) de rm diciendo: rm f {} ; borra (rm), sin preguntar ( f) el
archivo que encontr ({}) y nada
ms. Nota que todo lo que est despus del exec es lo que nd le dice a rm
.
9.1.8.
Para saber ms
el tiempo su ciente pa
ra mostrar todas sus construcciones, pero intentaremos mostrarte su c
iente como para que puedas
manejar cmodamente variables (creacin, asignacin, bsqueda, etc.), keyma
ps, comandos inter
activos, buffers y ventanas.
Por conveniencia, a lo largo de estas prcticas nos referiremos a
Emacs Lisp, como elisp. Tam
bin hablaremos del lenguaje de programacin LISP (LISt Processing) y e
n general no haremos
290
Extendiendo tu ambiente
distincin entre este ltimo y elisp: para propsitos de este material, habl
aremos indistintamente de
LISP o Emacs Lisp como elisp o simplemente LISP.
9.2.2.
LISP en 15 minutos
pos de tomos: n
meros, por ejemplo 13, 295 o 1763; y smbolos tales como +, foo, forward line
etc.; todos los
nombres que hemos usado en las listas de ejemplo, aqu arriba, tambin son
smbolos. Adicional
mente, cualquier texto entrecomillado, incluyendo oraciones o prrafos c
ompletos, es un smbolo.
Por ejemplo:
( esta l i s t a incluye " texto entre comillas dobles . " )
9.2 Emacs
291
es una lista que tiene cuatro smbolos. En elisp todo el texto entre c
omillas, incluyendo el signo de
puntuacin y los blancos, es un tomo. Este tipo particular de tomo se co
noce como cadena y es el
tipo de tomos que se utiliza para comunicar mensajes que un humano pu
ede leer. Las cadenas son
un tipo distinto de tomo a los nmeros y smbolos y no slo por su forma, s
ino tambin por su uso.
Dado que los blancos en una lista no importan, las siguientes s
on representaciones de la misma
lista:
( esta l i s t a
luce asi )
( esta l i s t a luce asi )
( esta
lista
luce
asi )
Por extrao que parezca, hemos cubierto con estos breves ejemplos c
asi todo lo que podemos
ver en elisp! Todo lo dems son combinaciones de lo anterior, aunque p
osiblemente usando listas
ms largas y anidadas, pero ningn concepto nuevo. Hay muchas construcci
ones esotricas en elisp
que utilizan otro tipo de tomos, pero no son comunes y podemos avanza
r mucho sin conocerlas.
En resumen, no debes olvidar que: una lista va entre parntesis, u
na cadena entre comillas
dobles, un smbolo luce como una palabra (o secuencia de ellas, unidas
por algn carcter no blanco)
y un nmero luce como un nmero.
Emacs te ayuda a dar formato a cdigo en elisp
Si tecleas una expresin de elisp en Emacs usando ya sea el modo
de elisp Interaction, o Emacs
LISP Mode, entonces Emacs te proveer con su cientes comandos para que l
a expresin sea f
cilmente legible. Por ejemplo, presionando TAB automticamente indenta
r la expresin en el
rengln actual usando el nmero adecuado de espacios.
Adems, cuando tecleas un parntesis que cierra, Emacs momentneament
e saltar al parn
tesis correspondiente que abre, de forma tal que t puedes siempre ver
cul es y detectar errores
rpidamente.
Nota: El modo mayor elisp Interaction es el modo en que por omi
sin se encuentra el buffer
*scratch*, que casualmente es el nico buffer que existe cuando inicia
s Emacs.
Ejecucin de programas
Una lista en elisp es un programa listo para ser ejecutado. Si l
292
Extendiendo tu ambiente
entonces elisp interpreta el primer elemento en la lista como un comando
que tiene que obedecer.
En elisp estos comandos se llaman funciones. La lista (+ 2 2) arriba no t
ena un apstrofo, por lo
que elisp entiende el + como una funcin que hace algo con el resto de los
elementos en la lista, en
este caso, sumar los elementos en la lista.
Actividad 9.23 Teclea (+ 2 2) en el buffer *scratch*, pon el cursor justo
despus del parntesis
que cierra y luego teclea C x C e .
Lo que acabas de hacer se conoce como evaluar la lista.
Actividad 9.24 Ahora haz lo mismo, pero con una lista que est precedida co
n un apstrofo, por
ejemplo, ( que bonito ) . Qu pasa?
Cuando una lista est precedida por un apstrofo, entonces el intrprete d
e elisp no interpreta
la lista, la lee de manera textual. Nos referiremos a este tipo de listas
como listas textuales, citadas,
inmutables o constantes.
Mensajes de error
A continuacin te pediremos que evales una expresin que har que el intrpret
e de elisp
marque un error. Lo hacemos por varias razones: la primera y ms importante
, para mostrarte que
no pasa nada malo, es una actividad inofensiva; haremos esto varias veces
a lo largo de la seccin. La
segunda razn es para que te acostumbres al lenguaje y la forma de los mens
ajes de error, ya que una
vez que los entiendas te dars cuenta que son muy informativos. Puedes pens
ar en estos mensajes de
error como sealizacin para el viajero de las carreteras de elisp: son crptic
os al principio (como
casi cualquier otro tipo de sealizacin), pero una vez que los entiendes, te
llevan de la mano a tu
destino nal.
Lo que haremos, y ese es tu siguiente ejercicio, ser evaluar una lista
que no est citada y que
no tiene un nombre de funcin como su primer elemento. Hazlo:
Actividad 9.25 Evala la siguiente lista: ( esta lista marca un error ) .
Despus de hacer eso, debiste recibir el mensaje: Symbols function de nition i
s void: esta,
cierto? Dado que este tipo de mensajes es muy frecuente, a continuacin te p
resentamos una ex
plicacin, aunque ya debes tener una buena idea de lo que el mensaje signi ca
.
Sabemos que el problema fue ocasionado por el smbolo esta; tambin se me
nciona la pala
bra function, una palabra muy importante. Para efectos prcticos, valga la
siguiente de nicin de
9.2 Emacs
293
Por otro lado, dado que s pudimos sumar 2 y 2 evaluando (+ 2 2)
, podemos inferir que el
smbolo + debe tener un conjunto de instrucciones que la computadora o
bedece; esta instruccin
suman los dos nmeros.
Finalmente, debes saber que los smbolos tambin se usan para nombr
ar variables o funciones.
Esto no quiere decir que el smbolo, por ejemplo +, sea la funcin, sino
simplemente una referencia
al lugar donde estn las instrucciones que hacen a la funcin. Su papel
es similar al de los nombres
que tenemos las personas, nuestro amigo Juan Prez, puede ser referido
como Juan, pero no es las
letras J, u, a, n. De la misma manera, las instrucciones que le dice
n a la computadora que sume una
lista de nmeros (y cmo hacerlo) no son +.
Ms an, elisp nos permite poner varios nombres a un mismo conjunto
de instrucciones. Para
sumar dos nmeros podramos hacer que un nuevo nombre, digamos suma, hag
a referencia a las
mismas instrucciones que +.
El intrprete de elisp
Ya debes tener una buena idea de qu hace el intrprete de elisp cua
ndo encuentra una lista: si es
inmutable, regresa la lista; si el primer elemento es un smbolo, busc
a su conjunto de instrucciones
asociado y los ejecuta usando el resto de los elementos de la lista
como parmetros; si el conjunto
de instrucciones asociado es void, marca un error. Muy sencillo, no?
Sin embargo, hay varias
complicaciones que necesitas entender para seguir aprendiendo elisp
y comenzar a programar:
Adems de listas, elisp puede interpretar tambin smbolos (sin parnte
sis alrededor y sin
quote), en cuyo caso el intrprete intentar determinar el valor de
l smbolo como variable.
Regresaremos a esto ms tarde.
Algunas funciones no trabajan igual que la evaluacin de listas.
Se llaman formas especiales
y se usan para cosas muy particulares, como de nir funciones. No
hay muchas y las iremos
revisando conforme avancemos.
Si lo que el intrprete est tratando de evaluar no es una forma es
pecial, y s es parte de una
lista, el intrprete revisa si la lista tiene otra lista adentro.
Si hay una lista adentro, primero ve
qu debe hacer con ella y si a su vez tiene otra lista adentro, p
rimero hace sa y as sucesi
vamente. Una vez que concluye su trabajo (de evaluacin) con las
listas internas, hace lo que
tiene que hacer con la lista actual.
294
Extendiendo tu ambiente
Vers 9 aparecer en el rea de eco. Y eso slo puede suceder si primero se
evala (+ 3 4) a 7,
y ese valor es visto y usado por la otra aplicacin de +, como si en realid
ad estuvieras evaluando:
(+ 2 7) .
Ahora ests en posicin de saber que C x C e evala el comando eval last se
xp4
Actividad 9.27 Prueba evaluar algunos de los ejemplos que hemos revisado
hasta el momento
usando M : . Nota los aspectos buenos y malos de ambos enfoques. Tener la
s dos formas es muy
til y dependiendo del contexto puedes escoger la que ms te convenga.
Notaste que en la evaluacin de ll column no usaste parntesis? Prueba eva
luar
( ll column), por qu marca un error?
4
El sexp abrevia symbolic expression y se lee sex pee. En espaol es poco
usual llamarle evaluacin
de expresiones simblicas a la accin de eval last sexp y nos referimos a dich
a accin simplemente como
evaluacin.
9.2 Emacs
295
Ahora pon el cursor en el espacio en blanco despus del smbolo +, e
n la expresin (+ 2 2) ,
y evala. Qu error marca? Es igual a los errores anteriores? Si no son ig
uales, cul es la
diferencia entre ellos? Explica.
Argumentos y tipos de argumentos
Para redondear la discusin sobre evaluacin en elisp, tambin tenemos
que hablar de la forma
en que el intrprete reconoce y pasa los operandos a las funciones. Ve
rbigracia, en nuestro ejemplo
favorito, (+ 2 2) , el intrprete regresa 4 y decimos que los dos nmero
s (ambos 2) que siguen al
+ son los argumentos de la funcin. Ellos constituyen la informacin que
el intrprete pasa a la
funcin.
En elisp, los argumentos son los smbolos o listas que siguen al n
ombre de la funcin. Distintas
funciones requieren distintos nmeros de argumentos: algunas no recibe
n ningn argumento y otras
reciben un nmero variable de argumentos.
De qu tipo debe ser el argumento que pasamos a una funcin? Depende
del tipo de informa
cin que requiera la funcin para llevar a cabo sus acciones. +, por eje
mplo, slo recibe nmeros
(o carcteres!), mientras que concat, por mencionar otra funcin, recibe
cadenas. Por ejemplo, si
evaluamos
( c o n c a t " abc " " def " )
obtendremos "abcdef", es decir concat concatena todos sus argumentos
(cadenas) en una sola cade
na.
Una funcin como substring recibe tanto una cadena como nmeros. Lo
que hace es regresar
una subcadena del primer argumento (cadena). Por ejemplo,
( s u b s t r i n g " que b o n i t o e s Emacs e l i s p " 14
1 9 )
regresa "Emacs". El primer argumento, como puedes notar, es una cade
na; el segundo es la posi
cin (dentro de esa cadena, empezando a contar desde 0) desde donde se
r tomada la subcadena
resultado; el segundo nmero (tercer argumento) es la posicin a la dere
cha donde debe terminar la
subcadena.
Los valores que regresan las funciones en elisp tambin pueden ser
usados como argumentos.
Actividad 9.28 Evala las siguientes expresiones y explica cada uno de
los resultados. Si no en
tiendes algn resultado, evala las subexpresiones hasta que encuentres
cul es el truco.
( + 2 f i l l column )
( c o n c a t "wow , veo
d o s g a t i t o s . " )
( c o n c a t "wow , veo
" ( numbert o s t r i n g ( + 2 f
i l l column ) )
" lindos gatitos .")
(+)
( )
296
Extendiendo tu ambiente
(+ 1 2 3 4 5)
( + 1 (
1 2 ) 4 ( + 2 f i l l column ) (
1 2 10))
(+ 2 h o l a )
Qu hace la funcin number to string? Qu tipo de argumentos recibe y cuntos?
La funcin message
Al igual que la funcin +, message recibe un nmero variable de argumento
s. Se usa para
enviar mensajes al usuario y es tan til que incluso tiene su propia seccin.
Con esta funcin se consigue que un mensaje se despliegue en el rea de e
co. Por ejemplo,
puedes desplegar un mensaje evaluando lo siguiente:
( m e s s a g e " E s t o e s un b o n i t o m e n s a j e de p r u e b
a " )
Nota que el mensaje aparece en el rea de eco incluso con las comillas.
Eso sucede porque
se es el valor regresado por la funcin message. Usualmente, cuando t usas me
ssage en tus
programas, esto no suceder y el texto que vers se imprimir como un efecto se
cundario, sin las
comillas.
Sin embargo, si hay un %s en el argumento entrecomillado de message,
no imprimir un %s
en el rea de eco, sino que buscar un argumento despus del argumento entrecom
illado, lo evaluar
y pondr su valor en la posicin del %s en la cadena. Por ejemplo,
( m e s s a g e " E l nombre de e s t e b u f f e r e s : %s " ( b u f f
e r name ) )
scratch " al ser evaluad
imprimir algo como: "El nombre de este buffer es :
a, suponiendo que s
ests en un buffer llamado *scratch* cuando ejecutamos esto, s estbamos en un
o llamado as .
Si lo que quieres es imprimir un nmero en notacin decimal, entonces cam
bia el %s por un %d,
como por ejemplo:
( m e s s a g e " E l v a l o r de f i l l column e s : %d " f i l l colum
n )
Si hay ms de un %s en la cadena entre comillas, entonces el primer arg
umento que siga a la
cadena ser puesto en el lugar del primer %s, el segundo argumento sustitui
r al segundo %s, y as
sucesivamente. Por ejemplo:
( m e s s a g e " Hay %d % s en e l l a b o r a t o r i o "
( f i l l column 1 5 ) " e l e f a n t e s r o s a s " )
imprimir "Hay 55 elefantes rosas en el laboratorio ".
Lo valioso de message es que si lo usas con formato ( %), le puedes p
edir que evale funciones
al momento de evaluarse ella misma.
Asignar valores a una variable
Hay varias formas por medio de las cuales podemos darle un valor a un
a variable. Aqu veremos
setq. Ms adelante hablaremos de let. En elisp decimos que estamos ligando
una variable a un
valor.
9.2 Emacs
297
En esta seccin veremos cmo funciona setq 5 y cmo se pasan los ar
gumentos.
setq
Para asignarle a la variable ores la lista ( rosa violeta clavel a
zucena) puedes evaluar la si
guiente expresin:
( setq flores
( rosa v i o l e t a c l a v e l azuce
na ) )
Vers la lista ( rosa violeta clavel azucena) aparecer en el rea de eco
. Esta lista es el valor de
regreso de la funcin y, como efecto secundario, la variable (el smbolo
) ores est ahora ligado a
la lista. Es decir, que despus de evaluar la expresin de arriba puedes
evaluar el smbolo y vers la
lista aparecer en el rea de eco.
Con setq tambin podemos asignar valores a varias variables al mi
smo tiempo. Por ejemplo,
para asignar una lista de ores a la variable ores y una lista de anima
les a la variable animales,
podemos hacer:
( setq f l o r e s ( rosa v i o l e t a c l a v e l az
ucena )
a n i m a l e s ( l e n s a p o o s o p e r r o
) )
Nota que la expresin bien podra ir toda en una lnea, pero tal vez n
o hubiese cabido en la pgina
y adems los humanos podemos leer con mayor facilidad listas con un fo
rmato ms agradable.
A pesar de que hemos usado hasta el momento el trmino ligar, hay
otra forma de referirnos al
trabajo que realiza setq y es decir que setq hace que el smbolo apunt
e a la lista. Esto tambin se
llama referencia y es muy comn, as que a partir de este momento nos re
feriremos a este tipo de
asignaciones as.
Contador
En esta seccin construiremos un contador (muy sencillo) que usa s
etq. Dicho contador puede
ser usado para contar cuntas veces se repite una cierta parte de tu p
rograma. Primero necesitamos
inicializar una variable a cero; luego aadir uno a esa variable cada
vez que se repita esa parte en el
programa. Para hacer esto, necesitas una variable que sirva de conta
dor y dos expresiones: un setq
que asigne cero al contador; una segunda expresin setq que incremente
el contador cada vez que
es evaluado.
( setq contador 0)
i c i a l i z a c i n
; I n
( s e t q c o n t a d o r (+ c o n t a d o r 1 ) )
; Incr
emento
contador
El texto que sigue a un carcter ; y hasta el n de lnea, es un comen
tario que es ignorado por el
intrprete de elisp.
5
setq en realidad es una abreviatura de la combinacin de las fu
nciones set y quote.
298
Extendiendo tu ambiente
Si evalas la primera de estas expresiones, la inicializacin, y luego
evalas la tercer expresin,
el contador, el nmero 0 aparecer en el rea de eco. Si evalas entonces la s
egunda expresin, el
incremento, el contador aumentar en 1 su valor; as, si evalas nuevamente
la tercera expresin,
entonces vers el nmero 1 aparecer en el rea de eco. Cada vez que evales la
segunda expresin,
el valor de contador aumentar en 1.
9.2.3.
Resumen
9.3 Evaluaciones
299
9.3. Practicando evaluaciones
Antes de que aprendas a escribir de niciones de funciones en elis
p, es importante que prac
tiques evaluando funciones que ya fueron escritas. Estas expresione
s sern listas con los nombres
de las funciones como su primer (y en muchos casos nico) elemento. C
omenzaremos con algunas
funciones relacionadas con buffers, ya que son sencillas e interesa
ntes.
Siempre que das un comando de edicin a elisp, tal como el
comando para mover
el cursor o recorrer la pantalla, ests evaluando una expresin,
cuyo primer elemento es
una funcin. As funciona Emacs.
Cuando tecleas carcteres, provocas que el intrprete de elisp evale
expresiones y as es como
obtienes resultados. Incluso teclear simple texto involucra evaluac
in de funciones de elisp. En este
caso, veremos una que usa self insert command, que simplemente inse
rta el carcter que tecleaste.
Las funciones que evalas tecleando alguna combinacin de teclas se lla
man funciones interactivas
o comandos; cmo crear este tipo de funciones lo veremos ms adelante,
en la seccin 9.4.1.
9.3.1.
Nombres de buffers
300
Extendiendo tu ambiente
Obteniendo buffers
La funcin buffer name regresa el nombre del buffer, pero si lo que t q
uieres es el con
tenido del buffer, entonces debes usar current buffer. Es decir, con curr
ent buffer t obtienes
el buffer mismo, no slo su nombre. Sin embargo, hay una pequea complicacin:
si t evalas
( current buffer) , lo que obtienes es el buffer pero su forma impresa se
ver como: #<buffer " scratch ">.
Otra funcin relacionada es other buffer que te regresa el buffer ms re
cientemente seleccio
nado que no sea en el cual ests actualmente.
Actividad 9.32 Prueba las funciones buffer name y other buffer haciendo l
o siguiente. Ve a al
gn otro buffer en tu sesin actual de Emacs y de regreso a scratch ; despus evala
s las dos
funciones (recuerdas C x b ?).
Cambiando de buffer
La funcin other buffer es til cuando se utiliza con switch to buffer. D
e hecho, esta ltima
es una de las funciones que debes usar con mayor frecuencia en Emacs, cua
ndo ejecutas C x b ;
esa combinacin de teclas est ligada al comando switch to buffer, que recibe
un buffer como
parmetro y lo muestra en la ventana actual.
Por ejemplo, si evalas lo siguiente:
( s w i t c h t o b u f f e r ( o t h e r b u f f e r ) )
vers que hace justo lo mismo que C x b , ya que ests ejecutando (de otra fo
rma) la misma
funcin con los mismos argumentos.
En general, en programas preferimos set buffer sobre switch to buffer
; esto es porque los hu
manos necesitamos ver lo que hacemos, pero los programas no tienen ojos6
y no necesitan que el
buffer en el que operan sea visible en una ventana de Emacs.
Tamao de un buffer y la localizacin del punto
Veamos algunas funciones muy simples, buffer size, point, point min,
point max. Estas fun
ciones dan informacin sobre el buffer, su tamao, la posicin del punto y las
posiciones inicial y
nal del buffer.
buffer size regresa el tamao del buffer, que no es otra cosa sino la c
uenta de todos los carcte
res en el buffer. point regresa la cuenta de todos los carcteres desde el
inicio hasta el punto donde
actualmente se encuentra el cursor (uno antes, para ser exactos; o mejor
dicho, el punto est entre el
carcter sobre el cual est el cursor y el anterior); point min es la primera
posicin permisible del
buffer (o la cuenta de carcteres desde el principio del buffer hasta la pr
En elisp, un smbolo tal como mark whole buffer tiene cierto cdigo
asociado a l que le
indica a la computadora qu hacer cuando la funcin sea llamada (o ejec
utada). Dicho cdigo se
conoce como la de nicin de la funcin y se crea evaluando una expresin qu
e comienza con la
palabra reservada defun (que abrevia a de ne function). Dado que defu
n no evala sus argumentos
en la forma usual, se conoce como una forma especial.
En subsecuentes secciones veremos cmo estn hechas (i.e. el cdigo)
de algunas funciones
de Emacs; en sta veremos una funcin muy simple, para explicar cmo func
iona defun. Una
de nicin de funcin tiene hasta cinco partes despus de la palabra defun:
302
Extendiendo tu ambiente
4. Opcionalmente, una expresin para hacer que la funcin sea interactiva, p
ara que puedas usarla
tecleando M x y el nombre de la funcin; o tecleando una combinacin de t
eclas apropiada.
5. El cdigo que le dice a la computadora qu hacer: el cuerpo de la funcin.
Es ms fcil pensar en una funcin como un esqueleto de la forma:
( d e f u n nombre ( a r g u m e n t o s . . . )
" D o c u m e n t a c i n o p c i o n a l . . . "
( i n t e r a c t i v e paso dei n f o r m a c i n ) ; o p c
i o n a l
cuerpo . . . )
Por ejemplo,
gumento (un n
mero) por 7:
( d e f u
" M u
(
7
Actividad 9.34 Haz una funcin que saque el promedio de dos nmeros. Llama a s
us parmetros
num y num2. Vuelve a probar multiplica por7 y comprueba que sigue funcionando
, a pesar de
que ya hay al menos una funcin ms (la que acabas de hacer que calcula el pro
medio) que utiliza
el mismo nombre para un argumento, num.
de eco.
una
en e
7 puede
304
Extendiendo tu ambiente
" M u l t i p l i c a NUM p o r 7 . "
( i n t e r a c t i v e "p ")
( m e s s a g e " E l r e s u l t a d o e s : %d " (
7 num ) ) )
Ahora, cuando evales esta nueva versin de multiplica por 7 podrs usar la fun
cin de manera
interactiva: teclea C u 6 M x multiplica por 7 Enter y vers el mensaje El r
esultado es: 42
aparecer en el rea de eco.
En general, puedes invocar una funcin como sta en una de dos formas:
1. Tecleando un argumento pre jo que ser num para la funcin, seguido de M x
y el nombre
de la funcin. Por ejemplo, C u 3 M x forwardsentence, o
2. tecleando cualquier tecla o combinacin de ellas a las cuales est ligad
a la de nicin, como
en C u 3 M e .
Ambos ejemplos mencionados hacen lo mismo: mueven el punto tres oraci
ones hacia adelante
(dado que multiplica por 7 no est ligado a ninguna tecla, entonces no pode
mos usar la segunda
forma, aunque debiste haber aprendido a ligar funciones a teclas hace un
par de captulos dentro del
marco de este material).
Un argumento pre jo N puede ser pasado a una funcin usando C u N o bien
M N. Si slo
tecleas C u sin argumentos, el valor por omisin es 4; comprubalo, ejecutand
o
C u M x multiplica por7
En nuestro ejemplo, la expresin ( interactive "p") le dice a Emacs que
pase el argumento
pre jo a la funcin y que use su valor (el del argumento pre jo) como argumento
de la funcin.
Diferentes opciones para interactive
En nuestro ejemplo, p le indica a Emacs que pase el argumento pre jo (un
nmero) como
parmetro a la funcin. Pero qu sucede si la funcin no recibe un nmero? La forma
especial
interactive tiene un gran nmero de opciones, cerca de 20 carcteres, y muy p
robablemente uno de
ellos te permitir pasar la informacin que requieres a tu funcin. No los revi
saremos todos aqu,
slo veremos unos cuantos, pero puedes buscar la documentacin de interactive
en el manual en
lnea de Emacs elisp.
Por ejemplo, la letra r le dice a Emacs que pase a la funcin los valore
s inicial y nal de la
regin (el valor del punto y el valor de la marca en el buffer actual) como
dos argumentos separados
a la funcin. Se usa como sigue:
( interactive " r ")
La letra B le dir a Emacs que pida un nombre de buffer que ser pasado a l
a funcin. No slo
eso, sino que puedes usar una etiqueta para preguntar por el buffer y, ad
ems, Emacs te ayudar a
cuerpo . . . )
Ejemplo de let
La siguiente expresin let le da valor a dos variables y luego imp
rime sus valores. El cuerpo
consiste slo de la llamada a message:
( l e t (( zebra rayas )
( tiger feroz ))
306
Extendiendo tu ambiente
( m e s s a g e "Un a n i m a l t i e n e % s y e l o t
r o e s % s " z e b r a t i g e r ) )
Puedes evaluar esta expresin. El resultado lucir como: Un animal t
iene rayas y el otro es
feroz.
Actividad 9.35 Haz una funcin llamada suma exotica, que recibe tres
parmetros numricos,
a, b, c y regresa el resultado de la operacin: a2 + b3 + c4 . Usa le
t para almacenar los resultados
intermedios. Tambin puedes hacer una funcin auxiliar que reciba dos nm
eros como parmetros,
n y m y regrese nm .
9.4.3.
La forma especial if
( d e
"
a r
S i e
"
(
f u n t
Imprime
c t e r
l e l s
i p o dea n i m a l ( c a r c t e r )
un m e n s a j e en e l r e a de e c o d e p e n d i
.
mbolo f e r o z , e n t o n c e s a v i s a que e s u
308
Extendiendo tu ambiente
aunque es usual que save excursion ocurra dentro de una expresin let, c
omo en:
( let
9.4.5.
varlist
( s a v e e x c u r s i o n
cuerpo . . . ) )
Resumen
del segundo.
set El primer argumento es citado automticamente por setq. Hace lo m
ismo para subsecuentes
parejas de valores. Otra funcin set slo toma dos argumentos y los
evala ambos antes de
asignar el valor del segundo al primero.
buffer name Sin argumentos, regresa el nombre del buffer actual, co
mo cadena.
ya tendrs muchos semestres para dominar toda esa terminologa; por el
momento tendrs que conformarte
y nosotros tambin con entender el concepto.
310
Extendiendo tu ambiente
buffer le name Sin argumentos, regresa el nombre del archivo que el buf
fer actual est visitan
do.
current buffer Regresa el buffer en el cual Emacs est activo; puede ser
algn buffer distinto al
que est visible en la ventana de Emacs.
other buffer Regresa el buffer ms recientemente seleccionado (uno disti
nto al que se pasa como
parmetro a other buffer y al buffer actual).
switch to buffer Selecciona un buffer para que Emacs est activo en l, y
lo despliega en la
ventana para que los usuarios puedan verlo. Usualmente est ligada
a C x b .
set buffer Cambia la atencin de Emacs a un buffer donde los programas c
orrern. No altera lo
que se est viendo en la ventana.
buffer size Regresa el nmero de carcteres en el buffer actual.
point Regresa el valor de la posicin actual de punto, como entero; esto
es igual al nmero de
carcteres desde el inicio del buffer.
point min Regresa el mnimo valor permisible para el punto en el buffer
actual. Esto es 1, a menos
que narrowing est activo.
point max Regresa el mximo valor permisible para el punto en el buffer
actual. Esto es el nal
del buffer, a menos que narrowing est activo.
Actividad 9.36 Escribe una funcin no interactiva que duplique el valor
de su argumento. Despus
haz la funcin interactiva.
Actividad 9.37 Escribe una funcin que pruebe si el valor actual de ll co
lumn es mayor que el
argumento pasado a la funcin, y si lo es, que mande el mensaje apropiad
o al rea de eco.
9.5.1.
r ( )
i c i o y l a marca a l f i n a l
) )
t min ) ) )
312
Extendiendo tu ambiente
En esta funcin, las ltimas dos expresiones ponen la marca al nal del buf
fer y la otra mueve
el punto a la primera posicin. Pero, por qu aparece (push mark (point)) como
primera lnea del
cuerpo? Nuevamente, la idea detrs de esto es que la posicin actual (antes d
e llamar a mark whole
buffer) es la posicin de edicin, la ms importante actualmente en el buffer;
la prctica indica que
cuando uno marca todo el buffer, lo hace con la intencin de reformatearlo,
re indentarlo, copiarlo,
o algo similar, pero despus de eso, uno desea regresar a la posicin previa
de edicin.
Cmo regresamos a esa posicin? Pues es muy sencillo. Recuerda que dijimos
q que push
mark empuja la marca a un anillo que puedes recorrer; por omisin C x C x t
e lleva a la po
sicin previa de la marca, y ya sabes que CSpace pone la marca. Pues CSpace ,
que en
realidad es un ligado de la funcin set mark command, hace ms que eso: si le
pasas un argu
mento pre jo, brinca a esa marca en el anillo local de marcas; vamos, intntal
o! Ejecuta dos veces
C u CSpace y ve lo que sucede!
La de nicin de append to buffer
La funcin append to buffer copia una regin (la regin actual en el buffer
actual) a un buffer
especi cado. Usaremos la funcin insert buffer substring para copiar la regin;
como es de es
perarse, esta ltima recibe dos posiciones, la inicial y la nal, y el buffer
del cual debe extraer la
subcadena comprendida entre dichas posiciones.
Esas posiciones no son otras que el punto y la marca (que rodean la r
egin) en el buffer actual;
aqu est nuestra de nicin:
( d e f u n appendt o b u f f e r ( b u f f e r s t a r t end )
" Agrega e l t e x t o de l a r e g i n a l BUFFER .
Es i n s e r t a d o en BUFFER a n t e s de s u p u n t o .
Cuando e s l l a m a d a d e s d e un p r o g r a m a r e c i b e
t r e s a r g u m e n t o s :
un b u f f e r o s u nombre , y d o s numeros e s p e c i f i c a
n d o e l a r e a
a copiar ."
( i n t e r a c t i v e " BAgregar a l b u f f e r : \ n r " )
( l e t ( ( o l d b u f ( c u r r e n t b u f f e r ) ) )
( s a v e e x c u r s i o n
( s e t b u f f e r ( g e t b u f f e r c r e a t e b u f
f e r ) )
( i n s e r t b u f f e r s u b s t r i n g o l d b u f
s t a r t end ) ) ) )
Analiza parte por parte la funcin y vers que no hay muchas cosas nueva
s; lo que si tiene es
una mezcla funcional de varias cosas que vimos muy por encima. Primero te
conviene probarla para
que veas cmo funciona y eso aclarar mucho. Visita un archivo de prueba en u
n buffer, marca una
regin (pon la marca y mueve el punto un par de lneas abajo, por ejemplo). A
hora regresa al buffer
*scratch*, copia y evala esta funcin y pon el punto al nal del buffer.
A continuacin, regresa al buffer del archivo que acabas de abrir (don
de pusiste la marca y el
punto anteriormente) y llama a la funcin: M x append to buffer. Te pide un
buffer, te propondr el
ms reciente (si hiciste lo que acabo de decir, debe ser *scratch*); presio
na Enter y vers aparecer
la regin en el buffer *scratch*.
Muy bien. Ahora, qu es lo que pas? Vamos por partes:
Resumen
Aqu est un resumen de las funciones que acabamos de revisar:
describe function Imprimen la documentacin de una funcin o una variab
le.
describe variable Usualmente estn ligadas a C h f y C h v , respecti
vamente.
push mark Pone la marca en una localidad particular y almacena el v
alor de la marca anterior en
el anillo de marcas. La marca es una posicin en el buffer que ma
ntendr su posicin relativa
aun cuando sea agregado o eliminado texto del buffer.
goto char Pone el punto en la posicin especi cada por el valor de su a
rgumento, que puede ser
un nmero, un marcador, o una expresin que regresa el nmero de una
posicin, tal como
(point min).
insert buffer substring Copia una regin de texto de un buffer, que s
e pasa como argumento a
la funcin en el buffer actual.
314
Extendiendo tu ambiente
mark whole buffer Marca todo el buffer como una regin. Usualmente est liga
do a C x h .
set buffer Cambia la atencin de Emacs a otro buffer, pero no cambia la ve
ntana que est siendo
desplegada. Se usa cuando un programa (a diferencia de un humano) v
a a trabajar en un buffer
distinto.
get buffer create Encuentra un buffer nombrado o crea uno si un buffer c
on ese
get buffer nombre no existe. La funcin get buffer regresa nil si el buffe
r nombrado no existe.
Actividad 9.39 Usa if y la funcin get buffer para construir una funcin int
eractiva que imprima
un mensaje diciendo si un buffer dado existe o no.
Vers que el smbolo rosa aparece en el rea de eco. Un mejor nombre sera
st (y de hecho
este nombre tambin existe en Emacs elisp; est de nido como un alias de car e
n el paquete cl.el).
El car no remueve el primer elemento de la lista, esto es, despus de
aplicar car a una lista, la
lista sigue siendo la misma. En el cal de elisp, esto signi ca que car es u
na funcin no destructiva.
316
Extendiendo tu ambiente
( length ())
Los valores que obtendrs una vez que evales las expresiones, representan
el nmero de ele
mentos en cada lista, 1, 2 y 0 respectivamente.
nthcdr
La funcin nthcdr est asociada con la funcin cdr. Lo que hace es aplicar
cdr repetidamente.
Si sacas el cdr de la lista ( rosa violeta clavel azucena) obtendrs la lis
ta ( violeta clavel azucena).
Si ahora sacas el cdr de esta nueva lista, obtendrs ( clavel azucena)
; (nota que si sacas dos
veces el cdr de la misma lista, obtendrs lo mismo, ya que es no destructiv
a). Es decir, si evalas
(cdr (cdr ( rosa violeta clavel azucena ))) obtendrs ( clavel azucena).
La funcin nthcdr hace lo mismo que repetidas llamadas a cdr anidadas.
En el siguiente ejem
plo, el argumento 2 se pasa a la funcin nthcdr, junto con la lista, y el v
alor que regresa es la lista
sin los dos primeros elementos, que es lo mismo que aplicar dos veces cdr
en cadena.
( nthcdr 2 ( rosa v i o l e t a c l a v e l azucena ) )
Actividad 9.40 Usando la lista original, ( rosa violeta clavel azucena),
aplica nthcdr pasndole
argumentos numricos del 0 al 5. Puedes explicarlo? Si no puedes, entonces a
plica el mismo
nmero de veces (de manera anidada) cdr a la misma lista. Ahora s, explcalo.
setcar
Como te puedes imaginar por sus nombres, las funciones setcar y setcd
r (que veremos en un
momento) asignan nuevos valores al car y al cdr de una lista. En realidad
cambian la lista original,
a diferencia de car y cdr que son no destructivas. Una forma de entender
cmo funciona esto es
experimentando. Empezaremos con la funcin setcar.
Primero, podemos hacer una lista y luego asignar a una variable dicha
lista, utilizando la funcin
setq. Aqu est una lista de animales:
( setq animales
( g i r a f a a n t i l o p e t i g r e leon )
) .
Evala las siguientes expresiones. Una vez evaluadas, puedes con rmar que
la variable animales
ahora apunta a la lista ( girafa antilope tigre leon) . A continuacin, eva
la la funcin setcar pa
sndole dos argumento, la variable animales y el smbolo citado hipo; es deci
r, evala:
( s e t c a r animales hipo )
Vers el smbolo hipo aparecer en el rea de eco. Ahora evala nuevamente la vari
able animales y
( gat
318
Extendiendo tu ambiente
zap to char
Para determinar cunto texto tiene que ser eliminado, zap to char utili
za una funcin de bs
queda. Las bsquedas se usan extensivamente en el cdigo que manipula texto e
n Emacs, por lo que
mientras revisamos estas funciones te rogamos pongas especial atencin en l
a funcin de bsqueda
y en la de borrado.
( d e f u n zapt o c h a r ( a r g c h a r )
" Mata e l t e x t o h a s t a l a ARG s i m a a p a r
i c i n de CHAR.
3
Va h a c i a a t r s s i ARG e s n e g a t i v o .
Marca un e r r o r s i CHAR
4
no e s e n c o n t r a d o . "
5
( i n t e r a c t i v e " p \ ncZap t o c h a r : " )
6
( k i l l r e g i o n ( p o i n t )
7
( progn
8
( s e a r c h f o r w a r d ( c
h a r t o s t r i n g c h a r ) n i l n i l a r g )
9
( point ) ) ) )
Analicemos ahora la funcin por partes:
1. La seccin interactiva, ( interactive " p\ncZap to char : ") , n
os indica tres cosas:
a) El * le dice a Emacs que marque un error si el buffer est p
rotegido contra escritura. O
en otras palabras, si es de slo lectura. Esto es obvio,
porque si no podemos editarlo, no
podemos borrar texto alguno.
b) La p le dice a Emacs que la funcin recibir como primer a
rgumento el argumento
pre jo. ste ya lo conocas.
c) El \n separa los argumentos y la c le dice a Emacs
que debe pedir un carcter, utilizando
para ello el prompt: Zap to char : .
2. El cuerpo de la funcin contiene la funcin que mata (esto es, q
ue elimina) el texto de la
regin desde la posicin actual (la primera presencia de ( point
) ) hasta la posicin (incluida
ella) donde se encuentra el carcter. Esto es la primera parte
:
6
( k i l l r e g i o n ( p o i n t ) . . .
La siguiente parte del cdigo utiliza la funcin progn. El cu
erpo de progn consiste de llamadas
a search forward y nuevamente a point. Es ms fcil entender
el funcionamiento de progn
una vez que entiendas cmo funciona la bsqueda hacia adelant
e, search forward, as que
primero veremos esta ltima y luego regresamos a progn.
3. La funcin search forward se usa para localizar el carcter que
marca la posicin hasta la que
queremos cortar el texto. Si la bsqueda es exitosa, deja el p
unto inmediatamente despus del
ltimo carcter en la cadena objetivo (en este caso, la cadena o
bjetivo es slo de un carcter de
largo). Si la bsqueda es hacia atrs, deja el punto justo antes
del primer carcter en la cadena
objetivo. Adems, search forward regresa t para sealar verdader
o, por lo que mover el punto
es un efecto secundario.
En zap to char, la llamada a la funcin search forward luce co
mo:
8
( s e a r c h f o r w a r d ( c h a r t o s t r i n
g c h a r ) n i l n i l a r g )
La funcin search forward toma cuatro argumentos:
a) El primer argumento es el objetivo, aquello que estam
os buscando. ste debe ser una
cadena, tal como s.
Nota que en elisp, un carcter no es visto (automticame
nte) como una cadena de un
solo carcter. Por eso usamos (chartostring char) para t
ransformar el carcter a una
cadena, como search forward lo quiere.
320
Extendiendo tu ambiente
b) El segundo argumento limita la bsqueda; es una posicin espec ca en el
buffer. En este
caso, la bsqueda puede ir hasta el nal del buffer, por lo que no e
stamos limitando la
bsqueda y entonces usamos nil .
c) El tercer argumento le dice a la funcin qu debe hacer si la bsqueda
falla puede
sealar un error (e imprimir un mensaje) o puede regresar nil . Us
ar nil como tercer
argumento provoca que la funcin marque un error.
d) El cuarto argumento para search forward es una cuenta de repetic
in cuntas presen
cias de la cadena debe buscar. Este argumento es opcional y si l
a funcin se llama sin
una cuenta de repeticin, la funcin recibe por omisin 1. Si este arg
umento es negativo,
la bsqueda va hacia atrs.
En su forma general, search forward se ve as:
( s e a r c h f o r w a r d " cadena o b j e t i v o "
l m i t e del a b s q u e d a
queh a c e r s i l a b s q u e
d a f a l l a
c u e n t a de r e p e t i
c i n )
4. La funcin progn es tal que provoca que todos sus argumentos sean evalu
ados en secuencia y
luego regresa el valor del ltimo. Las expresiones previas (a la ltima)
se evalan slo por sus
efectos secundarios, ya que sus valores de regreso se descartan.
Su forma general es:
( progn
cuerpo . . . )
En zap to char, la expresin progn tiene que hacer dos cosas: poner el
punto en la posicin
correcta y luego regresar la posicin de ese punto para que kill regio
n pueda hacer su trabajo.
El primer argumento de progn es search forward. El segundo argumento
es (point). Esta
expresin regresa el valor del punto, que en este caso ser la localizac
in a la que se ha movido
search forward.
De acuerdo, de acuerdo, fue una explicacin muy larga. Lo sentimos, pero
no conocas search
forward y progn, que son dos funciones muy tiles y muy usadas en elisp. As q
ue aqu te va
un resumen de cmo funciona zap to char ahora que sabes cmo funcionan todas l
as funciones
auxiliares:
El primer argumento pasado a kill region es la posicin del punto en el
momento que ejecutas
zap to char. Dentro del progn, la funcin de bsqueda mueve el punto justo des
pus del carcter
hasta el que queremos cortar; point regresa el punto de esta nueva posicin.
La funcin kill region
pone estos dos valores juntos, el primero como inicio de la regin y el segu
9
No hay traduccin exacta para yank, pero en notacin de muchos otros
editores de texto, equivaldra a
pegar, slo que es mucho ms poderoso porque tiene memoria.
322
Extendiendo tu ambiente
9.6.4. copy region as kill
La funcin copy region as kill copia una regin de texto del buffer
en una variable que se llama
kill ring. Si llamas a kill region as kill inmediatamente despus de ha
ber ejecutado un kill region,
Emacs junta la seccin de texto recin copiada con la anterior. Esto sig
ni ca que si haces un yank
despus, obtendrs todo el texto de las ltimas dos operaciones de muerte.
Por otro lado, si algn
otro comando precede a la accin de copy region as kill, la funcin copi
a el texto en una entrada
separada en el anillo de la muerte.
Aqu est el cdigo de la funcin. Probablemente en versiones muy recie
ntes de Emacs sea
distinto; de cualquier forma esta versin es lo su cientemente compleja
e interesante para que la
analicemos aqu.
1
( d e f u n copyr e g i o n as k i l l ( beg end )
2
" S a l v a l a r e g i n como s i h u b i e s e s i d o matada ,
p e r o no l a mata . "
3
( interactive " r ")
4
( i f ( eq l a s t command k i l l r e g i o n )
5
( k i l l a p p e n d ( b u f f e r s u b s t r i n g beg e
nd ) ( < end beg ) )
6
( s e t q k i l l r i n g
7
( c o n s ( b u f f e r s u b s t r i n g beg end
) k i l l r i n g ) )
8
( i f ( > ( l e n g t h k i l l r i n g ) k i l l r i n g max )
9
( s e t c d r ( n t h c d r (1 k i l l r i n g max ) k i
l l r i n g ) n i l ) ) )
10
( s e t q t h i s command k i l l r e g i o n )
11
( s e t q k i l l r i n g yankp o i n t e r k i l l r i n g ) )
Si revisas con cuidado la de nicin notars que tiene sus cinco parte
s. Los dos argumentos, beg
y end y el cdigo r de interactive (que regresa la regin, como dos argume
ntos numricos conse
cutivos) deben darte una idea respecto a qu hacen referente al inicio
(beg, por beginning) y n (end)
de la regin. Los parmetros estn en ingls, porque cuando comiences a ver
el cdigo de distintas
funciones de Emacs por tu cuenta, vers que la regin se usa exhaustivam
ente y curiosamente stos
son los nombre favoritos para nombres de parmetros en funciones que m
anejan la regin.
El cuerpo de la funcin comienza con un if lnea 4 . Nos sirve para
distinguir dos tipos de
situaciones: saber si el comando ejecutado inmediatamente antes que s
te fue (o no) un kill region.
En caso de que haya sido, la nueva regin muerta se pega a la anterior
. En caso contrario, se inserta
(la regin muerta) al inicio del anillo de la muerte.
Las ltimas expresiones son setq. Una asigna a la variable this co
d
n
o
o
( s t r i n g b e f o r e p )
g
r e p
n c a t s t r i n g ( c a r k i l
n c a t ( c a r k i l l r i n g ) s t r
i n g ) )
Si la regin que se est matando est antes que la regin que mat el ltimo
comando, entonces
debemos agregar antes (pre agregar) el texto; contrariamente, si el
texto muerto sigue a lo que se
mat con anterioridad, entonces debemos agregarlo despus. La expresin if
depende del predicado
beforep para decidir si el texto nuevo debe ir antes o despus de lo qu
e est en el car del anillo de
la muerte.
El smbolo beforep es el nombre de uno de los argumentos de kill ap
pend. En la funcin
copy region as kill su valor se calcula con (< end beg), lo que es v
erdadero cuando el texto que
324
Extendiendo tu ambiente
estamos cortando va antes que los que estn en el car del anillo de la
muerte (y por ende ser
pre agregado).
Pre agregar est representado por:
( c o n c a t s t r i n g ( c a r k i l l r i n g ) )
Post agregar por:
( c o n c a t ( c a r k i l l r i n g ) s t r i n g )
Para entender cmo funciona esto, primero necesitamos entender cmo f
unciona concat. La
funcin concat liga o une dos cadenas de texto. El resultado es una cad
ena. Por ejemplo,
( c o n c a t " abc " " def " )
regresa "abcdef".
Ahora s, podemos entender rpidamente cmo funciona kill append: modi ca
el contenido
del anillo de la muerte. La funcin setcar cambia en realidad el primer
elemento de la lista. Logra
esto usando concat para reemplazar el viejo contenido del primer elem
ento del anillo con un nuevo
primer elemento que se obtiene concatenando el viejo texto con el nue
vo (el texto recin muerto,
esto es). El nuevo texto se pone antes que el viejo o al revs, dependi
endo de si estaba antes o
despus en el buffer, respectivamente.
La parte nal de copy region as kill
Muy bien; despus de haber entendido
l cuando el comando
previo fue tambin un kill region, ahora
qu pasa cuando el
comando previo no fue kill region?
Lo que hace es asignar como valor al
a lista que es igual a la anterior,
pero ahora como primer elemento tiene el
logra con la seccin:
6
( s e t q k i l l r i n g
7
( c o n s ( b u f f e r s u b s t r i n g beg end ) k
i l l r i n g ) )
La siguiente parte es nuevamente una expresin if. Esta expresin sir
ve nicamente para man
tener acotado el tamao del anillo de la muerte; usualmente su valor es
30. Es decir, evita que el
anillo de la muerte guarde ms all del valor que tenga kill ring max. Es
to se logra con la seccin
de cdigo:
8
( i f ( > ( l e n g t h k i l l r i n g ) k i l l r i n g max )
9
( s e t c d r ( n t h c d r (1 k i l l r i n g max ) k i l
l r i n g ) n i l ) )
Lo que dice esta expresin if es que si pasa del tamao permitido, en
( s e t q t h i s command k i l l r e g i o n )
Resumen
buffer.
326
Extendiendo tu ambiente
Actividad 9.42 Escribe una funcin interactiva que busque una cadena. S
i la bsqueda encuentra
la cadena, deja el punto despus de sta y despliega el mensaje La encontr.
(NO utilices search
forward como el nombre de tu funcin; si lo haces, sobre escribirs la fu
ncin existente que viene
con Emacs. Usa un nombre como busca.)
Actividad 9.43 Escribe una funcin que imprima el tercer elemento del a
nillo de la muerte en el
rea de eco, si existe, claro. Si el anillo de la muerte no tiene un te
rcer elemento, manda un mensaje
apropiado.
Quin o qu es ASCII?
referirnos al conjunto de codi cacin que predomin hasta hace un par de aos
. Hoy da Unicode es el
estndar de facto para codi cacin.
Algo que puede ser muy til, aunque sea poco comn, es numerar
una lista de objetos, digamos
la lista de tus libros que casualmente tienes escrita en un arch
ivo. Con lo que sabes de edicin lo
podras hacer ms o menos as: visitas el archivo en un buffer de Emac
s, te mueves al primer carcter
de la primera lnea y tecleas 1. ; luego te mueves a la siguiente ln
ea, regresas a la primera posicin
en la lnea y tecleas 2. ; y as sucesivamente.
No suena muy difcil. Con un poco de prctica podras llegar a la
primera posicin de la siguien
te lnea con teclear slo dos combinaciones de teclas y agregar un nm
ero (uno o ms dgitos), un
punto, un guin y un espacio; son slo unos cuantos carcteres ms. Y en
efecto, es muy sencillo.
Desgraciadamente t tienes 8272 libros en tu lista! Adems, como eres
muy escrupuloso quieres
que todos los ttulos de tus libros comiencen en la misma columna,
o lo que es lo mismo quieres que
la numeracin agregue exactamente el mismo nmero de carcteres a cada
lnea. No hay problema,
aqu esta una funcin en elisp que lo hace:
1
( d e f u n numera ( beg end )
2
" Numera l a s l i n e a s en l
3
( interactive " r ")
4
( l e t
( ( l i n e s ( c o u
5
( p a d d i n g (
t r i n g l i n e s ) ) ) )
6
( g o t o c h a r beg )
7
( dotimes ( l i n e l i n e
8
( i n s e r t ( format
9
( c o
t " % cd " p a d d i n g ) " d. " )
a r e g i n . "
n t l i n e s beg end ) )
l e n g t h ( i n t t o s
s )
n c a t " %" ( f o r m a
10
11
(1+ l i n e ) ) )
( f o r w a r d l i n e 1 ) ) ) )
328
Extendiendo tu ambiente
9.7.3.
ejecuta cuando presionamos BackSpace , pero algunos no. Aqu est una vers
in de una funcin
que borra inteligentemente todos los espacios en blanco hasta llegar a
un carcter no blanco y
despus el cdigo para instalarla en Emacs:
u
o
s
l
n mye l e c t r i c d e l e t e ( a r g )
r r a e l c a r z c t e r p r e c e d e n t e o b
,
a d o r e s , y n u e v a s l i n e a s . S i myhungr
l
i
a
n
f
,
c
l
t
(
e n t
i n
son b
e r a
o r (
(
a l u
( l e
(
(
f
e
t
s
i
u
a
(
k
f
o n c e s t o d o s l o s b l a n c o s q
o r r a d o s . "
c t i v e "P ")
n o t myhungry d e l e t e key
arg )
n c a l l myd e l e t e f u n c
r g ) )
( here ( point ) ) )
i p c h a r s b a c k w a r d "
(/= ( point ) here )
( d e l e t e r e g i o n ( p
)
t i o n ( p
\ t \ n " )
o i n t )
( f u n c a l l myd e l e t e f u n c t i o n
En esta lnea hay dos funciones nuevas, pero ambas son triviales:
pre x numeric value que regresa
el valor numrico del argumento pasado a la funcin y funcall que ev
ala su primer argumento como
si fuera una funcin, pasndole el resto de los argumentos. Nota que
no es equivalente a:
( myd e l e t e f u n c t i o n ( p r e f i x n u m e r i c v
a l u e a r g ) )
330
Extendiendo tu ambiente
( addhook emacsl i s p modehook
( lambda ( )
( d e f i n e key emacsl i s p modemap " \ Cm" n e w l i n e andi n
n t )
( d e f i n e key emacsl i s p modemap ( b a c k s p a c e ) mye l e
t r i c d e l e t e )
( s e t q myd e l e t e f u n c t i o n backwardd e l e t e c h a r u
n t a b i f y
myhungry d e l e t e key t ) ) )
que bsicamente le dice a Emacs que cada vez que tecleas Enter , deb
e pasar a la siguiente lnea
y luego indentar adecuadamente. Tambin le indica que BackSpace debe
ejecutar la funcin que
recin analizamos; por ltimo le doy nombre a las dos variables que se
usan dentro del cuerpo de la
funcin.
9.7.4.
16
res )
) ) ) )
17
18
( d e f u n i n d e x o f ( c h a r s t r c o u n t )
19
" R e g r e s a e l n d i c e de l a p r i m e r a a p a r i
c i n de CHAR
20
en l a c a d e n a STR empezando en COUNT . "
21
( cond ( ( s t r i n g e q u a l s t r " " ) n i l )
22
( ( c h a r e q u a l ( a r e f s t r 0 ) c h a r
) c o u n t )
23
( t ( i n d e x o f c h a r ( s u b s t r i n g s
t r 1 ) ( 1 + c o u n t ) ) ) ) )
resultad
contenga
hacemos
a c a d
332
Extendiendo tu ambiente
la cadena donde
siguiente ejemplos deben
aclarar un poco
( i n d e x o
2
( i n d e x o
3
Esto tambin debe aclarar por qu tenemos que regresar el resultado en rev
ersa: porque fuimos
metiendo las sub cadenas al inicio de la lista. Si las furamos metiendo
al nal no habra necesidad,
pero lucira ms compleja la funcin.
Por ltimo, decimos que las funciones index of y string tokenizer a
ux estn ambas en forma
recursiva de cola, primero porque son recursivas y segundo porque lo lt
imo que hacen es llamarse
a s mismas. Una funcin recursiva puede hacer muchas llamadas a s misma, p
ero est en forma
recursiva de cola si y slo si el que llama regresa inmediatamente despus
. Por ejemplo, la siguiente
funcin calcula el n simo trmino en la serie de Fibonacci:
( defun f i b ( n )
( i f (< n 2)
1
( + ( f i b ( n 1 ) ) ( f i b ( n 2 ) ) ) ) )
pero no est en forma recursiva de cola, porque cuando terminan las llam
adas recursivas no regresa
la funcin ya que falta realizar las sumas.
9.7.5.
Resumen
Aqu est un resumen de las funciones que acabamos de revisar:
dotimes Tiene la siguiente sintaxis:
( d o t i m e s (VAR COUNT [ RESULT ] ) BODY . . . )
Evala BODY ligando VAR a un entero sucesivo desde 0 inclusive, has
ta COUNT (excluyn
dolo). Despus evala RESULT para obtener el valor de regreso, o regr
esa nil por omisin.
count lines Tiene la siguiente sintaxis:
( c o u n t l i n e s START END &o p t i o n a l IGNOREINVI
SIBLE )
Apndices
Distribuciones de
Linux
A
Existen varias formas de instalar Linux en tu computadora. A lo la
rgo de este libro se utiliz
Ubuntu, pero hay muchas ms opciones. Segn www.distrowatch.com, en este m
omento existen
mas de 500 versiones distintas de Linux. Existen algunas de ellas que
tienen soporte por parte de
grandes empresas como Novell, Oracle, Red Hat o IBM. Adems, para empeza
r a usar Linux no
necesitas instalarlo de forma permanente en tu computadora, ya que muc
has distribuciones tienen lo
que se conoce como un live cd, que es un disco que te permite utilizar
Linux desde un cd o dvd sin
tener que copiarlo a tu disco duro. De esa forma puedes decidir si esa
distribucin de Linux ofrece
lo que t necesitas sin tener que eliminar el sistema operativo que util
izas actualmente. A lo largo
de este apndice te presentaremos algunas de las distribuciones ms comune
s de Linux, en dnde
puedes obtenerlas y cules son sus puntos clave.
A.1. Ubuntu
A.1.1.
Filosofa
338
Distribuciones de Linux
cada seis meses. Adems los principales objetivos de Ubuntu son:
Mantener por siempre su gratuidad, y que nunca haya un costo adi
cional para obtener una
versin profesional.
Hacer que Ubuntu pueda ser usado por el mayor nmero de personas.
Estar siempre comprometido con el software libre.
A pesar de tener a su disposicin todos los paquetes de Debian, en U
buntu la instalacin por
omisin incluye un nmero reducido de paquetes, lo cual permite que pueda
distribuirse en un solo
CD, dejando la instalacin de otros paquetes como una decisin posterior.
Puedes obtener una copia
en http://www.ubuntu.com/
A.1.2.
Manejo de software
A.2 Debian
339
De esa forma le indicamos a apt que debe buscar la lista de paq
uetes y regresarnos todos los
que contengan la palabra emacs en su nombre o su descripcin. Esto re
gresar algo como:
d i c t i o n a r y e l d i c t i o n a r y c l i e n t f o r Emacs
d r s c h e m e PLT Scheme Programming E n v i r o n m e n t
emacse x t r a emacs c o n f i g u r a t i o n
emacss n a p s h o t g t k The GNU Emacs e d i t o r ( w i t h GTK+ 2
. x s u p p o r t )
emms The Emacs M u l t i M e d i a System
emacs21 The GNU Emacs e d i t o r
emacs21b i n common The GNU Emacs e d i t o r s d e p e n d e n t f i
l e s
emacs21common The GNU Emacs e d i t o r s
Si quieres ver ms detalles acerca de un paquete, entonces puedes eje
cutar:
% apt cache search
f emacs21 common
340
Distribuciones de Linux
A.2. Debian
A.2.1.
Filosofa
Manejo de software
Filosofa
2
dando esto como resultado varias guerras santas
A.3 Fedora
341
recciones: el proyecto Fedora mantendra lo que antes era la distrib
ucin del sistema operativo
y Red Hat Enterprise se encargara de atender a los clientes empresa
riales. El propsito del pro
yecto Fedora es y ha sido apoyar el rpido progreso del software lib
re y de su contenido. Esto
incluye tener procesos abiertos al pblico, transparencia y rpida inn
ovacin. Puedes obtenerlo en
http://fedoraproject.org/.
A.3.2.
Manejo de software
l f d
s p e
i s p
i n g
5.0 3
p r o v i d e s a s e t o f f u
n e s . Both Emacs and v i e d
a d l i n e l i b r a r y i n c
a i n i n g a l i s t o f p r e
o r e d i t i n g t h o s e l i
n s i o n on p r e v i o u s comm
ands .
Una vez que sabes cual es el nombre del paquete que quieres i
nstalar, debes ejecutar como root
la instruccin:
% yum install emacs.i386
3
Redhat Package Manager
4
Yellow dog Update Manager
342
tribuciones de Linux
Dis
Con lo cual yum te mostrara cuales son los paquetes que va a instalar, sus
dependencias y cuanto
espacio van a ocupar.
Compilando e
instalando a pie
B
B.1. Aplicaciones no disponibles
Hay ocasiones en las que quieres instalar una aplicacin, pero no exist
e un paquete para el
sistema de instalacin de tu distribucin. Algunas veces, alguien ms se encarga
de distribuirlos y
puedes o no conseguir un .deb o un .rpm en su pgina. En caso de que eso no
sea posible, ser
necesario compilar el paquete e instalarlo a pie. Esto puede sonar ms compl
icado de lo que en
realidad es, pero para ilustrar el proceso veamos un ejemplo. Vamos a inst
alar un cliente de MSN
para Linux que se conoce como amsn. Lo primero que necesitas es conseguir
el cdigo fuente de la
aplicacin, que en este caso lo puedes bajar de http://sourceforge.net/proje
cts/amsn/. El archivo
que vamos a bajar es amsn 0.96.tar.bz2, el nmero corresponde a la versin que
bajamos, por lo
que es probable que cuando t lo consigas sea algo distinto. El siguiente pa
so es descomprimir el
archivo; en este caso, a partir de la extensin, sabemos que es un archivo e
mpacado con tar y luego
comprimido con bzip2. Para desempacarlo puedes usar el comando
tar xvfj amsn 0.96.tar.bz2,
o bien hacerlo desde Konqueror. Esto genera el directorio amsn 0.96 En el
encontrars algunos
archivos que suelen ser estndar en las distribuciones de cdigo fuente en UNI
X. Entre estos se
encuentran, generalmente, los siguientes archivos:
README
INSTALL
con gure
344
Compilando e instalando a pie
En el archivo README viene una breve explicacin de qu es la aplicacin, cm
o funciona y
a veces instrucciones para instalar. En caso de que las instrucciones par
a instalar no aparezcan en
README, es porque estn en INSTALL. La informacin ms importante de este archi
vo son las
dependencias del programa que quieres compilar y las opciones que le pued
es pasar al compilarlo.
El resto del procedimiento es igual para la mayora de los programas, y usu
almente es:
1. Con gurar los parmetros de compilacin.
2. Compilar el programa.
3. Instalar el programa.
Con gurando la compilacin
Veamos cmo se con guran los parmetros de compilacin. Para hacer eso utili
zamos herra
mientas de UNIX que se llaman automake y con gure. El desarrollador que pre
par los fuentes
para instalar se encarg de utilizar un guin de instalacin con automake para
que nosotros po
damos compilar con con gure. De esa forma con gure se encarga de buscar en dnd
e tenemos
nosotros instaladas las dependencias del programa que queremos compilar,
y establece en dnde
queremos instalar nuestro programa una vez compilado, incluyendo binarios
y documentacin. As
que realicemos este paso para amsn. Es necesario que el archivo con gure te
nga permisos de eje
cucin; en caso de que no sea as puedes otorgrselos con chmod +x con gure; una
vez hecho eso
ejectalo con ./ con gure . Vers que empieza a revisar si tienes instaladas to
das las dependencias
que necesitas; si no encuentra algo en ese momento se detendr y te indicar
qu es lo que falta en tu
sistema. Supongamos que en este momento con gure indica que no puede encont
rar el compilador
de C, gcc; entonces vers algo como:
c h e c k i n g f o r g c c . . . no
c h e c k i n g f o r c c . . . no
c h e c k i n g f o r c c . . . no
c h e c k i n g f o r c l . . . no
c o n f i g u r e : e r r o r : no a c c e p t a b l e C c o m p i l
e r f o u n d i n $PATH
Ser necesario instalar este compilador. En este momento, si corres co
n suerte, bastar con
utilizar tu manejador de paquetes mientras que en el peor de los casos te
ndrs que compilar tambin
ese paquete. Para instalar gcc y de paso g++1 en Ubuntu basta con ejecuta
r sudo apt get install gcc
g++. as que si una vez heco esto ultimo vuelves a ejecutar con g, deber segui
r con su ejecucin
normal. En caso de que te hagan falta bibliotecas para seguir compilando
tambin ser necesario
que las instales. Supongamos que no tienes instalado Tk, el cual es neces
3
Dependiendo de qu ests instalando, esto puede tardar varios mi
nutos
4
En algunas aplicaciones puedes usar sudo make uninstall para
desinstalar la aplicacin
Emacs: archivos de
con guracin
C
A lo largo de este libro hemos revisado Emacs y muchas extensiones, sub
sistemas y paquetes
para extender la funcionalidad bsica de Emacs. Conforme avanzamos, explicamo
s las distintas
opciones y lneas de con guracin, pero las integramos aqu para tu comodidad.
C.1. /.emacs
; ; E s t e a r c h i v o de c o n f i g u r a c i n p a r a Emacs , e s u
n a n e x o d e l l i b r o :
; ; Manual de s u p e r v i v e n c i a en L i n u x
;
;
;
(
(
(
;
;
f o n t
;
r e q u i r e f o n t
addhook f o n t l o
g l o b a l f o n t l
; ; C o l o
( addt o
o r theme " ) )
( r e q u i
( c o l o r
( c o l o r
l o c k
l o c k )
c k modehook t u r n onf a s t l o c k )
o c k mode 1 )
r theme :
l i s t l o a d p a t h ( expandf i l e name " / e l i s p / c o l
r e c o l o r theme )
theme i n i t i a l i z e )
themec h a r c o a l b l a c k )
348
Emacs: archivos de con guracin
;
;
;
(
;
;
g l o b
;
a s :
(
t e x "
(
t e x /
(
(
(
(
(
(
(
(
(
;
;
C o d i f i c a c i n : UTF8
;
p r e f e r c o d i n g s y s t e m u t f 8)
;
;
a
;
addt o
) )
addt o
p r e v
r e q u
require
require
require
l o a d
s e t q
s e t q
s e t q
s e t q
; ; I s p e l l hablando espaol .
( s e t q i s p e l l programname " a s p e l l "
i s p e l l e x t r a a r g s (" W" " 3 " )
i s p e l l d i c t i o n a r y a l i s t
( cons
( " s p a n i s h " " [ [ : a l p h a : ] ] " " [ ^ [ : a l
p h a : ] ] " " [ . ] " n i l (" B" "d "
" e s " ) n i l u t f 8)
i s p e l l d i c t i o n a r y a l i s t )
)
( s e t d e f a u l t i s p e l l l o c a l d i c t i o n a r y " s p a n i s
h " )
; ; BBDB
; ; S i BBDB e s t i n s t a l a d o en un s i t i o e s t n d a r de Emac
s , no r e q u i e r e s
la primera lnea :
( addt o l i s t l o a d p a t h ( expandf i l e name " / e l i s p / bbdb /
l i s p " ) )
( r e q u i r e bbdb )
( bbdb i n i t i a l i z e vm )
; ; w3m
( r e q u i r e w3ml o a d )
; ; Dictionary ( dict client )
C.2 /.vm
349
( load " d i c t i o n a r y i n i t ")
( g l o b a l s e t key [ ( c o n t r o l c ) ? s ] d i c t i o n a r
y s e a r c h )
( g l o b a l s e t key [ ( c o n t r o l c ) ?m] d i c t i o n a r y m
atchwords )
; ; TRAMP
( r e q u i r e tramp )
( s e t q tramp d e f a u l t method " s c p " )
; ; ERC
( require erc )
( r e q u i r e e r c s p e l l i n g )
e l " )
; ; JDE y a m i g o s :
( l o a d f i l e " / e l i s p / c e d e t / common / c e d e t .
(
(
j d e / l i s
(
e l i b " ) )
(
(
s e m
addt
p " )
addt
a n t i c l o a d e n a b l e codeh e l p e r s )
o l i s t l o a d p a t h ( expandf i l e name " / e l i s p /
)
o l i s t l o a d p a t h ( expandf i l e name " / e l i s p /
require jde )
s e t q j d e e n a b l e a b b r e v mode t
j d e e l e c t r i c r e t u r n p t
j d e b u i l d f u n c t i o n ( j d e a n t b u i l d )
j d e d e b u g g e r ( " JDEbug " )
tempo i n t e r a c t i v e t
)
; ; S u b v e r s i o n D e p e n d i e n d o de t u c o n f i g u r
a c i n , p u e d e s e r que n e c e s i t e s
; ; l a p r i m e r a l n e a p a r a e n v i a r c o m e n t a r i
o s en UTF8 a l r e p o s i t o r i o :
( s e t e n v "LCCTYPEenUS . u t f 8")
( r e q u i r e psvn )
C.2. /.vm
; ; emacs l i s p
( s e t q vms p o o l f i l e s
( ( " / INBOX"
" imaps s l : g a l a d r i e l . f c i e n c i a s
. unam . mx : 9 9 3 : i n b o x : l o g i n : J u a n . Doe
: "
" / INBOX . CRASH" ) )
)
( s e t q vmimapa u t o expunge a l i s t
(
; ; Dejamos una c o p i a en e l s e r v i d o r .
( " imaps s l : g a l a d r i e l . f c i e n c i a s .
unam . mx : 9 9 3 : i n b o x : l o g i n : J u a n . Doe
: " . nil )
350
Emacs: archivos de con guracin
)
vms k i p r e a d m e s s a g e s t
vmc i r c u l a r f o l d e r s
t
vmv i r t u a l f o l d e r a l i s t
(
( " Amigos "
( ( " / INBOX " )
( and ( a u t h o r " E l i s a V i s o .
r " F r a n c i s c o S o l s o n a . " ) )
))
)
vmsummaryshowt h r e a d s t
)
( s e t q vmm a i l h
n c i a s . unam . mx>"
send m a i l
s m t p m a i
i a s . unam . mx"
s m t p m a i
s m t p m a i
)
" ) ( a u t h o
; ; BBDB i n s i n u a t i o n :
( bbdbi n s i n u a t e vm )
Bibliografa
[1] D IVERSOS AUTORES The tex catalogue on line.
http://www.tex.ac.uk/tex archive/help/Catalogue/catalogue.html. Contiene m
uchsimos pa
quetes de LATEX con su documentacin, listos para ser descargados.
[2] E TTRICH , M. Kde. http://www.kde.org.
[3] H ILBRICH , T. Emacs: Dictionary. http://www.myrkr.in berlin.de/dictionary/
.
[4] I TO , A. Emacs: w3m. http://w3m.sourceforge.net.
[5] K INNUCAN , P. Emacs: Jdee
http://jdee.sunsite.dk/.
[6] L UDLAM , E.
Emacs: Cedet
nt tools.
http://cedet.sourceforge.net/.
[7] M ITTELBACH , F.,
on. Addison
Wesley, 2004.
AND
[13] WANG , P. S. An Introduction to Unix with X and the Internet. PWS Publishin
g Company,
1997.