Está en la página 1de 214

Elaboración de una clase en

para digitar la tesis de pre-grado


en la Facultad de Ciencias

R. Ipanaqué, G. González y G. Crespo

Instituto de Investigación y Promoción para el desarrollo de la


Universidad Nacional de Piura http://www.unp.edu.pe/institutos/iipd
ELABORACIÓN DE UNA CLASE EN

PARA DIGITAR LA TESIS DE PRE-GRADO


EN LA FACULTAD DE CIENCIAS

R. IPANAQUÉ
G. GONZÁLEZ
G. CRESPO
FACULTAD DE CIENCIAS
UNIVERSIDAD NACIONAL DE PIURA
PIURA, PERÚ
Título:

AT X
Elaboración de una clase en L para digitar la Tesis de pre-grado en la
E
Facultad de Ciencias

Autores:

ROBERT IPANAQUÉ CHERO

robertchero@hotmail.com
http://www.unp.edu.pe/pers/ripanaque
https://sites.google.com/site/ripanaque

GUILLERMO C. GONZÁLEZ CREOLLO

gmogonzalez@gmail.com
http://www.unp.edu.pe/pers/ggonzalez

GLORIA S. CRESPO GUERRERO

gloriasol48@hotmail.com

INSTITUTO DE INVESTIGACIÓN Y PROMOCIÓN PARA EL DESARROLLO (iipd)


Junio, 2011

UNIVERSIDAD NACIONAL DE PIURA


Urb. Miraores s/n, Castilla, Piura, PERÚ
PRÓLOGO

AT X, sino que constituye la


Este libro no pretende ser un manual de L E
presentación y manual ocial de la clase Fc Unp creada por los autores
con la nalidad de dotar a los estudiantes de la Facultad de Ciencias, de
la Universidad Nacional de Piura, de una herramienta que facilite el uso
AT X en la digitación de la Tesis de pregrado.
de L E
En el primer capítulo se dan los lineamientos elementales en el uso de
AT X y que son ampliamente utilizadas para elabo-
las clases estándar de L E
rar diversos trabajos cientícos, a saber: article, report, book, letter
y slides. Además describe los comandos básicos, que se utilizan en cual-
quiera de dichas clases, y que sirven para dar formato al texto, insertar
y editar fórmulas matemáticas, manipulación de listas, insertar grácos,
insertar tablas, etc.
Una vez que el lector se ha familiarizado con las clases y comandos
mencionados, en el segundo capítulo, se hace una breve descripción de
AT X con la nalidad que el lector
los elementos de la programación en L E
aprecie la potencia del mismo.
Finalmente, en el tercer capítulo, se describen los comandos de la cla-
se creada, a la que se le ha llamado Fc Unp , mostrando con un ejemplo
especíco los resultados que se obtienen en forma automatizada tanto en
formato como en el color del empaste (esto permite que el estudiante ob-
tenga un archivo PDF de calidad profesional, el cual incluye hipervínculos,
referencias y marcadores, todos éstos interactivos).

R. Ipanaqué
G. González
G. Crespo

Piura, Perú
CONTENIDO

Prólogo i
Contenido ii
Capítulo I:Introducción a LATEX 1
Introducción a la edición de textos con LATEX 1
Instalación de TEX/LATEX 9
Prueba de la correcta instalación de TEX/LATEX 17
Instrucciones básicas de LATEX 25
Estructura de los documentos LATEX 28
Clases de documentos básicos 29
Paquetes 52
El paquete babel 57
El paquete inputenc 57
El paquete geometry 58
Formato de página 58
Edición de texto 59
Matemática 67
Listas 89
Inclusión de grácos 97
Tablas 100
Referencias cruzadas 108
Notas al pie y al margen 112
Inserción de texto plano 114
Bibliografía 115
El programa BibTex 117
iii

Capítulo II:Programación con LATEX 122


Creación de comandos y entornos 122
Entornos 124
Compilación por partes 126
Conceptos básicos sobre contadores y longitudes 127
Programación con TEX 138
Manejo de cajas en TEX 143
Repetición de objetos 151
Sistematizando tareas 153
Condicionales y bucles 154
Capítulo III:La clase FcUnp 165
Introducción 165
Cómo invocar la clase FcUnp 165
Comandos implementados 166
Paquetes incorporados 168
Un ejemplo especíco 169
Obtención de la clase FcUnp 171
Código de la clase FcUnp 180
Conclusiones 204
Recomendaciones 205
Bibliografía 206
iv
CAPÍTULO I

INTRODUCCIÓN A LTEX A

1 Introducción a la edición de textos con LATEX


1.1 Conceptos referentes a TEX/LATEX
¾Qué es TEX?
1
TEX es un sistema de composición de textos de alta calidad que fue creado
por Donald E. Knuth a nales de la década de 1970; está dirigido en par-
ticular a aquéllos textos que contienen una gran cantidad de expresiones
matemáticas. TEX en sí es un procesador de macros, con una alta capa-
cidad de programación, un archivo *.tex es un archivo ASCII donde está
el texto junto con determinadas instrucciones, que debe ser procesado por
un compilador (el programa TEX). Éste devuelve un archivo *.dvi que es
independiente de la plataforma y que es el que nalmente se transformará
al lenguaje de impresora.
Utilizar TEX puro reviste una cierta dicultad, por lo que Knuth su-
ministró una serie de macros para TEX a las que se denominó plain TEX.
Estas macros son el conjunto mínimo de macros que se pueden utilizar de
forma ecaz con TEX e incluyen algunos ejemplos de uso de órdenes TEX
de alto nivel. Cuando alguien arma programar en TEX normalmente se
reere a que lo hace en plain TEX.

¾Qué es LATEX?
AT X es un paquete de macros para T X originalmente escrito por Leslie
L E E
Lamport para proporcionar un sistema de procesamiento de documentos

1 El nombre TEX representa el prejo τ εχ (tau épsilon chi), que signica arte.
2

más simple de uso que TEX pero con toda su potencia. L AT X proporciona
E
una serie de órdenes para describir la estructura del documento, de forma
que el usuario nal no deba pensar mucho en la presentación. Mediante
distintas clases de documentos y paquetes adicionales, el mismo documento
puede producirse con muchos diferentes aspectos.

¾Qué son los paquetes AMS-TEX/AMS-LATEX?

AMS-TEX es un paquete de macros para TEX. Escrito originalmente por


Michael Spivak para la Sociedad Americana de Matemática (AMS) entre
1983 y 1985. Está basado en plain TEX pero proporciona más medios para
producir fórmulas matemáticas de aspecto profesional con menor esfuerzo
por parte de los autores, con un gran cuidado en aspectos como el tamaño
y la posición de las fórmulas. Entre los aspectos tratados se encuentran las
ecuaciones de más de una línea, la numeración de ecuaciones, las matrices,
los acentos dobles, sub y super índices en varios niveles, así como otras
cosas. Según fue aumentando la popularidad de L AT X la AMS desarrolló
E
AMS-L TEX que consiste en una colección de clases y paquetes para LATEX
A
que ofrece a los autores la funcionalidad de AMS-TEX.

Clases de usuarios que utilizan TEXLATEX en la creación de sus docu-


mentos
TEX- nico Conocedor de todas las minucias, argucias y misterios de TEX.
TEX- perto Persona familiarizada con los comandos básicos de TEX ca-
paz de programar rutinas o macros TEX.

TEX- nócrata Persona que ha asimilado la losofía TEX y que usa regu-
larmente TEX o L AT X pero que no conoce o no tiene interés en el
E
funcionamiento interno del lenguaje TEX.

1.2 ¾Qué ventajas tiene TEX/LATEX?


Funciona, es estable y multiplataforma
El formato de los archivos es mucho más estable que en otros procesadores,
cualquier cambio es realizado localmente y no repercute en efectos cola-
terales, existen implementaciones para distintas plataformas y en todas el
resultado es exactamente el mismo (si se tienen los mismos estilos y tipos).
Excelente calidad del documento nal con salida en distintos formatos: dvi,
pdf, ps, etc.
3

Alta calidad en la edición de ecuaciones


Esta es una razón muy importante por la que LAT X es ampliamente utiliza-
E
do en entornos cientícos. Muchas revistas aceptan o exigen los documen-
tos escritos en LAT X. Este procesador ajusta los tamaños de paréntesis,
E
integrales, subíndices y superíndices, alinea los elementos de las matrices,
construye cajas, etc.

LATEX permite redactar fácilmente documentos estructurados


A través de distintas clases de documento y de su conjunto de macros,
AT X posibilita escribir textos dividiéndolos en capítulos, secciones, sub-
L E
secciones, controlando en todo momento la numeración y las referencias
cruzadas. Construye índices de contenidos, tablas o guras. Ajusta los ta-
maños y tipos de letras según la parte del documento en que se hallen.

Facilidad en la construcción de macros y órdenes


A poco de comenzar a usar este procesador, el usuario se encuentra de-
niendo o redeniendo órdenes para que éstas se ajusten a sus preferencias
personales. Por ejemplo, es posible que una determinada expresión aparez-
ca repetidas veces en el texto. Nada más fácil que denir una orden que
reemplace a todo un bloque. O bien, es posible que no guste la forma en
AT X numera las páginas, una redenición al principio del documento
que L E
permite cambiar esto.

Se escribe en ASCII
Esto, que al principio puede parecer un inconveniente (ya que implica
teclear mucho más) se torna en ventaja al cabo del tiempo. Por un lado
permite incrementar la velocidad de escritura (pues no hay que andar
utilizando ratón o menús), por otro facilita el uso de cualquier editor de
texto (no contiene caracteres de control) y permite su transmisión por
correo electrónico (puede escribirse en ASCII de 7 bits). Esto hace que
AT X enviados
muchas revistas cientícas admitan artículos escritos en L E
por e-mail. Ellos lo procesan en el lugar de destino, hacen los cambios
necesarios y lo imprimen.

Es gratis
Porque Knuth lo decidió así, y no parece molestarle que otros ganen dinero
vendiendo productos y servicios basados en TEX. De hecho, aunque algunas
4

herramientas que se usan junto a TEX se ofrecen bajo la GNU General


Public License (Copyleft); TEX en sí, ni siquiera tiene esa restricción. La
única restricción impuesta por Knuth es que debe dar el mismo resultado en
todas las implementaciones, para garantizar la absoluta portabilidad de los
documentos escritos con TEX. Algunas empresas ofrecen implementaciones
comerciales de TEX/L AT X con elementos propios.
E

1.3 Ventajas e inconvenientes que tiene TEX/LATEX?


Aprendizaje previo, no es un procesador del tipo WYSIWYG
A diferencia de los procesadores de tipo WYSIWYG lo que ves es lo que
consigues (What you see what you get), que pueden usarse casi desde el
AT X requiere un periodo de apren-
primer día con resultados aceptables, L E
dizaje antes de conseguir los primeros frutos. Incluso cuando ya se es un
usuario medio o avanzado, siempre es conveniente tener cerca un manual.
Este proceso de iniciación consiste principalmente en aprenderse las órde-
nes esenciales. La contrapartida de este esfuerzo es que cuando se trabaja
con LAT X y se compara el resultado con lo obtenido con otros procesa-
E
dores, la salida de éstos últimos parece poco seria en cuanto se reere a
las fórmulas matemáticas. Algo como los dientes, que duelen al salir, pero
luego se hacen imprescindibles.

No se ven los resultados hasta que se compila el archivo


Una de las decepciones que sufre el usuario novato es que no ven los frutos
de su trabajo hasta que compila. Como suelen aparecer errores de compila-
ción, esto suele ser frustrante, aparte de conllevar una pérdida de tiempo.
Con el tiempo, los errores disminuyen. De todas formas, L AT X no está
E
especialmente dirigido a los aspectos puramente estéticos de cada página
en concreto, sino a los estructurales del documento. Si uno está interesado
AT X no es el procesador adecuado. Éste basa
estrictamente en la estética, L E
la belleza de los documentos creados más en la claridad, en el buen crite-
rio y en una estética agradable, que en la posibilidad de hacer fácilmente
diseños rebuscados para cada página.

No permite introducir imágenes


Esta acusación habitual no es en absoluto cierta. Simplemente hay que ser
conscientes de los medios de visualización e impresión de que se dispone y
obrar en consecuencia. Lo que no debe olvidarse nunca es que tanto TEX
5

como LAT X están pensados como lenguajes de composición de documentos,


E
no de autoedición.

No tiene variedad de tipos (fuentes)


Es cierto que los tipos CM (Computer Modern) originalmente desarrolla-
dos por Knuth son limitados en cantidad y variedad, por lo que a medida
que LAT X se difundía, han aumentado las demandas de más tipos para
E
usos diversos. Aunque el crecimiento es todavía lento, existe una gran can-
tidad de tipos disponibles. En las versiones para salidas postscript si es
posible el uso de cualquier tipo, pero no se garantiza que las ecuaciones
mantengan la calidad requerida.

1.4 Elementos que intervienen al procesar un documento


El documento fuente: ¾Cómo creo un documento con TEX/LaTeX?
Como se ha dicho TEX/L AT X es realmente un lenguaje de programación
E
de textos. En el documento fuente original se introduce el texto a procesar
junto con una serie de órdenes especicando cómo debe ser procesado éste.
Este paso se realiza con un editor de texto, o con un ambiente de progra-
AT X.
mación especializado totalmente integrado para su uso con TEX/L E

¾Cómo proceso, veo e imprimo un documento con TEX/LaTeX?

Dado un documento
doc.tex,
doc.dvi
fuente éste
se procesa mediante
TEX si se han utili-
zado las órdenes de doc.tex doc.aux

plain TEX o LATEX si


se han utilizado las ór-
AT X (Fig.
denes de L E doc.log
1.1). Se corrigen los
posibles errores de sin-
taxis y se repite el pro-
ceso hasta que éstos se
Fig. 1.1
han eliminado.
6

¾Qué es un archivo *.aux?


AT X usa para el conteo
Documento auxiliar con información interna que L E
y enumeración automática de secciones, ecuaciones, referencias bibliográ-
cas, etc.

¾Qué es un archivo *.log?

Es el cuaderno de bitácora de LAT X con todos los detalles de la compi-


E
lación o del procesamiento, incluyendo los mensajes de error.

¾Qué es un archivo *.dvi?

Un archivo DVI (device independent) es uno de los archivos resultantes al


procesar el texto fuente a través de TEX/L AT X. Su forma no depende del
E
dispositivo que se vaya a utilizar para verlo/imprimirlo. Un archivo DVI
está pensado para ser leído por un conversor que produzca una salida ade-
cuada para una determinada impresora, o para un determinado visualiza-
dor en la pantalla del ordenador. Los archivos DVI utilizan una codicación
interna de TEX de forma que un documento fuente debe producir exacta-
mente el mismo archivo DVI, con independencia de la implementación de
TEX que se utiliza para producirlo.

¾Qué es un conversor?
Un conversor es un programa que toma su entrada de un archivo DVI
y produce un archivo que puede enviarse a una impresora (mediante un
driver) o una salida directa a una pantalla (mediante un previewer). Estos
conversores normalmente son especícos a cada impresora o lenguaje de
impresora. Por ejemplo, una impresora postscript entenderá siempre la
salida de un conversor postscript, pero en general no de otros formatos.

¾Qué es el formato pdf?


PDF (Portable Document Format) es, como su nombre indica, un formato
de archivos transportable entre distintas plataformas, creado por Adobe
y especialmente diseñado para visualizar documentos tal y como se han
diseñado. Permite usar colores, grácos, seguir enlaces e imprimir; pero,
fundamentalmente, permite ver en la pantalla los documentos, siendo un
formato compacto. Es muy similar a PS, pero no tiene capacidades de
programación. En relación con TEX PDF es un formato que sustituye al
7

DVI. Los visualizadores de PDF más recomendables son Acrobat Reader


y Ghostview.

¾Qué es el postscript y el postscript encapsulado?


PostScript (PS) es un lenguaje de programación para describir páginas.
Como lenguaje estructurado permite la programación (tiene estructuras
de control y bucles). Fue desarrollado por Adobe. Existen varios intérpre-
tes que permiten la visualización de este formato, Ghostscript por ejemplo.
El formato PS se basa en describir cada página desde un origen de coor-
denadas que se sitúa en la esquina inferior izquierda de la página. PS en-
capsulado (EPS) es el formato estándar para importar y exportar archivos
PS en cualquier tipo de entornos. Usualmente es un archivo que contiene
una sola página que describe una gura. El archivo EPS está especialmen-
te pensado para incluirlo en otros archivos PS, y es como cualquier otro
archivo PS con algunas restricciones.

Grafo de las posibles conversiones de los distintos archivos obtenidos


con TEX/LATEX/pdfTEX/pdfLATEX

*.tex latex *.dvi dvips *.ps

pdflatex dvi2pdf ps2pdf

*.pdf *.pdf *.pdf


Fig. 1.2

1.5 Fuente de TEX/LATEX y otros programas relacionados


Distribuciones TEX/LATEX
En principio se podría coger todo el sistema elemento a elemento y ponerlo
todo en común. Sin embargo, para que esto funcione correctamente, el
tiempo requerido y la complejidad del trabajo son grandes. Por esta razón
algunas personas o empresas ya lo han hecho y lo ofrecen preparado en lo
que se denominan distribuciones. Se entiende por distribución un conjunto
de archivos binarios y paquetes de macros L AT X junto con otras utilidades
E
adicionales, hay distribuciones de libre distribución GNU, Shareware (se
8

puede distribuir y probar, pero si se quiere usar regularmente es necesario


pagar el registro) y otras de distribución comercial.

Existen versiones para:

Atari, Amiga, UNIX, VMS, Os2, Windows NT, Mac y MS-DOS.

Las más comunes distribuciones libres o shareware son:

Unix TeTEX
Linux teTEX NTEX
Macintosh OzTEX
DOS/OS2 emTEX gTEX emTEX-TDS
Win32 MikTEX fpTEX.
2

En tanto, que las más comunes distribuciones comerciales para windows


son:

ScienticWord, ScienticWorkPlace y ScienticNotebook, los cuales


ofrecen una forma de trabajo tipo casi WYSIWYG con un procesador
TEX en segundo plano.

AT X son:
Y, los editores de texto que trabajan especialmente bien con L E

Unix GNU emacs


DOS/OS2 TEXshell
Win32
3 4 5
WinEdt , Winshell , TEXMAKER , PCTEX32
Linux kate, kile.

¾Qué es CTAN?
Son las abreviaturas de Comprehensive TEX Archive Network (Red del
Archivo Completo de TEX). Es una red mundial de software TEX Los ser-
vidores de CTAN contiene implementaciones de L AT X para prácticamente
E
AT X
todos los sistemas operativos, así como los paquetes de macros TEX y L E
y otros programas que pueden ser útiles. El software que allí se encuentra
es GNU o shareware.

2 Fabrice Popineau es una versión de teTEX para Windows


3 Shareware
4 GNU
5 GNU
9

Los servidores más importantes de CTAN son:

EEUU http://www.ctan.org/
Inglaterra http://www.tex.ac.uk/tex-archive/
Alemania http://www.dante.de/cgi-bin/ctan-index/

Para los usuarios hispanohablantes se ha creado el grupo CervanTEX


el cual busca intercambiar experiencias sobre TEX y promover su uso en
Hispanoamérica. La página Web ocial del grupo es

http://www.cervantex.org/

2 Instalación de TEX/LATEX
Una distribución gratuita para Microsoft Windows, desarrollada por Chris-
tian Schenk es MiKTEX . Las características más apreciables de MiKTEX
son su habilidad de actualizarse por sí mismo descargando nuevas versio-
nes de componentes y paquetes instalados previamente, y su fácil proceso
de instalación. La versión actual de MiKTEX es 2.9 y está disponible en
su página ocial (ver Fig. 1.3)

http://miktex.org

Después de descargar MiKTEX se procede a su instalación haciendo

doble clic sobre el respectivo icono tras lo que aparece un


cuadro como el de la gura 1.4. A continuación se ejecutan los siguientes
pasos:

1. Activar la casilla de condiciones de instalación del citado cuadro tal


como se muestra en la gura 1.5.

2. Pulsar el botón <Siguiente> que se aprecia en la gura 1.6.

3. Pulsar el botón <Siguiente> que se aprecia en la gura 1.7.

4. Pulsar el botón <Siguiente> que se aprecia en la gura 1.8.

5. Pulsar el botón <Start> que se aprecia en la gura 1.9.

6. Esperar que concluya el proceso indicado en la gura 1.10.

7. Pulsar el botón <Siguiente> que se aprecia en la gura 1.11.


10

Fig. 1.3 Porción de la página web ocial de MiKTEX.

Fig. 1.4
11

Fig. 1.5

Fig. 1.6

Fig. 1.7
12

Fig. 1.8

Fig. 1.9

Fig. 1.10
13

Fig. 1.11

Fig. 1.12

8. Finalizar el proceso pulsando el botón <Close> que se aprecia en la


gura 1.12.

Seguidamente instalamos el editor libre TEX MAKER


especialmente di-
AT X.
señado para hacer más fácil y cómodo el trabajo con L E
La página web ocial de TEX MAKER (ver Fig. 1.13) es
http://www.xm1math.net/texmaker

Después de descargar TEX MAKER se procede a su instalación haciendo


doble clic sobre el respectivo icono tras lo que aparece un cuadro
como el de la gura 1.14. A continuación se ejecutan los siguientes pasos:

9. Pulsar el botón <I Agree> que se aprecia en la gura 1.14.


14

Fig. 1.13 MAKER .


Porción de la página web ocial de TEX

Fig. 1.14

Fig. 1.15
15

Fig. 1.16

Fig. 1.17

10. Pulsar el botón <Install> que se aprecia en la gura 1.15.

11. Esperar que concluya el proceso indicado en la gura 1.16.

12. Finalizar el proceso pulsando el botón <Close> que se aprecia en la


gura 1.17.

13. Acceder a TEX MAKER haciendo doble clic en el icono de acceso

directo que debe haberse creado en el escritorio (ver Fig. 1.18).

14. Elegir <Congurar Texmaker> de la opción <Opciones> de la barra


de Menú (ver Fig. 1.19).

15. Seleccionar <Editor> de la ventana Congurar Texmaker y elegir ISO-


8859-1 (para el reconocimiento de caracteres no pertenecientes al
código ASCII) en la opción Codicación del editor. Elegir, además,
el diccionarioES_es.dic (para revisión ortográca en español) en la
opción Diccionario. Aquí también es posible congurar: tipo y tama-
ño de letra, colores para entorno matemático, comandos y palabras
clave, así como los atajos (ver Fig. 1.20).
16

Fig. 1.18

Fig. 1.19
17

Fig. 1.20

16. Finalmente, para que se actualicen las conguraciones se presiona el


botón <Aceptar> que se ubica en la parte inferior (ver Fig. 1.20).

Después de ejecutar los dieciséis pasos antes descritos ya podemos ela-


borar nuestro primer documento en TEX (TeXworks de MiKTEX) o en
AT X (T X
L E E MAKER), según sea el caso.
No obstante, para poder visualizar, en forma independiente, cualquier
documento que elaboremos es preciso asegurarnos de tener instalado en el
ordenador algún visor de archivos pdf. Los más comunes en nuestro medio
son el Acrobat Reader y el Foxit Reader (ambos pueden descargarse en
forma gratuita).

3 Prueba de la correcta instalación de TEX/LATEX


Después de haber accedido a TEX MAKER realizaremos los siguientes pa-
sos:

1. Pulsar el botón <Nuevo> que se aprecia en la gura 1.21. Después


de esto aparecerá automáticamente una hoja en blanco como la
que muestra en la gura 1.22.

2. Elegir <Asistente para nuevo documento> de la opción <Asistentes>


de la barra de Menú (ver Fig. 1.23), tras lo cual debe aparecer un
18

Fig. 1.21

Fig. 1.22
19

Fig. 1.23

cuadro de diálogo como el de la gura 1.24.

3. Presionar el botón <Aceptar> ubicado en la parte inferior (ver Fig.


1.25). Después de esto, la hoja en blanco será llenada automática-
mente con el código mostrado en la gura 1.26.

Esto es una prueba. en el campo ubicado


4. Escribir el texto: entre
\begin{document} y \end{document} (ver g. 1.27).
5. Crear una nueva carpeta y guardar en ésta el archivo, asignándole
un nombre. En nuestro caso convendremos en asignarle el nombre
ejemplo (ver gs. 1.28 y 1.29).

6. Vericar que esté activa la ventana de mensajes presionando el botón


<Messages/Log>, mostrado en la gura 1.30, hasta que aparezca un
cuadro como el que se ha remarcado en la gura 1.31.

7. Presionar la tecla <F6> y esperar a que se compile el documento


y se genere el respectivo archivo pdf. Al nalizar la compilación de-
be aparecer un mensaje, como el que se muestra en la gura 1.32,
indicando que el proceso ha terminado exitosamente.

8. Presionar la tecla <F7> para poder ver el archivo pdf con el visor
de archivos pdf de TEX MAKER (ver g. 1.33).
20

Fig. 1.24

Fig. 1.25
21

Fig. 1.26

Fig. 1.27
22

Fig. 1.28

Fig. 1.29
23

Fig. 1.30

Fig. 1.31
24

Fig. 1.32

Fig. 1.33
25

Para realizar cualquier cambio en el documento simplemente se accede


al archivo tex (en este caso ejemplo.tex ), se hace el cambio y se actualiza
presionado <F6> y luego <F7> (no olvide guardar los cambios. Una forma
rápida de hacer esto es presionando la combinación <Ctrl>+<S>).
Téngase presente que en la carpeta donde se ha almacenado el archi-
vo, al que se convino llamar ejemplo, se habrán creado cuatro archivos.
Especícamente: ejemplo.tex, ejemplo.txt, ejemplo.aux y ejemplo.pdf. Éste
último archivo constituye nuestro documento propiamente dicho.

Si por alguna razón es abierto el archivo pdf (en este caso ejemplo.pdf )
con el Acrobat Reader, éste debe cerrarse antes de que se efectúe cualquier
cambio en el archivo tex (en este caso ejemplo.tex ), pues de lo contrario no
permitirá realizar ninguna actualización desde TEX MAKER ; es decir des-
pués de presionar <F6>
, en la respectiva hoja de TEX MAKER , aparecerá
un mensaje de error en el cuadro de mensajes (ver g. 1.31).

4 Instrucciones básicas de LATEX

4.1 Comandos
AT X comienzan con \ seguido de una secuencia de
Los comandos de L E
6
letras .

Tipos y sintaxis de los comandos


Simples :
7

\<comando>

Con argumentos obligatorios:

\<comando> {. . . }{. . . }. . . {. . . }

Con argumentos obligatorios y opcionales:

\<comando> [<opcionales>]{. . . }{. . . }. . . {. . . }

6 Los comandos en LAT X son sensibles a mayúsculas y minúsculas


E
7 Luego de los comandos simples los espacios son ignorados, por esta razón es im-
portante forzar a que aparezcan éstos mediante cualquiera de las siguientes secuencias:
\<comando>\ , {\<comando>} o \<comando>{}.
26

4.2 Declaraciones globales (bloques) y entornos

Declaraciones globales (bloques)


Son aquella declaraciones que limitan su alcance al bloque de texto conte-
nido entre un par de llaves {. . . <texto> . . . } emparejadas.

Entornos
Son construcciones del documento que son tratadas de manera distinta del
documento principal, deben especicarse en la forma:

\begin{<entorno>}

<texto>
\end{<entorno>}

4.3 Comentarios, espacios en blanco y saltos de línea

Comentarios
Todo texto que se encuentre a la derecha del símbolo % no es procesado,
de esta forma se pueden agregar los comentarios dentro de un documento
AT X.
L E

Espacios en blanco y saltos de línea


En una secuencia de espacios en blanco o de saltos de línea, L AT X tiene
E
en cuenta solo el primer espacio en blanco o el primer salto de línea.

4.4 Símbolos especiales

Símbolos especiales
Los siguientes símbolos (entre otros) no se pueden obtener directamente,
es necesario especicarlos mediante comandos:

\ { } $ % & # _
27

Tabla de símbolos especiales más comunes

Símbolo Comando Símbolo Comando

\ \textbackslash & \&


{ \{ } \}
_ \_ $ \$
% \% # \#

4.5 Tilde, diéresis, circunejo y virgulilla

Dado que L AT X procesa archivos escritos con ASCII 7, los símbolos con
E
tilde, diéresis, circunejo o virgulilla no se pueden obtener directamente,
para esto existen unos comandos especiales, como por ejemplo: para la á
puede usarse \'a o \{'a}.

Símbolos con tilde, diéresis, circunejo o virgulilla

Símbolo Comando Símbolo Comando

á \'a o \{'a} ä \"a o \"{a}


é \'e o \'{e} â \^a o \^{a}
í \'i o \{'i} ñ \~n o \~{n}
ó \'o o \{'o} Ñ \~N o \~{N}
ú \'u o \{'u}

Una herramienta importante para los latinos


Los comandos mostrados en la tabla previa caen en desuso si se utiliza una
herramienta especialmente diseñada para latinos (ver sec. 9), la cual debe
invocarse desde nuestro archivo tex mediante

\usepackage[latin1]{inputenc}
28

5 Estructura de los documentos LATEX


5.1 Clases de documentos básicos

article Estilo artículo, documentos cortos.

book Estilo libro, documentos más largos que contienen capí-


tulos.

report Estilo reporte o informe técnico.

letter Estilo carta.

slides Estilo diapositivas.

5.2 Estructura básica de un documento


La estructura básica de un documento será de esta forma:

