214
Elaboración de una clase en R. Ipanaqué, G. González y G. Crespo para digitar la tesis de pre-grado en la Facultad de Ciencias Instituto de Investigación y Promoción para el desarrollo de la Universidad Nacional de Piura http://www.unp.edu.pe/institutos/iipd

Latex

Embed Size (px)

Citation preview

Page 1: Latex

Elaboración de una clase en

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

para digitar la tesis de pre-gradoen la Facultad de Ciencias

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

Universidad Nacional de Piura http://www.unp.edu.pe/institutos/iipd

Page 2: Latex
Page 3: Latex

R. IPANAQUÉ

FACULTAD DE CIENCIAS

UNIVERSIDAD NACIONAL DE PIURA

PIURA, PERÚ

PARA DIGITAR LA TESIS DE PRE-GRADOEN LA FACULTAD DE CIENCIAS

G. GONZÁLEZ

G. CRESPO

ELABORACIÓN DE UNA CLASE EN

Page 4: Latex

Título:

Elaboración de una clase en LATEX para digitar la Tesis de pre-grado en laFacultad de Ciencias

Autores:

ROBERT IPANAQUÉ [email protected]

http://www.unp.edu.pe/pers/ripanaque

https://sites.google.com/site/ripanaque

GUILLERMO C. GONZÁLEZ [email protected]

http://www.unp.edu.pe/pers/ggonzalez

GLORIA S. CRESPO [email protected]

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

Junio, 2011

UNIVERSIDAD NACIONAL DE PIURA

Urb. Mira�ores s/n, Castilla, Piura, PERÚ

Page 5: Latex

PRÓLOGO

Este libro no pretende ser un manual de LATEX, sino que constituye lapresentación y manual o�cial de la clase FcUnp creada por los autorescon la �nalidad de dotar a los estudiantes de la Facultad de Ciencias, dela Universidad Nacional de Piura, de una herramienta que facilite el usode LATEX en la digitación de la Tesis de pregrado.

En el primer capítulo se dan los lineamientos elementales en el uso delas clases estándar de LATEX y que son ampliamente utilizadas para elabo-rar diversos trabajos cientí�cos, a saber: article, report, book, lettery 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, insertary 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 comandosmencionados, en el segundo capítulo, se hace una breve descripción delos elementos de la programación en LATEX con la �nalidad que el lectoraprecie 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 FcUnp, mostrando con un ejemploespecí�co los resultados que se obtienen en forma automatizada tanto enformato 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álezG. Crespo

Piura, Perú

Page 6: Latex

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

Page 7: Latex

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

Page 8: Latex

iv

Page 9: Latex

CAPÍTULO I

INTRODUCCIÓN A LATEX

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

1.1 Conceptos referentes a TEX/LATEX

¾Qué es TEX?

TEX1 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 expresionesmatemá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 porun compilador (el programa TEX). Éste devuelve un archivo *.dvi que esindependiente de la plataforma y que es el que �nalmente se transformaráal lenguaje de impresora.

Utilizar TEX puro reviste una cierta di�cultad, por lo que Knuth su-ministró una serie de macros para TEX a las que se denominó plainTEX.Estas macros son el conjunto mínimo de macros que se pueden utilizar deforma e�caz con TEX e incluyen algunos ejemplos de uso de órdenes TEXde alto nivel. Cuando alguien a�rma programar en TEX normalmente sere�ere a que lo hace en plainTEX.

¾Qué es LATEX?

LATEX es un paquete de macros para TEX originalmente escrito por LeslieLamport para proporcionar un sistema de procesamiento de documentos

1El nombre TEX representa el pre�jo τεχ (tau épsilon chi), que signi�ca arte.

Page 10: Latex

2

más simple de uso que TEX pero con toda su potencia. LATEX proporcionauna serie de órdenes para describir la estructura del documento, de formaque el usuario �nal no deba pensar mucho en la presentación. Mediantedistintas clases de documentos y paquetes adicionales, el mismo documentopuede producirse con muchos diferentes aspectos.

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

AMS-TEX es un paquete de macros para TEX. Escrito originalmente porMichael Spivak para la Sociedad Americana de Matemática (AMS) entre1983 y 1985. Está basado en plainTEX pero proporciona más medios paraproducir fórmulas matemáticas de aspecto profesional con menor esfuerzopor parte de los autores, con un gran cuidado en aspectos como el tamañoy la posición de las fórmulas. Entre los aspectos tratados se encuentran lasecuaciones 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 otrascosas. Según fue aumentando la popularidad de LATEX la AMS desarrollóAMS-LATEX que consiste en una colección de clases y paquetes para LATEXque 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 LATEX pero que no conoce o no tiene interés en elfuncionamiento 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 elresultado 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.

Page 11: Latex

3

Alta calidad en la edición de ecuaciones

Esta es una razón muy importante por la que LATEX es ampliamente utiliza-do en entornos cientí�cos. Muchas revistas aceptan o exigen los documen-tos escritos en LATEX. Este procesador ajusta los tamaños de paréntesis,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,LATEX posibilita escribir textos dividiéndolos en capítulos, secciones, sub-secciones, controlando en todo momento la numeración y las referenciascruzadas. 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 rede�niendo órdenes para que éstas se ajusten a sus preferenciaspersonales. Por ejemplo, es posible que una determinada expresión aparez-ca repetidas veces en el texto. Nada más fácil que de�nir una orden quereemplace a todo un bloque. O bien, es posible que no guste la forma enque LATEX numera las páginas, una rede�nición al principio del documentopermite cambiar esto.

Se escribe en ASCII

Esto, que al principio puede parecer un inconveniente (ya que implicateclear mucho más) se torna en ventaja al cabo del tiempo. Por un ladopermite incrementar la velocidad de escritura (pues no hay que andarutilizando ratón o menús), por otro facilita el uso de cualquier editor detexto (no contiene caracteres de control) y permite su transmisión porcorreo electrónico (puede escribirse en ASCII de 7 bits). Esto hace quemuchas revistas cientí�cas admitan artículos escritos en LATEX enviadospor e-mail. Ellos lo procesan en el lugar de destino, hacen los cambiosnecesarios y lo imprimen.

Es gratis

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

Page 12: Latex

4

herramientas que se usan junto a TEX se ofrecen bajo la GNU GeneralPublic 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 entodas las implementaciones, para garantizar la absoluta portabilidad de losdocumentos escritos con TEX. Algunas empresas ofrecen implementacionescomerciales de TEX/LATEX con elementos propios.

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 queconsigues� (What you see what you get), que pueden usarse casi desde elprimer día con resultados aceptables, LATEX requiere un periodo de apren-dizaje antes de conseguir los primeros frutos. Incluso cuando ya se es unusuario 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 trabajacon LATEX y se compara el resultado con lo obtenido con otros procesa-dores, la salida de éstos últimos parece �poco seria� en cuanto se re�ere alas fórmulas matemáticas. Algo como �los dientes, que duelen al salir, peroluego 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 frutosde 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, LATEX no estáespecialmente dirigido a los aspectos puramente estéticos de cada páginaen concreto, sino a los estructurales del documento. Si uno está interesadoestrictamente en la estética, LATEX no es el procesador adecuado. Éste basala 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ácilmentediseños rebuscados para cada página.

No permite introducir imágenes

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

Page 13: Latex

5

como LATEX están pensados como lenguajes de composición de documentos,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 medidaque LATEX se difundía, han aumentado las demandas de más tipos parausos diversos. Aunque el crecimiento es todavía lento, existe una gran can-tidad de tipos disponibles. En las versiones para salidas postscript si esposible el uso de cualquier tipo, pero no se garantiza que las ecuacionesmantengan 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/LATEX es realmente un lenguaje de programaciónde textos. En el documento fuente original se introduce el texto a procesarjunto con una serie de órdenes especi�cando cómo debe ser procesado éste.Este paso se realiza con un editor de texto, o con un ambiente de progra-mación especializado totalmente integrado para su uso con TEX/LATEX.

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

Dado un documentofuente doc.tex, éstese procesa medianteTEX si se han utili-zado las órdenes deplainTEX o LATEX sise han utilizado las ór-denes de LATEX (Fig.1.1). Se corrigen losposibles errores de sin-taxis y se repite el pro-ceso hasta que éstos sehan eliminado.

doc.tex

doc.dvi

doc.aux

doc.log

Fig. 1.1

Page 14: Latex

6

¾Qué es un archivo *.aux?

Documento auxiliar con información interna que LATEX usa para el conteoy enumeración automática de secciones, ecuaciones, referencias bibliográ-�cas, etc.

¾Qué es un archivo *.log?

Es el �cuaderno de bitácora� de LATEX con todos los detalles de la compi-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 alprocesar el texto fuente a través de TEX/LATEX. Su forma no depende deldispositivo que se vaya a utilizar para verlo/imprimirlo. Un archivo DVIestá 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 codi�cacióninterna de TEX de forma que un documento fuente debe producir exacta-mente el mismo archivo DVI, con independencia de la implementación deTEX que se utiliza para producirlo.

¾Qué es un conversor?

Un conversor es un programa que toma su entrada de un archivo DVIy produce un archivo que puede enviarse a una impresora (mediante undriver) o una salida directa a una pantalla (mediante un previewer). Estosconversores normalmente son especí�cos a cada impresora o lenguaje deimpresora. Por ejemplo, una impresora postscript entenderá siempre lasalida 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 formatode archivos transportable entre distintas plataformas, creado por Adobey especialmente diseñado para visualizar documentos tal y como se handiseñado. Permite usar colores, grá�cos, seguir enlaces e imprimir; pero,fundamentalmente, permite ver en la pantalla los documentos, siendo unformato compacto. Es muy similar a PS, pero no tiene capacidades deprogramación. En relación con TEX PDF es un formato que sustituye al

Page 15: Latex

7

DVI. Los visualizadores de PDF más recomendables son Acrobat Readery 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 estructurasde 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 archivosPS en cualquier tipo de entornos. Usualmente es un archivo que contieneuna sola página que describe una �gura. El archivo EPS está especialmen-te pensado para incluirlo en otros archivos PS, y es como cualquier otroarchivo PS con algunas restricciones.

Grafo de las posibles conversiones de los distintos archivos obtenidoscon TEX/LATEX/pdfTEX/pdfLATEX

*.tex latex *.dvi dvips *.ps

dvi2pdf

*.pdf *.pdf

ps2pdf

*.pdf

pdflatex

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 ponerlotodo en común. Sin embargo, para que esto funcione correctamente, eltiempo requerido y la complejidad del trabajo son grandes. Por esta razónalgunas personas o empresas ya lo han hecho y lo ofrecen preparado en loque se denominan distribuciones. Se entiende por distribución un conjuntode archivos binarios y paquetes de macros LATEX junto con otras utilidadesadicionales, hay distribuciones de libre distribución GNU, Shareware (se

Page 16: Latex

8

puede distribuir y probar, pero si se quiere usar regularmente es necesariopagar 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 TeTEXLinux teTEX NTEXMacintosh OzTEXDOS/OS2 emTEX gTEX emTEX-TDSWin32 MikTEX fpTEX.

2

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

Scienti�cWord, Scienti�cWorkPlace y Scienti�cNotebook, los cualesofrecen una forma de trabajo tipo casi WYSIWYG con un procesadorTEX en segundo plano.

Y, los editores de texto que trabajan especialmente bien con LATEX son:

Unix GNU emacsDOS/OS2 TEXshellWin32 WinEdt3, Winshell4, TEXMAKER5, PCTEX32Linux kate, kile.

¾Qué es CTAN?

Son las abreviaturas de Comprehensive TEX Archive Network (Red delArchivo Completo de TEX). Es una red mundial de software TEX Los ser-vidores de CTAN contiene implementaciones de LATEX para prácticamentetodos los sistemas operativos, así como los paquetes de macros TEX y LATEXy otros programas que pueden ser útiles. El software que allí se encuentraes GNU o shareware.

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

Page 17: Latex

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 CervanTEXel cual busca intercambiar experiencias sobre TEX y promover su uso enHispanoamérica. La página Web o�cial 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 MiKTEXson su habilidad de actualizarse por sí mismo descargando nuevas versio-nes de componentes y paquetes instalados previamente, y su fácil procesode instalación. La versión actual de MiKTEX es 2.9 y está disponible ensu página o�cial (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 uncuadro como el de la �gura 1.4. A continuación se ejecutan los siguientespasos:

1. Activar la casilla de condiciones de instalación del citado cuadro talcomo 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.

Page 18: Latex

10

Fig. 1.3 Porción de la página web o�cial de MiKTEX.

Fig. 1.4

Page 19: Latex

11

Fig. 1.5

Fig. 1.6

Fig. 1.7

Page 20: Latex

12

Fig. 1.8

Fig. 1.9

Fig. 1.10

Page 21: Latex

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 TEXMAKER especialmente di-señado para hacer más fácil y cómodo el trabajo con LATEX.

La página web o�cial de TEXMAKER (ver Fig. 1.13) es

http://www.xm1math.net/texmaker

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

doble clic sobre el respectivo icono tras lo que aparece un cuadrocomo 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.

Page 22: Latex

14

Fig. 1.13 Porción de la página web o�cial de TEXMAKER.

Fig. 1.14

Fig. 1.15

Page 23: Latex

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 TEXMAKER haciendo doble clic en el icono de acceso

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

14. Elegir <Con�gurar Texmaker> de la opción <Opciones> de la barrade Menú (ver Fig. 1.19).

15. Seleccionar <Editor> de la ventana Con�gurar Texmaker y elegir ISO-8859-1 (para el reconocimiento de caracteres no pertenecientes alcódigo ASCII) en la opción Codi�cación del editor. Elegir, además,el diccionario ES_es.dic (para revisión ortográ�ca en español) en laopción Diccionario. Aquí también es posible con�gurar: tipo y tama-ño de letra, colores para entorno matemático, comandos y palabrasclave, así como los atajos (ver Fig. 1.20).

Page 24: Latex

16

Fig. 1.18

Fig. 1.19

Page 25: Latex

17

Fig. 1.20

16. Finalmente, para que se actualicen las con�guraciones se presiona elbotó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 enLATEX (TEXMAKER), según sea el caso.

No obstante, para poder visualizar, en forma independiente, cualquierdocumento que elaboremos es preciso asegurarnos de tener instalado en elordenador algún visor de archivos pdf. Los más comunes en nuestro medioson el Acrobat Reader y el Foxit Reader (ambos pueden descargarse enforma gratuita).

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

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

1. Pulsar el botón <Nuevo> que se aprecia en la �gura 1.21. Despuésde esto aparecerá automáticamente una �hoja en blanco� como laque 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

Page 26: Latex

18

Fig. 1.21

Fig. 1.22

Page 27: Latex

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.

4. Escribir el texto: Esto es una prueba. en el campo ubicado entre\begin{document} y \end{document} (ver �g. 1.27).

5. Crear una nueva carpeta y guardar en ésta el archivo, asignándoleun nombre. En nuestro caso convendremos en asignarle el nombreejemplo (ver �gs. 1.28 y 1.29).

6. Veri�car que esté activa la ventana de mensajes presionando el botón<Messages/Log>, mostrado en la �gura 1.30, hasta que aparezca uncuadro como el que se ha remarcado en la �gura 1.31.

7. Presionar la tecla <F6> y esperar a que se compile el documentoy 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 visorde archivos pdf de TEXMAKER (ver �g. 1.33).

Page 28: Latex

20

Fig. 1.24

Fig. 1.25

Page 29: Latex

21

Fig. 1.26

Fig. 1.27

Page 30: Latex

22

Fig. 1.28

Fig. 1.29

Page 31: Latex

23

Fig. 1.30

Fig. 1.31

Page 32: Latex

24

Fig. 1.32

Fig. 1.33

Page 33: Latex

25

Para realizar cualquier cambio en el documento simplemente se accedeal archivo tex (en este caso ejemplo.tex ), se hace el cambio y se actualizapresionado <F6> y luego <F7> (no olvide guardar los cambios. Una formará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 cualquiercambio en el archivo tex (en este caso ejemplo.tex ), pues de lo contrario nopermitirá realizar ninguna actualización desde TEXMAKER; es decir des-pués de presionar <F6>, en la respectiva hoja de TEXMAKER, apareceráun mensaje de error en el cuadro de mensajes (ver �g. 1.31).

4 Instrucciones básicas de LATEX

4.1 Comandos

Los comandos de LATEX comienzan con \ seguido de una secuencia deletras6.

Tipos y sintaxis de los comandos

Simples7:

\<comando>

Con argumentos obligatorios:

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

Con argumentos obligatorios y opcionales:

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

6Los comandos en LATEX son sensibles a mayúsculas y minúsculas7Luego 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>{}.

Page 34: Latex

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 deldocumento principal, deben especi�carse 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 documentoLATEX.

Espacios en blanco y saltos de línea

En una secuencia de espacios en blanco o de saltos de línea, LATEX tieneen 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 especi�carlos mediante comandos:

\ { } $ % & # _

Page 35: Latex

27

Tabla de símbolos especiales más comunes

Símbolo Comando Símbolo Comando

\ \textbackslash & \&

{ \{ } \}

_ \_ $ \$

% \ % # \#

4.5 Tilde, diéresis, circun�ejo y virgulilla

Dado que LATEX procesa archivos escritos con ASCII 7, los símbolos contilde, diéresis, circun�ejo 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, circun�ejo 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 unaherramienta especialmente diseñada para latinos (ver sec. 9), la cual debeinvocarse desde nuestro archivo tex mediante

\usepackage[latin1]{inputenc}

Page 36: Latex

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>}

Preámbulo

{< título >,< autor >,< fecha >

< declaraciones: paquetes >

\begin{document} %(inicio documento)

Documento

{< comandos especiales : \maketitle >

< 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 ypuede 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}

Page 37: Latex

29

Fig. 1.34

6 Clases de documentos básicos

6.1 La clase article

\documentclass[<opciones>]{article}

Preámbulo

{< declaraciones: paquetes, comandos >

< título >,< autor >,< fecha >

\begin{document}

Documento

\maketitle

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

\section{...}

\subsection{...}

\subsubsection{...}

\end{document}

Page 38: Latex

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 elvalor que se ingrese al campo obligatorio, si sedesea 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 delautor.

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

En este entorno se coloca el resumen del artículoy debe ubicarse después de \maketitle.

\section{...},\subsection{...},

etc.

Secciones, subsecciones, etc., las cuales son nume-radas automáticamente.

Ejemplo de un documento escrito en el estilo article

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

\documentclass{article}\usepackage[latin1]{inputenc}\title{La clase article en \LaTeX}\author{A. U. Tor \thanks{Catedrático, UNP,[email protected]}}

\date{}

\begin{document}

\maketitle

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

Page 39: Latex

31

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

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

\end{document}

6.2 La clase book

\documentclass[<opciones>]{book}

Preámbulo

{< declaraciones: paquetes, comandos >

< título >,< autor >,< fecha >

\begin{document}

Documento

\maketitle

\frontmatter

\mainmatter

\chapter{...}

\section{...}

\subsection{...}

\appendix

\backmatter

\end{document}

Page 40: Latex

32

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

Page 41: Latex

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áginadel 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, tablade 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 quese 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 ingresarsecomo capítulos, son automáticamente numeradoscon las letras mayúsculas A, B, C, . . .

\chapter{...},\section{...},

etc.

Capítulos, secciones, etc., las cuales correspondena la parte central y son numeradas automática-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 noson numerados.

Ejemplo de un documento escrito en el estilo book

El documento que se obtiene con el siguiente código puede apreciarse enlas �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, [email protected]}}\date{}

\begin{document}

Page 42: Latex

34

\maketitle

\frontmatter

\chapter{Prólogo}

La clase book facilita la digitación de libros de altacalidad.

\tableofcontents

\mainmatter

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

\section{Estructura de un libro}Este tipo de documento se puede dividir en tres partes,la apertura: prólogo, agradecimientos, tabla decontenidos, etc. La parte central del documento, en laque se desarrolla el tema tratado y el texto pertenece auna de las siguientes unidades divisionales: capítulossecciones, subsecciones, etc. Y el cierre del documentoque 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. IngenierosIndustriales, Universidad de Castilla, La Mancha.(2008).\end{thebibliography}

\end{document}

Page 43: Latex

35

6.3 La clase report

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

\documentclass[<opciones>]{report}

Preámbulo

{< declaraciones: paquetes, comandos >

< título >,< autor >,< fecha >

\begin{document}

Documento

\maketitle

\chapter{...}

\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áginadel título.

\chapter{...},\section{...},

etc.

Capítulos, secciones, etc., las cuales correspondena la parte central y son numeradas automática-mente.

Ejemplo de un documento escrito en el estilo report

El documento que se obtiene con el siguiente código puede apreciarse enlas �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, [email protected]}}\date{}

Page 44: Latex

36

Fig. 1.36 Portada generada con la clase book.

Page 45: Latex

37

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

Page 46: Latex

38

Fig. 1.38 Página de la tabla de contenidos generada con la clase book. Elinconveniente del título en inglés se supera usando el paquete babel (versección 8).

Page 47: Latex

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ón8)

Page 48: Latex

40

Fig. 1.40 Página de la bibliografía generada con la clase book. El inconve-niente del título en inglés se supera usando el paquete babel (ver sección8)

Page 49: Latex

41

\begin{document}

\maketitle

\begin{abstract}

La clase report es similar a la clase book, aunque imprimepor una sola cara y tiene disponible el entorno abstractpara 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 dealta calidad.

\tableofcontents

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

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

\begin{thebibliography}{CM}

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

Page 50: Latex

42

\end{thebibliography}

\end{document}

6.4 La clase letter

La clase letter sirve para escribir cartas.

\documentclass{letter}

\begin{document}

Preámbulo

\address{dirección del remitente}\signature{nombre y �rma del remitente}\date{fecha deseada}(por defecto \today)

\begin{letter}

Carta

\opening{apertura, saludo}{Contenido}

\closing{cierre, despedida}\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 enla �gura 1.47.

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

\begin{document}

\address{Revista Universalia \\

Page 51: Latex

43

Fig. 1.41 Portada generada con la clase report

Page 52: Latex

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ón8)

Page 53: Latex

45

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

Page 54: Latex

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)

Page 55: Latex

47

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

Page 56: Latex

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 (versección 8)

Page 57: Latex

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 dela UNP, teniendo en cuenta su experienciay su conocimiento sobre el tema, le solicitamuy comedidamente hacer una evaluación delartículo titulado ``Análisis de la taza delaprendizaje de \LaTeX\ en Piura''.Para cumplir con el cronograma del n\'{u}mero deéste año, le solicito comedidamente entregar laevaluación antes de finalizar el año en curso.

\closing{Atentamente,}

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

\end{letter}

\end{document}

Page 58: Latex

50

Fig. 1.47 Carta generada con la clase letter.

Page 59: Latex

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 losentornos table y figure. Lo demás se puede utilizar libremente.

\documentclass{slides}

Preámbulo

{< declaraciones: paquetes, comandos >

< título >,< autor >,< fecha >

\begin{document}

\begin{slides}

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 enla �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 entransparencias para luego ser proyectadas en una pantalla.

Page 60: Latex

52

Producir diapositivas agradables requiere de un formatovisual, lo que significa que \LaTeX\ no es del todoadecuado para esto. He aquí algunas razones por lascuales debería usar \LaTeX\ para elaborar susdiapositivas:

\begin{itemize}\item Si están basadas en un documento proveniente de\LaTeX.\item Si sus diapositivas tienen grana cantidad defórmulas matemáticas.\item Si no desea hacer diapositivas a costo de aprender ausar 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 deTEX o LATEX) que permiten agregar nuevos recursos y utilizar mejor losexistentes. 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-o�cial� pero novienen instalados en implementaciones corrientes. El usuario debe apren-der a instalarlos, lo cual depende tanto de la plataforma computacionalutilizada como de la implmentación local.

Page 61: Latex

53

Fig. 1.48 Transparencia generada con la clase slides. El inconveniente dela orientación se supera usando el paquete geometry (ver sección 10)

Page 62: Latex

54

Fig. 1.49 Transparencia generada con la clase slides. El inconveniente dela orientación se supera usando el paquete geometry (ver sección 10)

Page 63: Latex

55

Fig. 1.50 Transparencia generada con la clase slides. El inconveniente dela orientación se supera usando el paquete geometry (ver sección 10)

Page 64: Latex

56

7.1 Paquetes estándar más utilizados

amsmath,amssymb,amsthm

Utilizados para la edición de textos, manejo desímbolos, teoremas y sus respectivas demostracio-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.

sub�gure 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 colocarfondos 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 depá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 coloreadosy decorados.

colortbl Permite colorear las �las, columnas o casillas deuna tabla.

Page 65: Latex

57

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

caption Permite manipular la apariencia de los epígrafes oró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 delos 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 unidioma en particular se tiene la escritura en dicho idioma de los títulos de latabla 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 lasnormas 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 unaopción para que los párrafos de inicio de capítulo, sección o subsección nopresenten 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 seencuentra en uso se utiliza el comando \languagename.

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}

Page 66: Latex

58

La opción recomendada para nuestro idioma es latin1. Así pues, en elpreá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 motivose utilizan directamente los símbolos á, é, í, ó, ú, ñ, ü, Á, É etc. sin recurriral código mencionado en la subsección 4.5.

10 El paquete geometry

El paquete geometry proporciona una forma simple e intuitiva de ajustarlos parámetros de colocación del texto en un documento; además, nospermite 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ñosfolletos, etc.

El ajuste de los diferentes parámetros debe hacerse con argumentosoptativos en la carga del paquete con \usepackage{geometry}. Así porejemplo, con:

\usepackage[papersize={841mm,1189mm}8,lmargin=2cm,rmargin=2cm,tmargin=2cm,bmargin=2cm]{geometry}

se de�nirí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 deldocumento.

8Para el caso de tamaños estandarizados como el tamaño DIN-A4 puede sustituirsepapersize={210mm,297mm} por a4paper.

Page 67: Latex

59

\marginparsep Ancho de las notas al margen.

\marginparwidth Espacio entre el cuerpo del documento y las notas almargen.

\footskip Distancia vertical entre la base del cuerpo del documento y labase del footer 9.

11.2 Modi�cación de los parámetros del formato de página

Los parámetros del formato de página se modi�can mediante:

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

Así, por ejemplo, para modi�car la distancia vertical entre la base delcuerpo 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

LATEX elige el tamaño y tipo de las fuentes usadas según una estructuraló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

9Por lo general el footer es la línea donde se ubica la numeración, siempre que lanumeración esté en la parte inferior del documento.

Page 68: Latex

60

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

\emph{<texto>}

A continuación se muestra una tabla que contiene ejemplos acerca delos resultados obtenidos al usar el modo enfático en los tipos de fuentesbá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 comandospara modi�carlo son

Page 69: Latex

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, oal área delimitada entre paréntesis. Por ejemplo

Estas palabras aparecerán en{\tiny letra pequeña}

Estas palabras aparecerán en letra

pequeña

Para ajustar automáticamente el espacio entre renglones, de acuerdocon el tamaño de letra en uso, se cuenta con el comando \par. Un ejemplode su uso es el siguiente