\documentclass[(
<opciones >]{<estilo >}
< título >, < autor >, < fecha >
Preámbulo
< declaraciones: paquetes >

\begin{document}
( %(inicio documento)
< comandos especiales : \maketitle >
Documento
< Cuerpo del documento >

\end{document} %(fin documento)

5.3 Ejemplo de un documento LATEX


El documento obtenido con el siguiente código es de la clase article y
puede apreciarse en la gura 1.34.

\documentclass{article}
\usepackage[latin1]{inputenc}
\author{A. U. Tor}
\title{Primer Documento}
\begin{document}
\maketitle
\Éste es mi primer documento escrito en \LaTeX.
\end{document}
29

Fig. 1.34

6 Clases de documentos básicos

6.1 La clase article

\documentclass[(
<opciones >]{article}
< declaraciones: paquetes, comandos >
Preámbulo
< título >, < autor >, < fecha >

\begin{document}

\maketitle

\begin{abstract}...\end{abstract}




Documento \section{...}
\subsection{...}





\subsubsection{...}

\end{document}
30

Comandos importantes en el estilo article

\maketitle Hace que se produzcan las líneas para el tí-


tulo, autor y fecha. Debe ubicarse después de
\begin{document}, si se omite, no se generan di-
chos campos.

\date Se imprime la fecha vigente del computador, o el


valor que se ingrese al campo obligatorio, si se
desea que no aparezca se debe escribir \date{ }.
\thanks{...} Se puede utilizar en \title, \author, \date, pro-
duce notas al pie de página con la información del
autor.

\begin{abstract} En este entorno se coloca el resumen del artículo


. . . \end{abstract} y debe ubicarse después de \maketitle.
\section{...}, Secciones, subsecciones, etc., las cuales son nume-
\subsection{...}, radas automáticamente.
etc.

Ejemplo de un documento escrito en el estilo article


El documento que se obtiene con el siguiente código puede apreciarse en
la gura 1.35.

\documentclass{article}
\usepackage[latin1]{inputenc}
\title{La clase article en \LaTeX}
\author{A. U. Tor \thanks{Catedrático, UNP,
autor@unp.edu.pe}}
\date{}

\begin{document}

\maketitle

\begin{abstract}
En este documento se exhibirán las características
más importantes de un artículo escrito en \LaTeX.
\end{abstract}
31

\section{Artículo en \LaTeX}
Los artículos son la clase de documentos \LaTeX\ más
ampliamente utilizados, dada la sencillez en su creación.

\subsection{Estructura de un artículo}
Este tipo de documento se puede dividir en dos partes, los
campos de identificación: título, autor y fecha. Y
el cuerpo del documento, en el cual el texto pertenece a
una de las siguientes unidades divisionales: resumen,
secciones, subsecciones, parágrafos, subparágrafos,
etc.

\end{document}

6.2 La clase book

\documentclass[(
<opciones >]{book}
< declaraciones: paquetes, comandos >
Preámbulo
< título >, < autor >, < fecha >

\begin{document}
\maketitle



\frontmatter




\mainmatter





 \chapter{...}

Documento

 \section{...}
\subsection{...}





 \appendix




\backmatter

\end{document}
32

Fig. 1.35 Primera página generada con la clase article.


33

Comandos importantes en el estilo book

\maketitle Fuerza a que se produzcan las líneas para el título,


autor y fecha. Al omitirlo no se generará la página
del título.

\frontmatter Apertura del libro, se presenta todo aquel conte-


nido que no tenga que ver con el tema central tra-
tado en el libro: prólogo, agradecimientos, tabla
de contenido, derechos de autor, índice de guras,
índice de tablas, etc. La numeración se realiza uti-
lizando numeración romana.

\mainmatter Contiene la parte central del documento en la que


se desarrolla el tema tratado en el libro. Aquí tam-
bién se ubican los apéndices, mediante el coman-
do \appendix, los cuales, después de ingresarse
como capítulos, son automáticamente numerados
con las letras mayúsculas A, B, C, . . .

\chapter{...}, Capítulos, secciones, etc., las cuales corresponden


\section{...}, a la parte central y son numeradas automática-
etc. mente.

\backmatter Es el cierre del documento, contiene el índice al-


fabético, bibliografía, conclusiones, reconocimien-
tos, información editorial, etc. Los capítulos no
son numerados.

Ejemplo de un documento escrito en el estilo book


El documento que se obtiene con el siguiente código puede apreciarse en
las guras 1.36, 1.37, 1.38, 1.39 y 1.40.

\documentclass{book}
\usepackage[latin1]{inputenc}
\title{La clase book en \LaTeX}
\author{A. U. Tor
\thanks{Catedrático, UNP, autor@unp.edu.pe}}
\date{}

\begin{document}
34

\maketitle

\frontmatter

\chapter{Prólogo}

La clase book facilita la digitación de libros de alta


calidad.

\tableofcontents

\mainmatter

\chapter{Libro en \LaTeX}
Los libros son la clase de documentos \LaTeX\ más
completa.

\section{Estructura de un libro}
Este tipo de documento se puede dividir en tres partes,
la apertura: prólogo, agradecimientos, tabla de
contenidos, etc. La parte central del documento, en la
que se desarrolla el tema tratado y el texto pertenece a
una de las siguientes unidades divisionales: capítulos
secciones, subsecciones, etc. Y el cierre del documento
que contiene la bibliografía, conclusiones,
recomendaciones, etc.

\backmatter

\begin{thebibliography}{CM}
\bibitem{Ar}
Aranda, E.
CURSO DE LATEX.
Departamento de Matemáticas, E.T.S. Ingenieros
Industriales, Universidad de Castilla, La Mancha.
(2008).
\end{thebibliography}

\end{document}
35

6.3 La clase report


La clase report es similar a la clase book, aunque imprime por una sola
cara y tiene disponible el entorno abstract para generar el resumen en
una página independiente.

\documentclass[(
<opciones >]{report}
< declaraciones: paquetes, comandos >
Preámbulo
< título >, < autor >, < fecha >

\begin{document}


 \maketitle
 \chapter{...}




Documento \section{...}
\subsection{...}





 \appendix

\end{document}

Comandos importantes en el estilo report

\maketitle Fuerza a que se produzcan las líneas para el título,


autor y fecha. Al omitirlo no se generará la página
del título.

\chapter{...}, Capítulos, secciones, etc., las cuales corresponden


\section{...}, a la parte central y son numeradas automática-
etc. mente.

Ejemplo de un documento escrito en el estilo report


El documento que se obtiene con el siguiente código puede apreciarse en
las guras 1.41, 1.42, 1.43, 1.44, 1.45 y 1.46.

\documentclass{report}
\usepackage[latin1]{inputenc}
\title{La clase report en \LaTeX}
\author{A. U. Tor
\thanks{Catedrático, UNP, autor@unp.edu.pe}}
\date{}
36

Fig. 1.36 Portada generada con la clase book.


37

Fig. 1.37 Página del prólogo generada con la clase book.


38

Fig. 1.38 Página de la tabla de contenidos generada con la clase book. El


inconveniente del título en inglés se supera usando el paquete babel (ver
sección 8).
39

Fig. 1.39 Página del primer capítulo generada con la clase book. El incon-
veniente del título en inglés se supera usando el paquete babel (ver sección
8)
40

Fig. 1.40 Página de la bibliografía generada con la clasebook. El inconve-


niente del título en inglés se supera usando el paquete babel (ver sección
8)
41

\begin{document}

\maketitle

\begin{abstract}

La clase report es similar a la clase book, aunque imprime


por una sola cara y tiene disponible el entorno abstract
para generar el resumen en una página independiente.

\end{abstract}

\chapter*{Prólogo} %(El * evita la palabra Chapter)

La clase report facilita la digitación de reportes de


alta calidad.

\tableofcontents

\chapter{Reporte en \LaTeX}
Los reportes son la clase de documentos \LaTeX\ más
completa.

\section{Estructura de un reporte}
Este tipo de documento se puede dividir en tres partes,
la apertura: prólogo, agradecimientos, tabla de
contenidos, etc. La parte central del documento, en la
que se desarrolla el tema tratado y el texto pertenece a
una de las siguientes unidades divisionales: capítulos
secciones, subsecciones, etc.

\begin{thebibliography}{CM}

\bibitem{Ar}
Aranda, E.
CURSO DE LATEX.
Departamento de Matem\'{a}ticas, E.T.S. Ingenieros
Industriales, Universidad de Castilla, La Mancha.
(2008).
42

\end{thebibliography}

\end{document}

6.4 La clase letter


La clase letter sirve para escribir cartas.

\documentclass{letter}
\begin{document}
\address{dirección del remitente}


Preámbulo \signature{nombre y rma del remitente}
\date{fecha deseada}(por defecto \today)

\begin{letter}
\opening{apertura, saludo}




{Contenido}




\closing{cierre, despedida}

Carta
\cc{copias a: }(opcional)

\encl{material adjunto}(opcional)





\ps{nota o dato posterior}(opcional)

\end{letter}
\end{document}

Ejemplo de un documento escrito en el estilo letter


El documento que se obtiene con el siguiente código puede apreciarse en
la gura 1.47.

\documentclass{letter}
\usepackage[latin1]{inputenc}

\begin{document}

\address{
Revista Universalia \\
43

Fig. 1.41 Portada generada con la clase report


44

Fig. 1.42 Página del resumen generada con la clase report. El inconve-
niente del título en inglés se supera usando el paquete babel (ver sección
8)
45

Fig. 1.43 Página del prólogo generada con la clase report.


46

Fig. 1.44 Página de la tabla de contenidos generada con la clase report.


El inconveniente del título en inglés se supera usando el paquete babel
(ver sección 8)
47

Fig. 1.45 Página del primer capítulo generada con la clase report. El
inconveniente del título en inglés se supera usando el paquete babel (ver
sección 8)
48

Fig. 1.46 Página de la bibliografía generada con la clase report. El in-


conveniente del título en inglés se supera usando el paquete babel (ver
sección 8)
49

Universidad Nacional de Piura}


\signature{
E. Ditor \\
Editor}

\begin{letter}{
Dr. Donald Knuth \\
Departamento de Ciencias de la Computación \\
Universidad de Stanford \\
EEUU}

\opening{Estimado señor:}
El Comit\'{e} Editor de la Revista Universalia de
la UNP, teniendo en cuenta su experiencia
y su conocimiento sobre el tema, le solicita
muy comedidamente hacer una evaluación del
artículo titulado ``Análisis de la taza del
aprendizaje de \LaTeX\ en Piura''.
Para cumplir con el cronograma del n\'{u}mero de
éste año, le solicito comedidamente entregar la
evaluación antes de finalizar el año en curso.

\closing{Atentamente,}

\cc{
Departamento de Publicaciones, Universidad Nacional de
Piura.}
\encl{
Artículo para arbitraje titulado:
``Análisis de la taza del aprendizaje
de \LaTeX\ en Piura'' en formato pdf.}
\ps{
P.D. En el documento enviado se han
eliminado los datos de los autores y las
instituciones a las que pertenecen.}

\end{letter}

\end{document}
50

Fig. 1.47 Carta generada con la clase letter.


51

6.5 La clase slides


La clase slides sirve para elaborar transparencias. La numeración es con-
secutiva en la parte inferior derecha. En esta clase no se utilizan los co-
mandos \end{chapter}, \section, \pagestyle, \thispagestyle, ni los
entornos table y figure. Lo demás se puede utilizar libremente.

\documentclass{(slides}
< declaraciones: paquetes, comandos >
Preámbulo
< título >, < autor >, < fecha >

\begin{document}

\begin{slides} n
Documento contenido de las diapositivas

\end{slides}
\end{document}

Ejemplo de un documento escrito en el estilo slides


El documento que se obtiene con el siguiente código puede apreciarse en
la gura 1.48.

\documentclass{slides}
\usepackage[latin1]{inputenc}

\title{La clase slides en \LaTeX}


\author{A. U. Tor}

\begin{document}

\begin{slide}
\maketitle
\end{slide}

\begin{slide}{Estructura de las diapositivas}

Las diapositivas usualmente se imprimen o fotocopian en


transparencias para luego ser proyectadas en una pantalla.
52

Producir diapositivas agradables requiere de un formato


visual, lo que significa que \LaTeX\ no es del todo
adecuado para esto. He aquí algunas razones por las
cuales debería usar \LaTeX\ para elaborar sus
diapositivas:

\begin{itemize}
\item Si están basadas en un documento proveniente de
\LaTeX.
\item Si sus diapositivas tienen grana cantidad de
fórmulas matemáticas.
\item Si no desea hacer diapositivas a costo de aprender a
usar otro sistema.
\end{itemize}
\end{slide}

\begin{slide}
\centering{MUCHAS GRACIAS} % (centra el texto)
\end{slide}

\end{document}

7 Paquetes

Un paquete (en inglés package ) es un conjunto de macros (instrucciones de


TEX o L AT X) que permiten agregar nuevos recursos y utilizar mejor los
E
existentes. La sintaxis para invocar un paquete es la siguiente

\usepackage[<opciones >]{<nombre >}

Los paquetes propiamente dichos son archivos con extensión sty. Algu-
nos paquetes son muy pupulares y tienen un estatus semi-ocial pero no
vienen instalados en implementaciones corrientes. El usuario debe apren-
der a instalarlos, lo cual depende tanto de la plataforma computacional
utilizada como de la implmentación local.
53

Fig. 1.48 Transparencia generada con la claseslides. El inconveniente de


la orientación se supera usando el paquete geometry (ver sección 10)
54

Fig. 1.49 Transparencia generada con la claseslides. El inconveniente de


la orientación se supera usando el paquete geometry (ver sección 10)
55

Fig. 1.50 Transparencia generada con la claseslides. El inconveniente de


la orientación se supera usando el paquete geometry (ver sección 10)
56

7.1 Paquetes estándar más utilizados

amsmath, Utilizados para la edición de textos, manejo de


amssymb, símbolos, teoremas y sus respectivas demostracio-
amsthm nes.

geometry Proporciona una forma simple e intuitiva de ajus-


tar los márgenes, además permite variar libremen-
te el tamaño y la orientación del papel.

babel Utilizado para generar documentos en idiomas dis-


tintos al inglés.

inputenc Utilizado para obtener caracteres no pertenecien-


tes al conjunto ASCII.

graphicx Es utilizado para realizar la inclusión de grácas.

subgure Permite introducir guras con más de un gráco,


y pies de guras personalizados.

hyperref Permite generar enlaces activos para las referen-


cias, notas al pie, capítulos, secciones, etc. en el
índice general, así como marcadores.

color Permite la inclusión de textos en color y colocar


fondos coloreados.

multicol Permite escribir un documento a dos o más colum-


nas.

PSTricks Se utiliza para la creación, manipulación y trans-


formación de guras geométricas.

fancyhdr Se utiliza para controlar complemente el conteni-


do y la apariencia de los encabezados y pies de
página.

fancychap Permite cambiar la presentación de la primera pá-


gina para los capítulos.

fancybox Permite la inclusión de caja con bordes coloreados


y decorados.

colortbl Permite colorear las las, columnas o casillas de


una tabla.
57

longtable Permite extender tablas por dos o más páginas.

caption Permite manipular la apariencia de los epígrafes o


rótulos de la tablas y grácas.

makeidx Permite generar automáticamente índices alfabé-


ticos y temáticos.

Todos los paquetes previamente mencionados son distribuidos gratuita-


mente por la CTAN (ver subsección 1.5) incluyendo un respectivo manual;
no obstante en las dos secciones siguientes se hará una breve mención de
los paquetes babel, inputenc y geometry, debido a su inmediato reque-
rimiento.

8 El paquete babel
El paquete babel permite generar textos en diferentes idiomas. Dado un
idioma en particular se tiene la escritura en dicho idioma de los títulos de la
tabla de contenidos, lista de tablas, lista de guras, capítulos, bibliografía,
etc. Así como la partición automática en patrones silábicos respetando las
normas del idioma elegido.
La sintaxis de este paquete es la siguiente:

\usepackage[<idioma>, <options>]{babel}

Por ejemplo, en este trabajo se ha utilizado el idioma español y una


opción para que los párrafos de inicio de capítulo, sección o subsección no
presenten sangría de primera línea. Esto se ha conseguido digitando

\usepackage[spanish,es-noindentfirst]{babel}
en el preámbulo.
Para cambiar de idioma en cualquier parte del documento se utiliza
el comando \selectlanguage{<idioma>}, y para saber el idioma que se
\languagename.
encuentra en uso se utiliza el comando

9 El paquete inputenc
El paquete inputenc permite el uso directo de caracteres que no pertene-
cen al conjunto ASCII. La sintaxis de este paquete es la siguiente:

\usepackage[<options>]{inputenc}
58

La opción recomendada para nuestro idioma es latin1. Así pues, en el


preámbulo de nuestro documento deberemos escribir

\usepackage[latin1]{inputenc}

tras lo cual, por ejemplo, ya no es preciso utilizar el código \'{a} para la


a tildada sino que directamente digitamos á.
Para digitar este trabajo se ha utilizado este paquete, por ese motivo
se utilizan directamente los símbolos á, é, í, ó, ú, ñ, ü, Á, É etc. sin recurrir
al código mencionado en la subsección 4.5.

10 El paquete geometry
El paquete geometry proporciona una forma simple e intuitiva de ajustar
los parámetros de colocación del texto en un documento; además, nos
permite variar libremente el tamaño y orientación del papel, siendo muy
útil su empleo para la producción de posters (tamaño DIN-A0), pequeños
folletos, etc.
El ajuste de los diferentes parámetros debe hacerse con argumentos
optativos en la carga del paquete con \usepackage{geometry}. Así por
ejemplo, con:

\usepackage[papersize={841mm,1189mm}8 ,lmargin=2cm,
rmargin=2cm,tmargin=2cm,bmargin=2cm]{geometry}
se deniría un tamaño de papel DIN-A0 (841mm × 1189mm), y se ajus-
tarían los márgenes izquierdo, derecho, superior e inferior a 2cm, respec-
tivamente. A modo de otro ejemplo, con

\usepackage[landscape]{geometry}
se cambiaría la orientación del papel, a horizontal.

11 Formato de página
11.1 Parámetros del formato de página
\headheight Altura del encabezado.

\headsep Espacio entre la base del encabezado y el tope del cuerpo del
documento.
8 Para el caso de tamaños estandarizados como el tamaño DIN-A4 puede sustituirse
papersize={210mm,297mm} por a4paper.
59

\marginparsep Ancho de las notas al margen.

\marginparwidth Espacio entre el cuerpo del documento y las notas al


margen.

\footskip Distancia vertical entre la base del cuerpo del documento y la


base del footer
9.

11.2 Modicación de los parámetros del formato de página


Los parámetros del formato de página se modican mediante:

\setlength{\<parametro>}{<longitud>}

Así, por ejemplo, para modicar la distancia vertical entre la base del
cuerpo del documento y la base del footer habría que escribir en el preám-
bulo:

\setlength{\footskip}{1cm}

12 Edición de texto
12.1 Tipos
AT X elige el tamaño y tipo de las fuentes usadas según una estructura
L E
lógica. Para cambiar directamente se pueden usar las instrucciones siguien-
tes

Comando Tipo Abrev.

\textrm{<texto >} Letra romana \rm


\textit{<texto >} Letra itálica \it
\texttt{<texto >} Máquina de escribir \tt
\textbf{<texto >} Letra negrita \bf
\textsf{<texto >} Letra sans serif \sf
\textsl{<texto >} Letra inclinada \sl
\textsc{<texto >} Letra versalita \sc
9 Por lo general el footer es la línea donde se ubica la numeración, siempre que la
numeración esté en la parte inferior del documento.
60

Cada uno de los tipos de fuentes básicos tiene su modo enfático, el cual
se obtiene por medio de comando

\emph{<texto >}

A continuación se muestra una tabla que contiene ejemplos acerca de


los resultados obtenidos al usar el modo enfático en los tipos de fuentes
básicos.

El modo enfático. El modo enfático.

El modo enfático. \emph{El modo enfático}.

El modo enfático. El modo enfático.

\textit{El modo enfático. \emph{El modo enfático}.}

El modo enfático. El modo enfático.


\texttt{El modo enfático. \emph{El modo enfático}.}

El modo enfático. El modo enfático.


\textbf{El modo enfático. \emph{El modo enfático}.}

El modo enfático. El modo enfático.


\textsf{El modo enfático. \emph{El modo enfático}.}

El modo enfático. El modo enfático.

\textsl{El modo enfático. \emph{El modo enfático}.}

El modo enfático. El modo enfático.

\textsc{El modo enfático. \emph{El modo enfático}.}

El comando \textnormal{<texto >} devuelve a la fuente por defecto.


También es posible el uso de cualquier otra fuente que se tenga instalada.

12.2 Tamaños

El tamaño de la fuente depende de la seelcción por defecto. Los comandos


para modicarlo son
61

Comando Tamaño

\normalsize Letra normal

\small Letra pequeña

\footnotesize Letra más pequeña


\scriptsize Letra muy pequeña

\tiny La letra más pequeña

\large Letra grande


\Large Letra más grande
\LARGE Letra muy grande
\huge Letra enorme
\Huge La letra más grande
Estos comandos afectan al texto que sigue a partir de su aparación, o
al área delimitada entre paréntesis. Por ejemplo

Estas palabras aparecerán en Estas palabras aparecerán en letra


{\tiny letra pequeña} pequeña

Para ajustar automáticamente el espacio entre renglones, de acuerdo


con el tamaño de letra en uso, se cuenta con el comando \par. Un ejemplo
de su uso es el siguiente

{\Large ``Todo saber tiene Todo saber tiene de


de ciencia lo que tiene de ciencia lo que tiene de
matemática'', Poincaré} matemática, Poincaré

Todo saber tiene de


{\Large ``Todo saber tiene
de ciencia lo que tiene de ciencia lo que tiene de
matemática'', Poincaré \par}
matemática, Poincaré
62

12.3 Formato de texto


Texto centrado
El entorno center hace que el texto aparezca centrado. Si el texto fuera
muy largo, L AT X se ocupa de partirlo en varias líneas, y si se quiere indicar
E
el salto de línea se utiliza el comando \\.

\begin{center}
El ingenioso hidalgo\\ El ingenioso hidalgo
D. Quijote de la Mancha D. Quijote de la Mancha
\end{center}

Alineación a izquierda o derecha


De forma similar al entorno center existen los entornos flushright y
flushleft para alineación del texto a derecha e izquierda, respectivamen-
te.

\begin{flushleft}
Este texto aparecerá\\ Este texto aparecerá
alineado por su\\ alineado por su
parte izquierda parte izquierda
\end{flushleft}

\begin{flushright}
Este texto aparecerá\\ Este texto aparecerá
alineado por su\\ alineado por su
parte derecha parte derecha
\end{flushright}

Téngase presente que el uso del comando \\, en los tres casos previos,
es opcional y depende de la extensión que queramos asignar a cada renglón
del texto en questión.

Citas textuales y poemas


Existen otros entornos para resaltar partes de un texto, como citas textua-
les o poemas, de cierta longitud. Los entornos que nos permiten hacerlo
son: quote, quotation y verse. A continuación se da una breve descrip-
ción de estos entornos.
63

El entorno quote es adecuado para una cita textual no larga.

... B. Russell escribió: ... B. Russell escribió:


\begin{quote}
Las matemáticas pueden
Las matemáticas pueden ser
ser denidas como aquel
definidas como aquel tema
tema en el cual ni sabe-
en el cual ni sabemos nunca
mos nunca lo que decimos
lo que decimos ni si lo que
ni si lo que decimos es
decimos es verdadero.
verdadero.
\end{quote}

El entorno quotation es más apropiado para citas largas. Nótese la


diferencia con respecto al anterior.

... B. Russell escribió: ... B. Russell escribió:


\begin{quotation}
Las matemáticas pue-
Las matemáticas pueden ser
den ser denidas como
definidas como aquel tema
aquel tema en el cual ni
en el cual ni sabemos nunca
sabemos nunca lo que de-
lo que decimos ni si lo que
cimos ni si lo que decimos
decimos es verdadero.
es verdadero.
\end{quotation}

Para escribir poesía disponemos del entorno verse, donde cada verso
es separado con el comando \\.

He aquí un poema
\begin{verse}
Voy a la casa donde no viviremos,\\
miro los muros que no levantarán,\\
huelo las bugambilas que no crecerán,\\
y con los hijos que jamás tendremos,\\
salgo a ver el mar ...\\
donde se han hundido tantas cosa nuestras.\\
\rightline{\textsc{(M. Scorza)}}
\end{verse}

El código del cuadro anterior genera el siguiente texto:


64

He aquí un poema

Voy a la casa donde no viviremos,


miro los muros que no levantarán,
huelo las bugambilias que no crecerán
y con los hijos que jamás tendremos
salgo a ver el mar ...
donde se han hundido tantas cosa nuestras.
(M. Scorza)

Interlineado, sangría y espacios


El espacio entre líneas del texto se puede cambiar en el preámbulo con la
orden

\renewcommand{\baselinestretch}{<número >}
donde número se reere a un factor de interlineado, que por defecto es 1.
Por ejemplo, si se pone:

\renewcommand{\baselinestretch}{2},
se estará escribiendo a doble espacio. Es posible jar número a un valor
decimal.
El espacio entre párrafos del texto se puede cambiar en el preámbulo
con la orden

\setlength{\parskip}{<longitud >}
donde longitud se reere a una medida. Por ejemplo si se pone:

\setlength{\parskip}{2cm}
se estará estableciendo un espacio de 2cm entre párrafos del texto.
AT X introduce un sangrado de forma automá-
Al inicio de un párrafo L E
tica, que puede ser evitado con el comando \noindent.
La longitud del sangrado del texto se puede cambiar en el preámbulo
con la orden

\setlength{\parindent}{<longitud >}
donde longitud se reere a una medida, como en el caso previo.
El salto de línea sin provocar un cambio de párrafo puede llevarse a
cabo con uno de los siguientes comandos \newline o \\[salto ]. Donde el
65

argumento opcional salto se reere a la distancia vertical adicional a la que


debe situarse la siguiente línea. Si tal línea no queda en la misma página,
AT X ignorará dicha longitud. La versión
L E \\* indica que la línea que se
inicia después del comando no debe pasar a la página siguiente.
Para aumentar la distancia entre párrafos pueden usarse los coman-
dos \smallskip, \medskip y \bigskip, el último de los cuales aproxima-
damente supondría dejar una línea en blanco, mientras que los otros se
reeren a la mitad y cuarta parte de éste, respectivamente.
Para poner distancias entre palabras podemos usar alguno de los co-
mandos siguientes: \ (espacio entre palabras), \quad (longitud de una
M) y \qquad (longitud de dos M). También se cuenta con los llamados
micro-espacios que son producidos por los comandos: \, (un micro-espacio
equivalente a un sexto de un \quad), \; (dos micro-espacios), \: (tres
micro-espacios) y \! (un micro-espacio negativo).
Y los siguientes comandos introducen espacios tanto horizontales (si
van en un texto normal) como verticales (si van entre párrafos), \enspace
(espacio de longitud medio M), \thinspace (espacio de longitud 0.16667
M) y \negthinspace (espacio negativo de longitud 0.16667 M).

Notas a pie de página


Las notas a pie de página se generan con el comando \footnote{<texto
de la nota >} en la posición del texto en la que queremos que aparezca la
marca de la nota.
El espacio entre entre el texto y el pie de página se puede cambiar en
el preámbulo con la orden

\setlength{\skip\footins}{<longitud >}
donde longitud se reere a una medida. Por ejemplo si se pone:

\setlength{\skip\footins}{2cm}
se estará estableciendo un espacio de 2cm entre entre el texto y el pie de
página.
El espacio entre entre pies de página se puede cambiar en el preámbulo
con la orden

\setlength{\footnotesep}{<longitud >}
donde longitud se reere a una medida, como en el caso previo.
La línea que separa los pies de página del texto también se puede
AT X usa por defecto para elaborar
cambiar en el preámbulo. El código que L E
dicha línea es
66

\newcommand{\footnoterule}{
\vspace*{-3pt}
\noindent\rule{2in}{0.4pt}
\vspace*{2.6pt}
}

Para modicar la línea en cuestión debemos escribir, por ejemplo, en


el preámbulo

\renewcommand{\footnoterule}{
\vspace*{-3pt}
\noindent\rule{10in}{2pt}
\vspace*{2.6pt}
}

lo que aumentaría el largo y grosor de dicha línea (Note que al inicio del
primer código se usa \newcommand, mientras que al inicio del segundo,
\renewcommand).

División silábica
Cuando la inclusión de una palabra supera la longitud de línea y su ex-
AT X introduce una separación silábica
clusión la hace demasiado corta, L E
según un algoritmo que depende del idioma en que esté trabajando. En
caso de que el algoritmo no funcione correctamente, es posible indicar al
compilador los posible lugares en los que se puede dividir dicha palabra.
El comando a utilizar es \-. Por ejemplo, reemplazando la palabra

incomible por in\-co\-mi\-ble


Este comando actúa localmente sobre la palabra en cuestión, pero si que-
remos proporcionar al compilador información sobre cómo dividir ciertas
palabras en todo el texto, es posible usar, en el preámbulo, la orden

\hyphenation{<palabra1 palabra2 ...>}

con la división correspondiente, en la siguiente forma


10

\hyphenation{ma-ter-ni-dad al-bo-ro-to}.
Las palabras se separan con espacios en blanco, sin signos de puntua-
ción.
10 Lamentablemente sólo la primera forma admite tildes, virgulillas, etc.
67

Evitar la separación de palabras


Si no se desea que en un texto dos palabras seguidas aparezcan en líneas
distintas, como en el texto siguiente

Los nombre propios como


Los nombre propios como A.
A. Einstein no deberían
Einstein no deberían aparecer en
aparecer en líneas
líneas separadas.
separadas.

Los nombre propios como


Los nombre propios como
A.~Einstein no deberían
A. Einstein no deberían aparecer
aparecer en líneas
en líneas separadas.
separadas.

13 Matemática
13.1 Modos texto y display
TEX fue especialmente diseñado para producir documentos de carácter
cientíco con un contenido importante de matemática. Precisamente, es
AT X
la calidad en la escritura de tipografía matemática donde TEX y L E
marcan la diferencia.
AT X divide la introducción de tipografía matemática según
En esencia L E
se haga en la misma línea del párrafo en que se está escribiendo (modo
texto ), o en párrafos separados (modo display ).
La tipografía matemática escrita en modo texto, ha de ser introducida
entre $ y $, mientras que para hacerlo modo display, lo más común es
encerrar la expresión entre $$ y $$ (aunque, equivalentemente, también
puede ser entre \[ y \]).
Por otra parte, puesto que es muy frecuente el referenciar una fórmula
matemática en un texto, el entorno equation, que esencialmente tiene el
mismo funcionamiento que $$, añade además un número a la ecuación para
futuras referencias.

Ejemplo
El siguiente ejemplo muestra los funcionamientos de los modos texto y
display.
68

Sea $\{ \tilde\gamma_{ij} \}_{0\leq


i+j\leq 2n}$ una sucesión de números
reales tales que $\tilde\gamma_{00}>0$.
Consideramos ${\cal C}[t_1,t_2]$ el
conjunto de polinomios complejos
en $t_1$ y $t_2$ de grado $2n$ y
definimos $\tilde\varphi:{\cal C}
[t_1,t_2]\longrightarrow\mathbb{C}$ el
funcional lineal complejo que interpola
a la sucesión $\tilde\gamma_{ij}$, es
decir $$\tilde\varphi(t_1^i t_2^j) =
\tilde\gamma_{ij}.$$

Sea {γ̃ij }0≤i+j≤2n una sucesión de números reales


tales que γ̃00 > 0. C[t1 , t2 ] el conjun-
Consideramos
to de polinomios complejos en t1 y t2 de grado 2n
y denimos ϕ̃ : C[t1 , t2 ] −→ C el funcional lineal
complejo que interpola a la sucesión γ̃ij , es decir

ϕ̃(ti1 tj2 ) = γ̃ij .

Los comandos \textstyle y \displaystyle

Determinadas construcciones matemáticas adquieren un tamaño distinto


según es escriban en modo texto o display. Por ejemplo:

La fórmula $\sum_{k=1}^{n}k Pn n(n+1)


= \frac{n(n+1)}{2}$ es bien La fórmula k=1 k= 2
es
bien conocida.
conocida.

La fórmula

La fórmula $$\sum_{k=1}^{n}k n
X n(n + 1)
= \frac{n(n+1)}{2}$$ es bien k=
2
conocida. k=1

es bien conocida.

La primera ha sido escrita en modo texto y la segunda en modo display.


69

Si se quiere obtener resultados distintos en uno u otro modo debe usarse


los comandos \textstyle (en modo display) o \displaystyle (en modo
texto). Así:

La fórmula n
n(n + 1)
$\displaystyle\sum_{k=1}^{n}k
X
La fórmula k= es
= \frac{n(n+1)}{2}$ es bien k=1
2
conocida. bien conocida.

La fórmula La fórmula

$$\textstyle\sum_{k=1}^{n}k Pn n(n+1)
k=
= \frac{n(n+1)}{2}$$ es bien k=1 2

conocida. es bien conocida.

13.2 Construcciones diversas

Téngase presente que algunas de las construcciones pueden precisar los


paquetes

amsmath y amssymb.

Fracciones

$$ a b
+
\frac{\frac{a}{x-y}+\frac{b}{x+y}} x−y x+y

{1+\frac{a-b}{a+b}}
a−b
1+ a+b
$$

Matrices

$$
 
1 2 3
\left( \begin{array}{lll}  
1 & 2 & 3 \\4 & 5 & 6 \\7 & 8 & 9
 
 4 5 6 
\end{array}\right)
 
7 8 9
$$
70

$$  
\left( \begin{array}{ccc} 1 ··· n
1 & \cdots & n \\2 & \cdots & n+1 \\
 
 2 ··· n+1 
 
\vdots & \ddots & \vdots \\  .. . .

.

.
n & \cdots & 2n-1

 . . . 
\end{array}\right)
 
n ··· 2n − 1
$$

\begin{equation*}
\begin{matrix} 0 & 1\\1 & 0 \end{matrix}\qquad
\begin{pmatrix} 0 & -i\\i & 0 \end{pmatrix}\qquad
\begin{bmatrix} a & b\\c & d \end{bmatrix}\qquad
\begin{vmatrix} 0 & 1\\-1 & 0 \end{vmatrix}\qquad
\begin{Vmatrix} f & g\\e & v \end{Vmatrix}
\end{equation*}

   
−i

0 1 0 a b 0 1 f g
   
−1

1 0 i 0 c d 0 e v

Observe, en el último ejemplo, que el entorno alternativo equation*


no añade ninguna numeración a la ecuación.

Funciones a trozos

$$
\psi(x)=\begin{cases}
Ae^{ikx}+Be^{-ikx}, & \text{si $x=0$,}\\
De^{- kx}, & \text{si $x\neq 0$.}
\end{cases}
$$
(
Aeikx + Be−ikx , si x = 0,
ψ(x) =
De−kx , si x 6= 0.
71

Arriba y abajo

$$ a\stackrel{{\rm def}}{=} \alpha + \beta\quad


\stackrel{\beta \to 0}{\longrightarrow}
$$
def β→0
a = α+β −→

\begin{equation*}
\sum_{\substack{0\leq i\leq m\\0>j>n}}\phi(i,j)
\end{equation*}
X
φ(i, j)
0≤i≤m
0>j>n

\begin{equation*}
\sum^{\substack{0\leq i\leq m\\0>j>n}}\phi(i,j)
\end{equation*}
0≤i≤m
0>j>n
X
φ(i, j)

Adornos y operadores

abc
f \widetilde{abc} abc
c \widehat{abc}
←− −→
abc \overleftarrow{abc} abc \overrightarrow{abc}
abc \overline{abc} abc \underline{abc}
z}|{
abc \overbrace{abc} abc \underbrace{abc}
√ √
|{z}
abc \sqrt{abc} n
abc \sqrt[n]{abc}
f 0
f^\prime ~x \vec{x}

Números combinatorios

 
$${\n \choose k} = n n!
=
\frac{n!}{k!\,(n-k)!}$$ k k! (n − k)!
72

Fracciones generalizadas y continuas

El comando \genfrac se puede utilizar para producir fracciones per-


sonalizadas, con la sintaxis:

\genfrac{Delim.Izqdo}{Delim.Derecho}{GrosorLínea}
{Tamaño}{Numerador}{Denominador}
Para Tamaño, se puede elegir entre los valores0, 1, 2 y 3, que corres-
ponden respectivamente a \displaystyle, \textstyle, \scriptstyle y
\scripscriptstyle.

$$\genfrac{\{}{\}}{0pt}{}{ij}{k}=      
ij k1 ij k2 ij
g^{k1}\genfrac{[}{]}{0pt}{}{ij}{1} =g +g
+g^{k2}\genfrac{[}{]}{0pt}{}{ij}{2}$$ k 1 2

Las fracciones continuas se obtienen a través del comando \cfrac.

4 12
\frac{4}{\pi}=1+\cfrac{1^2}{2+ =1+
π 32
\cfrac{3^2}{2+ 2+
\cfrac{5^2}{2+\dotsb}}} 52
2+
2 + ···

Los comandos \genfrac y \cfrac son propios del paquete amsmath.

13.3 Texto en expresiones matemáticas


La instrucción \text{texto } se usa para incluir texto en modo matemático.
Éste comando se utiliza principalmente en los despliegues, ya que en el
discurso corriente el modo matemático está delimitado por los símbolos $.
$$\text{Para todo }\varepsilon >0
\text{ existe }\delta >0\text{ tal que
}|x-a|<\delta
\text{ implica }|f(a)-f(x)|<\varepsilon.$$

Para todo ε>0 existe δ>0 tal que |x−a| < δ implica |f (a)−f (x)| < ε.
73

13.4 Tipos de letra en modo matemático

$\mathrm{abc...}$ abcdefghijklmnopqrstuvwxyz
$\mathrm{ABC...}$ ABCDEFGHIJKLMNOPQRSTUVWXYZ
$\mathit{abc...}$ abcdefghijklmnopqrstuvwxyz
$\mathit{ABC...}$ ABCDEFGHIJKLMN OPQRSTUVWXYZ
$\mathsf{abc...}$ abcdefghijklmnopqrstuvwxyz
$\mathsf{ABC...}$ ABCDEFGHIJKLMNOPQRSTUVWXYZ
$\mathtt{abc...}$ abcdefghijklmnopqrstuvwxyz
$\mathtt{ABC...}$ ABCDEFGHIJKLMNOPQRSTUVWXYZ
$\mathbf{abc...}$ abcdefghijklmnopqrstuvwxyz
$\mathbf{ABC...}$ ABCDEFGHIJKLMNOPQRS . . . XYZ
$\mathcal{ABC...}$ ABCDEFGHIJ KLMN OPQRS . . . X YZ
$\mathfrak{abc...}$ abcdefghijklmnopqrstuvwxyz
$\mathfrak{ABC...}$ ABCDEFGHIJKLMNOPQRSTUVWXYZ
$\mathbb{ABC...}$ ABCDEFGHIJKLMNOPQRSTUVWXYZ

Téngase en cuenta que los tipos \mathfrak y \mathbb requieren del pa-
quete amssymb.

13.5 Símbolos matemáticos en negrilla


El comando \mathbf afecta solamente a las letras del alfabeto ordinario,
a los números y a las letras griegas mayúscula no inclinadas. El pquete
amsmath incluye el comando \pmb (o \boldsymbol) con los que se obtienen
los símbolos en negrita.

$$\text{Para todo } \pmb{varepsilon} >0


\text{ existe }\pmb{delta} >0\text{ tal
que }|x-a|<\pmb{delta}\text{ implica
}|f(a)-f(x)|<\pmb{varepsilon}.$$

Para todo ε>0 existe δ>0 tal que |x−a| < δ implica |f (a)−f (x)| < ε .
74

13.6 Tamaño de fuente en modo matemático

Para realizar el cambio del tamaño del texto matemático se puede utilizar
los modicadores del texto normal, pero con la precaución de que el modi-
cador aplicado debe ser llamado antes de ingresar a un modo matemático.

{\tiny $f_x:A\to\mathbb{R}^2$} fx : A → R2

{\small $f_x:A\to\mathbb{R}^2$} fx : A → R2
{\Large $f_x:A\to\mathbb{R}^2$} f x : A → R2
{\Huge $f_x:A\to\mathbb{R}^2$} fx : A → R2
13.7 Alineación de fórmulas

Para alinear fórmulas y/o separarlas en dos o más renglones el paque-


te amsmath dispone de una colección de sosticados entornos: multline,
gather, align, split, aligned, gatered y flalign.
Con cualquiera de estos entornos se puede usar el comando \intertext
para insertar renglones de texto en el despliegue. Solamente se puede usar
después de \\, y es especialmente útil con align, ya que preserva la ali-
neación.

multline
Se utiliza para dividir fórmulas, sin alinearlas, en dos o más renglones,
estos se separan con \\, el primer renglón aparece alineado a la izquier-
da, el último a la derecha y el resto centrados. Todo el texto recibe una
única numeración en el último renglón. El entorno multline* no produce
ninguna numeración.

\begin{multline}
(a+b)^3 = (a+b)(a+b)(a+b) \\
= (a^2 + 2ab + b^2)(a+b) \\
= (a+b)(a^2 + 2ab + b^2) \\
= a^3 + 3a^2b + 3ab^2 + b^3
\end{multline}
75

(a + b)3 = (a + b)(a + b)(a + b)


= (a2 + 2ab + b2 )(a + b)
= (a + b)(a2 + 2ab + b2 )
= a3 + 3a2 b + 3ab2 + b3 (1.1)

\begin{multline*}
(a+b)^3 = (a+b)(a+b)(a+b) \\
= (a^2 + 2ab + b^2)(a+b) \\
= (a+b)(a^2 + 2ab + b^2) \\
= a^3 + 3a^2b + 3ab^2 + b^3
\end{multline*}

(a + b)3 = (a + b)(a + b)(a + b)


= (a2 + 2ab + b2 )(a + b)
= (a + b)(a2 + 2ab + b2 )
= a3 + 3a2 b + 3ab2 + b3

gather

Con este entorno a diferencia de multline todos los renglones aparecen


centrados y para cada uno se genera una numeración. Usando el modi-
cador \notag se puede eliminar la numeración en renglones particulares.
Con la versión gather* no se produce numeración alguna.

\begin{gather}
(a+b)^3 = (a+b)(a+b)(a+b) \\
= (a^2 + 2ab + b^2)(a+b) \\
= (a+b)(a^2 + 2ab + b^2) \\
= a^3 + 3a^2b + 3ab^2 + b^3
\end{gather}
76

(a + b)3 = (a + b)(a + b)(a + b) (1.2)


2 2
= (a + 2ab + b )(a + b) (1.3)
2 2
= (a + b)(a + 2ab + b ) (1.4)
3 2 2 3
= a + 3a b + 3ab + b (1.5)

\begin{gather}
(a+b)^3 = (a+b)(a+b)(a+b) \\
= (a^2 + 2ab + b^2)(a+b) \notag\\
= (a+b)(a^2 + 2ab + b^2) \\
= a^3 + 3a^2b + 3ab^2 + b^3 \notag
\end{gather}

(a + b)3 = (a + b)(a + b)(a + b) (1.6)


2 2
= (a + 2ab + b )(a + b)
= (a + b)(a2 + 2ab + b2 ) (1.7)
3 2 2 3
= a + 3a b + 3ab + b

\begin{gather*}
(a+b)^3 = (a+b)(a+b)(a+b) \\
= (a^2 + 2ab + b^2)(a+b) \\
= (a+b)(a^2 + 2ab + b^2) \\
= a^3 + 3a^2b + 3ab^2 + b^3
\end{gather*}

(a + b)3 = (a + b)(a + b)(a + b)


= (a2 + 2ab + b2 )(a + b)
= (a + b)(a2 + 2ab + b2 )
= a3 + 3a2 b + 3ab2 + b3
77

align

Este entorno a diferencia de gather permite alinear las fórmulas con res-
pecto a un símbolo al cual es necesario colocar inmediatamente antes un &.
Los renglones se separan con \\. Todos los renglones aparecen numerados.
Con el modicador \notag se puede eliminar la numeración en renglones
particulares; con la versión align* no se produce numeración alguna.

\begin{align}
(a+b)^3 &= (a+b)(a+b)(a+b) \\
&= (a^2 + 2ab + b^2)(a+b) \\
&= (a+b)(a^2 + 2ab + b^2) \\
&= a^3 + 3a^2b + 3ab^2 + b^3
\end{align}

(a + b)3 = (a + b)(a + b)(a + b) (1.8)


2 2
= (a + 2ab + b )(a + b) (1.9)
2 2
= (a + b)(a + 2ab + b ) (1.10)
3 2 2 3
= a + 3a b + 3ab + b (1.11)

\begin{align}
(a+b)^3 &= (a+b)(a+b)(a+b) \notag \\
&= (a^2 + 2ab + b^2)(a+b) \\
&= (a+b)(a^2 + 2ab + b^2) \\
&= a^3 + 3a^2b + 3ab^2 + b^3 \notag
\end{align}

(a + b)3 = (a + b)(a + b)(a + b)


= (a2 + 2ab + b2 )(a + b) (1.12)
2 2
= (a + b)(a + 2ab + b ) (1.13)
3 2 2 3
= a + 3a b + 3ab + b
78

\begin{align*}
(a+b)^3 &= (a+b)(a+b)(a+b) \\
&= (a^2 + 2ab + b^2)(a+b) \\
&= (a+b)(a^2 + 2ab + b^2) \\
&= a^3 + 3a^2b + 3ab^2 + b^3
\end{align*}

(a + b)3 = (a + b)(a + b)(a + b)


= (a2 + 2ab + b2 )(a + b)
= (a + b)(a2 + 2ab + b2 )
= a3 + 3a2 b + 3ab2 + b3

split

Similar al entorno align, pero con la diferencia de que todo el despliegue


recibe un único número que aparece centrado verticalmente. Este entorno
debe estar bajo el alcance del entorno equation o align.

\begin{equation}
\begin{split}
(a+b)^3 &= (a+b)(a+b)(a+b) \\
&= (a^2 + 2ab + b^2)(a+b) \\
&= (a+b)(a^2 + 2ab + b^2) \\
&= a^3 + 3a^2b + 3ab^2 + b^3
\end{split}
\end{equation}

(a + b)3 = (a + b)(a + b)(a + b)


= (a2 + 2ab + b2 )(a + b)
(1.14)
= (a + b)(a2 + 2ab + b2 )
= a3 + 3a2 b + 3ab2 + b3
79

aligned
Sirve para construir bloques alineados independientes que pueden ser ubi-
cados unos al lado de otros, o de otro tipo de material (como paréntesis y
corchetes). Estos bloques aparecen centrados verticalmente, a menos que
se usen los argumentos opcionales t (tope) o b (base). Este entorno debe
estar bajo el alcance del entorno equation y con esto adquiere la numera-
ción de este entorno, para eliminar totalmente la numeración es necesario
utilizar el entorno equation*.

\begin{equation}
\begin{aligned}
a &= b + c + d \\
z &= x + y \\
m &= n
\end{aligned}
\qquad
\begin{aligned}
A &= B + C + D \\
Z &= X + Y
\end{aligned}
\qquad
\begin{aligned}
\phi &= \mu +\nu +\eta
\end{aligned}
\end{equation}

a=b+c+d
A=B+C +D
z =x+y φ=µ+ν+η (1.15)
Z =X +Y
m=n

\begin{equation*}
\begin{aligned}[t]
a &= b + c + d \\
z &= x + y \\
m &= n
\end{aligned}
..
.
80

.
.
.
\qquad
\begin{aligned}
\phi &= \mu +\nu +\eta
\end{aligned}
\end{equation*}

a=b+c+d A=B+C +D φ=µ+ν+η


z =x+y Z =X +Y
m=n

gathered
Sirve para construir bloques independientes cuyas fórmulas aparecen cen-
tradas horizontalmente que pueden ser ubicados unos al lado de otros, o de
otro tipo de material (como paréntesis y corchetes). Estos bloques aparecen
centrados verticalmente, a menos que se usen los argumentos opcionales
t (tope) o b (base). Este entorno debe estar bajo el alcance del entorno
equation y con esto adquiere la numeración de este entorno, para eliminar
totalmente la numeración es necesario utilizar el entorno equation*.

\begin{equation}
\begin{gathered}[t]
a &= b + c + d \\
z &= x + y \\
m &= n
\end{gathered}
\qquad
\begin{gathered}[t]
A &= B + C + D \\
Z &= X + Y
\end{gathered}[t]
\qquad
.
.
.
81

..
.
\begin{gathered}
\phi &= \mu +\nu +\eta
\end{gathered}
\end{equation}

a=b+c+d A=B+C +D φ=µ+ν+η (1.16)

z =x+y Z =X +Y
m=n

\begin{equation*}
\begin{gathered}[b]
a &= b + c + d \\
z &= x + y \\
m &= n
\end{gathered}
\qquad
\begin{gathered}[b]
A &= B + C + D \\
Z &= X + Y
\end{gathered}[b]
\qquad
\begin{gathered}
\phi &= \mu +\nu +\eta
\end{gathered}
\end{equation*}

a=b+c+d
z =x+y A=B+C +D
m=n Z =X +Y φ=µ+ν+η
82

align

El entorno flalign se usa como align para construir bloques alineados,


pero que añade espacio proporcional entre columnas, de manera que el
despliegue se imprime de extremo a extremo de la página. Para separar la
columnas se utilizan &. Cada una de las líneas del despliegue adquiere un
número, pero se puede usar el comando \notag para eliminar la numera-
ción de renglones particulares. La versión estrella (flalign*) no produce
numeración.

\begin{flalign}
a &= b + c & A &= B + C & \phi &= \mu + \nu + \eta\\
z &= x + y & Z &= X + Y \notag\\
m &= n
\end{flalign}

a=b+c A=B+C φ=µ+ν+η (1.17)

z =x+y Z =X +Y
m=n (1.18)

13.8 Uso del comando \intertext

El comando \intertext permite añadir líneas de texto en cualquiera de


los entornos de alineación, de tal manera que se preserva la alineación dada
por el entorno.

\begin{align}
\intertext{Dado que por la regla de la cadena se tiene la
igualdad}
(fg)^{\prime} &= f^{\prime}g + fg^{\prime}\\
\intertext{la cual se puede reescribir como}
fg^{\prime} &= (fg)^{\prime} - f^{\prime}g\\
\intertext{entonces se concluye que}
\int fg^{\prime} &= \int (fg)^{\prime} - \int f^{\prime}g
\end{align}
83

Dado que por la regla de la cadena se tiene la igualdad

(f g)0 = f 0 g + f g 0 (1.19)

la cual se puede reescribir como

f g 0 = (f g)0 − f 0 g (1.20)

entonces se concluye que

Z Z Z
f g0 = (f g)0 − f 0g (1.21)

13.9 Paréntesis y signos de agrupación


Para los símbolos de los paréntesis y de los corchetes se usan las teclas
AT X provee de una variada gama de
usuales, para los demás símbolos L E
comandos para producir dichos signos de agrupación. A continuación se
listan los comandos de los signos más usualmente utilizados.

{ \{ } \}
h \langle i \rangle
| | ó \vert k \| ó \Vert
b \lfloor c \rfloor
d \lceil e \rceil

Para aumentar el tamaño de los símbolos de agrupación se usan los mo-


dicadores \left y \right antes del símbolo. Éstos se deben usar en pares,
de ser necesario, se usan los comandos \left. o \right. para formar el
par.
Los comandos \left y \right no producen los mejores resultados,
AT X provee los modicadores \big, \Big, \bigg, \Bigg, los
para esto, L E
84

cuales permiten tener un mejor control sobre el tamaño de los signos de


agrupación.
Además de los modicadores anteriores el paquete amsmath provee una
versión mejorada de éstos, en una versión de parejas de izquierda a derecha:
\bigl \bigr, \Bigl \Bigr, \biggl \biggr, \Biggl \Biggr.

$((a_1b_1)-(a_2b_2))
((a1 b1 ) − (a2 b2 ))((a2 b1 ) + (a1 b2 ))
((a_2b_1)+(a_1b_2))$

$\big((a_1b_1)-(a_2b_2)
\big)\big((a_2b_1)+
 
(a1 b1 ) − (a2 b2 ) (a2 b1 ) + (a1 b2 )
(a_1b_2)\big)$

$\bigg((a_1b_1)-(a_2b_2)   
\bigg)\bigg((a_2b_1)+ (a1 b1 ) − (a2 b2 ) (a2 b1 ) + (a1 b2 )
(a_1b_2)\bigg)$

$\Big((a_1b_1)-(a_2b_2)   
\Big)\Big((a_2b_1)+ (a1 b1 ) − (a2 b2 ) (a2 b1 ) + (a1 b2 )
(a_1b_2)\Big)$

$\Bigg((a_1b_1)-(a_2b_2) ! !
\Bigg)\Bigg((a_2b_1)+ (a1 b1 ) − (a2 b2 ) (a2 b1 ) + (a1 b2 )
(a_1b_2)\Bigg)$
85

13.10 Teoremas y estructuras relacionadas

El comando \newtheorem{<nombre >}{<rótulo >} (que es preferible ubi-


car en el preámbulo del documento) dene una estructura numerada,
creando el entorno <nombre > con su respectivo contador. <rótulo > apa-
rece impreso cuando se invoca el entorno.

\documentclass{book}
.
.
.
\newtheorem{miteorema}{Teorema}
\newtheorem{micorolario}{Corolario}
.
.
.
\begin{document}
.
.
.
\begin{miteorema}
El conjunto $G\subset K\big[\bar{X}\big]$, $0\not\in G$,
es una base de Gröbner sí y sólo si $\forall f\in {\rm
Id}(G)$ con $f\not=0$ se tiene una representación estándar
de $f$ en $G$.
\end{miteorema}

\begin{miteorema}
Sea $G\subset K\big[\bar{X}\big]$ finito y con
$0\not\in G$, Supongamos que: $\forall g_1,g_2\in
G$, ${\rm spol}(g_1,g_2)$ es igual a cero o tiene
una $t$-representación en $G$, para algún $t<{\rm
mcm}(HM(g_1),HM(g_2))$; entonces $G$ es una base de
Gröbner.
\end{miteorema}

\begin{micorolario}
Para todos lo polinomios $p\in I$, se define la aplicación
$v_1(p)=HM\big(w\big(HM(p)\big)\big)$. Entonces $\forall
p_1,p_2\in I$ con $HM(p_1)\not=HM(p_2)$ se tiene que
$v_1(p_1)\not=v_1(p_2)$.
\end{micorolario}
.
.
.
\end{document}
86

Teorema 1
 
El conjunto G ⊂ K X̄ , 0 6∈ G, es una base de Gröbner sí y
sólo si ∀f ∈ Id(G) con f 6= 0 se tiene una representación estándar de f
en G.

Teorema 2
 
Sea G ⊂ K X̄ nito y con 0 6∈ G, Supongamos que: ∀g1 , g2 ∈
G, spol(g1 , g2 ) es igual a cero o tiene una t-representación en G, para algún
t < mcm(HM (g1 ), HM (g2 )); entonces G es una base de Gröbner.

Corolario 1 Para todos lo polinomios p ∈ I , se dene la aplicación



v1 (p) = HM w HM (p) . Entonces ∀p1 , p2 ∈ I con HM (p1 ) 6= HM (p2 )
se tiene que v1 (p1 ) 6= v1 (p2 ).

El comando \newtheorem permite que los entornos, que dena el usua-


rio, adquieran una numeración subordinada respecto de los capítulos, sec-
ciones, etc.

\documentclass{book}
.
.
.
\newtheorem{miteorema}{Teorema}[section]
\newtheorem{micorolario}{Corolario}[section]
.
.
.
\begin{document}
.
.
.
\begin{miteorema}
El conjunto $G\subset K\big[\bar{X}\big]$, ... se tiene
una representación estándar de $f$ en $G$.
\end{miteorema}
\begin{miteorema}
Sea $G\subset K\big[\bar{X}\big]$ ... entonces $G$ es una
base de Gröbner.
\end{miteorema}
\begin{micorolario}
Para todos lo polinomios $p\in I$, ... se tiene que
$v_1(p_1)\not=v_1(p_2)$.
\end{micorolario}
.
.
.
\end{document}
87

Teorema 13.1
 
El conjunto G ⊂ K X̄ , ... se tiene una representación
estándar de f en G.

Teorema 13.2
 
Sea G ⊂ K X̄ nito y con 0 6∈ G, ... entonces G es una
base de Gröbner.

Corolario 13.1 Para todos lo polinomios p ∈ I, ... se tiene que v1 (p1 ) 6=


v1 (p2 ).

El comando \newtheorem también permite que la numeración de los


entornos denidos por el usuario sea correlativa, y no como en el caso
previo que cada entorno se numeraba por separado.

\documentclass{book}
.
.
.
\newtheorem{miteorema}{Teorema}[section]
\newtheorem{micorolario}[miteorema]{Corolario}
.
.
.
\begin{document}
.
.
.
\begin{miteorema}
El conjunto $G\subset K\big[\bar{X}\big]$, ... se tiene
una representación estándar de $f$ en $G$.
\end{miteorema}
\begin{miteorema}
Sea $G\subset K\big[\bar{X}\big]$ ... entonces $G$ es una
base de Gröbner.
\end{miteorema}
\begin{micorolario}
Para todos lo polinomios $p\in I$, ... se tiene que
$v_1(p_1)\not=v_1(p_2)$.
\end{micorolario}
.
.
.
\end{document}
88

Teorema 13.1
 
El conjunto G ⊂ K X̄ , ... se tiene una representación
estándar de f en G.

Teorema 13.2
 
Sea G ⊂ K X̄ nito y con 0 6∈ G, ... entonces G es una
base de Gröbner.

Corolario 13.3 Para todos lo polinomios p ∈ I, ... se tiene que v1 (p1 ) 6=


v1 (p2 ).

El texto de los entornos denidos por el usuario están, por defecto,


en modo enfático. Es posible cambiar el modo enfático a modo normal
utilizando el comando \rm.

\documentclass{book}
.
.
.
\newtheorem{miteorema}{Teorema}[section]
\newtheorem{micorolario}[miteorema]{Corolario}
.
.
.
\begin{document}
.
.
.
\begin{miteorema}
{\rm El conjunto $G\subset K\big[\bar{X}\big]$, ... se
tiene una representación estándar de $f$ en $G$.}
\end{miteorema}
\begin{miteorema}
{\rm Sea $G\subset K\big[\bar{X}\big]$ ... entonces $G$ es
una base de Gröbner.}
\end{miteorema}
\begin{micorolario}
{\rm Para todos lo polinomios $p\in I$, ... se tiene que
$v_1(p_1)\not=v_1(p_2)$.}
\end{micorolario}
.
.
.
\end{document}
89

Teorema 13.1
 
El conjunto G ⊂ K X̄ , ... se tiene una representación
estándar de f en G.

Teorema 13.2
 
Sea G ⊂ K X̄ nito y con 0 6∈ G, ... entonces G es una
base de Gröbner.

Corolario 13.3 Para todos lo polinomios p ∈ I, ... se tiene que v1 (p1 ) 6=


v1 (p2 ).

14 Listas
Existen tres tipos de entornos para crear listas formateadas

\begin{enumerate} texto listado \end{enumerate}

\begin{itemize} texto listado \end{itemize}

\begin{description} texto listado \end{description}

14.1 Entorno enumerate

1. Se trata de listas secuenciadas numéricamente.

2. Los números son consecutivos comenzando por 1, en cada llamada


al entorno.

\begin{enumerate}
\item Se trata de listas secuenciadas numéricamente.
\item Los números son consecutivos comenzando por 1, en
cada llamada al entorno.
\end{enumerate}

6. Es posible inicializar la numeración a partir de un número dife-


rente de 1 utilizando el comando \addtocounter.
7. Por ejemplo, aquí se inicializa la numeración a partir de 6.
90

\begin{enumerate}
\addtocounter{enumi}{5}
\item Es posible inicializar la numeración a partir de
un número diferente de 1 utilizando el comando \texttt
{\textbackslash addtocounter}.
\item Por ejemplo, aquí se inicializa la numeración a
partir de 6.
\end{enumerate}

14.2 Entorno itemize

Cada uno de los items son indicados con un símbolo determinado.

La longitud del texto no tiene límite.

\begin{itemize}
\item Cada uno de los \emph{items} son indicados con un
símbolo determinado.
\item La longitud del texto no tiene límite.
\end{itemize}

14.3 Entorno description

Primero: Parece claro el funcionamiento de este entorno.

Observación: No es un entorno demasiado frecuente.

\begin{description}
\item[Primero:] Parece claro el funcionamiento de este
entorno.
\item[Observación:] No es un entorno demasiado frecuente.
\end{description}

14.4 Listas anidadas


Las listas anteriores pueden ser incluidas unas dentro de otras, tanto del
mismo como de distinto tipo, hasta cuatro niveles de inclusión (por defec-
91

to).
El siguiente es un ejemplo que muestra listas mixtas, con cuatro niveles
de inclusión:

Primer nivel en itemize


1. Primer nivel en enumerate (segundo nivel global)

ˆ Segundo nivel en enumerate (tercero global)


a ) Segundo en enumerate (cuarto global)
b ) Segundo elemento del cuarto nivel
ˆ Vuelta al tercer nivel global (segundo en itemize)
2. Segundo nivel (primer en enumerate)
Primer nivel

\begin{itemize}
\item Primer nivel en {\tt itemize}
\begin{enumerate}
\item Primer nivel en {\tt enumerate} (segundo nivel
global)
\begin{itemize}
\item Segundo nivel en {\tt enumerate} (tercero global)
\begin{enumerate}
\item Segundo en {\tt enumerate} (cuarto global)
\item Segundo elemento del cuarto nivel
\end{enumerate}
\item Vuelta al tercer nivel global (segundo en {\tt
itemize})
\end{itemize}
\item Segundo nivel (primer en {\tt enumerate})
\end{enumerate}
\item Primer nivel
\end{itemize}

14.5 Manipulación de etiquetas en el entorno enumerate


El estilo de numeración y las etiquetas que señalan cada lista son con-
gurables fácilmente. En el entorno enumerate, las etiquetas por defecto
son:
92

1. Etiqueta de primer nivel

a ) Etiqueta de segundo nivel

1) Etiqueta de tercer nivel


0
a Etiqueta de cuarto nivel
0
b Etiqueta de cuarto nivel

2) Etiqueta de tercer nivel

b ) Etiqueta de segundo nivel

2. Etiqueta de primer nivel

\begin{enumerate}
\item Etiqueta de primer nivel
\begin{enumerate}
\item Etiqueta de segundo nivel
\begin{enumerate}
\item Etiqueta de tercer nivel
\begin{enumerate}
\item Etiqueta de cuarto nivel
\item Etiqueta de cuarto nivel
\end{enumerate}
\item Etiqueta de tercer nivel
\end{enumerate}
\item Etiqueta de segundo nivel
\end{enumerate}
\item Etiqueta de primer nivel
\end{enumerate}

La numeración por defecto en la lista de nivel uno está formada por


números arábigos, el nivel dos por letras en minúsculas, el nivel tres son
números nuevamente y el cuatro letras con apóstrofe. Cada una de estas
etiquetas puede cambiarse redeniendo apropiadamente los comandos que
las generan. Tales comandos son: \theenumi, \theenumii, \theenumiii
y \theenumiv, uno para cada nivel. Mientras que las etiquetas que gene-
\labelenumi, \labelenumii,
ran la construcción de dichos comandos son
\labelenumiii y \labelenumiv. Si se quiere cambiar este comportamien-
to por defecto en cualquier nivel, es necesario redenir ambos comandos,
justo antes del inicio del entorno correspondiente. Por ejemplo,
93

1. Etiqueta de primer nivel

1.1. Etiqueta de segundo nivel

1.1.1. Etiqueta de tercer nivel

1.1.1.1. Etiqueta de cuarto nivel

1.1.1.2. Etiqueta de cuarto nivel

1.1.2. Etiqueta de tercer nivel

1.2. Etiqueta de segundo nivel

2. Etiqueta de primer nivel

\renewcommand{\theenumii}{\arabic{enumii}}
\renewcommand{\labelenumii}{\theenumi.\theenumii.}
\renewcommand{\labelenumiii}{\theenumi.\theenumii.
\theenumiii.}
\renewcommand{\theenumiv}{\arabic{enumiv}}
\renewcommand{\labelenumiv}{\theenumi.\theenumii.
\theenumiii.\theenumiv.}
\begin{enumerate}
\item Etiqueta de primer nivel
\begin{enumerate}
\item Etiqueta de segundo nivel
\begin{enumerate}
\item Etiqueta de tercer nivel
\begin{enumerate}
\item Etiqueta de cuarto nivel
\item Etiqueta de cuarto nivel
\end{enumerate}
\item Etiqueta de tercer nivel
\end{enumerate}
\item Etiqueta de segundo nivel
\end{enumerate}
\item Etiqueta de primer nivel
\end{enumerate}

O, podría ser,
94

1) Etiqueta de primer nivel