{\Large ``Todo saber tienede ciencia lo que tiene dematemática'', Poincaré}

�Todo saber tiene deciencia lo que tiene dematemática�, Poincaré

{\Large ``Todo saber tienede ciencia lo que tiene dematemática'', Poincaré \par}

�Todo saber tiene de

ciencia lo que tiene de

matemática�, Poincaré

Page 70: Latex

62

12.3 Formato de texto

Texto centrado

El entorno center hace que el texto aparezca centrado. Si el texto fueramuy largo, LATEX se ocupa de partirlo en varias líneas, y si se quiere indicarel salto de línea se utiliza el comando \\.

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

El ingenioso hidalgoD. Quijote de la Mancha

Alineación a izquierda o derecha

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

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

Este texto apareceráalineado por suparte izquierda

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

Este texto apareceráalineado por suparte derecha

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óndel 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 hacerloson: quote, quotation y verse. A continuación se da una breve descrip-ción de estos entornos.

Page 71: Latex

63

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

... B. Russell escribió:\begin{quote}Las matemáticas pueden serdefinidas como aquel temaen el cual ni sabemos nuncalo que decimos ni si lo quedecimos es verdadero.\end{quote}

... B. Russell escribió:

Las matemáticas puedenser de�nidas como aqueltema en el cual ni sabe-mos nunca lo que decimosni si lo que decimos esverdadero.

El entorno quotation es más apropiado para citas largas. Nótese ladiferencia con respecto al anterior.

... B. Russell escribió:\begin{quotation}Las matemáticas pueden serdefinidas como aquel temaen el cual ni sabemos nuncalo que decimos ni si lo quedecimos es verdadero.\end{quotation}

... B. Russell escribió:

Las matemáticas pue-den ser de�nidas comoaquel tema en el cual nisabemos nunca lo que de-cimos ni si lo que decimoses verdadero.

Para escribir poesía disponemos del entorno verse, donde cada versoes 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:

Page 72: Latex

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ány con los hijos que jamás tendremossalgo 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 laorden

\renewcommand{\baselinestretch}{<número>}

donde número se re�ere 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 valordecimal.

El espacio entre párrafos del texto se puede cambiar en el preámbulocon la orden

\setlength{\parskip}{<longitud>}

donde longitud se re�ere a una medida. Por ejemplo si se pone:

\setlength{\parskip}{2cm}

se estará estableciendo un espacio de 2cm entre párrafos del texto.Al inicio de un párrafo LATEX introduce un sangrado de forma automá-

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 re�ere 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

Page 73: Latex

65

argumento opcional salto se re�ere a la distancia vertical adicional a la quedebe situarse la siguiente línea. Si tal línea no queda en la misma página,LATEX ignorará dicha longitud. La versión \\* indica que la línea que seinicia 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 sere�eren 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 unaM) y \qquad (longitud de dos M). También se cuenta con los llamadosmicro-espacios que son producidos por los comandos: \, (un micro-espacioequivalente a un sexto de un \quad), \; (dos micro-espacios), \: (tresmicro-espacios) y \! (un micro-espacio negativo).

Y los siguientes comandos introducen espacios tanto horizontales (sivan en un texto normal) como verticales (si van entre párrafos), \enspace(espacio de longitud medio M), \thinspace (espacio de longitud 0.16667M) 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{<textode la nota>} en la posición del texto en la que queremos que aparezca lamarca de la nota.

El espacio entre entre el texto y el pie de página se puede cambiar enel preámbulo con la orden

\setlength{\skip\footins}{<longitud>}

donde longitud se re�ere 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 depágina.

El espacio entre entre pies de página se puede cambiar en el preámbulocon la orden

\setlength{\footnotesep}{<longitud>}

donde longitud se re�ere a una medida, como en el caso previo.La línea que separa los pies de página del texto también se puede

cambiar en el preámbulo. El código que LATEX usa por defecto para elaborardicha línea es

Page 74: Latex

66

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

Para modi�car la línea en cuestión debemos escribir, por ejemplo, enel 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 delprimer 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-clusión la hace demasiado corta, LATEX introduce una separación silábicasegún un algoritmo que depende del idioma en que esté trabajando. Encaso de que el algoritmo no funcione correctamente, es posible indicar alcompilador 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 ciertaspalabras 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.10Lamentablemente sólo la primera forma admite tildes, virgulillas, etc.

Page 75: Latex

67

Evitar la separación de palabras

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

Los nombre propios comoA. Einstein no deberíanaparecer en líneasseparadas.

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

Los nombre propios comoA.~Einstein no deberíanaparecer en líneasseparadas.

Los nombre propios comoA. Einstein no deberían apareceren líneas separadas.

13 Matemática

13.1 Modos texto y display

TEX fue especialmente diseñado para producir documentos de caráctercientí�co con un contenido importante de matemática. Precisamente, esla calidad en la escritura de tipografía matemática donde TEX y LATEXmarcan la diferencia.

En esencia LATEX divide la introducción de tipografía matemática segúnse haga en la misma línea del párrafo en que se está escribiendo (modotexto), o en párrafos separados (modo display).

La tipografía matemática escrita en modo texto, ha de ser introducidaentre $ y $, mientras que para hacerlo modo display, lo más común esencerrar la expresión entre $$ y $$ (aunque, equivalentemente, tambiénpuede ser entre \[ y \]).

Por otra parte, puesto que es muy frecuente el referenciar una fórmulamatemática en un texto, el entorno equation, que esencialmente tiene elmismo funcionamiento que $$, añade además un número a la ecuación parafuturas referencias.

Ejemplo

El siguiente ejemplo muestra los funcionamientos de los modos texto ydisplay.

Page 76: Latex

68

Sea $\{ \tilde\gamma_{ij} \}_{0\leqi+j\leq 2n}$ una sucesión de númerosreales tales que $\tilde\gamma_{00}>0$.Consideramos ${\cal C}[t_1,t_2]$ elconjunto de polinomios complejosen $t_1$ y $t_2$ de grado $2n$ ydefinimos $\tilde\varphi:{\cal C}[t_1,t_2]\longrightarrow\mathbb{C}$ elfuncional lineal complejo que interpolaa la sucesión $\tilde\gamma_{ij}$, esdecir $$\tilde\varphi(t_1^i t_2^j) =\tilde\gamma_{ij}.$$

Sea {γij}0≤i+j≤2n una sucesión de números realestales que γ00 > 0. Consideramos C[t1, t2] el conjun-to de polinomios complejos en t1 y t2 de grado 2ny de�nimos ϕ : C[t1, t2] −→ C el funcional linealcomplejo que interpola a la sucesión γij , es decir

ϕ(ti1tj2) = γij .

Los comandos \textstyle y \displaystyle

Determinadas construcciones matemáticas adquieren un tamaño distintosegún es escriban en modo texto o display. Por ejemplo:

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

La fórmula∑n

k=1 k = n(n+1)2

esbien conocida.

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

La fórmula

n∑k=1

k =n(n+ 1)

2

es bien conocida.

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

Page 77: Latex

69

Si se quiere obtener resultados distintos en uno u otro modo debe usarselos comandos \textstyle (en modo display) o \displaystyle (en modotexto). Así:

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

La fórmulan∑k=1

k =n(n+ 1)

2es

bien conocida.

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

La fórmula∑nk=1 k = n(n+1)

2

es bien conocida.

13.2 Construcciones diversas

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

amsmath y amssymb.

Fracciones

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

ax−y + b

x+y

1 + a−ba+b

Matrices

$$\left( \begin{array}{lll}1 & 2 & 3 \\4 & 5 & 6 \\7 & 8 & 9\end{array}\right)$$

1 2 3

4 5 6

7 8 9

Page 78: Latex

70

$$\left( \begin{array}{ccc}1 & \cdots & n \\2 & \cdots & n+1 \\\vdots & \ddots & \vdots \\n & \cdots & 2n-1\end{array}\right)$$

1 · · · n

2 · · · n+ 1...

. . ....

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*}

0 1

1 0

0 −i

i 0

a b

c d

∣∣∣∣∣∣ 0 1

−1 0

∣∣∣∣∣∣∥∥∥∥∥∥f g

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}$$

ψ(x) =

{Aeikx +Be−ikx, si x = 0,

De−kx, si x 6= 0.

Page 79: Latex

71

Arriba y abajo

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

adef= α+ β

β→0−→

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

0≤i≤m0>j>n

φ(i, j)

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

0≤i≤m0>j>n∑

φ(i, j)

Adornos y operadores

abc \widetilde{abc} abc \widehat{abc}←−abc \overleftarrow{abc}

−→abc \overrightarrow{abc}

abc \overline{abc} abc \underline{abc}︷︸︸︷abc \overbrace{abc} abc︸︷︷︸ \underbrace{abc}√abc \sqrt{abc} n

√abc \sqrt[n]{abc}

f ′ f^\prime ~x \vec{x}

Números combinatorios

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

(n

k

)=

n!

k! (n− k)!

Page 80: Latex

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 valores 0, 1, 2 y 3, que corres-ponden respectivamente a \displaystyle, \textstyle, \scriptstyle y\scripscriptstyle.

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

{ij

k

}= gk1

[ij

1

]+ gk2

[ij

2

]

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

\frac{4}{\pi}=1+\cfrac{1^2}{2+\cfrac{3^2}{2+\cfrac{5^2}{2+\dotsb}}}

4

π= 1 +

12

2 +32

2 +52

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 eldiscurso 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)| < ε.

Page 81: Latex

73

13.4 Tipos de letra en modo matemático

$\mathrm{abc...}$ abcdefghijklmnopqrstuvwxyz

$\mathrm{ABC...}$ ABCDEFGHIJKLMNOPQRSTUVWXYZ

$\mathit{abc...}$ abcdefghijklmnopqrstuvwxyz

$\mathit{ABC...}$ ABCDEFGHIJKLMNOPQRSTUVWXYZ

$\mathsf{abc...}$ abcdefghijklmnopqrstuvwxyz

$\mathsf{ABC...}$ ABCDEFGHIJKLMNOPQRSTUVWXYZ

$\mathtt{abc...}$ abcdefghijklmnopqrstuvwxyz

$\mathtt{ABC...}$ ABCDEFGHIJKLMNOPQRSTUVWXYZ

$\mathbf{abc...}$ abcdefghijklmnopqrstuvwxyz

$\mathbf{ABC...}$ ABCDEFGHIJKLMNOPQRS . . .XYZ

$\mathcal{ABC...}$ ABCDEFGHIJKLMNOPQRS . . .XYZ

$\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 pqueteamsmath incluye el comando \pmb (o \boldsymbol) con los que se obtienenlos símbolos en negrita.

$$\text{Para todo } \pmb{varepsilon} >0\text{ existe }\pmb{delta} >0\text{ talque }|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)| < εεε.

Page 82: Latex

74

13.6 Tamaño de fuente en modo matemático

Para realizar el cambio del tamaño del texto matemático se puede utilizarlos modi�cadores 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$} fx : 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 so�sticados entornos: multline,gather, align, split, aligned, gatered y flalign.

Con cualquiera de estos entornos se puede usar el comando \intertextpara insertar renglones de texto en el despliegue. Solamente se puede usardespué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 produceninguna 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}

Page 83: Latex

75

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

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

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

= a3 + 3a2b+ 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 + 3a2b+ 3ab2 + b3

gather

Con este entorno a diferencia de multline todos los renglones aparecencentrados 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}

Page 84: Latex

76

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

= (a2 + 2ab+ b2)(a+ b) (1.3)

= (a+ b)(a2 + 2ab+ b2) (1.4)

= a3 + 3a2b+ 3ab2 + b3 (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)

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

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

= a3 + 3a2b+ 3ab2 + b3

\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 + 3a2b+ 3ab2 + b3

Page 85: Latex

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 modi�cador \notag se puede eliminar la numeración en renglonesparticulares; 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)

= (a2 + 2ab+ b2)(a+ b) (1.9)

= (a+ b)(a2 + 2ab+ b2) (1.10)

= a3 + 3a2b+ 3ab2 + b3 (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)

= (a+ b)(a2 + 2ab+ b2) (1.13)

= a3 + 3a2b+ 3ab2 + b3

Page 86: Latex

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 + 3a2b+ 3ab2 + b3

split

Similar al entorno align, pero con la diferencia de que todo el desplieguerecibe un único número que aparece centrado verticalmente. Este entornodebe 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)

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

= a3 + 3a2b+ 3ab2 + b3

(1.14)

Page 87: Latex

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 ycorchetes). Estos bloques aparecen centrados verticalmente, a menos quese usen los argumentos opcionales t (tope) o b (base). Este entorno debeestar bajo el alcance del entorno equation y con esto adquiere la numera-ción de este entorno, para eliminar totalmente la numeración es necesarioutilizar 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

z = x+ y

m = n

A = B + C +D

Z = X + Yφ = µ+ ν + η (1.15)

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

Page 88: Latex

80

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

a = b+ c+ d

z = x+ y

m = n

A = B + C +D

Z = X + Y

φ = µ+ ν + η

gathered

Sirve para construir bloques independientes cuyas fórmulas aparecen cen-tradas horizontalmente que pueden ser ubicados unos al lado de otros, o deotro tipo de material (como paréntesis y corchetes). Estos bloques aparecencentrados verticalmente, a menos que se usen los argumentos opcionalest (tope) o b (base). Este entorno debe estar bajo el alcance del entornoequation y con esto adquiere la numeración de este entorno, para eliminartotalmente 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...

Page 89: Latex

81

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

a = b+ c+ d

z = x+ y

m = n

A = B + C +D

Z = X + Y

φ = µ+ ν + η (1.16)

\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

m = n

A = B + C +D

Z = X + Y φ = µ+ ν + η

Page 90: Latex

82

�align

El entorno flalign se usa como align para construir bloques alineados,pero que añade espacio proporcional entre columnas, de manera que eldespliegue se imprime de extremo a extremo de la página. Para separar lacolumnas se utilizan &. Cada una de las líneas del despliegue adquiere unnúmero, pero se puede usar el comando \notag para eliminar la numera-ción de renglones particulares. La versión estrella (flalign*) no producenumeració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 delos entornos de alineación, de tal manera que se preserva la alineación dadapor el entorno.

\begin{align}\intertext{Dado que por la regla de la cadena se tiene laigualdad}(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}

Page 91: Latex

83

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

(fg)′ = f ′g + fg′ (1.19)

la cual se puede reescribir como

fg′ = (fg)′ − f ′g (1.20)

entonces se concluye que∫fg′ =

∫(fg)′ −

∫f ′g (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 teclasusuales, para los demás símbolos LATEX provee de una variada gama decomandos para producir dichos signos de agrupación. A continuación selistan los comandos de los signos más usualmente utilizados.

{ \{ } \}

〈 \langle 〉 \rangle

| | ó \vert ‖ \| ó \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-di�cadores \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 elpar.

Los comandos \left y \right no producen los mejores resultados,para esto, LATEX provee los modi�cadores \big, \Big, \bigg, \Bigg, los

Page 92: Latex

84

cuales permiten tener un mejor control sobre el tamaño de los signos deagrupación.

Además de los modi�cadores anteriores el paquete amsmath provee unaversió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))((a_2b_1)+(a_1b_2))$

((a1b1)− (a2b2))((a2b1) + (a1b2))

$\big((a_1b_1)-(a_2b_2)\big)\big((a_2b_1)+(a_1b_2)\big)$

((a1b1)− (a2b2)

)((a2b1) + (a1b2)

)

$\bigg((a_1b_1)-(a_2b_2)\bigg)\bigg((a_2b_1)+(a_1b_2)\bigg)$

((a1b1)− (a2b2)

)((a2b1) + (a1b2)

)

$\Big((a_1b_1)-(a_2b_2)\Big)\Big((a_2b_1)+(a_1b_2)\Big)$

((a1b1)− (a2b2)

)((a2b1) + (a1b2)

)

$\Bigg((a_1b_1)-(a_2b_2)\Bigg)\Bigg((a_2b_1)+(a_1b_2)\Bigg)$

((a1b1)− (a2b2)

)((a2b1) + (a1b2)

)

Page 93: Latex

85

13.10 Teoremas y estructuras relacionadas

El comando \newtheorem{<nombre>}{<rótulo>} (que es preferible ubi-car en el preámbulo del documento) de�ne 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 {\rmId}(G)$ con $f\not=0$ se tiene una representación estándarde $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\inG$, ${\rm spol}(g_1,g_2)$ es igual a cero o tieneuna $t$-representación en $G$, para algún $t<{\rmmcm}(HM(g_1),HM(g_2))$; entonces $G$ es una base deGrö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 $\forallp_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}

Page 94: Latex

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 fen 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únt < mcm(HM(g1), HM(g2)); entonces G es una base de Gröbner.

Corolario 1 Para todos lo polinomios p ∈ I, se de�ne 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 de�na 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 tieneuna representación estándar de $f$ en $G$.\end{miteorema}\begin{miteorema}Sea $G\subset K\big[\bar{X}\big]$ ... entonces $G$ es unabase 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}

Page 95: Latex

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 losentornos de�nidos por el usuario sea correlativa, y no como en el casoprevio 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 tieneuna representación estándar de $f$ en $G$.\end{miteorema}\begin{miteorema}Sea $G\subset K\big[\bar{X}\big]$ ... entonces $G$ es unabase 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}

Page 96: Latex

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 de�nidos por el usuario están, por defecto,en modo �enfático�. Es posible cambiar el modo enfático a modo normalutilizando 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]$, ... setiene una representación estándar de $f$ en $G$.}\end{miteorema}\begin{miteorema}{\rm Sea $G\subset K\big[\bar{X}\big]$ ... entonces $G$ esuna 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}

Page 97: Latex

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 llamadaal entorno.

\begin{enumerate}\item Se trata de listas secuenciadas numéricamente.\item Los números son consecutivos comenzando por 1, encada 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.

Page 98: Latex

90

\begin{enumerate}\addtocounter{enumi}{5}\item Es posible inicializar la numeración a partir deun número diferente de 1 utilizando el comando \texttt{\textbackslash addtocounter}.\item Por ejemplo, aquí se inicializa la numeración apartir 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 unsí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 esteentorno.\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 delmismo como de distinto tipo, hasta cuatro niveles de inclusión (por defec-

Page 99: Latex

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 nivelglobal)\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 {\ttitemize})\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 defectoson:

Page 100: Latex

92

1. Etiqueta de primer nivel

a) Etiqueta de segundo nivel

1) Etiqueta de tercer nivela ′ Etiqueta de cuarto nivelb′ 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 pornúmeros arábigos, el nivel dos por letras en minúsculas, el nivel tres sonnúmeros nuevamente y el cuatro letras con apóstrofe. Cada una de estasetiquetas puede cambiarse rede�niendo apropiadamente los comandos quelas generan. Tales comandos son: \theenumi, \theenumii, \theenumiiiy \theenumiv, uno para cada nivel. Mientras que las etiquetas que gene-ran la construcción de dichos comandos son \labelenumi, \labelenumii,\labelenumiii y \labelenumiv. Si se quiere cambiar este comportamien-to por defecto en cualquier nivel, es necesario rede�nir ambos comandos,justo antes del inicio del entorno correspondiente. Por ejemplo,

Page 101: Latex

93

1. Etiqueta de primer nivel

1.1. Etiqueta de segundo nivel

1.1.1. Etiqueta de tercer nivel1.1.1.1. Etiqueta de cuarto nivel1.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,

Page 102: Latex

94

1) Etiqueta de primer nivel

1.1) Etiqueta de segundo nivel

1.1.1) Etiqueta de tercer nivel1.1.1.1) Etiqueta de cuarto nivel1.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-

Page 103: Latex

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áselementos 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 elnivel tres y $\diamond$ (�) en el nivel cuatro. La modi�cación de estasetiquetas se lleva a cabo rede�niendo los comandos del nivel correspodiente\labelitemi, \labelitemii, \labelitemiii y \labelitemiv.

Page 104: Latex

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 puedehacerse

♣ 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}

Page 105: Latex

97

15 Inclusión de grá�cos

15.1 Grá�cos en LATEX

Los formatos más recomendables para incluir grá�cos en LATEX son elEncapsulated PostScript (EPS) y el formato PostScript (PS). Si usamosPDFLATEX, los formatos más comunes son PDF, PNG o JPG. Los archivosson insertados mediante el comando \includegraphics. Para poder usardicho 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 De�ne un factor de escala a aplicar en ambas direcciones.

angle Especi�ca un ángulo de rotación en grados sexagesimales.

natwidth Especi�ca la anchura originaria del grá�co cuando es PNG,o JPG y aun así se va a incluir en LATEX.

natheight Especi�ca la altura originaria del grá�co cuando es PNG oJPG y aun así se va a incluir en LATEX.

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

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

Page 106: Latex

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 ubicarlasen el texto pues al no poder ser divididas no pueden aparecer en cualquierpunto del documento. Para resolver este problema, es necesario tratar estetipo 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 delentorno 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 situaruna leyenda para la �gura, que aparecerá numerada. Dicha numera-ción se asignará a la etiqueta \label. El comando \label debe sersituado inmediatamente después del \caption.

Page 107: Latex

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-peci�ca el texto que aparecerá en la Lista de Figuras. En caso de noaparecer, dicho texto es el mismo que el argumento obligatorio delcomando.

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 porel argumento opcional que puede ser una (o más de una) de las siguientesletras h, t, b, p.

h Sitúa la �gura allí donde aparece el entorno. Esta opción no puedeser ejecutada siempre, pues es posible que el grá�co no entre enel 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.

Page 108: Latex

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 especi�ca la posición, el compilador toma por defecto la se-cuencia [tbp].

Cuando se incluye una �gura �otante, LATEX leerá la �gura y la tendráen memoria hasta que encuentre una posición que considere adecuada paraincluirla 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 construccioneses tabular, cuya sintaxis es

Page 109: Latex

101

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

El signi�cado de los argumentos es el siguiente

posición Posición vertical de la tabla respecto de la línea base. Puedetomar 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 porcada columna de la tabla además de entradas opcionales para delimi-tar los bordes entre cada columna. Los formatos posibles para cadacolumna 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 deanchura 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 valoresde una misma columna deben estar separados por una marca deter-minada (guión, punto decimal, etc.) La expresión @{texto} elimina elespacio automático que se pone entre cada columna y lo sustituye porel texto. Si se necesita espacio blanco extra, debe ser implícitamenteincluido.

Page 110: Latex

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 consecutivasy el comando \\ para separar una �la de la siguiente. Todas las �las, salvola última debe ser �nalizada con este comando.

Otros comandos son

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

\cline{n−m} como el comando \hline, dibuja una línea horizontal en-tre la columna n hasta la columna m. 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 aparecede altura correspondiente a la �la en la que se encuentra.

\multicolumn{<numero>}{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 contenidode texto.

16.2 Ejemplos

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

uno dos tres

cuatro cinco seis

Page 111: Latex

103

\begin{tabular}{|l|c|r|}\hline\multicolumn{3}{|c|}{Tabla connúmeros}\\\hline\\uno & dos & tres \\\hline \hlinecuatro & 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|}\hlinePaís & Total & Indígenas & Porcentaje \\\hline\hlineBolivia & 6,9 & 4,9 & 71 \\\hlineGuatemala & 8,0 & 5,3 & 66 \\\hlinePerú & 20,0 & 9,3 & 47 \\\hlineEcuador & 9,5 & 4,15 & 43 \\\hline\end{tabular}

Page 112: Latex

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|}\hlineEstados Unidos & 14 & 7 & 10,5 \\\hlineItalia & 1 & 82 & 0,25 \\\hlineFrancia & 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}

Page 113: Latex

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}|}\hlineEsto es un párrafo insertado dentrode la celda de una tabla. &El uso de larguísimas y absolutamenteeternas palabras crea un mal efecto. \\\hline& bienaventurado. \\

\hline\end{tabular}

Esto es un párrafo in-sertado dentro de lacelda de una tabla.

El uso delarguísimasy absolu-tamenteeternas pala-bras crea unmal efecto.

bienaventurado.

Para evitar la justi�cación a ambos lados están los comandos \raggedright(justi�ación a derecha), \raggedleft (izquierda) o \centering

Por otra parte, LATEX nunca divide la primera palabra de un párrafo,de modo que es necesario iniciar el párrafo con algo (un espacio vacío, porejemplo).

El ejemplo anterior se puede corregir del siguiente modo

Page 114: Latex

106

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

\hline\end{tabular}

Esto es un párrafoinsertado dentro de lacelda de una tabla.

El uso delarguísimasy absoluta-menteeternaspalabrascrea un malefecto.

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 mensajesde error que son evitados con el primero.

16.3 Parámetros de estilo

El estilo de las tablas está de�nido por defecto por LATEX, y puede sercambiado, globalmente en el preámbulo, o de forma local, no dentro delentorno.

Los parámetros para realizar cambios de estilo en las tablas son

\tabcolsep corresponde a la mitad de la anchura del espacio insertadoentre dos columnas (valor por defecto: 6pt),

\arrayrulewidth es el grosor de las líneas que conforman la tabla (valorpor defecto: 0.4pt),

Page 115: Latex

107

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

\arraystretch modi�ca la distancia entre las �las. Se trata de un factormultiplicativo, de modo que el valor estándar corresponde a 1, y unvalor de 1.5 aumenta un 50% la distancia.

Para realizar modi�caciones en estos parámetros se usan las siguientesdeclaraciones

\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|}\hlineuno & dos & tres \\\hlinecuatro & 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 �otantedisponemos del entorno table, cuya sintaxis es

Page 116: Latex

108

\begin{table}[<posición>]\centeringentorno 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\hline1 & 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 deldocumento como capítulos, secciones, fórmulas, tablas, �guras, etc. Cada

Page 117: Latex

109

uno de estos elementos es numerado automáticamente por LATEX por ordende aparición, pero si queremos hacer una referencia a alguno de ellos, noes 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 posterioruso.

Por ejemplo, la subsección inicial de esta sección (subsección 17.1) hasido etiquetada del siguiente modo