1.1) Etiqueta de segundo nivel

1.1.1) Etiqueta de tercer nivel

1.1.1.1) Etiqueta de cuarto nivel

1.1.1.2) Etiqueta de cuarto nivel

1.1.2) Etiqueta de tercer nivel

1.2) Etiqueta de segundo nivel

2) Etiqueta de primer nivel

\renewcommand{\labelenumi}{\theenumi)}
\renewcommand{\theenumii}{\arabic{enumii}}
\renewcommand{\labelenumii}{\theenumi.\theenumii)}
\renewcommand{\labelenumiii}{\theenumi.\theenumii.
\theenumiii)}
\renewcommand{\theenumiv}{\arabic{enumiv}}
\renewcommand{\labelenumiv}{\theenumi.\theenumii.
\theenumiii.\theenumiv)}
\begin{enumerate}
\item Etiqueta de primer nivel
\begin{enumerate}
\item Etiqueta de segundo nivel
\begin{enumerate}
\item Etiqueta de tercer nivel
\begin{enumerate}
\item Etiqueta de cuarto nivel
\item Etiqueta de cuarto nivel
\end{enumerate}
\item Etiqueta de tercer nivel
\end{enumerate}
\item Etiqueta de segundo nivel
\end{enumerate}
\item Etiqueta de primer nivel
\end{enumerate}