\subsection{¾Qué son las referenciascruzadas?\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 cualquierparte de la sección, pero no debe interferir con otro elemento susceptiblede 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 almacenadaen el �chero fichero.aux y al �nal de la compilación LATEXimprime el si-guiente avisoLaTeX 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 cuentaque LATEX distingue entre mayúsculas y minúsculas.

17.2 Entornos referenciables

Listas

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

Page 118: Latex

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 laconclusió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 a�rmaciones (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 ensituar el comando \label justo después del comando \caption o inclusodentro de su argumento, como en el ejemplo mostrado a continuación

\begin{table}[h]\begin{center}\begin{tabular}{|c|c|c|c|}\hlineValor de $x$ & 1 & 2 & 3 \\\hlineValor 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 satisfacenlos datos de la Tabla \ref{tabxy} son $y=x^3$ e$y=6x^2-11x+6$.

Page 119: Latex

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 Tabla1.3 son y = x3 e y = 6x2 − 11x+ 6.

Matemática

En los documentos con contenido matemático abundan las referencias, yasea a fórmulas, �guras, teoremas, etc. El proceso de etiqueta es igual alhecho anteriormente: es necesario incluir el comando \label dentro delentorno correspondiente.

Si se ha de�nido 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 + y2 (1.22)

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

Page 120: Latex

112

El paquete amsmath permite usar el comando \eqref en lugar de \refpara referenciar una ecuación, con la diferencia de que el primero imprimeautomá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 menudoes útil dar la numeración de la página donde se encuentra dicho objeto. Elcomando

\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 <textode la nota>y el número especi�cado en <número>. si <número>se omite,se usa la numeración automática. Este comando no se admite dentro deuna 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 laparte 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 misegunda nota\footnote[201]{Numerada específicamente.}.

Produce

Page 121: Latex

113

Mi primera nota11 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>funcionaigual 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> especi�ca el símbolo que identi�ca la nota. Este comando estárestringido, así como \footnote.

Los comandos \footnotemark y \footnotetext se usan en conjunciónpara crear notas en sitios no permitidos, primero insertando la marca enel lugar prohibido y luego colocando el texto fuera del sitio prohibido,simulando así el pie en la página.

18.3 Modi�cació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: *, �, . . .

11Con numeración atomática201Con numeración especí�ca.

Page 122: Latex

114

18.4 Notas al margen

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

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

Este comando crea una nota al margen cuyo contenido TextoDerecha (sise elude el argumento opcional) comienza a imprimirse a la misma alturaen la que se imprime la línea de texto principal. Si se emplea la opciónoneside, la nota se imprime a la derecha, y si se usa la opción twoside, enel 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 LouisArmstrong. No olvides poeta tu sueño de volar conla pluma del ala y la necesidad. Cuéntame poeta sies el desamor lo que constituye el diccionario delamor\ldots\marginpar{Ariel\\Dufey\\Ramos.}.

produce

Cuéntame poeta cómo es la luna y no la de un tal Louis Armstrong. Noolvides 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. . . .Ariel

DufeyRamos.

19 Inserción de texto plano

Los archivos de texto plano (en inglés plain text) son aquellos que estáncompuestos únicamente por texto sin formato, sólo caracteres. Estos ca-racteres se pueden codi�car de distintos modos dependiendo de la lenguausada. Algunos de los sistemas de codi�cació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, porcarecer de información destinada a generar formatos (negritas, subrayado,cursivas, tamaño, etc.) y tipos de letra (por ejemplo, Arial, Times, Courier,etc.).

LATEX cuenta con el entorno \minipage para imprimir texto plano.Los caracteres reservados pierden su signi�cado especial y son impresos

Page 123: Latex

115

literalmente. Los espacios y cambios de renglón son tenidos en cuenta. Lacapacidad del texto impreso es bastante limitada.

\begin{verbatim}head(expr):=block(

if symbolp(expr) then symbolelseif numberp(float(expr)) then realelseif not freeof( %i,expr) then complexelse part(expr,0) )$

\end{verbatim}

head(expr):=block(if symbolp(expr) then symbolelseif numberp(float(expr)) then realelseif not freeof(%i,expr) then complexelse part(expr,0) )$

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

20 Bibliografía

20.1 El entorno thebibliography

La bibliografía es el entorno que permite al autor listar las referenciasutilizadas y citarlas en algún punto del texto. La estructura es similar a lade una lista enumerada donde cada entrada viene marcada por el comando\bibcite y es referenciada desde el comando \cite, que producirá unnúmero de referencia o el nombre del autor, según sea el estilo escogido.

El entorno se de�ne 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 quevaya 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 elnombre más largo que vayamos a usar, \begin{thebibliography}[nombre].

Page 124: Latex

116

El argumento opcional de \bibitem, leyenda se utiliza para modi�carla identi�cació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 atravé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áginadonde 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-torno12.

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}

12La bibliografía que aparece en dicho código corresponde a la bibliografía de estelibro.

Page 125: Latex

117

La referencia clásica en LATEX es [3]. Otras referencias interesantes son[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). Sinembargo no aparece listado en el índice de contenidos. Para introducirdicho capítulo o sección en el índice es necesario añadir una línea como laque sigue

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

El parámetro ExtensiónFichero se re�ere a uno de los �cheros dondeLATEX almacena información sobre índices de contenido, de �guras o tablas.Las extensiones respectivas son toc, lof o lot.

El argumento Unidad se re�ere a qué tipo de unidad de estructuraqueremos asimilar dicha entrada, es decir, si se trata de una sección, uncapí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 entornobibliográ�co para un documento concreto a partir de una base de datospreviamente construida. De este modo, sólo es necesario mantener una basede datos y recurrir a ella para construir la bibliografía de cada documentoque escribamos.

La base de datos consiste en uno o varios archivos con extensión .bibque deben poseer una estructura concreta. Por cada referencia debemosincluir una entrada en dicho archivo, que será etiquetada de forma similara lo que se hace en un \bibitem.

En el momento en el que aparezca una cita a una de las referencias denuestra base de datos, ésta seré autométicamente incluida en la bibliografíadel mismo a través del programa BibTEX.

Page 126: Latex

118

Para usar dicho programa debemos incluir en nuestro archivo fuenteun comando que llame a la base o bases de datos que queramos utilizar,del siguiente modo

\bibliography{database1,database2}

El comando anterior especi�ca que las entradas bibliográ�cas se colo-carán en la posición en la que aparece dicho comando y serán extraídas delos archivos database1.bib y database2.bib13.

El estilo que aparecerá en la bibliografía viene especi�cado por el co-mando \bibliographystyle, que determinará el formato en el que apa-recerán las diferentes entradas. Por ejemplo

\bibliographystyle{plain}

especi�ca que las entradas serán formateadas según el estilo plain que seencuentra 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 pororden alfabético de autores.

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

alpha Se diferencia con el estilo plain, en que las etiquetas de las entradasestán formadas por el nombre del autor y el año de publicación, enlugar 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 ComputingMachinery).

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ónMiKTEX (véase C:\Archivos de programa\MiKTeX 2.9\bibtex\bst).13Atención al path en el que se encuentre el archivo.

Page 127: Latex

119

21.2 Pasos para ejecutar BibTeX con LaTeX

1. Al correr LATEX, se generará un listado de referencias para cada co-mando \cite que esté presente. Dicho listado aparecerá en el �cheroauxiliar .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 entornobibliografía formateado según el �hero .bst escogido. Los errores oavisos serán escritos en un �chero .blg.

3. En la siguiente compilación de LATEX, se lee el �chero .bbl.

4. Una tercera compilación resuelve todas las referencias cruzadas.

Nótese que las referencias que aparecerán en el texto son aquellas quehayan sido citadas mediante \cite, y no todas las presentes en la base dedatos .bib.

En ocasiones, es posible querer incluir publicaciones que no son explíci-tamente citadas. Pare ellos usamos el comando \nocite en cualquier partedel documento. Dicho comando no produce texto alguno pero hace que lareferencia citada sea incluida por BibTEX. El comando \nocite{*} haceque 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 deescribir un listado de referencias para cada documento. Las referenciasson escritas una sola vez y almacenadas en la base (o bases) de datoscorrespondiente para usos futuros.

No obstante, es necesario crear las entradas de la base de datos segúnun 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, pre�jada por @, determina el tipo de entrada, quevariará 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

Page 128: Latex

120

la etiqueta (la que usaremos para la referencia con el comando \cite), Enel ejemplo anterior pondríamos \cite{knuth:86a}. El resto de la informa-ción sobre la referencia es introducida mediante varios campos, separadospor comas, en el formato que se aprecia. Los espacios son opcionales. Lainformación de cada campo puede ser incluida entre llaves o entre comillasdobles; sin embargo, si la información del campo consta únicamente denúmeros, no son necesarios los delimitadores. Cada tipo de entrada tieneuna serie de campos requeridos y otros opcionales. En caso de ausencia dealgú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.

Page 129: Latex

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.

Page 130: Latex

CAPÍTULO II

PROGRAMACIÓN CON LATEX

El compilador TEX contiene aproximadamente 300 secuencias de control(comandos) llamadas primitivas. Éstas son operaciones de bajo nivel queno pueden ser descompuestas en acciones más simples. El resto de lo quepropiamente se llama TEX unas 600 instrucciones, son �macros�, es de-cir, comandos de�nidos a partir de las 300 primitivas, haciendo uso delas capacidades de compilador (es decir, lenguaje de programación) deTEX. Asimismo, el procesador de textos LATEX es otro conjunto de macrosconstruidas a partir de comandos TEX. En éste capítulo se introduciránlas herramientas básicas de programación disponibles en TEX, útiles parade�nir nuevos comandos o entornos, modi�car parámetros, automatizartareas, en de�nitiva personalizar nuestro documento.

1 Creación de comandos y entornos

1.1 Comandos

En ésta sección describiremos cómo utilizar el comando \newcommand parade�nir nuevos comandos LATEX que puedan ayudarnos a simpli�car el rea-lizar tareas repetitivas. Para la de�nición de un nuevo comando se disponede 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

Page 131: Latex

123

optativo (el primero de ellos), y Definicion contiene la de�nición del co-mando, donde los distintos argumentos se denotan como #1, #2, etc . . .

Entre estas tres versiones existen diferencias importantes. \newcommandse utiliza para de�nir nuevos comandos, por lo que debemos estar segurosde que el comando a de�nir no existe. \renewcommand se utiliza para rede-�nir comandos ya existentes, reescribiendo y borrado la de�nición anteriordel comando. Finalmente, \providecommand de�ne el nuevo comando sóloen el caso de que el comando no exista; en caso contrario la nueva de�nicióncarece de efecto.

Para cada una de estas tres posibilidades existen versiones con y sinasterisco; 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 de�niciones de los nuevos comandos en elpreámbulo.

Supongamos que la expresión (x1, x2, . . . , xn) aparece frecuentementeen nuestro documento. Podemos entonces de�nir\newcommand{\vect}{(x_1,x_2,\dots,x_n)}con lo cual, cada vez que escribamos $\vect$ (el nombre del nuevocomando) 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 quecon $\vect{a}$ se tendría (a1, a2, . . . , an), etc . . .

Añadiendo más argumentos, podemos obtener construcciones máscomplejas, por ejemplo, de�niendo\newcommand{\vect}[2]{(#1_1,#1_2,\dots,#1_#2)}$\vect{x}{n}$ daría como resultado (x1, x2, . . . , xn), mientras quecon $\vect{a}{p}$ se obtendría (a1, a2, . . . , ap).

Practiquemos ahora la de�nición de comandos con argumentos op-tativos, que toman un determinado valor por defecto. Por ejemplo,

Page 132: Latex

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 de�nir nuevos entornos, o rede�nir 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, encuanto a que admiten argumentos (hasta 9), opcionalmente con el primerode ellos optativo. La diferencia reside en que en el argumento DefEntradase 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 de�nido 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 conasterisco, con el mismo signi�cado, es decir, que respectivamente admiteno no argumentos de más de un párrafo.

Por ejemplo, construyamos un entorno que cree una minipágina deanchura variable por defecto media página), centrada, y con el texto ennegrita

\newenvironment{mientorno}[1][0.5]{\begin{center}%\begin{minipage}{#1\textwidth}\bfseries}{\end{minipage}%\end{center}}

y tras de�nir éste nuevo entorno, tecleando

Page 133: Latex

125

\begin{mientorno}Ejemplo de texto con una anchura estándar de mediapá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 deltexto 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 textocon una anchura deun tercio de pági-na, centrado, y entipo de letra negri-ta.

Es importante tener en cuenta que los argumentos de un entorno sólopueden utilizarse en la de�nición de entrada (DefEntrada). Si los necesi-tamos en la de�nición de salida, podemos utilizar el �truco� de guardarlosconvenientemente, empleando un comando \newcommand para ello. En elsiguiente ejemplo, creamos un entorno cita para escribir citas, dando elnombre 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}

Page 134: Latex

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, porejemplo). Es conveniente, a la hora de depurar errores, escribir y compilarcada parte por separado. Para ello LATEX proporciona dos posibilidades

El comando \input{Fichero.tex} produce que el compilador, alencontrar esta instrucción, lee el �chero indicado en el argumentoy continúa compilando dicho �chero. En el argumento del comandopodemos dar, si el �chero no se encuentra en el directorio actual,el camino hasta él. Debe tenerse cuidado de que instrucciones clavecomo \documentclass o \begin{document} no se dupliquen. Enton-ces, para escribir un libro, por ejemplo, podemos tener un documentocon 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 individualmentecada una de las líneas \input{fichero.tex}. También es posibleutilizar este comando para otros usos, por ejemplo, incluir listas deinstrucciones \newcommand y personalizaciones diversas que podamosquerer hacer comunes a varios documentos.

Una alternativa más cómoda es utilizar, en vez de \input, el co-mando \include{Fichero} (es esencial omitir la extensión .tex enéste caso). Entonces, en el preámbulo se puede colocar el coman-do \includeonly{Fichero1,Fichero2,...}, que hace que sólo se

Page 135: Latex

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 incluircapítulos de un libro o tesis.

4 Conceptos básicos sobre contadores y longitudes

4.1 Contadores

En su funcionamiento habitual, LATEX utiliza un amplio número de conta-dores con el �n de enumerar distintos elementos de un documento: pá-ginas, secciones, tablas, �guras, etc... Cada contador tiene un nombreque permite identi�carlo; así, page es el contador que identi�ca páginas,chapter capítulos, etc... En lo sucesivo, denotaremos ese nombre comoNombreContador. Cada contador lleva asociados una serie de elementos dediferente signi�cado: 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 enel abecedario.

Nota 2: El resultado mostrado es el que se obtiene con babel, opciónspanish. Sin ello, se obtendría i, ii, iii, ... No obstante, aunque seuse el paquete babel con la opción spanish es posible obtener lasminúsculas en la numeración romana insertando el siguiente códigoen el preámbulo

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

Page 136: Latex

128

Nota 3: Igualmente, el resultado mostrado es el obtenido con babel yspanish; 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óndel contador, que permite imprimir el valor del contador NombreContadoren alguno de los formatos descritos; el comando es \theNombreContador.

Cuando LATEX de�ne un nuevo contador, le asigna inicialmente la re-presentación correspondiente al formato \arabic; si queremos cambiarla,podemos rede�nirla mediante el comando \renewcommand*; veamos unosejemplos de lo que se puede hacer

Este ejemplo muestra cómo obtenerel número de la página en curso; éstapágina es la número \thepage, en larepresentación original.\\\renewcommand*{\thepage}{\roman{page}}Ahora esta cambiada a números romanos; éstapágina es la número \thepage.\\\renewcommand*{\thepage}{[Sec. %\thesection\ -- Pág. \arabic{page}]}Luego, algo más elaborado; ésta páginaes la número \thepage.\\\renewcommand*{\thepage}{\arabic{page}}Finalmente, volvemos al formato original; éstapá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 contadorNombreContador el valor entero Valor, con independencia del valoranterior.

\addtocounter{NombreContador}{Valor} IncrementaNombreContador con la cantidad Valor, que puede ser positiva onegativa.

Page 137: Latex

129

Esta es la sección \thesection. Pero podemosa\~{n}adirle 2 fácilmente;\addtocounter{section}{2}ahora estamos en la sección \thesection.Mejor lo dejamos como estaba, porque si no lasrestantes secciones quedarían numeradasincorrectamente (esto es, el efecto de estoscambios de numeración es \emph{global}).\addtocounter{section}{-2}

Esta es la sección 4. Pero podemos añadirle 2 fácilmente; ahora estamosen la sección 6. Mejor lo dejamos como estaba, porque si no las restantessecciones quedarían numeradas incorrectamente (esto es, el efecto de estoscambios 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 de�nen 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 argumento ContadorExistente 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 sectionimplica que el contador subsection se reinicia a cero automáticamente.

Veamos un ejemplo de cómo introducir un nuevo contador, con el �nde enlazar varias listas enumerate manteniendo la numeración (enumi esel contador estándar LATEX para los ítems de primer nivel en entornosenumerate)

Las primeras lecciones son las siguientes:\newcounter{conserva}\begin{enumerate}\item Números reales\item Números complejos\setcounter{conserva}{\value{enumi}}\end{enumerate}

Page 138: Latex

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 de�nición \arabic{NuevoContador} por defecto.

Cuando se modi�ca un contador con los comandos \setcounter y\addtocounter, los contadores subordinados no se ponen a cero; paraobtener ése efecto, se dispone de los comandos

\stepcounter{NombreContador} Incrementa NombreContador en unaunidad, y reinicia todos los contadores subordinados a éste.

\refstepcounter{NombreContador} Lo mismo que el anterior, perodeclarando también como valor del comando \ref el texto generadopor \theNuevoContador cuando se utilizan referencias cruzadas conlos comandos \label y \ref.

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

\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}

Page 139: Latex

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, x2, . . . , xN .Salida: SUMA =

∑Ni=1 xi.

1 SUMA = 0.2 Para i = 1, 2, . . . , N : SUMA = SUMA+ xi.3 SALIDA(SUMA); PARAR.

4.2 Longitudes

Al igual que con los contadores, LATEX es también capaz de crear y modi-�car variables de tipo Longitud. Las longitudes que habitualmente utilizaLATEX pueden tomar dos tipos de valores

Rígidas: Toman un valor determinado; por ejemplo \quad = 11.747 pt,\thinspace = 1.958 pt, \hoffset = -28.45274 pt1.

Elásticas: Toman un valor que LATEX puede modi�car dentro de unos lí-mites, a �n de optimizar la composición del documento. Por ejemplo,\bigskip, \medskip y \smallskip.

El comando \bigskip se de�ne como

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

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

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

Page 140: Latex

132

las holguras plus o minus pueden estar ausentes en la de�nición, pero siambas aparecen deben estar en ése orden.

Los comandos \bigskip, \medskip y \smallskip, respectivamente,tienen asociadas longitudes elásticas con valores almacenados en \bigskip-amount, \medskipamount y \smallskipamount, por lo que tales comandosse de�nirí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 separadordecimal.

Al igual que ocurría con los contadores, los valores de una longitudpueden modi�carse. Existen dos comandos para ello

\setlength{\NombreLongitud}{Valor} Asigna a la longitud\NombreLongitud un valor igual al argumento Valor, que debe seruna longitud (ésto es, expresada en unidades cm, pt, etc...). Pue-de ser un valor tanto rígido como elástico (por ejemplo, 5mm plus1mm 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 esutilizar 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.

Page 141: Latex

133

Al contrario que lo que ocurría con los contadores, cuyas asignacionestienen carácter global (es decir, trascienden el grupo dentro del cual hansido declaradas, y tienen efecto en todo el resto del documento), las asig-naciones de longitud tienen por defecto carácter local ; si se realizan dentrode un grupo, el valor anterior a la asignación se recupera a la salida delgrupo. En el caso de que deseemos un efecto global, puede ser aconsejablerealizar tales asignaciones en el preámbulo del documento.

Se pueden de�nir nuevas longitudes con el comando

\newlength{\NuevaLongitud}

que crea una nueva longitud llamada \NuevaLongitud; es importante que\NuevaLongitud no sea ni un comando ni una longitud LATEX ya existentes,en cuyo caso obtendríamos un mensaje de error. Por defecto, las nuevaslongitudes 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-fundidad2 (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 de�nir una nueva longitud

\newlength{\longi}

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

\settowidth{\longi}{\quad}

tras lo cual, el comando \the\longi muestra el valor 9.99756pt.Ahora creamos otra longitud

\newlength{\longitud}

2Distancia por debajo de la línea de base.

Page 142: Latex

134

que empleamos para medir la anchura, altura, y profundidad de la palabraIntegral.

\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.91672pty 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}

xxxxxxxxxx xxxxx

xxxxx xxxxx xxxxxxxxxx xxxxx

xxxxx

Longitudes elásticas fil

En este apartado describiremos dos unidades de longitud elásticas:• fil • fill

que LATEXutiliza para introducir espacios de longitud variable. Ambas pro-porcionan dos diferentes grados de �elasticidad in�nita�; fil es una unidadde longitud elástica in�nitamente más grande que cualquier longitud rígi-da, mientras que fill es in�nitamente 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

Page 143: Latex

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}}Textocentrado\hspace{\stretch{1}}\vrule\parAhora colocamos un texto con el doble de espacio aun lado que al otro:\par\noindent\vrule\hspace{\stretch{1}}%Texto\hspace{\stretch{2}}\vrule\parOtro ejemplo, con la distancia entre T1 y T2 igual atres 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 centradoAhora colocamos un texto con el doble de espacio a un lado que al otro:

TextoOtro 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 delínea en el ejemplo anterior, hemos utilizado el comando \vrule; podemosponer 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 laelasticidad 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

Page 144: Latex

136

A B CD 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, LATEX introduce un espaciode elasticidad variable, a �n de evitar que las líneas cortas se estiren haciala 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 primerejemplo se equilibran los espacios asociados a tres comandos \hfil. En elsegundo caso, esto no sucede, dado que \hfill corresponde a un grado deelasticidad in�nitamente 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}

CentradoCentrado anulado

Centrado anulado

\hss Equivale a \hspace{0pt plus 1fil minus 1fil}, e intervie-ne en la de�nició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 elespacio intermedio introducen diversos símbolos de extensión variable (endirección horizontal)

\hrulefill −→ Raya

A\hrulefill B\hrulefill C

A B C

Page 145: Latex

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︷ ︸︸ ︷B C D︸ ︷︷ ︸

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 estirena la derecha), esto es

\parfillskip = 0pt plus 1fil

y también a \parindent (para que se sangre automáticamnete el inicio decualquier párrafo), esto es

Page 146: Latex

138

\parindent=18pt

Finalmente, describiremos los comandos \rlap{Objeto} y \llap{Objeto};respectivamente, colocan Objeto en una caja de anchura 0pt (por lo queel cursor no se mueve), con el objeto saliendo hacia la derecha o izquierdade 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.unodos

dosuno

5 Programación con TEX

5.1 Otro modo de de�nir comandos

Anteriormente hemos visto cómo de�nir nuevos comandos mediante la uti-lización de los comandos tipo \newcommand de LATEX. Existe un modoalternativo, empleando comandos de más bajo nivel de TEX (de hecho,éste es el modo estándar de construir �macros� LATEX). Para ello existe elcomando \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 de�nición. Por ejemplo,de�namos

\def\ecuacion#1#2{\ensuremath{#1_1^2+#1_2^2+\cdots+#1_#2^2=1}}

tras lo cual, \ecuacion{z}{5} produce z21 + z22 + . . . + z25 . Nótese el usodel comando \ensuremath{Formula}, que tiene como resultado asegurarque la expresión Formula se ejecuta dentro del modo matemático (por locual, 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

Page 147: Latex

139

llaves, o corchetes para los argumentos optativos). Además, es incluso po-sible prescindir de las llaves al escribir los argumentos del comando; porejemplo, en el caso anterior podríamos haber escrito \ecuacion z5 con elmismo resultado que \ecuacion{z}{5}: TEX lee secuencialmente los ar-gumentos tras el nombre del comando. Para elegir delimitadores especialesentre los argumentos, simplemente los incluimos entre #1, #2,... #n. Porejemplo, rede�nimos \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 segundocon �:�. Ahora debemos escribir \ecuacion z;5: para obtener z21 + z22 +. . .+ z25 .

5.2 De�niciones globales

Todos los comandos creados con \newcommand, \providecommand o \def,(o rede�nidos con \renewcommand) son locales; es decir, si están de�nidosdentro de un grupo, su acción estará restringida a ése grupo. En el ejem-plo siguiente se ve cómo la rede�nición del comando \prueba dentro delentorno 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 1Si queremos de�nir un comando global (con efecto fuera del grupo

donde es de�nido) 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 de�nición, o bienusamos el comando \gdef. El comando \global también puede usarse parahacer globales otro tipo de asignaciones de tipo local, como por ejemplolas modi�caciones de longitudes (\setlength y \addtolength).

Page 148: Latex

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 de�nimos un comando en función de otros comandos, y loscomandos en los que se basa cambian. Este cambio se trasladará entoncesal nuevo comando

\noindent\def\uno{1}Uno: \uno \\\def\dos{\uno\uno} Dos: \dos \\\def\uno{uno} Uno: \uno \ Dos: \dos

Uno: 1Dos: 11Uno: uno Dos: unouno

En ocasiones, puede necesitarse de�nir un comando que sea indepen-diente de los cambios que se produzcan en los comandos sobre los que estáde�nido. Con esta utilidad está construido el comando \let, que �saca unacopia� de un comando para que funcione siempre de la misma manera, conindependencia de rede�niciones posteriores de comandos. Se utiliza con lasintaxis

\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 deargumentos). 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

Page 149: Latex

141

Uno: 1Dos: 11Uno: unoDos: 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 puntode vista de TEX. Se pueden realizar operaciones con tres tipos de magni-tudes

Contadores: Corresponden a registros tipo count, y se de�nen con elcomando \newcount\NuevoContador; el registro puede almacenarnúmeros enteros entre -214783647 y +214783647.

Longitudes rígidas: Corresponden a registros tipo dimen, y se de�nencon el comando \newdimen\NuevaLongitud.

Longitudes elásticas: Existen dos tipos de registro

skip: se de�nen con \newskip\NuevaLongitud\verb.

muskip: análogo de longitud elástica, que se utiliza sólo en elmodo matemático; se de�nen 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 unalongitud, 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 sersiempre 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 parteentera de la división; en el caso de longitudes, éstas se transformanprimero 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.

Page 150: Latex

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.0�ll minus 2.0�ll15.0pt plus 4.0�ll minus 3.0�ll45.0pt plus 12.0�ll minus 9.0�ll22.5pt plus 6.0�ll minus 4.5�ll

En el caso de longitudes rígidas, existe un forma alternativa de multi-plicarlas por un factor: \Longitud1=Numero\Longitud2 (donde \Longitud1y \Longitud2 pueden ser la misma). Este procedimiento de multiplicacióntiene 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 latransforma 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.0�ll minus 4.5�ll.