Los comandos que permiten cambiar el estilo de la numeración son


\arabic (números arábigos), \roman, \Roman (numeración romana, en mi-
95

núsculas y mayúsculas) y \alph, \Alph (numeración alfabética, en minús-


culas y mayúsculas). Téngase en cuenta que listas alfabéticas con más
elementos que letras del alfabeto generará errores en la compilación.

I
[ ] Etiqueta de primer nivel

I
[ -A] Etiqueta de segundo nivel

[I-B ] Etiqueta de segundo nivel

II]
[ Etiqueta de primer nivel

\renewcommand{\theenumi}{\Roman{enumi}}
\renewcommand{\labelenumi}{[\textbf{\theenumi}]}
\renewcommand{\theenumii}{\Alph{enumii}}
\renewcommand{\labelenumii}{[\textbf{\theenumi}-
\textit{\theenumii}]}
\begin{enumerate}
\item Etiqueta de primer nivel
\begin{enumerate}
\item Etiqueta de segundo nivel
\item Etiqueta de segundo nivel
\end{enumerate}
\item Etiqueta de primer nivel
\end{enumerate}

14.6 Manipulación de etiquetas en el entorno itemize

El esquema de etiquetas por defecto en este entorno es $\blacksquare$


() en el nivel uno, $\bullet$ (•) en el nivel dos, $\circ$ (◦) en el
nivel tres y $\diamond$ () en el nivel cuatro. La modicación de estas
etiquetas se lleva a cabo redeniendo los comandos del nivel correspodiente
\labelitemi, \labelitemii, \labelitemiii y \labelitemiv.
96

Etiqueta de primer nivel

ˆ Etiqueta de segundo nivel

◦ Etiqueta de tercer nivel

 Etiqueta de cuarto nivel

 Etiqueta de cuarto nivel

◦ Etiqueta de tercer nivel

ˆ Etiqueta de segundo nivel

Etiqueta de primer nivel

\begin{itemize}
\item Etiqueta de primer nivel
\begin{itemize}
\item Etiqueta de segundo nivel
\begin{itemize}
\item Etiqueta de tercer nivel
\begin{itemize}
\item Etiqueta de cuarto nivel
\item Etiqueta de cuarto nivel
\end{itemize}
\item Etiqueta de tercer nivel
\end{itemize}
\item Etiqueta de segundo nivel
\end{itemize}
\item Etiqueta de primer nivel
\end{itemize}

Por ejemplo, para cambiar la etiqueta de nivel uno por un trébol puede
hacerse

♣ Etiqueta de primer nivel

♣ Etiqueta de primer nivel

\renewcommand{\labelitemi}{$\clubsuit$}
\begin{itemize}
\item Etiqueta de primer nivel
\item Etiqueta de primer nivel
\end{itemize}
97

15 Inclusión de grácos
15.1 Grácos en LATEX
AT X son el
Los formatos más recomendables para incluir grácos en L E
Encapsulated PostScript (EPS) y el formato PostScript (PS). Si usamos
AT X, los formatos más comunes son PDF, PNG o JPG. Los archivos
PDFL E
son insertados mediante el comando \includegraphics. Para poder usar
dicho comando es preciso cargar el paquete digitando

\usepackage{graphicx}
en el preámbulo.

15.2 El comando \includegraphics


La sintaxis de este comando es

\includegraphics[<opciones >]{<nombre del archivo >}

Algunas opciones disponibles son

width Anchura del gráco.

height Altura del gráco.

scale Dene un factor de escala a aplicar en ambas direcciones.

angle Especica un ángulo de rotación en grados sexagesimales.

natwidth Especica la anchura originaria del gráco cuando es PNG,


AT X.
o JPG y aun así se va a incluir en L E

natheight Especica la altura originaria del gráco cuando es PNG o


AT X.
JPG y aun así se va a incluir en L E

\includegraphics[width=2cm]{logo.eps}

\includegraphics[width=2cm,
height=1cm]{logo.eps}
98

\includegraphics[height=2cm,
angle=45]{logo.eps}

\includegraphics[scale=0.25,
angle=60]{logo.eps}

15.3 Figuras otantes


La inclusión de guras puede presentar problemas a la hora de ubicarlas
en el texto pues al no poder ser divididas no pueden aparecer en cualquier
punto del documento. Para resolver este problema, es necesario tratar este
tipo de objetos como objetos otantes, que son situados donde el compila-
dor estima conveniente.

15.4 Creación de guras otantes


Las guras otantes se crean con el entorno figure, en cuyo interior si-
tuamos el correspondiente gráco con \includegraphics. La sintaxis del
entorno es

\begin{figure}[<posición >]
\centering
\includegraphics{gura }
\caption{<pie de la gura >}
\label{<etiqueta >}
\end{figure}
Los comandos \caption y \label son opcionales y sirven para situar
una leyenda para la gura, que aparecerá numerada. Dicha numera-
ción se asignará a la etiqueta \label. El comando \label debe ser
situado inmediatamente después del \caption.
99

Fig. 1.51 Ejemplo de gura

Si el comando \caption no aparece se cre auna gura sin numerar.

El comando \listoffigures (normalmente situado al inicio del do-


cumento) genera una lista con todas las guras incluidas en el docu-
mento.

El comando \caption puede llevar un argumento opcional que es-


pecica el texto que aparecerá en la Lista de Figuras. En caso de no
aparecer, dicho texto es el mismo que el argumento obligatorio del
comando.

La gura otante 1.51 ha sido creada con el siguiente código

\begin{figure}
\centering
\includegraphics[scale=0.25]{logo.eps}
\caption{Ejemplo de figura}
\label{ej}
\end{figure}

15.5 Posicionamiento de guras


La posición en la que la gura aparece en el texto está determinada por
el argumento opcional que puede ser una (o más de una) de las siguientes
letras h, t, b, p.

h Sitúa la gura allí donde aparece el entorno. Esta opción no puede


ser ejecutada siempre, pues es posible que el gráco no entre en
el espacio de página que reste.

t Sitúa la gura en la parte superior de la página.

b Sitúa la gura en la parte inferior de la página.

p Sitúa la gura en una página separada.


100

(a) It is a little logo (b) It is a big logo

Fig. 1.52 Varias grácas en una gura

Si no se especica la posición, el compilador toma por defecto la se-


cuencia [tbp].
Cuando se incluye una gura otante, LAT X leerá la gura y la tendrá
E
en memoria hasta que encuentre una posición que considere adecuada para
incluirla en el texto.

15.6 El paquete subfigure


El paquete subfigure permite introducir guras con más de un gráco.
Para utilizarlo debe colocarse en el preámbulo

\usepackage{subfigure}
Por ejemplo, la gura 1.52 se ha creado con el código

\begin{figure}
\centering
\subfigure[It is a little logo]{
\qquad\includegraphics[scale=0.15]{logo.eps}\qquad}
\subfigure[It is a big logo]{
\qquad\includegraphics[scale=0.25]{logo.eps}\qquad}
\caption{Varias gráficas en una figura}
\label{ej2}
\end{figure}

16 Tablas
Las tablas son construcciones alineadas que, en principio, no pueden apa-
recer en más de una página. El entorno para producir tales construcciones
es tabular, cuya sintaxis es
101

\begin{tabular}[<pocisión >]{<colocación >}


las
\end{tabular}
El signicado de los argumentos es el siguiente

posición Posición vertical de la tabla respecto de la línea base. Puede


tomar los valores

t la línea superior de la tabla se alinea con la línea base,


b la línea inferior de la tabla se alinea con la línea base.
Si no aparece el parámetro, se centrará respecto de la línea base.

colocación Alineación de las columnas. Debe aparecer una entrada por


cada columna de la tabla además de entradas opcionales para delimi-
tar los bordes entre cada columna. Los formatos posibles para cada
columna son

l alineación a la izquierda,
c la columna aparecerá centrada,
r alineación a la derecha,
p{wd} elemento tipo párrafo. El texto aparecerá en un párrafo de
anchura wd, con la línea superior alineada con las otras colum-
nas,

*{num}{cols} abreviación para repetición de formato. Por ejemplo,


*{3}{c} es equivalente a ccc.

Los elementos para separación de columnas son

| dibuja una línea vertical,

|| dibuja dos líneas verticales próximas,

@{texto} inserta texto entre dos columnas. Útil para cuando los valores
de una misma columna deben estar separados por una marca deter-
minada (guión, punto decimal, etc.) La expresión @{texto } elimina el
espacio automático que se pone entre cada columna y lo sustituye por
el texto. Si se necesita espacio blanco extra, debe ser implícitamente
incluido.
102

16.1 Filas
Cada una de las las tendrá la estructura siguiente

elemento1 & elemento2 & . . . & elementon \\

Es decir, el símbolo& se utiliza para separar dos columnas consecutivas


y el comando \\ para separar una la de la siguiente. Todas las las, salvo
la última debe ser nalizada con este comando.
Otros comandos son

\hline este comando dibuja una línea horizontal entre la y la. Debe
aparecer sólo antes de la primera la, o justo a continuación de \\.
Dos comandos \hline dibujan dos líneas con un pequeño espacio
entre ellas.

\cline{n − m} como el comando \hline, dibuja una línea horizontal en-


tre la columna n hasta la columnam. Sólo puede aparecer detrás de
\\ y puede haber más de uno.

\vline este comando dibuja una línea vertical en la línea en la que aparece
de altura correspondiente a la la en la que se encuentra.

\multicolumn{<número>}{col}{texto} engloba un número de colum-


nas dado por número bajo una columna simple cuya anchura corres-
ponde a las que engloba, con formato dado en col y con el contenido
de texto.

16.2 Ejemplos

\begin{tabular}{|l|c|r|}
\hline
uno & dos & tres \\
\hline
cuatro & cinco & seis \\
\hline
\end{tabular}

uno dos tres

cuatro cinco seis


103

\begin{tabular}{|l|c|r|}
\hline
\multicolumn{3}{|c|}{Tabla con
números}\\
\hline\\
uno & dos & tres \\
\hline \hline
cuatro & cinco & seis \\
\cline{1-2} siete & ocho & nueve \\
\cline{2-3}
diez & once & doce \\
\cline{1-2} trece &
\multicolumn{2}{c}{catorce} \\
\hline
\end{tabular}

Tabla con números

uno dos tres

cuatro cinco seis

siete ocho nueve

diez once doce

trece catorce

\begin{tabular}{|lrrc|}
\hline
País & Total & Indígenas & Porcentaje \\
\hline\hline
Bolivia & 6,9 & 4,9 & 71 \\
\hline
Guatemala & 8,0 & 5,3 & 66 \\
\hline
Perú & 20,0 & 9,3 & 47 \\
\hline
Ecuador & 9,5 & 4,15 & 43 \\
\hline
\end{tabular}
104

Estados Unidos 14,7 10,5

Italia 1,82 0,25

Francia 3,4 0,6

Tab. 1.1 Ejemplo de tabla.

País Total Indígenas Porcentaje

Bolivia 6,9 4,9 71

Guatemala 8,0 5,3 66

Perú 20,0 9,3 47

Ecuador 9,5 4,15 43

\begin{tabular}{|l|r@{,}l|r|}
\hline
Estados Unidos & 14 & 7 & 10,5 \\
\hline
Italia & 1 & 82 & 0,25 \\
\hline
Francia & 3 & 4 & 0,6 \\
\hline
\end{tabular}

\begin{tabular}{|@{\textbf{\ Capítulo }}r %


@{:\quad Lecciones }r %
@{\thinspace-\thinspace}l@{\ }|}
\hline
\textbf{1} & 1 & 8 \\
\textbf{2} & 9 & 11 \\
\textbf{3} & 12 & 20 \\
\hline
\end{tabular}
105

Capítulo 1: Lecciones 1-8

Capítulo 2: Lecciones 9 - 11

Capítulo 3: Lecciones 12 - 20

\begin{tabular}{|p{3.5cm}|p{2cm}|}
\hline
Esto es un párrafo insertado dentro
de la celda de una tabla. &
El uso de larguísimas y absolutamente
eternas palabras crea un mal efecto. \\
\hline
& bienaventurado. \\
\hline
\end{tabular}

Esto es un párrafo in- El uso de


sertado dentro de la larguísimas
celda de una tabla. y absolu-
tamente
eternas pala-
bras crea un
mal efecto.

bienaventurado.

Para evitar la justicación a ambos lados están los comandos \raggedright


(justiación a derecha), \raggedleft (izquierda) o \centering

AT X nunca divide la primera palabra de un párrafo,


Por otra parte, L E
de modo que es necesario iniciar el párrafo con algo (un espacio vacío, por
ejemplo).

El ejemplo anterior se puede corregir del siguiente modo


106

\begin{tabular}{|p{3.5cm}|p{2cm}|}
\hline
\raggedright Esto es un párrafo insertado dentro
de la celda de una tabla. &
\raggedright El uso de larguísimas y absolutamente
eternas palabras crea un mal efecto.
\tabularnewline
\hline
& \hspace{0cm}bienaventurado. \\
\hline
\end{tabular}
Esto es un párrafo El uso de
insertado dentro de la larguísimas
celda de una tabla. y absoluta-
mente
eternas
palabras
crea un mal
efecto.

bienaventu-
rado.

Obsérvese cómo se ha usado el comando \tabularnewline en lugar de


\\. Ambos son equivalentes, pero en este caso el segundo produce mensajes
de error que son evitados con el primero.

16.3 Parámetros de estilo


AT X, y puede ser
El estilo de las tablas está denido por defecto por L E
cambiado, globalmente en el preámbulo, o de forma local, no dentro del
entorno.
Los parámetros para realizar cambios de estilo en las tablas son

\tabcolsep corresponde a la mitad de la anchura del espacio insertado


entre dos columnas (valor por defecto: 6pt),

\arrayrulewidth es el grosor de las líneas que conforman la tabla (valor


por defecto: 0.4pt),
107

\doublerulesep es la separación entre las líneas dobles (valor por defecto:


2pt),

\arraystretch modica la distancia entre las las. Se trata de un factor


multiplicativo, de modo que el valor estándar corresponde a 1, y un
valor de 1.5 aumenta un 50 % la distancia.

Para realizar modicaciones en estos parámetros se usan las siguientes


declaraciones

\setlength\tabcolsep{<dimensión >}

\setlength\arrayrulewidth{<dimensión >}

\setlength\doublerulesep{<dimensión >}

\renewcommand{\arraystretch}{<factor >}

\setlength{\tabcolsep}{20pt}
\setlength{\arrayrulewidth}{2pt}
\renewcommand{\arraystretch}{3}
\begin{tabular}{|l|c|r|}
\hline
uno & dos & tres \\
\hline
cuatro & cinco & seis \\
\hline
\end{tabular}

uno dos tres

cuatro cinco seis

16.4 Tablas como objetos otantes


Al igual que las guras, las tablas no deberían (salvo excepciones) ser se-
paradas en más de una página, por lo que su ubicación debería ser deter-
minada por el compilador. Para tratar las tablas como un objeto otante
disponemos del entorno table, cuya sintaxis es
108

\begin{table}[<posición >]
\centering
entorno tabular
\caption{<pie de la tabla >}
\label{<etiqueta >}
\end{table}
Por ejemplo, la tabla 1.2 ha sido generada con el siguiente código

\begin{table}
\centering
\begin{tabular}{|l||c|c|l|}
\hline
$a^n$ & 1 & 2 & 3 \\
\hline\hline
1 & 1 & 1 & 1\\\cline{2-4}
2 & 2 & 4 & 8\\\cline{2-4}
3 & 3 & 9 & 27\\\cline{2-4}
4 & 4 & 16 & 64\\\hline
\end{tabular}
\caption{Potencias}
\label{ejt}
\end{table}

an 1 2 3

1 1 1 1

2 2 4 8

3 3 9 27

4 4 16 64

Tab. 1.2 Potencias

17 Referencias cruzadas
17.1 ¾Qué son las referencias cruzadas?
Es habitual en los documentos cientícos hacer referencias a partes del
documento como capítulos, secciones, fórmulas, tablas, guras, etc. Cada
109

uno de estos elementos es numerado automáticamente por L AT X por orden


E
de aparición, pero si queremos hacer una referencia a alguno de ellos, no
es necesario conocer dicho número.
El procedimiento consiste en etiquetar el entorno en cuestión, de ma-
nera que el compilador almacena el número de referencia para un posterior
uso.
Por ejemplo, la subsección inicial de esta sección (subsección 17.1) ha
sido etiquetada del siguiente modo

\subsection{¾Qué son las referencias


cruzadas?\label{subsec:intro}}

y la referencia de la línea anterior ha sido producida con

...inicial de esta sección (subsección


\ref{subsec:intro}) ha sido etiquetada ...

La etiqueta \label{sec:intro} no es necesario que siga inmediata-


mente al argumento de \section, es decir, puede ser situada en cualquier
parte de la sección, pero no debe interferir con otro elemento susceptible
de numeración.
La primera vez que se compila el chero que contiene referencias cruza-
das, (p.e. fichero.tex) la información sobre las referencias es almacenada
en el chero fichero.aux y al nal de la compilación LATEXimprime el si-
guiente aviso
LaTeX Warning: There were undefined references.
LaTeX Warning: Label(s) may have changed.
Rerun to get cross-references right.
Una segunda compilación sobre el documento pondrá las referencias
correctamente.
La clave con la que nombramos una etiqueta puede ser cualquier se-
cuencia de letras, dígitos o caracteres de puntuación, teniendo en cuenta
AT X distingue entre mayúsculas y minúsculas.
que L E

17.2 Entornos referenciables


Listas
Además de la numeración de capítulos o secciones, cada elemento de un
entorno enumerate puede ser etiquetado añadiendo el correspondiente co-
mando \label a cada entrada \item. Por ejemplo
110

En el silogismo clásico
\begin{enumerate}
\item Todos los hombres son mortales.\label{pre1}
\item Sócrates es un hombre.\label{pre2}
\item Por tanto, Sócrates es mortal.\label{con}
\end{enumerate}
Las afirmaciones (\ref{pre1}) y (\ref{pre2})
son las premisas y (\refcon) es la
conclusión.

En el silogismo clásico

1. Todos los hombres son mortales.

2. Sócrates es un hombre.

3. Por tanto, Sócrates es mortal.

Las armaciones (1) y (2) son las premisas y (3) es la conclusión.

Elementos otantes
Las guras y tablas pueden ser también referenciadas teniendo cuidado en
situar el comando \label justo después del comando \caption o incluso
dentro de su argumento, como en el ejemplo mostrado a continuación

\begin{table}[h]
\begin{center}
\begin{tabular}{|c|c|c|c|}
\hline
Valor de $x$ & 1 & 2 & 3 \\
\hline
Valor de $y$ & 1 & 8 & 27 \\
\hline
\end{tabular}
\caption{Valores observados de $x$ e $y$}\label{tabxy}
\end{center}
\end{table}
Dos posibles relaciones entre $x$ e $y$ que satisfacen
los datos de la Tabla \ref{tabxy} son $y=x^3$ e
$y=6x^2-11x+6$.
111

Valor de x 1 2 3

Valor de y 1 8 27

Tab. 1.3 Valores observados de x e y

Dos posibles relaciones entre x e y que satisfacen los datos de la Tabla


1.3 sony = x3 e y = 6x2 − 11x + 6.

Matemática
En los documentos con contenido matemático abundan las referencias, ya
sea a fórmulas, guras, teoremas, etc. El proceso de etiqueta es igual al
hecho anteriormente: es necesario incluir el comando \label dentro del
entorno correspondiente.
Si se ha denido el entorno \newtheorem{thm}{Teorema} (vea la Sec.
13.10), entonces

\begin{thm}\label{diffcon}
Toda función diferenciable es continua.
\end{thm}
El recíproco del Teorema \ref{diffcon} es falso.

Teorema 17.1 Toda función diferenciable es continua.

El recíproco del Teorema 17.1 es falso.

En el caso de las ecuaciones se tiene

\begin{equation}\label{sumsq}
(x+y)^2=x^2+2xy+y^2
\end{equation}
Cambiando $y$ por $-y$ en (\ref{sumsq}) resulta \ldots

(x + y)2 = x2 + 2xy + y 2 (1.22)

Cambiando y por −y en (1.22) resulta . . .


112

El paquete amsmath permite usar el comando \eqref en lugar de \ref


para referenciar una ecuación, con la diferencia de que el primero imprime
automáticamente los paréntesis alrededor del número.

Referenciación de páginas
En lugar de hacer referencia al número de tabla o de ecuación, a menudo
es útil dar la numeración de la página donde se encuentra dicho objeto. El
comando

\pageref{<etiqueta >}

imprime el número de la página en la que se encuentra \label{<etiqueta >}.


Por ejemplo

véase la Tabla \ref{tabxy} en la página


\pageref{tabxy}.

produce

véase la Tabla 1.3 en la página 111.

18 Notas al pie y al margen


18.1 Comandos para insertar pies de página
Para insertar una nota al pie de página se usa el comando

\footnote[<número >]{<texto de la nota >}

Éste comando inserta una nota al pie de página con el texto de <texto
de la nota >y el número especicado en <número >. si <número >se omite,
se usa la numeración automática. Este comando no se admite dentro de
una caja, ni dentro de otro \footnote, ni dentro del entorno \tabular.
Las notas al pie de página dentro de una mini-página aparecen en la
parte inferior de ésta, no en la parte inferior de la página vigente.
Por ejemplo, el siguiente código

Mi primera nota\footnote{Numerada atomáticamente} y mi


segunda nota\footnote[201]{Numerada específicamente.}.

Produce
113

Mi primera nota
11 y mi segunda nota201 .

y las respectivas notas aparecen al pie de esta página.

18.2 Inserción de pies de página en lugares prohibidos


El comando \footnotemark[<número >] produce sólo la marca que se-
ñala la nota al pie de página en el texto. El argumento <número >funciona
igual que el de \footnote.
El comando \footnotetext[<número >]{<texto de la nota >} pro-
duce la nota al pie de página, sin insertar ninguna marca. El argumento
<número > especica el símbolo que identica la nota. Este comando está
restringido, así como \footnote.
Los comandos \footnotemark y \footnotetext se usan en conjunción
para crear notas en sitios no permitidos, primero insertando la marca en
el lugar prohibido y luego colocando el texto fuera del sitio prohibido,
simulando así el pie en la página.

18.3 Modicación de los contadores de los pies de página


El comando \renewcommand{\thefootnote}{<estilo >} permite modi-
car el estilo de la marca que señala las notas al pie de página.

\arabic{footnote} produce marcas con la numeración por defecto:


1, 2, 3, . . .

\roman{footnote} produce marcas con números romanos en minús-


culas: i, ii, iii, . . .

\Roman{footnote} produce marcas con números romanos en mayús-


culas: I, II, III, . . .

\alph{footnote} produce marcas con la letsras del alfabeto en mi-


núsculas: a, b, c, . . .

\Alph{footnote} produce marcas con la letsras del alfabeto en ma-


yúsculas: A, B, C, . . .

\fnsymbol{footnote} produce marcas con símbolos: *, „, ...

11 Con numeración atomática


201 Con numeración especíca.
114

18.4 Notas al margen


La inclusión de notas al margen es similar a la de las notas al pie. El
comando es

\marginpar[<TextoIzquierda >]{<TextoDerecha >}

Este comando crea una nota al margen cuyo contenido TextoDerecha (si
se elude el argumento opcional) comienza a imprimirse a la misma altura
en la que se imprime la línea de texto principal. Si se emplea la opción
oneside, la nota se imprime a la derecha, y si se usa la opción twoside, en
el exterior.
Si se usa el argumento opcional, el texto TextoIzquierda aparecerá cuan-
do la nota corresponda al margen izquierdo y el texto TextoDerecha lo hará
cuando la nota esté en el margen derecho. Por ejemplo

Cuéntame poeta cómo es la luna y no la de un tal Louis


Armstrong. No olvides poeta tu sueño de volar con
la pluma del ala y la necesidad. Cuéntame poeta si
es el desamor lo que constituye el diccionario del
amor\ldots\marginpar{Ariel\\Dufey\\Ramos.}.

produce

Cuéntame poeta cómo es la luna y no la de un tal Louis Armstrong. No


olvides poeta tu sueño de volar con la pluma del ala y la necesidad. Cuén-
tame poeta si es el desamor lo que constituye el diccionario del amor. . . .

19 Inserción de texto plano


Los archivos de texto plano (en inglés plain text) son aquellos que están
compuestos únicamente por texto sin formato, sólo caracteres. Estos ca-
racteres se pueden codicar de distintos modos dependiendo de la lengua
usada. Algunos de los sistemas de codicación más usados son: ASCII,
ISO-8859-1 o Latín-1, Unicode, etc. . . .
Se les conoce también como archivos de texto llano, o texto simple, por
carecer de información destinada a generar formatos (negritas, subrayado,
cursivas, tamaño, etc.) y tipos de letra (por ejemplo, Arial, Times, Courier,
etc.).
AT X cuenta con el entorno
L E \minipage para imprimir texto plano.
Los caracteres reservados pierden su signicado especial y son impresos
115

literalmente. Los espacios y cambios de renglón son tenidos en cuenta. La


capacidad del texto impreso es bastante limitada.

\begin{verbatim}
head(expr):=block(
if symbolp(expr) then symbol
elseif numberp(float(expr)) then real
elseif not freeof( %i,expr) then complex
else part(expr,0) )$
\end{verbatim}

head(expr):=block(
if symbolp(expr) then symbol
elseif numberp(float(expr)) then real
elseif not freeof(%i,expr) then complex
else part(expr,0) )$

El comando \verb@texto @ se usa para imprimir una sola línea de texto


plano.

20 Bibliografía
20.1 El entorno thebibliography
La bibliografía es el entorno que permite al autor listar las referencias
utilizadas y citarlas en algún punto del texto. La estructura es similar a la
de una lista enumerada donde cada entrada viene marcada por el comando
\bibcite y es referenciada desde el comando \cite, que producirá un
número de referencia o el nombre del autor, según sea el estilo escogido.
El entorno se dene del siguiente modo

\begin{thebibliography}[<etiqueta mayor >]


\bibitem[<leyenda1 >]{<referencia1 >} Título, autor, ...
\bibitem[<leyenda2 >]{<referencia2 >} Título, autor, ...
\end{thebibliography}
El argumento etiqueta mayor indica la anchura de la mayor etiqueta que
vaya a aparecer. Por ejemplo, si vamos a introducir entre 10 y 99 publicacio-
nes, entonces deberemos comenzar con \begin{thebibliography}[99].
Si vamos a referenciar con el nombre del autor, entonces debemos poner el
nombre más largo que vayamos a usar, \begin{thebibliography}[nombre].
116

El argumento opcional de \bibitem, leyenda se utiliza para modicar


la identicación en la lista de referencias, en lugar de un número. El argu-
mento referencia será la etiqueta usada para referenciar la cita. Se usa a
través del comando \cite:
\cite{etiqueta1 }
\cite{etiqueta1,etiqueta2,...}
Si queremos añadir algún dato más a la referencia (número de página
donde aparece, o el capítulo, etc.) usamos un argumento opcional

\cite[página 25 ]{etiqueta1 }

El siguiente código muestra un ejemplo de funcionamiento del en-


torno
12 .

La referencia clásica en \LaTeX\ es \cite{GH}.


Otras referencias interesantes son \cite{GU,Kn}
.
.
.
\begin{thebibliography}{9}
.
.
.
\bibitem{GH}
Griffiths, D and Higham, D. LEARNING LATEX.
The Society for Industrial and Applied Mathematics
(1997).
\bibitem{Gu}
Gurari, E. WRITING WITH TEX.
McGraw-Hill, Inc.
(1994).
\bibitem{Kn}
Knuth, D. THE TEXBOOK.
Adisson-Wesley Publishing Company
(1991).
.
.
.
\end{thebibliography}
12 La bibliografía que aparece en dicho código corresponde a la bibliografía de este
libro.
117

AT X es [3]. Otras referencias interesantes son


La referencia clásica en L E
[4, 5]

20.2 Índice de contenidos


El entorno bibliografía crea una sección del documento a modo de capítulo
(si la clase de documento es report) o sección (si la clase es article). Sin
embargo no aparece listado en el índice de contenidos. Para introducir
dicho capítulo o sección en el índice es necesario añadir una línea como la
que sigue

\addcontentsline{<ExtensiónFichero >}{<Unidad >}


{<TextoEntrada >}
El parámetro ExtensiónFichero se reere a uno de los cheros donde
AT X almacena información sobre índices de contenido, de guras o tablas.
L E
Las extensiones respectivas son toc, lof o lot.
El argumento Unidad se reere a qué tipo de unidad de estructura
queremos asimilar dicha entrada, es decir, si se trata de una sección, un
capítulo, etc. Los valores serán section, chapter, etc.
El TextoEntrada el lo que deseamos que apareza en el índice corres-
pondiente. Así, la entrada a incluir será

\addcontentsline{toc}{chapter}{Bibliografía}

21 El programa BibTex
La elaboración de entornos para bibliografía puede automatizarse cómo-
damente usando el programa BibTEX. Dicho programa crea un entorno
bibliográco para un documento concreto a partir de una base de datos
previamente construida. De este modo, sólo es necesario mantener una base
de datos y recurrir a ella para construir la bibliografía de cada documento
que escribamos.
La base de datos consiste en uno o varios archivos con extensión .bib
que deben poseer una estructura concreta. Por cada referencia debemos
incluir una entrada en dicho archivo, que será etiquetada de forma similar
a lo que se hace en un \bibitem.
En el momento en el que aparezca una cita a una de las referencias de
nuestra base de datos, ésta seré autométicamente incluida en la bibliografía
del mismo a través del programa BibTEX.
118

Para usar dicho programa debemos incluir en nuestro archivo fuente


un comando que llame a la base o bases de datos que queramos utilizar,
del siguiente modo

\bibliography{database1,database2 }
El comando anterior especica que las entradas bibliográcas se colo-
carán en la posición en la que aparece dicho comando y serán extraídas de
los archivos database1.bib y database2.bib13 .
El estilo que aparecerá en la bibliografía viene especicado por el co-
mando \bibliographystyle, que determinará el formato en el que apa-
recerán las diferentes entradas. Por ejemplo

\bibliographystyle{plain}
especica que las entradas serán formateadas según el estilo plain que se
encuentra descrito en el chero (plain.bst). Es posible situar este coman-
do en cualquier punto del documento después de \begin{document}.

21.1 Estilos de BibTeX


plain Estilo estándar. Las entradas son numeradas correlativamente por
orden alfabético de autores.

unsrt Similar al estilo plain, pero las entradas son numeradas en el orden
en que son citadas en el documento.

alpha Se diferencia con el estilo plain, en que las etiquetas de las entradas
están formadas por el nombre del autor y el año de publicación, en
lugar de ser números.

abbrv Similar al estilo plain, pero las entradas son más compactas, que-
dando abreviados los nombres de pila de los autores, las revistas,
etc.

acm Estilo usado en las revistas de la ACM (Association for Computing


Machinery).

apalike Estilo usado en las revistas de la American Psychology Associa-


tion. Precisa del paquete apalike.
Además varias organizaciones, revistas, etc. han desarrollado sus pro-
pios estilos bibliográcos, algunos de los cuales vienen con la distribución
MiKTEX (véase C:\Archivos de programa\MiKTeX 2.9\bibtex\bst).
13 Atención al path en el que se encuentre el archivo.
119

21.2 Pasos para ejecutar BibTeX con LaTeX


AT X, se generará un listado de referencias para cada co-
1. Al correr L E
mando \cite que esté presente. Dicho listado aparecerá en el chero
auxiliar .aux.
2. Ejecutar BibTEX, el cual leerá dicho chero, las bases de datos y el
chero de estilo y escribirá un chero .bbl que contiene un entorno
bibliografía formateado según el hero .bst escogido. Los errores o
avisos serán escritos en un chero .blg.
AT X, se lee el chero
3. En la siguiente compilación de L E .bbl.
4. Una tercera compilación resuelve todas las referencias cruzadas.

Nótese que las referencias que aparecerán en el texto son aquellas que
hayan sido citadas mediante \cite, y no todas las presentes en la base de
datos .bib.
En ocasiones, es posible querer incluir publicaciones que no son explíci-
tamente citadas. Pare ellos usamos el comando \nocite en cualquier parte
del documento. Dicho comando no produce texto alguno pero hace que la
referencia citada sea incluida por BibTEX. El comando \nocite{*} hace
que todas las entradas de la base de datos sean incluidas.

21.3 Creación de bases de datos bibliográcas


La ventaja principal del uso del programa BibTEXes la no necesidad de
escribir un listado de referencias para cada documento. Las referencias
son escritas una sola vez y almacenadas en la base (o bases) de datos
correspondiente para usos futuros.
No obstante, es necesario crear las entradas de la base de datos según
un formato especíco. Lo que sigue es un ejemplo de entrada

@BOOK{knuth:86a,
AUTHOR ="Donald E. Knuth",
TITLE ={The \TeX{}book},
EDITION ="third"
PUBLISHER ="Addison-Wesley",
ADDRESS ={Reading, MA},
YEAR =1986}
La primera palabra, prejada por @, determina el tipo de entrada, que
variará según el tipo de publicación que sea: libros, artículos, prepublicacio-
nes, etc. El resto de la información es escrita entre llaves, comenzando por
120

la etiqueta (la que usaremos para la referencia con el comando \cite), En


el ejemplo anterior pondríamos \cite{knuth:86a}. El resto de la informa-
ción sobre la referencia es introducida mediante varios campos, separados
por comas, en el formato que se aprecia. Los espacios son opcionales. La
información de cada campo puede ser incluida entre llaves o entre comillas
dobles; sin embargo, si la información del campo consta únicamente de
números, no son necesarios los delimitadores. Cada tipo de entrada tiene
una serie de campos requeridos y otros opcionales. En caso de ausencia de
algún campo requerido BibTEX dará un informe de error.
Los tipos de referencias, los campos requeridos y los opcionales son

@article Artículos en revistas.


campos requeridos autor, title, journal, year.
campos opcionales volume, number, pages, month, note.

@book Libros con editorial conocida.


campos requeridos author or editor, title, publisher, year.
campos opcionales volume or number, series, address, edition, month,
note.

@booklet Libros sin conocimiento de la editorial que lo publique.


campos requeridos title.
campos opcionales author, howpublished, address, month, year, note.

@conference Artículo en un recopilatorio de una conferencia.


campos requeridos author, title, booktitle, year.
campos opcionales editor, volume or number, series, pages, address, month,
organization, publisher, note.

@inbook Entrada para una parte de un libro.


campos requeridos author or editor, title, chapter and/or pages, publis-
her, year.
campos opcionales volume or number, series, type, address, edition, month,
note.

@incollection Entrada para una parte de un libro con título propio.


campos requeridos author, title, booktitle, publisher, year.
campos opcionales editor, volume or number, series, type, chapter, pa-
ges, address, edition, month, note.

@inproceedings Artículo en las publicaciones de un congreso.


campos requeridos author, title, booktitle, year.
campos opcionales editor, volume or number, series, pages, address, month,
organization, publisher, note.
121

@manual Entrada para documentación de tipo técnico.


campos requeridos title.
campos opcionales author, organisation, address, edition, month, year,
note.

@masterthesis Entrada para proyecto, tesina o master.


campos requeridos author, title, school, year.
campos opcionales type, address, month, note.

@misc Documento que no se ajusta a ninguno de los demás tipos.


campos requeridos none.
campos opcionales author, title, howpublished, month, year, note.

@phdthesis Tesis doctoral.


campos requeridos author, title, school, year.
campos opcionales type, address, month, note.

@proceedings Recopilatorio de artículos de una conferencia o congreso.


campos requeridos title, year.
campos opcionales editor, volume or number, series, address, month,
organization, publisher, note.

@unpublished Documento no publicado con título y autor.


campos requeridos author, title, note.
campos opcionales month, year.
CAPÍTULO II

PROGRAMACIÓN CON LTEX A

El compilador TEX contiene aproximadamente 300 secuencias de control


(comandos) llamadas primitivas. Éstas son operaciones de bajo nivel que
no pueden ser descompuestas en acciones más simples. El resto de lo que
propiamente se llama TEX unas 600 instrucciones, son macros, es de-
cir, comandos denidos a partir de las 300 primitivas, haciendo uso de
las capacidades de compilador (es decir, lenguaje de programación) de
TEX. Asimismo, el procesador de textos LAT X es otro conjunto de macros
E
construidas a partir de comandos TEX. En éste capítulo se introducirán
las herramientas básicas de programación disponibles en TEX, útiles para
denir nuevos comandos o entornos, modicar parámetros, automatizar
tareas, en denitiva personalizar nuestro documento.

1 Creación de comandos y entornos


1.1 Comandos
En ésta sección describiremos cómo utilizar el comando \newcommand para
denir nuevos comandos L AT X que puedan ayudarnos a simplicar el rea-
E
lizar tareas repetitivas. Para la denición de un nuevo comando se dispone
de tres posibilidades

\newcommand{\NombreComando}[NumArg][ArgDefecto]{Definicion}
\renewcommand{\NombreComando}[NumArg][ArgDefecto]{Definicion}
\providecommand{\NombreComando}[NumArg][ArgDefecto]{Definicion}
donde \NombreComando es el nombre que queremos asignar al nuevo co-
mando, NumArg indica el número de argumentos que va a tener (compren-
dido entre 1 y 9), ArgDefecto es el valor por defecto de un argumento
123

optativo (el primero de ellos), y Definicion contiene la denición del co-


mando, donde los distintos argumentos se denotan como #1, #2, etc . . .
Entre estas tres versiones existen diferencias importantes. \newcommand
se utiliza para denir nuevos comandos, por lo que debemos estar seguros
de que el comando a denir no existe. \renewcommand se utiliza para rede-
nir comandos ya existentes, reescribiendo y borrado la denición anterior
del comando. Finalmente, \providecommand dene el nuevo comando sólo
en el caso de que el comando no exista; en caso contrario la nueva denición
carece de efecto.
Para cada una de estas tres posibilidades existen versiones con y sin
asterisco; las versiones con asterisco (\newcommand*{\NombreComando}
[NumArg]{ArgDef}{Def}, etc . . . ) no permiten que los argumentos pue-
dan extenderse a más de un párrafo, mientras que las versiones sin aste-
risco (\newcommand{\NombreComando}[NumArg]{ArgDef}{Def}, etc . . . )
permiten que los argumentos se extiendan a más de un párrafo.

1.2 Ejemplos
Es preferible que ubicar las deniciones de los nuevos comandos en el
preámbulo.

Supongamos que la expresión (x1 , x2 , . . . , xn ) aparece frecuentemente


en nuestro documento. Podemos entonces denir
\newcommand{\vect}{(x_1,x_2,\dots,x_n)}
con lo cual, cada vez que escribamos $\vect$ (el nombre del nuevo
comando) se imprimirá (x1 , x2 , . . . , xn ).

Ahora compliquemos un poco el ejemplo con la introducción de ar-


gumentos variables. Si por ejemplo escribimos
\newcommand{\vect}[1]{(#1_1,#1_2,\dots,#1_n)}
(añadiendo un argumento, que se sustituye en la fórmula con  #1),
escribiendo $\vect{x}$ obtendríamos (x1 , x2 , . . . , xn ), mientras que
con $\vect{a}$ se tendría (a1 , a2 , . . . , an ), etc . . .
Añadiendo más argumentos, podemos obtener construcciones más
complejas, por ejemplo, deniendo
\newcommand{\vect}[2]{(#1_1,#1_2,\dots,#1_#2)}
$\vect{x}{n}$ daría como resultado (x1 , x2 , . . . , xn ), mientras que
con $\vect{a}{p}$ se obtendría (a1 , a2 , . . . , ap ).

Practiquemos ahora la denición de comandos con argumentos op-


tativos, que toman un determinado valor por defecto. Por ejemplo,
124

construyamos
\newcommand{\nuevovector}[2][x]{(#1_1,#1_2,\dots,#1_#2)}
donde la  x entre corchetes es el valor por defecto del argumento op-
cional (siempre el primero). Así, escribiendo $\nuevovector{n}$ ó
$\nuevovector{p}$ obtendríamos (x1 , x2 , . . . , xn ) y (x1 , x2 , . . . , xp )
respectivamente, mientras que añadiendo un argumento optativo cam-
biaríamos el valor por defecto de  x, $\nuevovector[a]{n}$ daría
(a1 , a2 , . . . , an ).

2 Entornos
También es posible denir nuevos entornos, o redenir entornos ya exis-
tentes; para ello se dispone de los siguientes comandos

\newenvironment{NombreEntorno}[NumArg][ArgDef]{DefEntrada}
{DefSalida}
\renewenvironment{NombreEntorno}[NumArg][ArgDef]{DefEntrada}
{DefSalida}
que funcionan de un modo similar a los comandos del tipo \newcommand, en
cuanto a que admiten argumentos (hasta 9), opcionalmente con el primero
de ellos optativo. La diferencia reside en que en el argumento DefEntrada
se indican las órdenes que se deben ejecutar antes de entrar en el entorno,
y en el argumento DefSalida la que se deben ejecutar al salir del entorno.
Una vez denido el nuevo entorno, se debe invocar de la siguiente forma

\begin{NuevoEntorno}{Arg1}...{ArgN}
Texto y comandos
\end{NuevoEntorno}
Al igual que en el caso de los comandos, existen versiones sin y con
asterisco, con el mismo signicado, es decir, que respectivamente admiten
o no argumentos de más de un párrafo.
Por ejemplo, construyamos un entorno que cree una minipágina de
anchura variable por defecto media página), centrada, y con el texto en
negrita

\newenvironment{mientorno}[1][0.5]{\begin{center}%
\begin{minipage}{#1\textwidth}\bfseries}{\end{minipage}%
\end{center}}
y tras denir éste nuevo entorno, tecleando
125

\begin{mientorno}
Ejemplo de texto con una anchura estándar de media
página, centrado, y en tipo de letra negrita.
\end{mientorno}
obtenemos

Ejemplo de texto con una an-


chura estándar de media página,
centrado, y en tipo de letra ne-
grita.
o, si queremos emplear el argumento optativo y reducir la anchura del
texto a 0.3 veces la anchura de texto (\textwidth)

\begin{mientorno}[0.3]
Ejemplo de texto con una anchura de un tercio de página,
centrado, y en tipo de letra negrita
\end{mientorno}
Ejemplo de texto
con una anchura de
un tercio de pági-
na, centrado, y en
tipo de letra negri-
ta.
Es importante tener en cuenta que los argumentos de un entorno sólo
pueden utilizarse en la denición de entrada (DefEntrada). Si los necesi-
tamos en la denición de salida, podemos utilizar el truco de guardarlos
convenientemente, empleando un comando \newcommand para ello. En el
siguiente ejemplo, creamos un entorno cita para escribir citas, dando el
nombre del autor como argumento

\newenvironment{cita}[1]{\newcommand{\autor}{#1}%
\begin{quote}\itshape``}{''\end{quote}\centerline{\autor}}

Tras lo cual, por ejemplo

\begin{cita}{Andres Fernández}
Nuestras vidas son los ríos que van a parar al mar,
que es el morir
\end{cita}
126

produce

 Nuestras vidas son los ríos que van a parar al mar, que es el
morir 

Andres Fernández

3 Compilación por partes


Imaginemos que estamos escribiendo un documento largo (un libro, por
ejemplo). Es conveniente, a la hora de depurar errores, escribir y compilar
AT X proporciona dos posibilidades
cada parte por separado. Para ello L E

El comando \input{Fichero.tex} produce que el compilador, al


encontrar esta instrucción, lee el chero indicado en el argumento
y continúa compilando dicho chero. En el argumento del comando
podemos dar, si el chero no se encuentra en el directorio actual,
el camino hasta él. Debe tenerse cuidado de que instrucciones clave
como \documentclass o \begin{document} no se dupliquen. Enton-
ces, para escribir un libro, por ejemplo, podemos tener un documento
con la siguiente estructura

\documentclass[opciones]{book}
\usepackage{paquete1}
.....
\begin{document}
%\input{capitulo1.tex}
%\input{capitulo2.tex}
%\input{capitulo3.tex}
......
\end{document}

y, al hacer la depuración de errores, descomentar individualmente


cada una de las líneas \input{fichero.tex}. También es posible
utilizar este comando para otros usos, por ejemplo, incluir listas de
instrucciones \newcommand y personalizaciones diversas que podamos
querer hacer comunes a varios documentos.

Una alternativa más cómoda es utilizar, en vez de \input, el co-


mando \include{Fichero} .tex en
(es esencial omitir la extensión
éste caso). Entonces, en el preámbulo se puede colocar el coman-
do \includeonly{Fichero1,Fichero2,...}, que hace que sólo se
127

incluyan en la compilación los cheros que aparecen en el argumen-


to. Es importante mencionar que al comenzar y terminar, la orden
\include induce un salto de página (más exactamente, un comando
\clearpage, que además expulsa elementos otantes pendientes),
por lo que esta alternativa es conveniente utilizarla sólo para incluir
capítulos de un libro o tesis.

4 Conceptos básicos sobre contadores y longitudes


4.1 Contadores
AT X utiliza un amplio número de conta-
En su funcionamiento habitual, L E
dores con el n de enumerar distintos elementos de un documento: pá-
ginas, secciones, tablas, guras, etc... Cada contador tiene un nombre
que permite identicarlo; así, page es el contador que identica páginas,
chapter capítulos, etc... En lo sucesivo, denotaremos ese nombre como
NombreContador. Cada contador lleva asociados una serie de elementos de
diferente signicado: nombre, valor (siempre un número entero) y formato,
éste último pudiendo tomar variadas formas: (I, II, III..., a, b, c...)
Se dispone de los siguientes formatos de contador

\arabic{NombreContador} 1, 2, 3, 4, . . .
\alph{NombreContador} a, b, c, d, . . . (nota 1)

\Alph{NombreContador} A, B, C, D, . . . (nota 1)

\roman{NombreContador} I, II, III, IV . . . (nota 2)

\Roman{NombreContador} I, II, III, IV, . . .

\fnsymbol{NombreContador} *, **, ***, ****, . . . (nota 3)

Nota 1: El valor del contador no puede superar 27 (número de letras en


el abecedario.

Nota 2: El resultado mostrado es el que se obtiene con babel, opción


spanish. Sin ello, se obtendría i, ii, iii, ... No obstante, aunque se
use el paquete babel con la opción spanish es posible obtener las
minúsculas en la numeración romana insertando el siguiente código
en el preámbulo

\makeatletter
\def\@roman#1{\romannumeral #1}
\makeatother
128

Nota 3: Igualmente, el resultado mostrado es el obtenido con babel y


spanish; en caso contrario, se utilizan las marcas inglesas: *, „, …...
En ambos casos, el valor no puede ser superior a 6.

Asociado a cada contador existe un comando, llamado representación


del contador, que permite imprimir el valor del contador NombreContador
en alguno de los formatos descritos; el comando es \theNombreContador.
Cuando L AT X dene un nuevo contador, le asigna inicialmente la re-
E
presentación correspondiente al formato \arabic; si queremos cambiarla,
podemos redenirla mediante el comando \renewcommand*; veamos unos
ejemplos de lo que se puede hacer

Este ejemplo muestra cómo obtener


el número de la página en curso; ésta
página es la número \thepage, en la
representación original.\\
\renewcommand*{\thepage}{\roman{page}}
Ahora esta cambiada a números romanos; ésta
página es la número \thepage.\\
\renewcommand*{\thepage}{[Sec. %
\thesection\ -- Pág. \arabic{page}]}
Luego, algo más elaborado; ésta página
es la número \thepage.\\
\renewcommand*{\thepage}{\arabic{page}}
Finalmente, volvemos al formato original; ésta
página es la número \thepage.
Este ejemplo muestra cómo obtener el número de la página en curso;
ésta página es la número 128, en la representación original.
Ahora esta cambiada a números romanos; ésta página es la número cxxviii.
Luego, algo más elaborado; ésta página es la número [Sec. 4  Pág. 128].
Finalmente, volvemos al formato original; ésta página es la número 128.
Podemos cambiar los valores de un contador con los siguientes coman-
dos

\setcounter{NombreContador}{Valor} Asigna al contador


NombreContador el valor entero Valor, con independencia del valor
anterior.

\addtocounter{NombreContador}{Valor} Incrementa
NombreContador con la cantidad Valor, que puede ser positiva o
negativa.
129

Esta es la sección \thesection. Pero podemos


a\~{n}adirle 2 fácilmente;
\addtocounter{section}{2}
ahora estamos en la sección \thesection.
Mejor lo dejamos como estaba, porque si no las
restantes secciones quedarían numeradas
incorrectamente (esto es, el efecto de estos
cambios de numeración es \emph{global}).
\addtocounter{section}{-2}

Esta es la sección 4. Pero podemos añadirle 2 fácilmente; ahora estamos


en la sección 6. Mejor lo dejamos como estaba, porque si no las restantes
secciones quedarían numeradas incorrectamente (esto es, el efecto de estos
cambios de numeración es global ).
Podemos recuperar el valor numérico de un contador, independiente-
mente de su representación, con el comando

\value{NombreContador}
lo cual es útil para la gestión de contadores, como veremos a continuación.
Se denen nuevos contadores con la instrucción

\newcounter{NuevoContador}[ContadorExistente]
que introduce un contador de nombre NuevoContador, y le asigna cero co-
mo valor inicial. El argumentoContadorExistente es optativo, y sirve pa-
ra subordinar NuevoContador al contador ya existente ContadorExistente,
de la misma forma que, por ejemplo, el contador subsection está subordi-
nado al contador section: incrementar en una unidad el contador section
implica que el contador subsection se reinicia a cero automáticamente.
Veamos un ejemplo de cómo introducir un nuevo contador, con el n
de enlazar varias listas enumerate manteniendo la numeración (enumi es
AT X para los ítems de primer nivel en entornos
el contador estándar L E
enumerate)

Las primeras lecciones son las siguientes:


\newcounter{conserva}
\begin{enumerate}
\item Números reales
\item Números complejos
\setcounter{conserva}{\value{enumi}}
\end{enumerate}
130

Mas adelante, se estudiarán temas más complicados:


\begin{enumerate}
\setcounter{enumi}{\value{conserva}}
\item Continuidad
\item Derivación
\end{enumerate}
Las primeras lecciones son las siguientes:

1. Números reales

2. Números complejos

Mas adelante, se estudiarán temas más complicados:

3. Continuidad

4. Derivación

Debe mencionarse que al crear un nuevo contador se crea automá-


ticamente el comando \theNuevoContador, con la denición \arabic{
NuevoContador} por defecto.
Cuando se modica un contador con los comandos \setcounter y
\addtocounter, los contadores subordinados no se ponen a cero; para
obtener ése efecto, se dispone de los comandos

\stepcounter{NombreContador} Incrementa NombreContador en una


unidad, y reinicia todos los contadores subordinados a éste.

\refstepcounter{NombreContador} Lo mismo que el anterior, pero


declarando también como valor del comando \ref el texto generado
por \theNuevoContador cuando se utilizan referencias cruzadas con
los comandos \label y \ref.

Veamos un pequeño ejemplo que ilustra como utilizar estos comandos;


denimos

\newcounter{prg}[section]\newcounter{linea}[prg]
\newcommand*{\lin}{%
\addtocounter{linea}{1}\thelinea\quad}
\renewcommand*{\theprg}{\arabic{section}.\arabic{prg}}
\newenvironment*{programa}{%
\refstepcounter{prg}
\begin{center}Programa~\theprg\end{center}
\obeylines\obeyspaces}{\par}
131

Y, luego utilizamos nuestro nuevo entorno, programa, así

\begin{programa}
Entrada: $N$, $x_1,x_2,\ldots,x_N$.
Salida: $SUMA=\sum_{i=1}^Nx_i$.
\lin $SUMA=0$.
\lin Para $i=1,2,\ldots,N$: $SUMA=SUMA+x_i$.
\lin SALIDA($SUMA$); PARAR.
\end{programa}

con lo que se obtiene

Programa 4.1

Entrada: N , x1 , x2P
, . . . , xN .
N
Salida: SU M A = i=1 xi .
1 SU M A = 0.
2 Para i = 1, 2, . . . , N : SU M A = SU M A + xi .
3 SALIDA(SU M A); PARAR.

4.2 Longitudes
AT X es también capaz de crear y modi-
Al igual que con los contadores, L E
car variables de tipo Longitud. Las longitudes que habitualmente utiliza
AT X pueden tomar dos tipos de valores
L E

Rígidas: Toman un valor determinado; por ejemplo \quad = 11.747 pt,


\thinspace = 1.958 pt, \hoffset = -28.45274 pt .
1

Elásticas: Toman un valor que L AT X puede modicar dentro de unos lí-


E
mites, a n de optimizar la composición del documento. Por ejemplo,
\bigskip, \medskip y \smallskip.

El comando \bigskip se dene como

\vspace{12pt plus 4pt minus 4pt}


AT X debe introducir un espacio vertical de 12
lo cual quiere decir que L E
pt, aunque tiene la libertad de incrementarlo o reducirlo en 4 pt, según
convenga a n de distribuir el espacio de forma homogénea. Alguna de

1 Hay que tener cuidado en no confundir el concepto de longitud y del valor que
toma una longitud; \hoffset es una longitud, mientras que \quad y \thinspace son
comandos que dejan en blanco un espacio horizontal de valor rígido
132

las holguras plus o minus pueden estar ausentes en la denición, pero si


ambas aparecen deben estar en ése orden.
Los comandos \bigskip, \medskip y \smallskip, respectivamente,
\bigskip-
tienen asociadas longitudes elásticas con valores almacenados en
amount, \medskipamount y \smallskipamount, por lo que tales comandos
se denirían de hecho como

\bigskip −→ \vspace{\bigskipamount}
\medskip −→ \vspace{\medskipamount}
\smallskip −→ \vspace{\smallskipamount}

y donde cada una de éstas longitudes elásticas toma valores

\bigskipamount :: 12.0pt plus 4.0pt minus 4.0pt


\medskipamount :: 6.0pt plus 2.0pt minus 2.0pt
\smallskipamount :: 3.0pt plus 1.0pt minus 1.0pt

Puede obtenerse el valor de cualquier longitud con el comando

\the\NombreLongitud
donde NombreLongitud es el nombre de la longitud; éste comando siem-
pre expresa las longitudes en unidades pt, con el punto como separador
decimal.
Al igual que ocurría con los contadores, los valores de una longitud
pueden modicarse. Existen dos comandos para ello

\setlength{\NombreLongitud}{Valor} Asigna a la longitud


\NombreLongitud un valor igual al argumento Valor, que debe ser
una longitud (ésto es, expresada en unidades cm, pt, etc...). Pue-
de ser un valor tanto rígido como elástico (por ejemplo, 5mm plus
1mm minus 2mm). También es posible que Valor sea una varia-
ble de longitud (\textwidth) con quizás un factor multiplicativo
(0.5\textwidth, por ejemplo).
Una forma alternativa de asignar a \NombreLongitud un valor es
utilizar la sintaxis
\NombreLongitud=Valor o bien \NombreLongitud Valor.
\addtolength{\NombreLongitud}{Valor} Suma a la longitud
\NombreLongitud la cantidad Valor, que puede ser positiva o nega-
tiva.
133

Al contrario que lo que ocurría con los contadores, cuyas asignaciones


tienen carácter global (es decir, trascienden el grupo dentro del cual han
sido declaradas, y tienen efecto en todo el resto del documento), las asig-
naciones de longitud tienen por defecto carácter local ; si se realizan dentro
de un grupo, el valor anterior a la asignación se recupera a la salida del
grupo. En el caso de que deseemos un efecto global, puede ser aconsejable
realizar tales asignaciones en el preámbulo del documento.
Se pueden denir nuevas longitudes con el comando

\newlength{\NuevaLongitud}

\NuevaLongitud; es importante que


que crea una nueva longitud llamada
\NuevaLongitud no sea ni un comando ni una longitud LATEX ya existentes,
en cuyo caso obtendríamos un mensaje de error. Por defecto, las nuevas
longitudes son creadas con un valor inicial 0.0 pt.
Para la gestión de valores de longitud son útiles los siguientes comandos

\settowidth{\NombreLongitud}{Objeto}
\settoheight{\NombreLongitud}{Objeto}
\settodepth{\NombreLongitud}{Objeto}

que calculan, respectivamente, la anchura (width), altura (height) y pro-


fundidad
2 (depth) de un objeto, asignando el valor resultante a la longitud
\NombreLongitud.

Ejemplos
Imaginemos que queremos medir la longitud asociada al comando \quad.
Para ello podemos denir una nueva longitud

\newlength{\longi}

a continuación, asociamos a \longi la anchura del espacio asociado al


comando \quad

\settowidth{\longi}{\quad}

tras lo cual, el comando \the\longi muestra el valor 9.99756pt.


Ahora creamos otra longitud

\newlength{\longitud}
2 Distancia por debajo de la línea de base.
134

que empleamos para medir la anchura, altura, y profundidad de la palabra


Integral.

\newlength{\longitud}
\noindent La anchura de la palabra {\Large Integral}
es \settowidth{\longitud}{\Large Integral} \the\longitud,
su altura es \settoheight{\longitud}{\Large Integral}
\the\longitud\ y su profundidad es
\settodepth{\longitud}{\Large Integral} \the\longitud.

La anchura de la palabra Integral es 46.44038pt, su altura es 9.91672pt


y su profundidad es 2.80008pt.

Veamos un último ejemplo

\newlength{\longA}
\settowidth{\longA}{xxxxx}
\begin{center}
xxxxx\\
xxxxx\hspace{\longA}xxxxx\\
xxxxx\hspace{\longA}xxxxx\hspace{\longA}xxxxx\\
xxxxx\hspace{\longA}xxxxx\\
xxxxx
\end{center}
xxxxx
xxxxx xxxxx
xxxxx xxxxx xxxxx
xxxxx xxxxx
xxxxx

Longitudes elásticas fil


En este apartado describiremos dos unidades de longitud elásticas:
• fil • fill
que LAT Xutiliza para introducir espacios de longitud variable. Ambas pro-
E
porcionan dos diferentes grados de elasticidad innita; fil es una unidad
de longitud elástica innitamente más grande que cualquier longitud rígi-
da, mientras que fill es innitamente más grande que fil (y por tanto,
que cualquier longitud rígida).
Basados en éstas unidades de longitud, existe una variedad de coman-
dos
135

\fill Es una longitud, de valor 0pt plus 1fill.


\stretch{n} Es una longitud de valor 0pt y holgura un núme-
ro n de unidades fill (entero o decimal). Así, \fill equivale a
\stretch{1}.
De éste modo, los comandos \hfill y \vfill equivalen a \hspace{\fill}
y \vspace{\fill}, respectivamente. La utilidad del comando \stretch{n}
está en la posibilidad de separar objetos con espacios proporcionales a di-
versas cantidades. Véase el siguiente ejemplo

Colocamos un texto centrado:\\[2mm]


\vrule\hspace{\stretch{1}}Texto
centrado\hspace{\stretch{1}}\vrule\par
Ahora colocamos un texto con el doble de espacio a
un lado que al otro:\par
\noindent\vrule\hspace{\stretch{1}}%
Texto\hspace{\stretch{2}}\vrule\par
Otro ejemplo, con la distancia entre T1 y T2 igual a
tres veces la distancia a los m\'{a}rgenes:\par
\noindent\vrule\hspace{\stretch{1}}
T1\hspace{\stretch{3}}T2 \hspace{\stretch{1}}\vrule
Colocamos un texto centrado:

Texto centrado
Ahora colocamos un texto con el doble de espacio a un lado que al otro:
Texto
Otro ejemplo, con la distancia entre T1 y T2 igual a tres veces la
distancia a los márgenes:
T1 T2
(para imprimir la barra vertical de referencia al comienzo y nal de
línea en el ejemplo anterior, hemos utilizado el comando \vrule; podemos
poner una marca en blanco con los comandos \mbox{} o \null).
\hfill y \vfill (ya descritos).

\hfil y \vfil Análogos a los anteriores, pero empleando para la


elasticidad una unidad fil en lugar de fill.
El siguiente ejemplo ilustra la diferencia entre las unidades fil y fill
\noindent A \hfil B \hfil C \\
D \hfill E \hfill F \par
136

A B C
D E F
¾Porqué cambian las posiciones de B y C en la primera línea? La res-
puesta está en que, antes de cortar una línea, L AT X introduce un espacio
E
de elasticidad variable, a n de evitar que las líneas cortas se estiren hacia
la derecha. Éste espacio se controla a través de la longitud \parfillskip,
que por defecto tiene el valor 0pt plus 1fil. Por tanto, en el primer
ejemplo se equilibran los espacios asociados a tres comandos \hfil. En el
segundo caso, esto no sucede, dado que \hfill corresponde a un grado de
elasticidad innitamente más grande.

\hfilneg y \vfilneg Equivalen, respectivamente, a


\hspace{0pt plus -1fil} y a \vspace{0pt plus -1fil}, y per-
miten cancelar el efecto de los comandos \hfil y \vfil; por ejemplo

\parindent=0pt \parfillskip=0pt
\newcommand*{\centrar}[1]{\vrule\hfil #1\hfil\vrule}
\centrar{Centrado}\par
\centrar{Centrado anulado\hfilneg}\par
\centrar{\hfilneg Centrado anulado}

Centrado
Centrado anulado
Centrado anulado

\hss Equivale a \hspace{0pt plus 1fil minus 1fil}, e intervie-


ne en la denición de los comandos \leftline, \rightline y
\centerline.
\vss Análogo vertical, que equivale a
\vspace{0pt plus 1fil minus 1fil}.

Los siguientes comandos (algunos de ellos ya mencionados anterior-


mente) tienen un efecto similar a \hfill, con la diferencia de que en el
espacio intermedio introducen diversos símbolos de extensión variable (en
dirección horizontal)

\hrulefill −→ Raya

A\hrulefill B\hrulefill C

A B C
137

\dotfill −→ Raya

A\dotfill B\dotfill C

A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .C

downbracefill y \upbracefill −→ Llaves hacia abajo o hacia arri-


ba, respectivamente.

\leftarrowfill y \rightarrowfill −→ Flechas a izquierda y de-


recha, respectivamente.

\parindent=0pt \parfillskip=0pt
\mbox{}\hspace{\stretch{1}}A%
\hspace{\stretch{3}}\mbox{}\\[-3pt]
\mbox{}\downbracefill\mbox{}%
\hspace{\stretch{2.3}}\mbox{}\\
B\hspace{\stretch{1}}C%
\hspace{\stretch{1}}D\\[-7pt]
\mbox{}\hspace{\stretch{2.3}}%
\mbox{}\upbracefill\mbox{}\\
\mbox{}\hspace{\stretch{1}}E%
\hspace{\stretch{2}}F%
\hspace{\stretch{1}}\mbox{}\\[-5pt]
\mbox{}\hspace{\stretch{0.5}}%
\rightarrowfill%
\hspace{\stretch{0.5}}\mbox{}\\

A
z }| {
B C D
| {z }
E F
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−→

Antes de continuar es preciso reasignar los valores por defecto a: \parfillskip


(para evitar que las líneas cortas, como la última de este párrafo, se estiren
a la derecha), esto es

\parfillskip = 0pt plus 1fil


y también a \parindent (para que se sangre automáticamnete el inicio de
cualquier párrafo), esto es
138

\parindent=18pt
Finalmente, describiremos los comandos \rlap{Objeto} y \llap{Objeto};
respectivamente, colocan Objeto en una caja de anchura 0pt (por lo que
el cursor no se mueve), con el objeto saliendo hacia la derecha o izquierda
de la caja. Por ejemplo

Tachamos la palabra izquierda%


\llap{\rule[2.5pt]{48pt}{0.4pt}}
y seguimos escribiendo.\par
\hfil \rlap{uno}\llap{dos}\vrule \par
\hfil \llap{dos}\rlap{uno}\vrule

Tachamos la palabra izquierda y seguimos escribiendo.


dosuno
dosuno

5 Programación con TEX


5.1 Otro modo de denir comandos
Anteriormente hemos visto cómo denir nuevos comandos mediante la uti-
lización de los comandos tipo \newcommand AT X. Existe un modo
de L E
alternativo, empleando comandos de más bajo nivel de TEX (de hecho,
AT X). Para ello existe el
éste es el modo estándar de construir macros L E
comando \def, con la siguiente sintaxis

\def\NuevoComando#1...#9{Definicion}

donde \NuevoComando es el nombre del nuevo comando, #1...#9 los argu-


mentos de que depende (hasta 9), y entre llaves su denición. Por ejemplo,
denamos

\def\ecuacion#1#2{\ensuremath{#1_1^2+#1_2^2+\cdots+#1_#2^2=1}}

tras lo cual,\ecuacion{z}{5} produce z12 + z22 + . . . + z52 . Nótese el uso


del comando \ensuremath{Formula}, que tiene como resultado asegurar
que la expresión Formula se ejecuta dentro del modo matemático (por lo
cual, no es necesario abrir y cerrar signos $ antes y después del comando
\ecuacion).
El comando \def, a diferencia del \newcommand, permite elegir los de-
limitadores de los argumentos (que con \newcommand siempre deben ser
139

llaves, o corchetes para los argumentos optativos). Además, es incluso po-


sible prescindir de las llaves al escribir los argumentos del comando; por
ejemplo, en el caso anterior podríamos haber escrito \ecuacion z5 con el
mismo resultado que \ecuacion{z}{5}:TEX lee secuencialmente los ar-
gumentos tras el nombre del comando. Para elegir delimitadores especiales
entre los argumentos, simplemente los incluimos entre #1, #2,... #n. Por
ejemplo, redenimos \ecuacion como

\def\ecuacion#1;#2:{\ensuremath{#1_1^2+#1_2^2+\cdots+#1_#2^2=1}}

lo cual indica que el primer argumento debe terminar con  ; y el segundo


con  :. Ahora debemos escribir \ecuacion z;5: para obtener z1 + z2 +
2 2
2
. . . + z5 .

5.2 Deniciones globales


Todos los comandos creados con \newcommand, \providecommand o \def,
(o redenidos con \renewcommand) son locales ; es decir, si están denidos
dentro de un grupo, su acción estará restringida a ése grupo. En el ejem-
plo siguiente se ve cómo la redenición del comando \prueba dentro del
entorno itemize carece de efecto fuera de éste

\def\prueba{Prueba 1}
\begin{itemize}
\def\prueba{Prueba 2}
\item \prueba
\end{itemize}
\prueba

Prueba 2

Prueba 1
Si queremos denir un comando global (con efecto fuera del grupo
donde es denido) se puede utilizar cualquiera de estas dos alternativas

\global\def\NuevoComando#1...#9{Definicion}
\gdef\NuevoComando#1...#9{Definicion}

es decir, o bien anteponemos el comando \global a la denición, o bien


usamos el comando \gdef. El comando \global también puede usarse para
hacer globales otro tipo de asignaciones de tipo local, como por ejemplo
las modicaciones de longitudes (\setlength y \addtolength).
140

\def\prueba{Prueba 1}
\begin{itemize}
\global\def\prueba{Prueba 2}
\item \prueba
\end{itemize}
\prueba

Prueba 2

Prueba 2

5.3 El comando \let


Imaginemos que denimos un comando en función de otros comandos, y los
comandos en los que se basa cambian. Este cambio se trasladará entonces
al nuevo comando

\noindent\def\uno{1}Uno: \uno \\
\def\dos{\uno\uno} Dos: \dos \\
\def\uno{uno} Uno: \uno \ Dos: \dos

Uno: 1
Dos: 11
Uno: uno Dos: unouno
En ocasiones, puede necesitarse denir un comando que sea indepen-
diente de los cambios que se produzcan en los comandos sobre los que está
denido. Con esta utilidad está construido el comando \let, que saca una
copia de un comando para que funcione siempre de la misma manera, con
independencia de redeniciones posteriores de comandos. Se utiliza con la
sintaxis

\let\NuevoComando=\ComandoExistente

que puede usarse también en caso de comandos con argumentos (cuidan-


do de que el comando antiguo y su copia tengan el mismo número de
argumentos). El ejemplo siguiente ilustra el funcionamiento de \let

\noindent\def\uno{1}Uno: \uno \\
\def\dos{\uno\uno} Dos: \dos \\
\let\UNO=\uno \def\DOS{\UNO\UNO}
\def\uno{uno} Uno: \uno \\
Dos: \dos \ \ DOS: \DOS
141

Uno: 1
Dos: 11
Uno: uno
Dos: unouno DOS: 11

5.4 Manipulación de contadores y longitudes a través de TEX


Veamos ahora cómo se trabaja con contadores y longitudes desde el punto
de vista de TEX. Se pueden realizar operaciones con tres tipos de magni-
tudes

Contadores: Corresponden a registros tipo count, y se denen con el


comando \newcount\NuevoContador; el registro puede almacenar
números enteros entre -214783647 y +214783647.

Longitudes rígidas: Corresponden a registros tipo dimen, y se denen


con el comando \newdimen\NuevaLongitud.
Longitudes elásticas: Existen dos tipos de registro

skip: se denen con \newskip\NuevaLongitud\verb.


muskip: análogo de longitud elástica, que se utiliza sólo en el
modo matemático; se denen con \newmuskip\NuevaLongitud.

Existen comandos para realizar las cuatro operaciones aritméticas bá-


sicas (suma, resta, multiplicación y división) con todos los registros ante-
riores (ambas sintaxis, con advance o advance by, etc..., son equivalentes)

\advance\NombreRegistro ±Numero
\advance\NombreRegistro by ±Numero donde Numero debe ser una
longitud, si tratamos con registros de tipo longitud, o un número en-
tero, si trabajamos con un contador.

\multiply\NombreRegistro ±Numero
\multiply\NombreRegistro by ±Numero donde Numero debe ser
siempre un entero.

\divide\NombreRegistro ±Numero
\divide\NombreRegistro by ±Numero donde Numero también de-
be de ser un entero. En el caso de un contador, se almacenará la parte
entera de la división; en el caso de longitudes, éstas se transforman
primero a unidades sp (la más pequeña de TEX; 1 sp = 65536 pt)
y el resultado se redondea a un múltiplo entero de ésta unidad.
142

Veamos unos ejemplos

\newskip\LongElastica
\LongElastica=%
10pt plus 1fill minus 2fill%
\par \the\LongElastica
\advance\LongElastica by %
5pt plus 3fill minus 1fill%
\par \the\LongElastica
\multiply\LongElastica by 3%
\par \the\LongElastica
\divide\LongElastica by 2
\par \the\LongElastica

10.0pt plus 1.0ll minus 2.0ll


15.0pt plus 4.0ll minus 3.0ll
45.0pt plus 12.0ll minus 9.0ll
22.5pt plus 6.0ll minus 4.5ll

En el caso de longitudes rígidas, existe un forma alternativa de multi-


\Longitud1=Numero\Longitud2 (donde \Longitud1
plicarlas por un factor:
y \Longitud2 pueden ser la misma). Este procedimiento de multiplicación
tiene la ventaja de que pueden utilizarse factores no enteros (0.5, 1.25,
etc...). En el caso de que \Longitud1 sea elástica, la acción anterior la
transforma automáticamente en una rígida; por ejemplo, tras

\LongElastica=10pt plus 1fill minus 2fill


\LongElastica=2.5\LongElastica

\the\LongElastica da como resultado 22.5pt plus 6.0ll minus 4.5ll.

El siguiente ejemplo ilustra cómo manejar contadores, deniendo un


nuevo comando \hora que calcula la hora, a partir del contador \time, que
almacena el número de minutos después de la medianoche (probar como
ejercicio que el comando funciona correctamente)

\def\hora{\newcount\horas \newcount\minutos
% (Definimos dos nuevos contadores)
\horas=\time \global\divide\horas by 60
% (la parte entera de la division produce la hora)
\minutos=\horas \multiply\minutos by 60
143

\advance\minutos by -\time
\global\multiply\minutos by -1
% (multiplicamos las horas por 60, restamos \time,
% y cambiamos de signo para obtener los minutos)
\the\horas:\ifnum\minutos<10 0\fi\the\minutos}
% (se imprime horas:minutos, con un cero extra si minutos < 10)

6 Manejo de cajas en TEX


Cuando TEX compone un documento, trabaja manejando diversos objetos
como si fuesen cajas con tres diferentes dimensiones (altura, anchura y
profundidad), medidas con respecto a un punto de referencia. Por ejemplo,
las líneas se componen alineando las cajas asociadas a cada carácter, según
la línea base. Entonces, cada línea se convierte a su vez en una caja, que se
alinea (ahora verticalmente), y así sucesivamente hasta que se construye
la página.
Existen tres modos fundamentales de trabajo de TEX, a la hora de
componer cajas

Modo horizontal: TEX agrupa cajas alinéandolas horizontalmente unas


junto a otras, a lo largo de la línea base, creando una nueva caja
de anchura igual a la suma de anchuras, y de altura y profundi-
dad iguales a la mayor de las alturas y profundidades de las cajas,
respectivamente. Existen dos sub-modos diferentes dentro del modo
horizontal

Ordinario: Es el característico cuando se construyen párrafos;


se alinean caracteres horizontalmente, y después se va cortando
para formar líneas de la misma anchura. TEX estira o contrae
los espacios para optimizar el resultado nal.

Restringido: En este modo, sólo se alinean las cajas horizontal-


mente, sin posibilidad de dividir la caja resultante en cajas más
pequeñas. Dentro de este modo, no se entienden los comandos
asociados a saltos de línea, párrafo, etc...

Modo vertical: Se agrupan las cajas verticalmente unas sobre otras (man-
teniendo los puntos de referencia en la misma vertical), creando una
caja con anchura igual a la mayor de las anchuras de las subcajas, y
con altura total (suma de altura y profundidad) igual a la suma de
alturas y profundidades de las subcajas. Al igual que para el modo
horizontal, existen dos sub-modos
144

Ordinario: Es el modo por defecto, en el cual TEX va recogiendo


todas las cajas creadas en los modos horizontal y matemático,
para empaquetarlas verticalmente.

Interno: Se limita a apilar verticalmente cajas, creando una caja


indivisible (por ejemplo, cuando se construyen las columnas de
una tabla o matriz).

Modo matemático: Se abre para escribir símbolos o fórmulas matemá-


ticas, existe en dos variantes, ordinario (o tipo párrafo) y resaltado
(para fórmulas centradas y resaltadas), las cuales ya se han descrito
en la sección correspondiente.

En los sucesivo, discutiremos algunos comandos de TEX útiles para


crear y colocar cajas (que por supuesto, pueden ser utilizados dentro de
cualquier documento L AT X; al n y al cabo, LAT X, como ya se ha repetido,
E E
no es más que un conjunto de macros construidas a partir de TEX, que es
el lenguaje de bajo nivel que realmente compila el documento fuente).

6.1 Cajas horizontales: \hbox


El comando \hbox{Material} crea cajas indivisibles, en las que el conte-
nido se escribe de izquierda a derecha. El argumento Material es procesado
en modo horizontal restringido, y puede estar compuesto de varias cajas.
En realidad, el comando \mbox AT X no es más que
de L E \hbox

\def\mbox#1{\leavevmode\hbox{#1}}

(el comando \leavevmode se asegura de salir del modo vertical, si


estuviésemos dentro de él).
Cada caja creada mediante \hbox tiene una anchura natural depen-
diente de la anchura del Material incluido en ella. Al igual que ocurría con
el comando \makebox, es posible cambiar dicha anchura a nuestro gusto

\hbox to Ancho{Material} Crea una caja de anchura Ancho y co-


loca en ella el material de izquierda a derecha. Si la anchura del
material es menor que Ancho, se estirarán los espacios elásticos para
ocupar todo el espacio disponible, mientras que si es mayor, el mate-
rial sobresaldrá de la caja (con lo que se sobreescribirá en texto que
venga a continuación); véase el siguiente ejemplo (donde se añade
\fbox a n de remarcar las cajas
145

\parindent 0pt Normal:


\fbox{\hbox{caja ejemplo}}
(texto) \\ Estiramos:
\fbox{\hbox to 3cm{caja ejemplo}}
(texto) \\ Contraemos: \fbox{\hbox
to 1cm{caja ejemplo}} (texto)

Normal: caja ejemplo (texto)

Estiramos: caja ejemplo (texto)

Contraemos: caja ejemplo


(texto)

\hbox spread Ancho{Material} Es análogo al anterior, con la dife-


rencia de que aumenta (o disminuye si el valor es negativo) la anchura
natural de la caja en la cantidad Ancho

\parindent 0pt
Estiramos: \fbox{\hbox spread
5mm{caja ejemplo}} (texto) \\
Contraemos: \fbox{\hbox spread
-5mm{caja ejemplo}} (texto)

Estiramos: caja ejemplo (texto)

Contraemos: caja ejemplo


(texto)

Con lo ya visto, podemos ahora entender la denición de los coman-


dos \leftline, \centerline, \rlap, etc..., que muestran la potencia de
combinar las manipulaciones de cajas y longitudes

\def\leftline#1{\hbox to \hsize{#1\hss}}
\def\rightline#1{\hbox to \hsize{\hss#1}}
\def\centerline#1{\hbox to \hsize{\hss#1\hss}}
\def\rlap#1{\hbox to 0pt{#1\hss}}
\def\llap#1{\hbox to 0pt{\hss#1}}

donde recordemos que el comando \hss equivale a \hspace{0pt plus


1fil minus 1fil}; la longitud \hsize almacena la anchura del texto:
normalmente equivale a \textwidth, aunque puede modicarse a volun-
tad.
146

6.2 Cajas verticales: \vbox


Las cajas verticales se construyen con el comando \vbox{Material}; este
comando inicia el modo vertical interno, aunque es posible que TEX ya
esté en ése modo antes de invocar el comando. El comportamiento del
comando depende de si la caja vertical contiene texto en el nivel más alto,
o si contiene el comando \vrule (explicado más adelante); en ambos casos
la anchura será la de una línea de texto (\hsize). Veamos algunos ejemplos

\parindent 0pt \fbox{\vbox{Texto de


prueba \hbox{Una caja} \hbox{Otra
caja}}} \fbox{\vbox{\hbox{Una
caja} Texto de prueba \hbox{Otra
caja}}} \fbox{\vbox{\hbox{Una caja}
\hbox{Otra caja} \hbox{Otra caja mas}}}
\fbox{\vbox{\hsize 4cm Texto de prueba
\hbox{Una caja} \hbox{Otra caja}}} \par
% Nótese la diferencia entre
% modos horizontal y vertical:
\fbox{\vbox{Texto de prueba}} \par
\fbox{\vbox{\hbox{Texto de prueba}}}

Texto de prueba Una caja Otra caja

Una caja
Texto de prueba Otra caja

Una caja
Otra caja Texto de prueba Una caja
Otra caja mas Otra caja

Texto de prueba

Texto de prueba

Al igual que con las cajas horizontales, se puede jar de antemano la


altura de una caja vertical con
\vbox to Alto{Material} o \vbox spread Alto{Material}
cuyo signicado es idéntico a lo ya visto para \hbox (cambiando Ancho
por Alto).
Es interesante remarcar la exibilidad y potencia del comando \vbox
de TEX; a diferencia de lo que ocurre con \hbox, no existen realmente
comandos en LAT X con tanta capacidad; por ejemplo, \parbox o el entorno
E
147

minipage permiten jar la altura de la caja, pero además requieren jar


su anchura, lo cual puede ser un inconveniente.
El comando \vbox to Alto{Material} alinea la línea base de la caja
global con la línea base de la última caja (es decir, la inferior) incluida en
la caja vertical. Existen también los comandos
\vtop to Ancho{Material} y \vcenter to Ancho{Material}
que alinean, respectivamente, la parte superior y central de la caja total
con la línea base (ATENCIÓN: \vcenter sólo se puede emplear dentro del
modo matemático).

\parindent 0pt
\fbox{\vbox to 5mm{\hbox{Texto 1}}}
\fbox{\vbox to 10mm{\hsize 3cm%
\vfil\centerline{Texto 2}\vfil}}
\fbox{\vtop to 5mm%
{\vfil\hbox{Texto 3}}}

Texto 2
Texto 1

Texto 3

6.3 Moviendo cajas


Dependiendo del modo (horizontal o vertical) en el que nos encontremos,
disponemos de diversos comandos para desplazar cajas. En el modo hori-
zontal, podemos desplazar cajas verticalmente con
\raise Desplazamiento o \lower Desplazamiento
donde Desplazamiento es cualquier longitud. De hecho, éstos dos coman-
dos son esencialmente el mismo, ya que \raise D = \lower -D. Al usar
éstos comandos, la línea base queda inalterada, aunque la altura y pro-
fundidad pueden cambiar. La nueva altura y profundidad de la caja se
calculan dependiendo de los desplazamientos. Véase el siguiente ejemplo,
donde se remarca la línea base con el comando \hrule
Texto de prueba; Texto de prueba; Texto de prueba\\
\fbox{\hbox{\hbox to 0pt{\vbox{\hrule width 6cm}} \hbox{pepe}
\lower3mm\hbox{pepe}\hbox{pepe}}}\ andres\ jaime\hspace{5mm}
\fbox{\hbox{\hbox to 0pt{\vbox{\hrule width 6cm}} \hbox{pepe}
\raise5mm\hbox{pepe} \hbox{pepe}}} \ andres \ jaime \\
Texto de prueba; Texto de prueba; Texto de prueba\\
\hrule
148

Texto de prueba; Texto de prueba; Texto de prueba


pepe

pepe pepe andres jaime pepe pepe andres jaime


pepe
Texto de prueba; Texto de prueba; Texto de prueba

El comando \kern Longitud se utiliza con carácter general para des-


plazar cajas una cantidad Longitud (que puede ser negativa). La dirección
del desplazamiento, horizontal o vertical, depende que en que modo esté
TEX trabajando; en el modo horizontal (en una caja \hbox) el desplaza-
miento es horizontal, mientras que en el modo vertical (en una caja \vbox)
el desplazamiento es vertical. Veamos como ejemplo el código TEX para
obtener el logotipo  TEX

\hbox{T\kern-.1666em\lower.5ex\hbox{E}\kern-.125ex X}

Para mover horizontalmente las componentes de una caja vertical


\vbox se utilizan los comandos

\moveleft Desplazamiento y \moveright Desplazamiento


Es interesante hacer notar que la anchura de la caja tras los despla-
zamientos sólo se modica con desplazamientos a la derecha, y no a la
izquierda: la anchura se calcula comenzando en el punto de referencia y
extendiéndose hacia la derecha hasta la parte derecha de la componente
más alejada; por ejemplo (nótese cómo ahora se utiliza \frame para remar-
car las cajas, en vez de \fbox, que dejaba un pequeño espacio \fboxsep
alrededor)

\frame{\vbox{\hbox{\frame{T}}%
\hbox{\frame{E}}\hbox{\frame{X}}}}
\hspace{1cm}\frame{\vbox{\moveleft10pt%
\hbox{\frame{T}}\moveright10pt\hbox%
{\frame{E}}\hbox{\frame{X}}}}%
\hspace{1cm}
\frame{\vbox{\hbox{\frame{T}}%
\moveleft12pt\hbox{\frame{E}}%
\moveright12pt\hbox{\frame{X}}}}
T T T
E E E
X X X
149

6.4 Modicando, creando y reutilizando cajas


AT X; veremos
Hemos visto ya el modo de guardar y reutilizar cajas en L E
ahora el modo, más general, de manipularlas a través de TEX. Podemos
declarar una caja nueva con el comando \newbox\NombreCaja, tras lo cual
se almacena una caja en la variable \NombreCaja con
\setbox\NombreCaja=Caja
A diferencia del comando \sbox, que sólo maneja cajas horizontales,
con el comando \setbox Caja puede ser tanto horizontal como vertical.
Otra forma de declarar cajas es hacer uso de los registros (256) de los
que TEX dispone para guardar cajas. Están numerados de 0 a 255, estando
el número 255 reservado para la caja de la página. Podríamos entonces,
en vez de declarar primero NombreCaja con \newbox, crear directamente
cajas numeradas con
\setbox1=Caja1 \setbox2=Caja2 etc...
(tras lo cual, para todos los comandos descritos a continuación, se debería
reemplazar \NombreCaja por 1, 2, ...)
Para insertar dentro de un documento los contenidos de una caja, se
emplean los comandos

\box\NombreCaja Tras ser usado, borra el contenido de la caja.

\copy\NombreCaja Usa el contenido de la caja sin borrarlo.

Por ejemplo \setbox1=\hbox{A} \fbox{\box1} \fbox{\box1} pro-


duce A , mientras que\setbox1=\hbox{A} \fbox{\copy1} \fbox{\copy1}
produce A A .
Para una caja \NombreCaja dada, las siguientes longitudes almacenan,
respectivamente, los valores de anchura, altura y profundidad de la caja
\wd\NombreCaja \ht\NombreCaja \dp\NombreCaja
\newbox\NuevaCaja y asigna-
Véase el siguiente ejemplo; denimos:
mos \setbox\NuevaCaja=\hbox{A B C} tras lo cual, \the\wd\NuevaCaja
produce 28.46527pt (la anchura de la caja). Podemos estirar la caja con
\wd\NuevaCaja=2\wd\NuevaCaja tras lo cual \frame{\copy\NuevaCaja}
produce A B C .
Los siguientes comandos son análogos a \box y \copy, pero, en vez
de simplemente escribir el contenido de la caja, las desmembran en sus
subcomponentes en el momento de ser usadas. Hay versiones horizontal y
vertical, así como versiones  \box y  \copy, que respectivamente vacían
o no la caja tras ser usada
150

\unhbox\NombreCaja \unvbox\NombreCaja
\unhcopy\NombreCaja \unvcopy\NombreCaja
El siguiente ejemplo ilustra la diferencia entre simplemente copiar una
caja, y desmembrarla con \unhbox

\setbox1=\hbox{A B}
\setbox2=\hbox to 2.0\wd1{\unhcopy1}
\frame{\copy2}
\setbox3=\hbox{A B}
\setbox4=\hbox to 2.0\wd3{\copy3}
\frame{\copy4}

A B A B

en el primer caso, tras desmembrar la caja, al construir una caja de anchura


doble a la primitiva los elementos se reparten tratando de llenar toda la
caja; en el segundo, al estar la caja intacta, los elementos se mantienen a
la derecha de la caja \box4, que contiene a \box3.

6.5 Rayas horizontales y verticales


En TEX se pueden utilizar dos tipos de rayas o cajas negras; las horizon-
tales, \hrule, y las verticales, \vrule. Para cada una de ellas se pueden
especicar tres dimensiones: Anchura, Altura y Profundidad
\hrule height Altura width Anchura depth Profundidad
\vrule height Altura width Anchura depth Profundidad
puede omitirse cualquiera de estos tres parámetros, en cuyo caso TEX
asignará valores por defecto

Altura 0.4 pt y Profundidad 0 pt, si la raya es horizontal (\hrule).


Anchura 0.4 pt, si la raya es vertical (\vrule).

El resto de dimensiones se obtiene extendiendo la raya indenida-


mente hasta completar el tamaño de la caja que la contiene.

La diferencia esencial entre \hrule y \vrule reside en que \hrule es


material vertical, por lo que sólo puede ser utilizado entre párrafos o dentro
de una caja vertical \vbox, mientras que \vrule es material horizontal, por
lo que sólo puede utilizarse dentro de un párrafo o de una caja horizontal
\hbox.
151

\hbox{Ejemplo \vrule width 2pt\vbox to


25pt{linea \par vertical}} \vspace{3mm}
\vbox{\hbox to 4cm{Otro ejemplo}
\kern 1mm\hrule height 1pt\kern 1mm
\hbox to 3cm{linea horizontal}}
linea

Ejemplo vertical

Otro ejemplo

linea horizontal

\hbox{\vbox{\hbox to 25mm{\hfil%
\hbox{Texto 1}\hfil}\kern2pt\hrule}%
\vrule \lower7.5mm\vbox to 15mm{\hrule%
\kern-11pt\hbox to 25mm{\hfil%
\hbox{Texto 2}\hfil}\vfil\hbox to
25mm{\hfil\hbox{Texto 3}\hfil}%
\kern2pt\hrule}}
Texto 2

Texto 1

Texto 3

7 Repetición de objetos
Veremos ahora otro modo de repetir objetos, ligeramente diferente del co-
mando \multiput ya visto. En vez de proporcionar el número de objetos
a repetir, puede interesarnos llenar un cierto espacio, de longitud ja o va-
riable, con copias de un objeto. Mediante el comando \leaders se pueden
obtener copias de un objeto en tal forma. Para ello, debemos especicar
el objeto a copiar y el espacio que debe ser completado con copias de tal
objeto. La sintaxis del comando es la siguiente

\leaders Objeto \hskip Longitud


donde hay que tener en cuenta que Objeto debe ser una caja, y Longitud
puede ser cualquier longitud (incluyendo elásticas). Se puede reemplazar
\hskip 1fil por simplemente \hfil, o \hskip 1fill por \hfill. Por
ejemplo
152

\noindent\null\leaders\hrule\hfill
\null\\[2mm]
\null\leaders\hbox{/\textbackslash}%
\hskip.4\hsize\null\\[2mm] \hbox to
4cm{\leaders\hbox{\frame{\hbox to
10pt{\vbox to 10pt{}}} }\hfill}

/\/\/\/\/\/\/\/\/\/\/\/\

Es importante tener en cuenta que es necesario marcar los puntos


entre los que actúa el comando \leaders, sobre todo si estamos utilizando
longitudes elásticas. Es por eso que se utiliza en el ejemplo anterior \null
(otras posibilidades equivalentes serían \mbox{} o \kern0pt).
En el caso de que el objeto a repetir no sea un múltiplo entero del
tamaño de la caja que contiene a las copias del objeto, aparecerá cier-
ta asincronía. Para solucionar esto, se dispone de otras dos variantes de
\leaders para repetir un objeto

\cleaders Objeto \hskip Longitud


\xleaders Objeto \hskip Longitud
mientras que \leaders aparta el espacio sobrante a la derecha, \cleaders
reparte el espacio sobrante a ambos lados (centrando las copias del objeto
en la caja); \xleaders distribuye el espacio sobrante entre cada copia del
objeto, ajustando las copias del objeto a la caja; por ejemplo

\frame{\hbox to 4cm{\leaders%
\hbox{$\bigotimes$}\hfill}}\par
\frame{\hbox to 4cm{\cleaders%
\hbox{$\bigotimes$}\hfill}}\par
\frame{\hbox to 4cm{\xleaders%
\hbox{$\bigotimes$}\hfill}}
NNNNNNNNNN
NNNNNNNNNN
NNNNNNNNNN

De igual manera a lo ya visto, se pueden repetir objetos en la di-


rección vertical; para ello, simplemente se cambia el segundo argumen-
to del comando \leaders de horizontal (\hskip Longitud) a vertical
(\vskip Longitud).
153

8 Sistematizando tareas
Veremos ahora una serie de comandos útiles para sistematizar tareas; ima-
ginemos que cada vez que se inicia un párrafo, fórmula, caja, ..., queremos
que se ejecuten una serie de comandos. Para ello, se tienen las siguientes
posibilidades

\everypar{Comandos} Antes de empezar a dar formato a cada pá-


rrafo, se ejecutan Comandos. Veamos un ejemplo, en el que denimos
un nuevo contador párrafo, y para cada párrafo, se le pone como tí-
tulo Párrafo n en negrita y centrado

\parindent 0pt \parskip 10pt


\newcounter{parrafo} \setcounter{parrafo}{0}
\everypar{\addtocounter{parrafo}{1}
\centerline{\bfseries Párrafo %
\theparrafo}\\[1mm]}
Esto es un primer párrafo de
ejemplo; en el código anterior...\par
...se puede ver cómo incrementamos
el valor del contador \texttt{parrafo
al empezar cada párrafo...\par ...y l
recuperamos, para imprimirlo, con el
comando \verb@\theparrafo@.

Párrafo 1
Esto es un primer párrafo de ejemplo; en el código anterior...

Párrafo 2
...se puede ver cómo incrementamos el valor del contador parrafo al
empezar cada párrafo...

Párrafo 3
...y lo recuperamos, para imprimirlo, con el comando \theparrafo.

\everymath{Comandos} Análogo a \everypar; se ejecutan los co-


mandos cada vez que entremos en modo matemático ordinario (o
modo texto).

\everydisplay{Comandos} En este caso, los comandos se ejecutan


154

cada vez que se abre el modo matemático resaltado. Imaginemos que


queremos que todas las fórmulas resaltadas se escriban en color rojo;
para conseguirlo, simplemente se puede declarar \everydisplay{
\color{red}}.

\everyhbox{Comandos} y \everyvbox{Comandos} Ejecutan los co-


mandos cada vez que comienze una caja horizontal (\hbox) o vertical
(\vbox), respectivamente.

9 Condicionales y bucles
El compilador TEX posee amplias capacidades a la hora de programar
diversas acciones. Además de poder manejar diversos registros (contadores,
longitudes, cajas) con total exibilidad, su potencia se ve reforzada al ser
posible incluir bucles y condicionales dentro de un documento.
Un condicional es una estructura de control que elige entre diversas
acciones en función del valor de una variable lógica; su forma general es

IF <Test> [Instrucciones A] ELSE [Instrucciones B] END IF


lo cual signica que, de cumplirse la condición <Test>, se ejecutarán las
instrucciones  A, y de no cumplirse, las instrucciones  B. En lenguaje
TEX, el condicional se escribe

\if<Test> [Parte A] \else [Parte B] \fi


aunque podemos prescindir de cualquiera de las partes (A o B), y tener
simplemente

\if<Test> [Parte A] \fi \if<Test> \else [Parte B] \fi


(el último, correspondería a una versión de negación del condicional).
Los condicionales pueden anidarse sin problemas; cada \fi se asume
que corresponde con el más reciente \if. A continuación describiremos al-
gunos de los 17 condicionales que están denidos en TEX, correspondientes
a diversos formatos de la condición <Test>

\ifnum Numero1 Relacion Numero2


Se utiliza para comparar números enteros, con Relacion igual a <,
>ó =. Como ejemplo, denimos un contador \cuatrodigit, que
imprime números es formato de cuatro dígitos, con independencia
de su tamaño
155

\def\cuatrodigit#1{%
\ifnum #1<1000 0\fi
\ifnum #1<100 0\fi
\ifnum #1<10 0\fi #1}

tras lo cual

\cuatrodigit{8} - \cuatrodigit{18} -
\cuatrodigit{198} - \cuatrodigit{1238}

produce: 0008 - 0018 - 0198 - 1238.

\ifodd Numero
sirve para comprobar si un número entero es impar. En el caso de
que queramos analizar el valor de un determinado contador, recorde-
mos que debemos sustituir Numero por \value{NombreContador}, si
estamos trabajando con un contador denido en L AT X. Por contra,
E
si el contador ha sido denido en TEX(con \newcount), podemos re-
cuperar el valor numérico con \the\NombreContador o
\number\NombreContador. Por ejemplo, compilando

Esta página es \iffodd\value{page} impar \else par\fi

obtendremos Esta página es impar, si es impar, o Esta página es


par si es par.

\ifdim Dimension1 Relacion Dimension2


se utiliza para comparar dos longitudes. Como ejemplo, vamos a
construir un comando que crea una caja enmarcada con un texto
en tamaño \huge (que será el primer argumento del comando) y un
texto de leyenda, que se colocará centrada si la longitud de la leyenda
es menor que la del texto principal, o en estilo párrafo si es mayor

\newlength{\anchura}
\def\textoresaltado#1#2{%
\setbox1=\hbox{\fbox{\huge#1}}
\settowidth{\anchura}{#2}\vbox{\copy1%
\vspace{6pt}\ifdim\anchura<\wd1\hbox
to\wd1{\hss#2\hss}\else%
\hbox{\parbox{\wd1}{#2}}\fi}}
\textoresaltado{Juan y Ana}{quieren
156

un coche}\par\medskip
\textoresaltado{Juan y Ana}{necesitan
comprarse un coche nuevo porque el
antiguo se les ha quedado viejo}

Juan y Ana
quieren un coche

Juan y Ana
necesitan comprarse un
coche nuevo porque el
antiguo se les ha queda-
do viejo

\ifhmode  \ifvmode  \ifmmode


sirven para comprobar, respectivamente, si estamos dentro del modo
horizontal, vertical, o matemático (en cada caso, no se distingue entre
los diferentes sub-modos). Por ejemplo, el comando \ensuremath de
AT X está denido como
L E

\newcommand{\ensuremath}[1]{\ifmmode #1\else $#1$\fi}

\ifcase Numero [Caso n=0] \or [Caso n=1] \or ...


[Caso n=M] \else [Caso n=Otro Numero] \fi
sirve para ejecutar diferentes acciones, de acuerdo a los valores que
tome la variable Numero (que puede, por ejemplo, ser un contador);
si n=0 n=1 las, segundas,
se ejecutaran las primeras instrucciones, si
y así sucesivamente hasta M; opcionalmente podemos colocar más
instrucciones después de \else, que se ejecutarán si Numero es menor
que 0 o mayor que M. Véase el siguiente ejemplo, que traduce números
naturales a notación hexadecimal

\def\hexadec#1{\ifcase #1 %
0\or 1\or 2\or 3\or 4\or %
5\or 6\or 7\or 8\or 9\or %
A\or B\or C\or D\or E\or F\fi}
157

Comando Resultado

\hexadec{7} 7

\hexadec{12} C

\ifx Argumento1Argumento2
compara dos argumentos entre sí, siendo verdadero si son iguales y
falso si son distintos. Argumento1 y Argumento2 pueden ser caracte-
res, cajas, comandos... Es importante puntualizar que, al comparar
cadenas de caracteres o cajas, es necesario con anterioridad incluir
tales contenidos en sendos comandos, que serán después comparados.
Por ejemplo

\def\a{Hola} \def\b{Hola} \def\c{hola}


\def\d{H} \def\e{\hbox{hola}}
\def\f{\hbox{hola}}
Comparaci\'{o}n 1:
\ifx AA iguales \else distintos \fi\\
% (caracteres aislados son comparables)
Comparación 2:
\ifx \a\b iguales \else distintos \fi\\
Comparación 3:
\ifx \a\c iguales \else distintos \fi\\
Comparación 4:
\ifx H\d iguales \else distintos \fi\\
Comparación 5:
\ifx \c\e iguales \else distintos \fi\\
Comparación 6:
\ifx \e\f iguales \else distintos \fi\\

Comparación 1: iguales
Comparación 2: iguales
Comparación 3: distintos
Comparación 4: distintos
Comparación 5: distintos
Comparación 6: iguales

AT X también proporciona algunos condicionales predenidos, que es


L E
bueno conocer
158

\if@twoside  \if@twocolumn
son verdaderos si se está procesando el documento con las opciones
twoside o twocolumn respectivamente, y falsos en caso contrario.

\@ifnextchar Caracter{ParteA}{ParteB}
Se procesa ParteA en caso de que el siguiente caracter coincida con
Caracter, y ParteB en caso contrario. Este condicional es muy utili-
zado en LAT X en los comandos que utilizan argumentos opcionales,
E
caracterizados por ir entre corchetes. Veamos un ejemplo de cómo
denir un comando con dos argumentos, uno de ellos optativo; que-
remos recuadrar un texto dado con una línea de grosor variable, 0.4
pt por defecto

\def\mirecuadro[#1]#2{{\fboxrule#1\fbox{#2}}}
\makeatletter
\def\recuadro{\@ifnextchar[{\mirecuadro}{
\mirecuadro[0.4pt]}}
\makeatother

Tras esto, \recuadro{Prueba} resultará en Prueba , mientras que


si queremos cambiar el grosor de línea a 1pt, deberemos escribir

\recuadro[1pt]{Prueba} −→ Prueba . ¾Por qué los comandos


\makeatletter y \makeatother? La razón está en que, por defec-
to, está prohibido utilizar el símbolo @ en los comandos dentro de
un documento; éste comando se utiliza frecuentemente en las clases
de documentos o paquetes, por lo que se restringe su uso para evi-
tar coincidencias casuales con comandos ya denidos. El comando
\makeatletter levanta esta prohibición, mientras que el comando
\makeatother la vuelve a recuperar.
Podemos utilizar lo aprendido en el ejemplo anterior para construir
comandos más complicados. Por ejemplo, procedamos a modicar el co-
mando \recuadro (renombrándolo a \Recuadro) para que ahora admita
dos argumentos optativos, según la sintaxis

\Recuadro[Grosor](Color){Texto}
siendo Grosor la anchura del recuadro (0.4pt por defecto), y Color su co-
\@ifnextchar
lor (rojo por defecto). Utilizando recursivamente el condicional
se obtiene el resultado deseado.

\makeatletter
159

\def\Mirecuadro(#1)#2{{\color{#1}\fbox{\color{black}#2}}}
\def\Mirecuadroaux[#1]{\fboxrule#1\@ifnextchar(%
{\Mirecuadro}{\Mirecuadro(red)}}
\def\Recuadro{\@ifnextchar[{\Mirecuadroaux}{
\Mirecuadroaux[0.4pt]}}
\makeatother

\Recuadro{Hola} −→ Hola

\Recuadro[2pt](blue){Hola} −→ Hola

9.1 Nuevos condicionales


Volviendo a TEX, veremos ahora la forma de denir nuevos condicionales
con el comando \newif, de sintaxis

\newif\ifNombre

donde Nombre corresponderá al nombre del nuevo condicional. El comando


\newif se encarga de denir tres nuevos comandos

\Nombretrue Asigna a la variable lógica Nombre el valor verdadero.

\Nombrefalse Asigna a la variable lógica Nombre el valor falso.

\ifNombre... \else... \fi Nuevo condicional, que ejecuta una


acción u otra según el valor que se le haya asignado anteriormente a
la variable lógica Nombre.

Como ejemplo, denamos un nuevo entorno ocultar, de forma que


el texto dentro de tal entorno se muestre o no en el documento nal,
dependiendo del valor de una variable lógica

\newbox\boxocultar
\newif\ifocultar
\newenvironment{ocultar}
{\setbox\boxocultar\vbox\bgroup}
{\egroup\ifocultar\else\par\unvbox\boxocultar\fi}

tras esta denición, si se coloca el comando \ocultartrue, todo el texto


dentro de entornos ocultar que estén a continuación de este comando no se
verá en el documento nal; en cambio, sustituyéndolo por \ocultarfalse,
se reestablecerá el texto dentro de tales entornos, por ejemplo
160

\ocultartrue \begin{ocultar}
texto de prueba que no se ve
\end{ocultar}
\ocultarfalse \begin{ocultar}
texto de prueba que si se ve
\end{ocultar}
texto de prueba que si se ve
La utilidad de éste entorno puede estar, por ejemplo, en la inclusión de
notas y comentarios que puede convenirnos suprimir en el documento nal;
añadir un comando \ocultartrue es más rápido que comentar líneas una
por una. Merece la pena analizar un poco la denición del nuevo entorno

1. \newbox\boxocultar Dene una nueva caja para almacenar el texto


oculto.

2. \setbox\boxocultar\vbox\bgroup Abre una caja vertical y la al-


macena en \boxocultar; nótese el empleo del comando \bgroup:
éste comando es análogo a  {, es decir, es un delimitador de gru-
po. La sutileza radica en que, de usar directamente  {, habría un
conicto con la sintaxis del comando \newenvironment
3. {\egroup\ifocultar\else\par\unvbox\boxocultar\fi} Tras ha-
ber abierto la caja vertical, y haberse rellenado con todo el texto
dentro del entorno, se cierra con \egroup (análogo a  }); recordemos
que todo lo que iba entre el primer conjunto de llaves corresponde a
AT X a ejecutar al entrar en el entorno, mientras
las instrucciones L E
que este segundo conjunto de instrucciones corresponde a lo que debe
hacerse al salir del entorno. Tras eso, se comprueba con ifocultar
si el texto debe ocultarse, en cuyo caso, no se hace nada, y, en caso
contrario, se deshace e imprime la caja \boxocultar.

9.2 Bucles
Se realizan bucles con el comando

\loop ParteA \if... ParteB \repeat


donde ParteA y ParteB son conjuntos de comandos, y \if es cualquier
condicional, sin la correspondiente partícula \fi. TEX procesa primero
ParteA; si la condición es verdadera, procesa ParteB, y repite el proceso
comenzando de nuevo porParteA; si no, inmediatamente se sale del bucle.
Denamos como ejemplo un comando que imprima los primeros n números
naturales
161

\newcount\minum
\def\numeros#1{\ifnum#1< 1%
\else 1\minum=1\loop
\advance\minum by 1%
\ifnum\minum<#1,
\the\minum\repeat\fi}
\numeros{40}
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40

En LAT X están predenidos bucles asociados a condicionales especí-


E
cos, útiles para manejar números y longitudes

\@whilenum{TestNum} \do {Accion}


\@whiledim{TestLong} \do {Accion}

En ellos, se evalúa la relación numérica TestNum o TestLong (compa-


ración de números o longitudes, respectivamente); mientras sea verdadera
se procesarán las instrucciones en Accion, terminando el bucle en el mo-
mento en que la relación sea falsa. El siguiente ejemplo calcula la sucesión
de todos los números pares menores que uno dado

\newcount\cuenta
\makeatletter \def\pares#1{%
\minum=2\@whilenum\minum<#1\do
{\the\minum, \advance\minum by 2}}
\makeatother
Los n\'{u}meros pares menores que 95
son: \pares{95}
Los números pares menores que 95 son: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94,

También es posible denir bucles en los que la condición de control sea


un condicional \ifNombre denido en TEX con \newif
\@whilesw\ifNombre\fi{Accion}
con lo que TEX procesará los comandos de Accion hasta que el condicional
\ifNombre sea falso.
162

Finalmente, se pueden también construir estructuras  for / next, en


las cuales se ejecuta una serie de acciones para cada uno de los elementos
de una lista. Se utiliza la sintaxis

\@for\Nombre:=\lista\do{Accion}
donde \Nombre es una variable (que no hace falta denirla previamente)
que va almacenando los diferentes elementos de una lista (\lista), que
debe ser previamente denida con \def; los elementos de la lista han de
estar separados entre sí por comas. En el siguiente ejemplo, primeramente
denimos a través de TEX un comando \longitud{Palabra} para contar
el número de letras de una palabra, que luego utilizamos para crear un
tabla con las longitudes de una lista de palabras almacenadas en \lista
\newcount\nna \def\longitud#1{\nna=0%
\expandafter\contar#1\end\number\nna}
\def\contar#1{%
\ifx#1\end\let\next=\relax
\else\advance\nna by1
\let\next=\contar\fi\next}
La longitud de la frase ``pepe tiene
un coche'' es de \longitud{pepe
tiene un coche} caracteres no blancos
La longitud de la frase pepe tiene un coche es de 16 caracteres no blancos

\def\lista{Pepe,Juan,Andr\'{e}s,Antonio}
\begin{tabular}{l}
Nombre y longitud \\ \hline
\makeatletter \@for\nombre:=\lista
\do{\hbox to 30mm{\nombre\hss}%
\longitud{\nombre} \\ } \makeatother
\end{tabular}

Nombre y longitud

Pepe 4

Juan 4

Andrés 7

Antonio 7
163

9.3 Otros ejemplos


Invertir una palabra
\def\Invertir#1{%
\def\INV{}\INVCAD#1\end\INV}%
\def\INVCAD#1{%
\ifx#1\end\let\next=\relax
\else\CONCAD#1%
\let\next=\INVCAD\fi\next}%
\def\CONCAD#1{\edef\INV{#1\INV}}
\Invertir{Espejo}Espejo\par
Curioso\Invertir{Curioso}

ojepsEEspejo
CuriosoosoiruC

Números primos
\newif\ifprime \newif\ifunknown %
\newcount\n \newcount\p %
\newcount\d \newcount\a %
\def\primes#1{2,~3 % (#1 is at least 3)
\n=#1 \advance\n by-2 % n more to go
\p=5 % odd primes starting with p
\loop\ifnum\n>0 \printifprime\advance\p by2 \repeat}
\def\printp{, % we will invoke \printp if p is prime
\ifnum\n=1 \fi
\number\p \advance\n by -1 }
\def\printifprime{\testprimality \ifprime\printp\fi}
\def\testprimality{{\d=3 \global\primetrue
\loop\trialdivision \ifunknown\advance\d by2 \repeat}}
\def\trialdivision{\a=\p \divide\a by\d
\ifnum\a>\d \unknowntrue\else\unknownfalse\fi
\multiply\a by\d
\ifnum\a=\p \global\primefalse\unknownfalse\fi}

Tras lo cual, \primes{200} calcula e imprime los 200 primeros números


primos: 2, 3 , 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67,
71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
164

331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019,
1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093,
1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187,
1193, 1201, 1213, 1217, 1223.
CAPÍTULO III

LA CLASE FCUNP

1 Introducción

Cualquier estudiante de pregrado de la Facultad de Ciencias de la Universi-


dad Nacional de Piura (FC-UNP) que desea redactar su tesis se encuentra
con el inconveniente de generar, en formato adecuado, las primeras cinco
páginas de la misma; así como, las páginas de la lista de contenidos, lis-
ta de guras, lista de tablas, anexos, apéndices y resumen. Además de la
carencia de un adecuado editor de fórmulas matemáticas que son de uso
común a tales estudiantes.
Este trabajo presenta la clase Fc Unp que permite, al estudiante de
pregrado de la FC-UNP, redactar todo el trabajo tesis de acuerdo con el
formato que exige el Reglamento de Tesis de dicha facultad. Adicionalmen-
te, y dado que es requisito presentar un ejemplar de la tesis en formato
virtual, la clase Fc Unp permite obtener un archivo PDF de la misma,
AT X. De este modo, el alumno que utilice la clase
mediante PDFL E Fc Unp
para redactar su trabajo de tesis se concentrará únicamente en el conte-
nido del mismo, sin tener que invertir tiempo en darle formato. Por otra
parte, si la FC-UNP ocializa el uso de dicha clase obtendrá como bene-
cio que la totalidad de los trabajos tendrán un formato único y de nivel
profesional.

2 Cómo invocar la clase FcUnp

La clase Fc Unp es una modicación de la clase estándar book de LATEX.


Por tanto, es posible que el estudiante utilice todos los comandos de book
166

en la preparación del cuerpo de la tesis. La clase Fc Unp se invoca reem-


plazando book por fcunp en la primera línea del documento:

\documentclass{fcunp}
%
\begin{document}
<Cuerpo de la tesis>
\end{document}

3 Comandos implementados
3.1 Comando para separar datos ingresados
1. \and
Permite separar diversos datos, tales como: nombres de autores, nom-
bres de patrocinadores, dedicatorias, etc.

3.2 Comandos para ingresar datos


1. \school{<n >}
Permite ingresar un número entero positivo entre 1 y 5, incluidos,
para identicar la Escuela Profesional. Admite n = 1 para referirse
a la Escuela de Biología, n = 2 para referirse a la Escuela de Física,
n = 3 para referirse a la Escuela de Matemática, n = 4 para referirse
a la Escuela de Electrónica ó n = 5 para referirse a la Escuela de
Estadística.
Cabe mencionar que de acuerdo al número ingresado se obtendrá
automáticamente la primera primera página (cubierta) en el color
asignado a la respectiva escuela.

2. \title{<Título de la tesis >}


Permite ingresar el título de la tesis.

3. \author{<Autor de la tesis >}


Permite ingresar el nombre del autor de la tesis. En caso de ser
dos autores los nombres de los mismos deberán ir separados con el
comando \and.
4. \sponsor{<Patrocinador >}
Permite ingresar el nombre del patrocinador de la tesis. En caso de
ser dos patrocinadores los nombres de los mismos deberán ir separa-
dos con el comando \and.
167

5. \jury{<Miembros del Jurado >}


Permite ingresar los nombres de los miembros del Jurado de la tesis,
los mismos que se separarán con el comando \and.

6. \dedication{<Dedicatoria >}
Permite ingresar la dedicatoria del autor. En caso de ser dos autores
las dedicatorias de los mismos deberán ir separadas con el comando
\and.

7. \acknowledgments{<Agradecimientos >}
Permite ingresar los agradecimientos del autor, los mismos que se
separarán con el comando \and.

8. \resumen{<Resumen >}
Permite ingresar el resumen de la tesis.

9. \palabrasclave{<Palabras clave >}


Permite ingresar las palabras clave.

10. \abstract{<Resumen en inglés >}


Permite ingresar el resumen en idioma inglés.

11. \keywords{<Palabras clave en inglés >}


Permite ingresar las palabras clave en idioma inglés.

3.3 Comandos para generar páginas


1. \makecover
Permite generar la portada.

2. \maketitle
Permite generar la página de título.

3. \makesignature
Permite generar la página de rmas.

4. \makededication
Permite generar la página de la(s) dedicatoria(s).

5. \makeacknowledgments
Permite generar la página de los agradecimientos.
168

3.4 Otros comandos


1. \frontmatter
Apertura de la tesis. La numeración de las páginas ubicadas después
de este comando se realiza con números romanos.

2. \mainmatter
Parte central de la tesis. Aquí también se ubican las conclusiones
y recomendaciones mediante el comando \conclusions, los anexos
con el comando \annex \appendix.
y los apéndices con el comando

3. \backmatter
Cierre de la tesis.

4 Paquetes incorporados
La clase Fc Unp incorpora los siguientes paquetes estándar de LATEX:
geometry Este paquete se utiliza para establecer los márgenes de página
de la Tesis.

babel Este paquete se utiliza activando la opción spanish con la nalidad


de conseguir una adecuada partición silábica de las palabras.

inputenc Este paquete se utiliza activando la opción latin1 con la -


nalidad de permitir el uso y la compilación de caracteres que no
corresponden al código ASCII.

amsthm Este paquete se utiliza para darle un formato adecuado a las de-
niciones, teoremas, corolarios, lemas, proposiciones, etc. y también
a las demostraciones.

graphicx Este formato se utiliza para poder insertar grácos y es preciso


incluirlo en la clase pues de otra forma no se podría incluir el logo
de la UNP en la cubierta.

epstopdf Este paquete se utiliza para convertir los grácos .eps a .pdf
AT X.
y poder así generar el archivo PDFL E

hyperrefn Este paquete constituye una ligera modicación del paquete


estándar hyperref y se utiliza para generar los hipervínculos del
índice general, de las referencias, de las direcciones web, así como
también para generar los marcadores.
169

5 Un ejemplo especíco
El ejemplo que se presenta en esta sección permite observar el código
elemental de una tesis, así como algunas páginas importantes en formato
dvi (ver Figs. 3.1, 3.2, 3.3, 3.4 y 3.5), generadas con la clase Fc Unp .
AT X
Además en las guras 3.6 y 3.7 se aprecia la salida obtenida por PDFL E
con el paquete hyperrefn que permite generar hipervínculos y marcadores
en forma automática.
La línea 1 del código anexado invoca la clase Fc Unp . La línea 3 invoca
tres paquetes, de la American Mathematical Society, para trabajar con
matemática. Las líneas 517, muestran el correcto uso de los comandos
para ingresar datos y del comando para separar datos ingresados ; mientras
que las líneas 2327, 77 y 78 muestran el correcto uso de los comandos
para generar páginas. Las líneas 21, 35 y 67, separan la apertura, la parte
central y el cierre de la tesis y las líneas 53, 60 y 64 indican el inicio de las
conclusiones (y recomendaciones), los anexos y apéndices, respectivamente.
El resto de líneas terminan de completar el cuerpo del documento y son de
AT X generado con la clase estándar
uso común en cualquier documento L E
book.

Código Anexado

1 \documentclass{fcunp}
2
3 \usepackage{amssymb,amsmath,amsfonts}
4
5 \school{3}
6 \title{``Título de la Tesis''}
7 \author{Primer Autor \and Segundo Autor}
8 \sponsor{Primer patrocinador \and Segundo patrocinador}
9 \jury{Presidente \and Secretario \and Vocal}
10 \dedication{Primera dedicatoria.\\\textit{Primer Autor} \and
11 Segunda dedicatoria.\\\textit{Segundo Autor}}
12 \acknowledgments{Primer agradecimiento. \and
13 Segundo agradecimiento.}
14 \resumen{Este es el resumen.}
15 \palabrasclave{Palabraclave1, palabraclave2.}
16 \abstract{This is the abstract.}
17 \keywords{Keyword1, keyword2.}
18
170

19 \begin{document}
20
21 \frontmatter
22
23 \makecover
24 \maketitle
25 \makesignature
26 \makededication
27 \makeacknowledgments
28 \chapter{Prólogo}
29 Éste es el prólogo.
30 \tableofcontents
31 \listoffigures
32 \chapter{Introducción}
33 Ésta es la introducción.
34
35 \mainmatter
36
37 \chapter{Este es el primer capítulo}
38 Texto para el primer capítulo.
39 \section{La primera sección del primer capítulo}
40 Texto para la primera sección del primer capítulo.
41 \begin{equation}ax^2+bx+c=0\,.\end{equation}
42
43 \chapter{Este es el segundo capítulo}
44 \section{La primera sección del segundo capítulo}
45 Texto para la primera sección del segundo capítulo.
46
47 \begin{figure}
48 \centering
49 \includegraphics[scale=0.5]{img/unp.eps}
50 \caption{Mi primera figura.}
51 \end{figure}
52
53 \conclusions
54 \chapter{Conclusiones}
55 Aquí van las conclusiones.
56
57 \chapter{Recomendaciones}
58 Aquí van las recomendaciones.
171

59
60 \annex
61 \chapter{Este es un anexo}
62 Texto para el anexo.
63
64 \appendix
65 \chapter{Este es un apéndice}
66 Texto para el apéndice.
67
68 \backmatter
69
70 \begin{thebibliography}{CM}
71 \bibitem{Buh}
72 Buhmann, M. D. (2004).
73 Radial Basis Functions: Theory and Implementations.
74 Cambridge University Press. United Kingdom.
75 \end{thebibliography}
76
77 \makeresumen
78 \makeabstract
79
80 \end{document}

Fin

Adicionalmente, el texto referente a las escuelas y al título profesional,


así como el color de las primeras páginas, es modicado en forma auto-
mática cuando el código de la línea 5 se sustituye por \school{1} (Fig.
3.8, izquierdaarriba), \school{2} (Fig. 3.8, derechaarriba), \school{4}
(Fig. 3.8, izquierdaabajo) y \school{5} (Fig. 3.8, derechaabajo).

6 Obtención de la clase FcUnp


El Reglamento de Tesis de la Facultad de Ciencias, la clase Fc Unp , un
archivo PDF de este libro, el paquete hiperrefn; así como los archivos
ejemplo.tex, ejemplo.dvi y ejemplo.pdf (los dos últimos generados a
partir del primero con la clase Fc Unp ) pueden obtenerse desde
https://sites.google.com/site/ripanaque/docencia
172

Fig. 3.1 Cuatro primeras páginas (dvi outputs) de la tesis formateadas


con la clase Fc Unp .
173

Fig. 3.2 Los agradecimientos, el prólogo y el índice general y (dvi outputs)


son automáticamente formateadas con la clase Fc Unp .
174

Fig. 3.3 El índice de guras, la introducción y las primeras págimas de


los capítulos I y II (dvi outputs) son automáticamente formateadas con la
clase Fc Unp .
175

Fig. 3.4 Las conclusiones, recomendaciones, anexos y apéndices (dvi out-


puts) son automáticamente formateadas con la clase Fc Unp .
176

Fig. 3.5 La bibliografía, el resumen y el abstract (dvi outputs) también


son automáticamente formateadas con la clase Fc Unp .
177

Fig. 3.6 Salida formateada por Fc Unp y producida por PDFLATEX con el
paquete hyperrefn, con sus respectivos marcadores.
178

Fig. 3.7 Salida formateada por Fc Unp y producida por PDFLATEX con el
paquete hyperrefn, con sus respectivos hipervínculos y marcadores.
179

Fig. 3.8 Formato automático por escuelas con Fc Unp .


180

7 Código de la clase FcUnp

%%
%% Este es el archivo `fcunp.cls',
%% generado con texmaker.
%%
%% Copyright 2011
%%
%% Este archivo consiste en una modificaci\'{o}n, de la
%% clase book, hecha por el Prof. R. Ipanaqu\'{e}

\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{fcunp}[2011/01/01 v2.0
LaTeX document class for the Bachelor Thesis of
the Sciences Faculty at the National University of Piura]

\newcommand\@ptsize{}% tama\'{n}o de letra 12

\newif\if@mainmatter\@mainmattertrue
\newif\if@chapter\@chaptertrue
\newif\if@conclusions\@conclusionsfalse
\newif\if@annex\@annexfalse
\newif\if@appendix\@appendixfalse
\newif\if@final\@finaltrue

\newcommand{\setstretch}[1]{% control de espacio con \setstretch


\def\baselinestretch{#1}%
\@currsize
}
\newif\if@pdftex \@pdftexfalse% condicional para pdfLaTeX
\ifx\pdfoutput\undefined
\else
\ifx\pdfoutput\relax
\else
\ifcase\pdfoutput
\else
\@pdftextrue
\fi
\fi
\fi
181

%Define tama\~{n}o de papel


\setlength\paperheight{297mm}
\setlength\paperwidth{210mm}
%Fin

%control de viudas y hu\'{e}rfanas


\widowpenalty=10000
\clubpenalty=10000
%Fin

%Para evitar los overfull a toda costa


\pretolerance=9000
\tolerance=9000
%Fin

%Define tama\~{n}o de letra


\renewcommand\@ptsize{2}
%Fin

\DeclareOption{draft}{\@finalfalse\setlength\overfullrule{5pt}}
\if@compatibility\else
\DeclareOption{final}{\@finaltrue\setlength\overfullrule{0pt}}
\fi

%Formato por defecto


\ExecuteOptions{final}
\ProcessOptions
\input{bk1\@ptsize.clo}
\renewcommand\baselinestretch{2}
\setlength{\parskip}{10pt}
\setlength{\footnotesep}{5mm}
\setlength\parindent{12mm}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
\setcounter{topnumber}{2}
\renewcommand\topfraction{.7}
\setcounter{bottomnumber}{1}
\renewcommand\bottomfraction{.3}
182

\setcounter{totalnumber}{3}
\renewcommand\textfraction{.2}
\renewcommand\floatpagefraction{.5}
\setcounter{dbltopnumber}{2}
\renewcommand\dbltopfraction{.7}
\renewcommand\dblfloatpagefraction{.5}

%Numeraci\'{o}n de p\'{a}ginas
\def\ps@headings{%
\let\@oddfoot\@empty
\def\@oddhead{\hfil\thepage}}
%Fin

%T\'{i}tulo
\def\title#1{\gdef\@title{\MakeUppercase{#1}}}
%Fin

%Oculta textos
\newbox\boxocultar
\newif\ifocultar
\newenvironment{ocultar}
{\setbox\boxocultar\vbox\bgroup}
{\egroup\ifocultar\else\par\unvbox\boxocultar\fi}
%Fin

%Autor
\newcounter{@au}

\def\author#1{\gdef\@author{#1}}

\def\authorname{\def\and{\par}\MakeUppercase\@author}

\def\authornumber{
\begingroup
\setcounter{@au}{1}%
\def\and{\stepcounter{@au}}%
\ocultartrue%
\begin{ocultar}
\@author
\end{ocultar}
183

\endgroup}

\def\authorsig{
\begingroup
\setcounter{@au}{1}%
\def\and{\vfill%\vskip 2em
\rule{6.5cm}{0.25pt}\vskip 0.2em
\textit{Ejecutor}\vskip -3.75em
\stepcounter{@au}}%
\setbox0=\vbox{\@author}%
\rule{6.5cm}{0.25pt}\vskip 0.2em
\textit{Ejecutor}\vskip -3.75em
\@author%
\endgroup}
%Fin

%Escuela
\def\school#1{\gdef\@school{#1}}

\def\schoolname{%
\ifcase \@school%
\relax \or%
CIENCIAS BIOL\'{O}GICAS%1
\or%
F\'{I}SICA%2
\or%
MATEM\'{A}TICA%3
\or%
INGENIER\'{I}A ELECTR\'{O}NICA Y TELECOMUNICACIONES%4
\or%
ESTAD\'{I}STICA%5
\else%
\normalfont{\small !`Error: N\'{u}mero no v\'{a}lido!}%
\fi%
}%

\def\professionaltitlename{%
\ifcase \@school%
\relax \or%1
LICENCIADO EN CIENCIAS BIOL\'{O}GICAS%
184

\or%2
LICENCIADO EN F\'{I}SICA%
\or%3
LICENCIADO EN MATEM\'{A}TICA%
\or%4
INGENIERO ELECTR\'{O}NICO Y DE TELECOMUNICACIONES%
\or%5
LICENCIADO EN ESTAD\'{I}STICA%
\else%
\normalfont{\small !`Error: N\'{u}mero no v\'{a}lido!}
\fi%
}%
%Fin

%Elabora la cubierta
\RequirePackage{color}
\definecolor{celeste}{rgb}{0.49,0.847,0.95}
\definecolor{azulfi}{rgb}{0,0.2,0.5}
\definecolor{gris}{rgb}{0.8,0.8,0.8}
\definecolor{azulel}{rgb}{0,0.2,0.7}
\definecolor{azules}{rgb}{0,0,0.3}
\definecolor{blanco}{rgb}{1.0,1.0,1.0}
\definecolor{oro}{rgb}{0.84,0.69,0.16}

\def\professionalcolorname{%
\ifcase \@school%
\relax \or%1
\if@final celeste\else blanco\fi%
\or%2
\if@final azulfi\else blanco\fi%
\or%3
\if@final gris\else blanco\fi%
\or%4
\if@final azulel\else blanco\fi%
\or%5
\if@final azules\else blanco\fi%
\else%
blanco%otherwise
\fi%
}%
185

%Fin

\newcommand\makecover{%
\if@pdftex
\pdfbookmark{Cubierta}{cover}
\fi
\authornumber%
\pagecolor{\professionalcolorname}
\begin{titlepage}
\vspace*{-3em}\hspace*{-4em}
\setlength{\fboxrule}{2pt}
\fcolorbox{oro}{\professionalcolorname}{
\begin{minipage}[c][224mm]{140mm}
\vspace{3ex}
\centering
{\bf\large\color{oro}
UNIVERSIDAD NACIONAL DE PIURA
\par\color{oro}
FACULTAD DE CIENCIAS}
\vskip 1em
{\bf\normalsize\color{oro}
ESCUELA PROFESIONAL DE \schoolname}
\vfill
\includegraphics[scale=0.5]{unp.eps}
\vfill
{\bf\normalsize\color{oro}
\@title}
\vfill
{\ifcase \c@@au%
\relax \or%
\bf\color{oro}\authorname \or%
\bf\color{oro}\authorname%
\else%
\normalfont{\small !`Error: La cantidad m\'{a}xima de
ejecutores es 2!}%
\fi}
\vfill
{\bf\normalsize\color{oro}
TESIS PARA OPTAR EL T\'{I}TULO PROFESIONAL
\par\color{oro}
186

DE \professionaltitlename}
\vfill
{\bf\normalsize\color{oro}
PIURA -- PER\'{U}}%
\vspace{3ex}
\end{minipage}
}
\end{titlepage}
}
%Fin

%Elabora la portada
\newcommand\maketitle{%
\if@pdftex
\pdfbookmark{Portada}{title}
\fi
\authornumber%
\pagecolor{white}
\begin{titlepage}
\vspace*{-2.5em}\hspace*{-4em}
\begin{minipage}[c][224mm]{140mm}
\centering
{\bf\large UNIVERSIDAD NACIONAL DE PIURA
\par FACULTAD DE CIENCIAS}
\vskip 1em
{\bf\normalsize ESCUELA PROFESIONAL DE \schoolname}
\vfill
{\bf\normalsize\@title}
\vfill
{\ifcase \c@@au%
\relax \or%
\bf\authorname \or%
\bf\authorname%
\else%
\normalfont{\small !`Error: La cantidad m\'{a}xima de
ejecutores es 2!}%
\fi}
\vfill
{\bf\normalsize TESIS PARA OPTAR EL T\'{I}TULO PROFESIONAL
\par DE \professionaltitlename}
187

\vfill
{\bf\normalsize\@today}%
\end{minipage}
\end{titlepage}
}
%Fin

%Patrocinador
\newcounter{@pat}

\def\sponsor#1{\gdef\@sponsor{#1}}

\def\sponsornumber{
\begingroup
\setcounter{@pat}{1}%
\def\and{\stepcounter{@pat}}%
\ocultartrue%
\begin{ocultar}
\@sponsor
\end{ocultar}
\endgroup}

\def\sponsorsig{
\begingroup
\setcounter{@pat}{1}%
\def\and{\vfill
\rule{6.5cm}{0.25pt}\vskip 0.2em
\stepcounter{@pat}
\textit{Co--Patrocinador}\vskip -3.75em}%
\setbox0=\vbox{\@sponsor}%
\rule{6.5cm}{0.25pt}\vskip 0.2em
\textit{Patrocinador}\vskip -3.75em
\@sponsor%
\endgroup}
%Fin

%Jurado
\newcounter{@jur}

\def\jury#1{\gdef\@jury{#1}}
188

\def\jurynumber{
\begingroup
\setcounter{@jur}{1}%
\def\and{\stepcounter{@jur}}%
\ocultartrue%
\begin{ocultar}
\@jury
\end{ocultar}
\endgroup}

\def\jurysig{
\begingroup
\setcounter{@jur}{1}%
\def\and{\vfill
\rule{6.5cm}{0.25pt}\vskip 0.2em
\stepcounter{@jur}
\ifcase \c@@jur%
\relax\or\relax\or\relax\or\relax%
\or \textit{Secretario Jurado de Tesis}\vskip -3.75em
\or \textit{Vocal Jurado de Tesis}\vskip -3.75em
\fi}%
\setbox0=\vbox{\@jury}%
\rule{6.5cm}{0.25pt}\vskip 0.2em
\textit{Presidente Jurado de Tesis}\vskip -3.75em
\@jury%
\endgroup}
%Fin

%Elabora la pagina de firmas


\newcommand\makesignature{%
\if@pdftex
\pdfbookmark{Firmas}{signature}
\fi
\authornumber%
\sponsornumber%
\jurynumber%
\begin{titlepage}
\vspace*{-2.5em}\hspace*{-4em}
\begin{minipage}[c][221mm]{140mm}
189

\centering
{\bf\large UNIVERSIDAD NACIONAL DE PIURA
\par FACULTAD DE CIENCIAS}
\vskip 1em
{\bf\normalsize ESCUELA PROFESIONAL DE \schoolname}
\vfill\vfill
{\ifcase \c@@au%
\relax \or%
\normalfont\authorsig \or%
\normalfont\authorsig%
\else%
\normalfont{\small !`Error: La cantidad m\'{a}xima de
ejecutores es 2!}%
\fi}
\vfill
{\ifcase \c@@pat%
\relax \or%
\normalfont\sponsorsig \or%
\normalfont\sponsorsig%
\else%
\normalfont{\small !`Error: La cantidad m\'{a}xima de
patrocinadores es 2!}%
\fi}
\vfill
{\ifcase \c@@jur%
\relax \or%
\normalfont{\small !`Error: La cantidad de miembros del
Jurado es 3!} \or%
\normalfont{\small !`Error: La cantidad de miembros del
Jurado es 3!} \or%
\normalfont\jurysig%
\else%
\normalfont{\small !`Error: La cantidad de miembros del
Jurado es 3!}%
\fi}
\end{minipage}
\end{titlepage}
}
%Fin
190

%Dedicatoria
\def\dedication#1{\gdef\@dedication{#1}}

\def\dedicationname{
\begingroup%
\par%
\def\and{\vskip 3cm\leftskip 4cm}%
\leftskip 4cm%
\@dedication\par%
\endgroup}
%Fin

%Elabora la pagina de dedicatoria


\newcommand\makededication{%
\if@pdftex
\pdfbookmark{Dedicatoria}{dedication}
\fi
\begin{titlepage}
\vspace*{0em}
\begin{center}%
{\bf\large DEDICATORIA}
\end{center}
\vfill
\setlength\parindent{0cm}\dedicationname
\vfill\vfill
\end{titlepage}
}
%Fin

%Agradecimiento
\def\acknowledgments#1{\gdef\@acknowledgments{#1}}

\def\acknowledgmentsname{
\begingroup%
\def\and{\item}
\begin{itemize}
\item\@acknowledgments
\end{itemize}
\endgroup}
191

%Elabora la pagina de agradecimiento


\newcommand\makeacknowledgments{%
\if@pdftex
\pdfbookmark{Agradecimientos}{acknowledgments}
\fi
\authornumber%
\begin{titlepage}
\vspace*{0em}
\begin{center}%
{\bf\large AGRADECIMIENTOS}
\vskip 4em
\ifcase \c@@au%
\relax \or%
\hskip -6em El autor desea\; \or%
\hskip -6em Los autores desean\;%
\fi%
expresar su m\'{a}s sincero agradecimiento:
\acknowledgmentsname
\end{center}
\end{titlepage}
}
%Fin

%resumen
\def\resumen#1{\gdef\@resumen{#1}}
\def\palabrasclave#1{\gdef\@palabrasclave{#1}}

\newcommand\makeresumen{%
\begin{titlepage}
\chapter{Resumen}
\vskip 1.2em
\setstretch{1}
\@resumen
\section*{Palabras Clave}
\@palabrasclave
\end{titlepage}
}
%Fin

%abstract
192

\def\abstract#1{\gdef\@abstract{#1}}
\def\keywords#1{\gdef\@keywords{#1}}

\newcommand\makeabstract{%
\begin{titlepage}
\chapter{Abstract}
\vskip 1.2em
\setstretch{1}
\@abstract
\section*{Keywords}
\@keywords
\end{titlepage}
}
%Fin

\newcommand*\chaptermark[1]{}
\setcounter{secnumdepth}{2}
\newcounter {chapter}
\newcounter {section}[chapter]
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
\renewcommand \thechapter {\@arabic\c@chapter}
\renewcommand \thesection {%
\thechapter.\@arabic\c@section}
\renewcommand\thesubsection {\thesection.\@arabic
\c@subsection}
\renewcommand\thesubsubsection{\thesubsection.\@arabic
\c@subsubsection}
\renewcommand\theparagraph {\thesubsubsection.\@arabic
\c@paragraph}
\renewcommand\thesubparagraph {\theparagraph.\@arabic
\c@subparagraph}
\newcommand\@chapapp{\chaptername}
\newcommand\frontmatter{%
\cleardoublepage
\@mainmatterfalse
\pagenumbering{roman}}
\newcommand\mainmatter{%
193

\cleardoublepage
\@mainmattertrue
\pagenumbering{arabic}}
\newcommand\backmatter{%
\cleardoublepage
\@mainmatterfalse}

\newcommand\chapter{\cleardoublepage
\thispagestyle{empty}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
\def\@chapter[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\if@chapter
\addcontentsline{toc}{chapter}%
{\protect\numberline{\@Roman\thechapter}{#1}}
\fi
\if@conclusions
\addcontentsline{toc}{chapter}%
{#1}
\fi
\if@annex
\addcontentsline{toc}{chapter}%
{\protect\numberline{Anexo \thechapter}{
\hskip 7ex #1}}
\fi
\if@appendix
\addcontentsline{toc}{chapter}%
{\protect\numberline{Ap\'{e}ndice \thechapter}{
\hskip 11ex #1}}
\fi
\else
\addcontentsline{toc}{chapter}{#1}
\fi
\else
\addcontentsline{toc}{chapter}{#1}%
194

\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\@makechapterhead{#2}%
\@afterheading}
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \centering \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\if@chapter
\large\bfseries\MakeUppercase%
\@chapapp\space \@Roman\thechapter
\fi
\if@conclusions
\relax
\fi
\if@annex
\large\bfseries\MakeUppercase%
\@chapapp\space \thechapter
\fi
\if@appendix
\large\bfseries\MakeUppercase%
\@chapapp\space \thechapter
\fi
\par\nobreak
\fi
\fi
\interlinepenalty\@M
\setstretch{1.5}
\large \bfseries \MakeUppercase{#1}\par\nobreak
\vskip 40\p@
}}
\newcounter{aux}
\def\@schapter#1{\if@pdftex
\stepcounter{aux}%
\pdfbookmark{#1}{\theaux}%
\fi
\@makeschapterhead{\MakeUppercase{#1}}%
195

\@afterheading}
\def\@makeschapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \centering
\normalfont
\interlinepenalty\@M
\large \bfseries #1\par\nobreak
\vskip 40\p@
}}
\newcommand\section{\@startsection {section}{1}{\z@}%
{-5ex \@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\setstretch{1.5}
\large\bfseries}}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.25ex \@plus .2ex}%
{\setstretch{1.5}
\normalsize\bfseries}}
\newcommand\subsubsection{
\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.25ex \@plus .2ex}%
{\setstretch{1.5}
\normalsize\itshape\bfseries}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\setstretch{1.5}
\normalsize\itshape\bfseries}}
\newcommand\subparagraph{
\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\setstretch{1.5}
\itshape\normalsize\bfseries}}

\setlength\leftmargini {2.5em}
\leftmargin \leftmargini
\setlength\leftmarginii {2.2em}
196

\setlength\leftmarginiii {1.87em}
\setlength\leftmarginiv {1.7em}
\setlength\leftmarginv {1em}
\setlength\leftmarginvi {1em}
\setlength \labelsep {.5em}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
\renewcommand\theenumi{\@arabic\c@enumi}
\renewcommand\theenumii{\@alph\c@enumii}
\renewcommand\theenumiii{\@roman\c@enumiii}
\renewcommand\theenumiv{\@Alph\c@enumiv}
\newcommand\labelenumi{\theenumi.}
\newcommand\labelenumii{(\theenumii)}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{\theenumiv.}
\renewcommand\p@enumii{\theenumi}
\renewcommand\p@enumiii{\theenumi(\theenumii)}
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
\newcommand\labelitemi{\textbullet}
\newcommand\labelitemii{\normalfont\bfseries \textendash}
\newcommand\labelitemiii{\textasteriskcentered}
\newcommand\labelitemiv{\textperiodcentered}
\newenvironment{description}
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
{\endlist}
\newcommand*\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries #1}
\newenvironment{verse}
{\let\\\@centercr
\list{}{\itemsep \z@
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item\relax}
{\endlist}
197

\newenvironment{quotation}
{\list{}{\listparindent 1.5em%
\itemindent \listparindent
\rightmargin \leftmargin
\parsep \z@ \@plus\p@}%
\item\relax}
{\endlist}
\newenvironment{quote}
{\list{}{\rightmargin\leftmargin}%
\item\relax}
{\endlist}
\newenvironment{titlepage}
{\cleardoublepage
\thispagestyle{empty}}%
{\newpage}
\newcommand\conclusions{\par
\@chapterfalse%
\@conclusionstrue}
\newcommand\annex{\par
\@chapterfalse%
\@conclusionsfalse%
\@annextrue%
\setcounter{chapter}{0}%
\setcounter{section}{0}%
\gdef\@chapapp{\annexname}%
\gdef\thechapter{\@arabic\c@chapter}}
\newcommand\appendix{\par
\@chapterfalse%
\@conclusionsfalse%
\@annexfalse%
\@appendixtrue%
\setcounter{chapter}{0}%
\setcounter{section}{0}%
\gdef\@chapapp{\appendixname}%
\gdef\thechapter{\@Alph\c@chapter}}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
198

\skip\@mpfootins = \skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
\@addtoreset {equation}{chapter}
\renewcommand\theequation
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}
\newcounter{figure}[chapter]
\renewcommand \thefigure
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename\nobreakspace\thefigure}
\newenvironment{figure}
{\@float{figure}}
{\end@float}
\newenvironment{figure*}
{\@dblfloat{figure}}
{\end@dblfloat}
\newcounter{table}[chapter]
\renewcommand \thetable
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename\nobreakspace\thetable}
\def\footnote{\@ifnextchar[{\@xfootnote}{\stepcounter
{\@mpfn}\xdef\@thefnmark{\thempfn}%
\@footnotemark\@footnotetext}}
\newenvironment{table}
{\@float{table}}
{\end@float}
\newenvironment{table*}
{\@dblfloat{table}}
{\end@dblfloat}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{10\p@}
\long\def\@makecaption#1#2{%
199

\vskip\abovecaptionskip
\sbox\@tempboxa{\small\bfseries #1. \normalfont #2}%
\ifdim \wd\@tempboxa >\hsize
\small\bfseries #1. \normalfont #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
\newcommand\@pnumwidth{1.55em}
\newcommand\@tocrmarg{2.55em}
\newcommand\@dotsep{4.5}
\setcounter{tocdepth}{1}
\newcommand\tableofcontents{%
\chapter{\contentsname}
\setstretch{1.5}
\@starttoc{toc}
\setstretch{2}
}
\newcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 0.5em\@plus\p@
\setlength\@tempdima{2em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}
200

\par\penalty\@highpenalty
\endgroup
\fi}
\newcommand*\l@section{\vskip -0.5em\@dottedtocline{1}{
2em}{2.3em}}
\newcommand*\l@subsection{\@dottedtocline{2}{5.3em}{3.2em}}
\newcommand*\l@subsubsection{\@dottedtocline{3}{8.5em}{4.1em}}
\newcommand*\l@paragraph{\@dottedtocline{4}{11.5em}{5em}}
\newcommand*\l@subparagraph{\@dottedtocline{5}{13.5em}{6em}}
\newcommand\listoffigures{%
\chapter{\listfigurename}%
\setstretch{1.5}
\@starttoc{lof}%
\setstretch{2}
}
\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
\newcommand\listoftables{%
\chapter{\listtablename}%
\setstretch{1.5}
\@starttoc{lot}%
\setstretch{2}
}
\let\l@table\l@figure
\newdimen\bibindent
\setlength\bibindent{1.5em}
\newenvironment{thebibliography}[1]
{\chapter{\bibname}%
\setstretch{1.5}
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
201

\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist
\setstretch{2}}
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
\let\@openbib@code\@empty
\newcommand\@idxitem{\par\hangindent 40\p@}
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@
\@minus3\p@\relax}
\renewcommand\footnoterule{%
\kern10\p@
\hrule\@width0.6\columnwidth
% \kern10.6\p@}
\kern6.0\p@}
\@addtoreset{footnote}{chapter}
\newcommand\@makefntext[1]{%
\setstretch{1.25}
\parindent 1em%
\noindent
\hb@xt@1.8em{\hss\@makefnmark}#1}
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}
\newcommand\bibname{Bibliography}
\newcommand\indexname{Index}
\newcommand\figurename{Figure}
\newcommand\tablename{Table}
\newcommand\partname{Part}
\newcommand\chaptername{Chapter}
\newcommand\annexname{Anexo}
\newcommand\appendixname{Appendix}
\def\@today{
PIURA -- PER\'{U}\\
\ifcase\month\or
ENERO\or FEBRERO\or MARZO\or ABRIL\or MAYO\or JUNIO\or
JULIO\or AGOSTO\or SEPTIEMBRE\or OCTUBRE\or NOVIEMBRE\or
DICIEMBRE\fi
202

\space -- \number\year}
\pagestyle{headings}
\pagenumbering{arabic}

%Paquetes adicionales
\RequirePackage[left=4cm,top=4cm,right=3cm,bottom=3cm]{geometry}
\RequirePackage[spanish,es-noindentfirst,es-nodecimaldot]{babel}
\def\@roman#1{\romannumeral #1}
%fin

%Formato para teoremas, definiciones, etc


\RequirePackage{amsthm}
\newtheoremstyle{unp}% name of the style to be used
{10pt}% space above
{10pt}% space below
{}% body font
{0pt}% indent amount
{\bfseries}% theorem head font
{.}% punctuation after theorem head
{.5em}% space after theorem head \newline=linebreak
{\thmnumber{#2}. \thmname{#1}\thmnote{#3}}% theorem head spec
\theoremstyle{unp}
\newtheorem{@ux}{}[section]
\newtheorem{definition}[@ux]{Definici\'{o}n}
\newtheorem{lemma}[@ux]{Lema}
\newtheorem{theorem}[@ux]{Teorema}
\newtheorem{corollary}[@ux]{Corolario}
\newtheorem{comment}[@ux]{Comentario}
\newtheorem{assertion}[@ux]{Aserci\'{o}n}
\newtheorem{proposition}[@ux]{Proposici\'{o}n}
\newtheorem{example}[@ux]{Ejemplo}
%fin

%S\'{i}mbolo lqqd
\newcommand{\dingfamily}{\fontencoding{U}\fontfamily{ding}
\selectfont}
\newcommand{\@chooseSymbol}[1]{{\dingfamily\symbol{#1}}}
\newcommand{\RectangleBold}{\@chooseSymbol{'166}}
\renewcommand{\qedsymbol}{\RectangleBold}
%fin
203

%Funciones matem\'{a}ticas especiales


\newcommand\abs[1]{\lvert#1\rvert}
\newcommand\norm[1]{\lVert#1\rVert}
%fin

\if@pdftex
\RequirePackage[pdftex]{graphicx}
\RequirePackage{epstopdf}
\RequirePackage[
pdftex,
pdfauthor={Prof. Robert Ipanaque},
pdftitle={Tesis de Licenciatura},
pdfsubject={Para alumnos egresantes
del nivel Pre-grado de la FC-UNP},
pdfkeywords={fcunp.cls},
bookmarksnumbered]{hyperrefn}
\else
\RequirePackage{graphicx}
\fi

%%
%% End of file `fcunp.cls'.
CONCLUSIONES

Este artículo presenta la clase Fc Unp que permite redactar la tesis de


pregrado de cualquier estudiante de la FC-UNP, ajustándose al formato
exigido por el Reglamento de Tesis de la mencionada Facultad. Los coman-
dos implementados en dicha clase permiten que el estudiante se concentre
únicamente en el contenido de la tesis sin tener que invertir tiempo en darle
formato al mismo. Además, la clase Fc Unp permite obtener una archivo
AT X, el cual constituye un requisito adicional
PDF producido por PDFL E
que exige la FC-UNP.
RECOMENDACIONES

Se recomienda divulgar el uso de la plantilla Fc Unp en la Facultad de


Ciencias para que los alumnos egresantes digiten sus respectivos trabajos
de Tesis de este modo se obtiene uniformidad en los trabajos presentados y
AT X siendo esto último esencial para
se familiariza al alumno en el uso de L E
cuando los alumnos decidan cursan estudios de postgrado en la capital o
en el extranjero.
AT X para digitar
De modo similar, se sugiere elaborar una clase en L E
la tesis de grado.
BIBLIOGRAFÍA

[1] Aranda, E. CURSO DE LATEX. Departamento de Mate-


máticas, E.T.S. Ingenieros Industriales, Universidad de Casti-
http://www.wiphala.net/courses/tools/latex/
lla, La Mancha.
KAS_LATEX/2008-I (2008).
[2] Cubides, C., Rojas, A. y Pardo, C. CURSO BÁSICO DE LATEX.
http://www.emis.de/journals/RCE/IntroLatex (2006).

[3] Griths, D and Higham, D. LEARNING LATEX. The Society for


Industrial and Applied Mathematics (1997).

[4] Gurari, E. WRITING WITH TEX. McGraw-Hill, Inc. (1994).

[5] Knuth, D. THE TEXBOOK. Adisson-Wesley Publishing Company


(1991).

[6] Lamport, L. LATEX. A DOCUMENT PREPARATION SYSTEM.


Addison-Wesley Publishing Company (1994).

[7] Mora, W. y Borbón, A. EDICIÓN DE TEXTOS CIENTÍ-


FICOS LATEX. Escuela de Matemática Instituto Tecnológi-
co de Costa Rica. http://www.cidse.itcr.ac.cr/revistamate/
HERRAmInternet/Latex/wmlatexrevista (2008).
[8] Mori, L. WRITING A THESIS WITH LATEX. The PracTex Jour-
nal (2008).

[9] Shultis, J. LATEX NOTES. Prentice Hall, New Jersey (1994).