El siguiente ejemplo ilustra cómo manejar contadores, de�niendo unnuevo comando \hora que calcula la hora, a partir del contador \time, quealmacena el número de minutos después de la medianoche (probar comoejercicio 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

Page 151: Latex

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 objetoscomo si fuesen cajas con tres diferentes dimensiones (altura, anchura yprofundidad), medidas con respecto a un punto de referencia. Por ejemplo,las líneas se componen alineando las cajas asociadas a cada carácter, segúnla línea base. Entonces, cada línea se convierte a su vez en una caja, que sealinea (ahora verticalmente), y así sucesivamente hasta que se construyela página.

Existen tres modos fundamentales de trabajo de TEX, a la hora decomponer cajas

Modo horizontal: TEX agrupa cajas alinéandolas horizontalmente unasjunto a otras, a lo largo de la línea base, creando una nueva cajade 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 modohorizontal

Ordinario: Es el característico cuando se construyen párrafos;se alinean caracteres horizontalmente, y después se va cortandopara formar líneas de la misma anchura. TEX estira o contraelos 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áspequeñas. Dentro de este modo, no se entienden los comandosasociados 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 unacaja con anchura igual a la mayor de las anchuras de las subcajas, ycon altura total (suma de altura y profundidad) igual a la suma dealturas y profundidades de las subcajas. Al igual que para el modohorizontal, existen dos sub-modos

Page 152: Latex

144

Ordinario: Es el modo por defecto, en el cual TEX va recogiendotodas las cajas creadas en los modos horizontal y matemático,para empaquetarlas verticalmente.

Interno: Se limita a apilar verticalmente cajas, creando una cajaindivisible (por ejemplo, cuando se construyen las columnas deuna 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 descritoen la sección correspondiente.

En los sucesivo, discutiremos algunos comandos de TEX útiles paracrear y colocar cajas (que por supuesto, pueden ser utilizados dentro decualquier documento LATEX; al �n y al cabo, LATEX, como ya se ha repetido,no es más que un conjunto de macros construidas a partir de TEX, que esel 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 procesadoen modo horizontal restringido, y puede estar compuesto de varias cajas.En realidad, el comando \mbox de LATEX no es más que \hbox

\def\mbox#1{\leavevmode\hbox{#1}}

(el comando \leavevmode se asegura de salir del modo vertical, siestuvié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 conel 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 delmaterial es menor que Ancho, se estirarán los espacios elásticos paraocupar todo el espacio disponible, mientras que si es mayor, el mate-rial sobresaldrá de la caja (con lo que se sobreescribirá en texto quevenga a continuación); véase el siguiente ejemplo (donde se añade\fbox a �n de remarcar las cajas

Page 153: Latex

145

\parindent 0pt Normal:\fbox{\hbox{caja ejemplo}}(texto) \\ Estiramos:\fbox{\hbox to 3cm{caja ejemplo}}(texto) \\ Contraemos: \fbox{\hboxto 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 anchuranatural de la caja en la cantidad Ancho

\parindent 0ptEstiramos: \fbox{\hbox spread5mm{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 de�nición de los coman-dos \leftline, \centerline, \rlap, etc..., que muestran la potencia decombinar 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 plus1fil minus 1fil}; la longitud \hsize almacena la anchura del texto:normalmente equivale a \textwidth, aunque puede modi�carse a volun-tad.

Page 154: Latex

146

6.2 Cajas verticales: \vbox

Las cajas verticales se construyen con el comando \vbox{Material}; estecomando inicia el modo vertical interno, aunque es posible que TEX yaesté en ése modo antes de invocar el comando. El comportamiento delcomando 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 casosla anchura será la de una línea de texto (\hsize). Veamos algunos ejemplos

\parindent 0pt \fbox{\vbox{Texto deprueba \hbox{Una caja} \hbox{Otracaja}}} \fbox{\vbox{\hbox{Unacaja} Texto de prueba \hbox{Otracaja}}} \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 cajaTexto de prueba Otra caja

Una cajaOtra cajaOtra caja mas

Texto de prueba Una cajaOtra caja

Texto de prueba

Texto de prueba

Al igual que con las cajas horizontales, se puede �jar de antemano laaltura de una caja vertical con

\vbox to Alto{Material} o \vbox spread Alto{Material}cuyo signi�cado es idéntico a lo ya visto para \hbox (cambiando Anchopor Alto).

Es interesante remarcar la �exibilidad y potencia del comando \vboxde TEX; a diferencia de lo que ocurre con \hbox, no existen realmentecomandos en LATEX con tanta capacidad; por ejemplo, \parbox o el entorno

Page 155: Latex

147

minipage permiten �jar la altura de la caja, pero además requieren �jarsu anchura, lo cual puede ser un inconveniente.

El comando \vbox to Alto{Material} alinea la línea base de la cajaglobal con la línea base de la última caja (es decir, la inferior) incluida enla 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 totalcon la línea base (ATENCIÓN: \vcenter sólo se puede emplear dentro delmodo 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 1 Texto 2

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 Desplazamientodonde 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 secalculan 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

Page 156: Latex

148

Texto de prueba; Texto de prueba; Texto de prueba

pepepepe

pepe andres jaime pepepepe

pepe andres jaime

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óndel 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 paraobtener 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 modi�ca con desplazamientos a la derecha, y no a laizquierda: la anchura se calcula comenzando en el punto de referencia yextendiéndose hacia la derecha hasta la parte derecha de la componentemá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 \fboxsepalrededor)

\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}}}}

TEX

TE

X

TE

X

Page 157: Latex

149

6.4 Modi�cando, creando y reutilizando cajas

Hemos visto ya el modo de guardar y reutilizar cajas en LATEX; veremosahora el modo, más general, de manipularlas a través de TEX. Podemosdeclarar una caja nueva con el comando \newbox\NombreCaja, tras lo cualse 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 losque TEX dispone para guardar cajas. Están numerados de 0 a 255, estandoel número 255 reservado para la caja de la página. Podríamos entonces,en vez de declarar primero NombreCaja con \newbox, crear directamentecajas numeradas con

\setbox1=Caja1 \setbox2=Caja2 etc...(tras lo cual, para todos los comandos descritos a continuación, se deberíareemplazar \NombreCaja por 1, 2, ...)

Para insertar dentro de un documento los contenidos de una caja, seemplean 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\NombreCajaVéase el siguiente ejemplo; de�nimos: \newbox\NuevaCaja y asigna-

mos \setbox\NuevaCaja=\hbox{A B C} tras lo cual, \the\wd\NuevaCajaproduce 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 vezde simplemente escribir el contenido de la caja, las �desmembran� en sussubcomponentes en el momento de ser usadas. Hay versiones horizontal yvertical, así como versiones �\box� y �\copy�, que respectivamente vacíano no la caja tras ser usada

Page 158: Latex

150

\unhbox\NombreCaja \unvbox\NombreCaja\unhcopy\NombreCaja \unvcopy\NombreCaja

El siguiente ejemplo ilustra la diferencia entre simplemente copiar unacaja, 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 anchuradoble a la primitiva los elementos se reparten tratando de llenar toda lacaja; en el segundo, al estar la caja intacta, los elementos se mantienen ala 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 puedenespeci�car 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 TEXasignará 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 inde�nida-mente hasta completar el tamaño de la caja que la contiene.

La diferencia esencial entre \hrule y \vrule reside en que \hrule esmaterial vertical, por lo que sólo puede ser utilizado entre párrafos o dentrode una caja vertical \vbox, mientras que \vrule es material horizontal, porlo que sólo puede utilizarse dentro de un párrafo o de una caja horizontal\hbox.

Page 159: Latex

151

\hbox{Ejemplo \vrule width 2pt\vbox to25pt{linea \par vertical}} \vspace{3mm}\vbox{\hbox to 4cm{Otro ejemplo}\kern 1mm\hrule height 1pt\kern 1mm\hbox to 3cm{linea horizontal}}

Ejemplo

linea

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 to25mm{\hfil\hbox{Texto 3}\hfil}%\kern2pt\hrule}}

Texto 1

Texto 2

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 objetosa repetir, puede interesarnos llenar un cierto espacio, de longitud �ja o va-riable, con copias de un objeto. Mediante el comando \leaders se puedenobtener copias de un objeto en tal forma. Para ello, debemos especi�carel objeto a copiar y el espacio que debe ser completado con copias de talobjeto. La sintaxis del comando es la siguiente

\leaders Objeto \hskip Longitud

donde hay que tener en cuenta que Objeto debe ser una caja, y Longitudpuede ser cualquier longitud (incluyendo elásticas). Se puede reemplazar\hskip 1fil por simplemente \hfil, o \hskip 1fill por \hfill. Porejemplo

Page 160: Latex

152

\noindent\null\leaders\hrule\hfill\null\\[2mm]\null\leaders\hbox{/\textbackslash}%\hskip.4\hsize\null\\[2mm] \hbox to4cm{\leaders\hbox{\frame{\hbox to10pt{\vbox to 10pt{}}} }\hfill}

/\/\/\/\/\/\/\/\/\/\/\/\

Es importante tener en cuenta que es necesario �marcar� los puntosentre los que actúa el comando \leaders, sobre todo si estamos utilizandolongitudes 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 deltamañ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, \cleadersreparte el espacio sobrante a ambos lados (centrando las copias del objetoen la caja); \xleaders distribuye el espacio sobrante entre cada copia delobjeto, 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}}⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗

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).

Page 161: Latex

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, ..., queremosque se ejecuten una serie de comandos. Para ello, se tienen las siguientesposibilidades

\everypar{Comandos} Antes de empezar a dar formato a cada pá-rrafo, se ejecutan Comandos. Veamos un ejemplo, en el que de�nimosun 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 deejemplo; en el código anterior...\par...se puede ver cómo incrementamosel valor del contador \texttt{parrafoal empezar cada párrafo...\par ...y lrecuperamos, para imprimirlo, con elcomando \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 alempezar 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 (omodo texto).

\everydisplay{Comandos} En este caso, los comandos se ejecutan

Page 162: Latex

154

cada vez que se abre el modo matemático resaltado. Imaginemos quequeremos 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 programardiversas acciones. Además de poder manejar diversos registros (contadores,longitudes, cajas) con total �exibilidad, su potencia se ve reforzada al serposible incluir bucles y condicionales dentro de un documento.

Un condicional es una estructura de control que elige entre diversasacciones 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 signi�ca que, de cumplirse la condición <Test>, se ejecutarán lasinstrucciones �A�, y de no cumplirse, las instrucciones �B�. En lenguajeTEX, el condicional se escribe

\if<Test> [Parte A] \else [Parte B] \fi

aunque podemos prescindir de cualquiera de las partes (A o B), y tenersimplemente

\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 de�nidos en TEX, correspondientesa diversos formatos de la condición <Test>

\ifnum Numero1 Relacion Numero2Se utiliza para comparar números enteros, con Relacion igual a <,>ó =. Como ejemplo, de�nimos un contador \cuatrodigit, queimprime números es formato de cuatro dígitos, con independenciade su tamaño

Page 163: Latex

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 Numerosirve para comprobar si un número entero es impar. En el caso deque queramos analizar el valor de un determinado contador, recorde-mos que debemos sustituir Numero por \value{NombreContador}, siestamos trabajando con un contador de�nido en LATEX. Por contra,si el contador ha sido de�nido 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 espar� si es par.

\ifdim Dimension1 Relacion Dimension2se utiliza para comparar dos longitudes. Como ejemplo, vamos aconstruir un comando que crea una caja enmarcada con un textoen tamaño \huge (que será el primer argumento del comando) y untexto de leyenda, que se colocará centrada si la longitud de la leyendaes 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\hboxto\wd1{\hss#2\hss}\else%\hbox{\parbox{\wd1}{#2}}\fi}}\textoresaltado{Juan y Ana}{quieren

Page 164: Latex

156

un coche}\par\medskip\textoresaltado{Juan y Ana}{necesitancomprarse un coche nuevo porque elantiguo se les ha quedado viejo}

Juan y Anaquieren un coche

Juan y Ananecesitan comprarse uncoche nuevo porque elantiguo se les ha queda-do viejo

\ifhmode � \ifvmode � \ifmmodesirven para comprobar, respectivamente, si estamos dentro del modohorizontal, vertical, o matemático (en cada caso, no se distingue entrelos diferentes sub-modos). Por ejemplo, el comando \ensuremath deLATEX está de�nido como

\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] \fisirve para ejecutar diferentes acciones, de acuerdo a los valores quetome la variable Numero (que puede, por ejemplo, ser un contador);si n=0 se ejecutaran las primeras instrucciones, si n=1 las, segundas,y así sucesivamente hasta M; opcionalmente podemos colocar másinstrucciones después de \else, que se ejecutarán si Numero es menorque 0 o mayor que M. Véase el siguiente ejemplo, que traduce númerosnaturales 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}

Page 165: Latex

157

Comando Resultado

\hexadec{7} 7

\hexadec{12} C

\ifx Argumento1Argumento2compara dos argumentos entre sí, siendo verdadero si son iguales yfalso si son distintos. Argumento1 y Argumento2 pueden ser caracte-res, cajas, comandos... Es importante puntualizar que, al compararcadenas de caracteres o cajas, es necesario con anterioridad incluirtales 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: igualesComparación 2: igualesComparación 3: distintosComparación 4: distintosComparación 5: distintosComparación 6: iguales

LATEX también proporciona algunos condicionales prede�nidos, que esbueno conocer

Page 166: Latex

158

\if@twoside � \if@twocolumnson verdaderos si se está procesando el documento con las opcionestwoside o twocolumn respectivamente, y falsos en caso contrario.

\@ifnextchar Caracter{ParteA}{ParteB}Se procesa ParteA en caso de que el siguiente caracter coincida conCaracter, y ParteB en caso contrario. Este condicional es muy utili-zado en LATEX en los comandos que utilizan argumentos opcionales,caracterizados por ir entre corchetes. Veamos un ejemplo de cómode�nir un comando con dos argumentos, uno de ellos optativo; que-remos recuadrar un texto dado con una línea de grosor variable, 0.4pt 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 quesi 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 deun documento; éste comando se utiliza frecuentemente en las clasesde documentos o paquetes, por lo que se restringe su uso para evi-tar coincidencias casuales con comandos ya de�nidos. 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 construircomandos más complicados. Por ejemplo, procedamos a modi�car el co-mando \recuadro (renombrándolo a \Recuadro) para que ahora admitados argumentos optativos, según la sintaxis

\Recuadro[Grosor](Color){Texto}

siendo Grosor la anchura del recuadro (0.4pt por defecto), y Color su co-lor (rojo por defecto). Utilizando recursivamente el condicional \@ifnextcharse obtiene el resultado deseado.

\makeatletter

Page 167: Latex

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 de�nir nuevos condicionalescon el comando \newif, de sintaxis

\newif\ifNombre

donde Nombre corresponderá al nombre del nuevo condicional. El comando\newif se encarga de de�nir 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 unaacción u otra según el valor que se le haya asignado anteriormente ala variable lógica Nombre.

Como ejemplo, de�namos un nuevo entorno ocultar, de forma queel 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 de�nición, si se coloca el comando \ocultartrue, todo el textodentro de entornos ocultar que estén a continuación de este comando no severá en el documento �nal; en cambio, sustituyéndolo por \ocultarfalse,se reestablecerá el texto dentro de tales entornos, por ejemplo

Page 168: Latex

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 veLa 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 unapor una. Merece la pena analizar un poco la de�nición del nuevo entorno

1. \newbox\boxocultar De�ne una nueva caja para almacenar el textooculto.

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 uncon�icto 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 textodentro del entorno, se cierra con \egroup (análogo a �}�); recordemosque todo lo que iba entre el primer conjunto de llaves corresponde alas instrucciones LATEX a ejecutar al entrar en el entorno, mientrasque este segundo conjunto de instrucciones corresponde a lo que debehacerse al salir del entorno. Tras eso, se comprueba con ifocultarsi el texto debe ocultarse, en cuyo caso, no se hace nada, y, en casocontrario, 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 cualquiercondicional, sin la correspondiente partícula \fi. TEX procesa primeroParteA; si la condición es verdadera, procesa ParteB, y repite el procesocomenzando de nuevo por ParteA; si no, inmediatamente se sale del bucle.De�namos como ejemplo un comando que imprima los primeros n númerosnaturales

Page 169: Latex

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 LATEX están prede�nidos bucles asociados a condicionales especí�-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 verdaderase 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ónde 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}}\makeatotherLos n\'{u}meros pares menores que 95son: \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 de�nir bucles en los que la condición de control seaun condicional \ifNombre de�nido en TEX con \newif

\@whilesw\ifNombre\fi{Accion}

con lo que TEX procesará los comandos de Accion hasta que el condicional\ifNombre sea falso.

Page 170: Latex

162

Finalmente, se pueden también construir estructuras �for / next�, enlas cuales se ejecuta una serie de acciones para cada uno de los elementosde una lista. Se utiliza la sintaxis

\@for\Nombre:=\lista\do{Accion}

donde \Nombre es una variable (que no hace falta de�nirla previamente)que va almacenando los diferentes elementos de una lista (\lista), quedebe ser previamente de�nida con \def; los elementos de la lista han deestar separados entre sí por comas. En el siguiente ejemplo, primeramentede�nimos a través de TEX un comando \longitud{Palabra} para contarel número de letras de una palabra, que luego utilizamos para crear untabla 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 tieneun coche'' es de \longitud{pepetiene 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

Page 171: Latex

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\parCurioso\Invertir{Curioso}

ojepsEEspejoCuriosoosoiruC

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úmerosprimos: 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,

Page 172: Latex

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.

Page 173: Latex

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 encuentracon el inconveniente de generar, en formato adecuado, las primeras cincopá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 lacarencia de un adecuado editor de fórmulas matemáticas que son de usocomún a tales estudiantes.

Este trabajo presenta la clase FcUnp que permite, al estudiante depregrado de la FC-UNP, redactar todo el trabajo tesis de acuerdo con elformato que exige el Reglamento de Tesis de dicha facultad. Adicionalmen-te, y dado que es requisito presentar un ejemplar de la tesis en formatovirtual, la clase FcUnp permite obtener un archivo PDF de la misma,mediante PDFLATEX. De este modo, el alumno que utilice la clase FcUnp

para redactar su trabajo de tesis se concentrará únicamente en el conte-nido del mismo, sin tener que invertir tiempo en darle formato. Por otraparte, si la FC-UNP o�cializa el uso de dicha clase obtendrá como bene-�cio que la totalidad de los trabajos tendrán un formato único y de nivelprofesional.

2 Cómo invocar la clase FcUnp

La clase FcUnp es una modi�cación de la clase estándar �book� de LATEX.Por tanto, es posible que el estudiante utilice todos los comandos de �book�

Page 174: Latex

166

en la preparación del cuerpo de la tesis. La clase FcUnp 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. \andPermite 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 identi�car la Escuela Profesional. Admite n = 1 para referirsea 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 referirsea la Escuela de Electrónica ó n = 5 para referirse a la Escuela deEstadística.Cabe mencionar que de acuerdo al número ingresado se obtendráautomáticamente la primera primera página (cubierta) en el colorasignado 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 serdos autores los nombres de los mismos deberán ir separados con elcomando \and.

4. \sponsor{<Patrocinador>}Permite ingresar el nombre del patrocinador de la tesis. En caso deser dos patrocinadores los nombres de los mismos deberán ir separa-dos con el comando \and.

Page 175: Latex

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 autoreslas dedicatorias de los mismos deberán ir separadas con el comando\and.

7. \acknowledgments{<Agradecimientos>}Permite ingresar los agradecimientos del autor, los mismos que seseparará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. \makecoverPermite generar la portada.

2. \maketitlePermite generar la página de título.

3. \makesignaturePermite generar la página de �rmas.

4. \makededicationPermite generar la página de la(s) dedicatoria(s).

5. \makeacknowledgmentsPermite generar la página de los agradecimientos.

Page 176: Latex

168

3.4 Otros comandos

1. \frontmatterApertura de la tesis. La numeración de las páginas ubicadas despuésde este comando se realiza con números romanos.

2. \mainmatterParte central de la tesis. Aquí también se ubican las conclusionesy recomendaciones mediante el comando \conclusions, los anexoscon el comando \annex y los apéndices con el comando \appendix.

3. \backmatterCierre de la tesis.

4 Paquetes incorporados

La clase FcUnp incorpora los siguientes paquetes estándar de LATEX:

geometry Este paquete se utiliza para establecer los márgenes de páginade la Tesis.

babel Este paquete se utiliza activando la opción spanish con la �nalidadde 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 nocorresponden 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éna las demostraciones.

graphicx Este formato se utiliza para poder insertar grá�cos y es precisoincluirlo en la clase pues de otra forma no se podría incluir el logode la UNP en la cubierta.

epstopdf Este paquete se utiliza para convertir los grá�cos .eps a .pdfy poder así generar el archivo PDFLATEX.

hyperrefn Este paquete constituye una ligera modi�cación del paqueteestándar hyperref y se utiliza para generar los hipervínculos delíndice general, de las referencias, de las direcciones web, así comotambién para generar los marcadores.

Page 177: Latex

169

5 Un ejemplo especí�co

El ejemplo que se presenta en esta sección permite observar el códigoelemental de una tesis, así como algunas páginas importantes en formatodvi (ver Figs. 3.1, 3.2, 3.3, 3.4 y 3.5), generadas con la clase FcUnp.Además en las �guras 3.6 y 3.7 se aprecia la salida obtenida por PDFLATEXcon el paquete hyperrefn que permite generar hipervínculos y marcadoresen forma automática.

La línea 1 del código anexado invoca la clase FcUnp. La línea 3 invocatres paquetes, de la American Mathematical Society, para trabajar conmatemática. Las líneas 5�17, muestran el correcto uso de los comandos

para ingresar datos y del comando para separar datos ingresados; mientrasque las líneas 23�27, 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 partecentral y el cierre de la tesis y las líneas 53, 60 y 64 indican el inicio de lasconclusiones (y recomendaciones), los anexos y apéndices, respectivamente.El resto de líneas terminan de completar el cuerpo del documento y son deuso común en cualquier documento LATEX generado con la clase estándar�book�.

Código Anexado

1 \documentclass{fcunp}23 \usepackage{amssymb,amsmath,amsfonts}45 \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} \and11 Segunda dedicatoria.\\\textit{Segundo Autor}}12 \acknowledgments{Primer agradecimiento. \and13 Segundo agradecimiento.}14 \resumen{Este es el resumen.}15 \palabrasclave{Palabraclave1, palabraclave2.}16 \abstract{This is the abstract.}17 \keywords{Keyword1, keyword2.}18

Page 178: Latex

170

19 \begin{document}2021 \frontmatter2223 \makecover24 \maketitle25 \makesignature26 \makededication27 \makeacknowledgments28 \chapter{Prólogo}29 Éste es el prólogo.30 \tableofcontents31 \listoffigures32 \chapter{Introducción}33 Ésta es la introducción.3435 \mainmatter3637 \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}4243 \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.4647 \begin{figure}48 \centering49 \includegraphics[scale=0.5]{img/unp.eps}50 \caption{Mi primera figura.}51 \end{figure}5253 \conclusions54 \chapter{Conclusiones}55 Aquí van las conclusiones.5657 \chapter{Recomendaciones}58 Aquí van las recomendaciones.

Page 179: Latex

171

5960 \annex61 \chapter{Este es un anexo}62 Texto para el anexo.6364 \appendix65 \chapter{Este es un apéndice}66 Texto para el apéndice.6768 \backmatter6970 \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}7677 \makeresumen78 \makeabstract7980 \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 modi�cado en forma auto-mática cuando el código de la línea 5 se sustituye por \school{1} (Fig.3.8, izquierda�arriba), \school{2} (Fig. 3.8, derecha�arriba), \school{4}(Fig. 3.8, izquierda�abajo) y \school{5} (Fig. 3.8, derecha�abajo).

6 Obtención de la clase FcUnp

El Reglamento de Tesis de la Facultad de Ciencias, la clase FcUnp, unarchivo PDF de este libro, el paquete hiperrefn; así como los archivosejemplo.tex, ejemplo.dvi y ejemplo.pdf (los dos últimos generados apartir del primero con la clase FcUnp) pueden obtenerse desde

https://sites.google.com/site/ripanaque/docencia

Page 180: Latex

172

Fig. 3.1 Cuatro primeras páginas (dvi outputs) de la tesis formateadascon la clase FcUnp.

Page 181: Latex

173

Fig. 3.2 Los agradecimientos, el prólogo y el índice general y (dvi outputs)son automáticamente formateadas con la clase FcUnp.

Page 182: Latex

174

Fig. 3.3 El índice de �guras, la introducción y las primeras págimas delos capítulos I y II (dvi outputs) son automáticamente formateadas con laclase FcUnp.

Page 183: Latex

175

Fig. 3.4 Las conclusiones, recomendaciones, anexos y apéndices (dvi out-puts) son automáticamente formateadas con la clase FcUnp.

Page 184: Latex

176

Fig. 3.5 La bibliografía, el resumen y el abstract (dvi outputs) tambiénson automáticamente formateadas con la clase FcUnp.

Page 185: Latex

177

Fig. 3.6 Salida formateada por FcUnp y producida por PDFLATEX con elpaquete hyperrefn, con sus respectivos marcadores.

Page 186: Latex

178

Fig. 3.7 Salida formateada por FcUnp y producida por PDFLATEX con elpaquete hyperrefn, con sus respectivos hipervínculos y marcadores.

Page 187: Latex

179

Fig. 3.8 Formato automático por escuelas con FcUnp.

Page 188: Latex

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.0LaTeX document class for the Bachelor Thesis ofthe 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

Page 189: Latex

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}

Page 190: Latex

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}

Page 191: Latex

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%

Page 192: Latex

184

\or%2LICENCIADO EN F\'{I}SICA%

\or%3LICENCIADO EN MATEM\'{A}TICA%

\or%4INGENIERO ELECTR\'{O}NICO Y DE TELECOMUNICACIONES%

\or%5LICENCIADO 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%

}%

Page 193: Latex

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}

Page 194: Latex

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}

Page 195: Latex

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}}

Page 196: Latex

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}

Page 197: Latex

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

Page 198: Latex

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}

Page 199: Latex

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

Page 200: Latex

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{%

Page 201: Latex

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}%

Page 202: Latex

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}}%

Page 203: Latex

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}

Page 204: Latex

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}

Page 205: Latex

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}

Page 206: Latex

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{%

Page 207: Latex

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}

Page 208: Latex

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%

Page 209: Latex

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@[email protected]{\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\orJULIO\or AGOSTO\or SEPTIEMBRE\or OCTUBRE\or NOVIEMBRE\orDICIEMBRE\fi

Page 210: Latex

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

Page 211: Latex

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 egresantesdel nivel Pre-grado de la FC-UNP},pdfkeywords={fcunp.cls},bookmarksnumbered]{hyperrefn}\else\RequirePackage{graphicx}\fi

%%%% End of file `fcunp.cls'.

Page 212: Latex

CONCLUSIONES

Este artículo presenta la clase FcUnp que permite redactar la tesis depregrado de cualquier estudiante de la FC-UNP, ajustándose al formatoexigido 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 darleformato al mismo. Además, la clase FcUnp permite obtener una archivoPDF producido por PDFLATEX, el cual constituye un requisito adicionalque exige la FC-UNP.

Page 213: Latex

RECOMENDACIONES

Se recomienda divulgar el uso de la plantilla FcUnp en la Facultad deCiencias para que los alumnos egresantes digiten sus respectivos trabajosde Tesis de este modo se obtiene uniformidad en los trabajos presentados yse familiariza al alumno en el uso de LATEX siendo esto último esencial paracuando los alumnos decidan cursan estudios de postgrado en la capital oen el extranjero.

De modo similar, se sugiere elaborar una clase en LATEX para digitarla tesis de grado.

Page 214: Latex

BIBLIOGRAFÍA

[1] Aranda, E. CURSO DE LATEX. Departamento de Mate-máticas, E.T.S. Ingenieros Industriales, Universidad de Casti-lla, La Mancha. http://www.wiphala.net/courses/tools/latex/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] Gri�ths, D and Higham, D. LEARNING LATEX. The Society forIndustrial 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).