Está en la página 1de 27

Una Introduccin

ELABORANDO DOCUMENTOS
DE CALIDAD
PROGRAMACIN EN L
A
T
E
X
MOISS SAMUEL TOLEDO JULIN
Comunidad Peruana de L
A
T
E
X
LIMA, PER
2013
ndice general
Pg.
Portada ii
Prlogo v
1 Comandos L
A
T
E
X 1
1.1 Denicin de comandos nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Denicin de entornos nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Comandos T
E
X 5
2.1 Comando DEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Comando def sin argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Comando def con argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Comando LET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Comando IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Algunas acciones de IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
NEWIF: extensin de IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Creando un archivo de clase CLS 11
3.1 Finalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Identicando un archivo de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Declarando opciones de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Ejecutando las opciones de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Cargando la clase base y otros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Creando un archivo de estilo STY 17
4.1 Finalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Diferencia entre un CLS y un STY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
iii
Prlogo
El presente manual de introduccin a programacin en L
A
T
E
X est basado en la experiencia del
autor como usuario de L
A
T
E
X, por ello los errores que se puedan encontrar a lo largo de este documento
es de total responsabilidad del autor.
En el primer captulo se describe los comandos L
A
T
E
X que son usados para la creacin de entornos
y nuevos comandos. La utilidad de este captulo es realizar un primer acercamiento a programacin
y notar que los comandos aqu descritos no siempre satisfacen las necesidades del usuario, por lo que
se precisa de otros recursos para extender dichas funciones.
En el segundo captulo se presentan 3 comandos T
E
X muy tiles para la creacin de archivos de
clase y estilo, se describen tambin algunas extensiones de dichos comandos y otros recursos com-
plementarios. Desde aqu se indica que los comandos presentados son apenas una pequea parte del
total, por ello en este captulo se indica la literatura adecuada para que el usuario pueda incrementar
sus conocimientos y as poseer mayores herramientas para crear caractersticas mas completas para
su documento.
En el tercer captulo se describe la estructura de un archivo de clase, as tambin se proporciona
un ejemplo de aplicacin. El usuario puede crear estructuras mas completas para su documento
L
A
T
E
X, todo ello depender de su experiencia y sobre todo paciencia.
En el cuarto captulo se describe la diferencia entre un archivo de clase y estilo, as como los casos
en que este ltimo resulta mas til.
Atendiendo a lo indicado en las primeras lneas del presente prlogo, se pide informar al autor
sobre los errores y/o comentarios que se tengan sobre lo indicado en este manual al e-mail:
i.numeri@gmail.com
Tambin se puede dejar comentarios en las pginas
https://www.facebook.com/pages/LaTeX-OnLiNe/108938102529090
http://latexonline.wordpress.com/
Lima, 30 de enero del 2013.
v
Captulo
1
Deniendo comandos L
A
T
E
X
Pg.
1.1 Denicin de comandos nuevos 1
1.2 Denicin de entornos nuevos 2
Una de las principales ventajas de T
E
X es su exibilidad y versatilidad. Estas cualidades se suelen
concretar, fundamentalmente, en que T
E
X no es un programa cerrado con un nmero grande de
comandos y entornos predenidos, sino que es programable, permitiendo al usuario desarrollar sus
propios comandos y entornos, adaptndolos completamente a sus necesidades.
En este captulo se explica la manera en que se denen nuevos comandos y entornos, haciendo uso
de la sintaxis de L
A
T
E
X, dejando el uso de elementos nativos de T
E
X para el siguiente captulo.
1.1. Denicin de comandos nuevos
En L
A
T
E
X podemos denir comandos, de acorde a nuestras necesidades. As cada una de ellas
tendr que ver con:
a) Abreviar nombres de comandos ya existentes.
b) Comandos nuevos, con o sin argumentos.
c) Redeniciones de comandos ya existentes.
En las dos primeros casos usamos la instruccin \newcommand y en el tercero \renewcommand,
cada uno de los cuales posee la misma sintaxis. As para los dos primeros casos:
\newcommand{\nombre}[n][defecto]{definicion}
donde:
n: cantidad de argumentos, usado cuando se desea que \nombre tenga n argumentos (el primero
de ellos dene un argumento opcional), aqu n = 1, 2, . . . , 9.
defecto: denicin del argumento opcional, se indica el valor por defecto para el argumento opcional
de \nombre.
Se desea denir un estilo de letra para resaltar un texto con perl sanserif e itlica. Dando
la opcin de establecer el tamao de letra. Para ello se dene el comando \estiloespecial
(cuyo argumento opcional esta denido en tamao large), de la siguiente forma:
\newcommand{\estiloespecial}[2][\large]{{#1\itshape\sffamily#2}}
Ejemplo 1.1
1
2 CAPTULO 1. COMANDOS L
A
T
E
X
Lo usamos como: \estiloespecial{mi texto} si deseamos usar la opcin por defecto, y para
modicar la opcin por defecto a otro tamao \estiloespecial[\footnotesize]{mi texto}.
Para abreviar entornos que son de uso frecuente, como \begin{itemize}, el cual podemos
simplicarlo como \bi y \end{itemize} como \ei, las instrucciones seran:
\newcommand{\bi}{\begin{itemize}}
\newcommand{\ei}{\end{\itemize}}
Ejemplo 1.2
Tengamos en cuenta que:
i) El nombre del nuevo comando puede contener una o mas letras (maysculas o minsculas) pero
no dgitos ni otros smbolos del teclado (como por ejemplo el smbolo @).
ii) Si el comando \nombre ya existe, entonces L
A
T
E
X emitir un mensaje de error, en cuyo caso
debemos sustituir \newcommand por \providecommand.
iii) Se sugiere escribir las instrucciones (de denicin de comandos) en el prembulo del documento,
esto facilita las labores de revisin y sirve de modelo para futuros documentos.
Podemos modicar el estilo de numeracin de un determinado contador, por ejemplo para hacer
que los captulos aparezcan numerados en romanos:
\renewcommand{\thechapter}{\Roman{Chapter}}
Ejemplo 1.3
1.2. Denicin de entornos nuevos
Para denir nuevos entornos o redenir los existentes, disponemos de los siguientes comandos:
\newenvironment{NombreEntorno}[NumArg][ArgDef]{DefEntrada}{DefSalida}
\renewenvironment{NombreEntorno}[NumArg][ArgDef]{DefEntrada}{DefSalida}
donde:
NombreEntorno: es el nombre del entorno.
NumArg: es el nmero de argumentos (comprendido entre 1 y 9).
ArgDef: es el valor asignado por defecto al argumento optativo (si en caso se desea obtener un
entorno con un argumento opcional), que ser el primero de los argumentos.
DefEntrada: es el conjunto de ordenes que se ejecutan antes de entrar en el entorno.
DefSalida: es el conjunto de ordenes que se ejecutan al salir del entorno.
1.2. DEFINICIN DE ENTORNOS NUEVOS 3
Crearemos un entorno para escribir citas, de tal forma que el nombre del autor sea un argumento:
\newenvironment{cita}[1]{\newcommand{\autor}{#1}\begin{quote}%
\itshape}{\end{quote}\centerline{\autor}}
Ejemplo 1.4
\begin{cita}{Lope de Vega}
La raz de...
\end{cita}
La raz de todas las pasiones es
el amor. De l nace la tristeza,
el gozo, la alegra y la desespera-
cin.
Lope de Vega
Resultado 1.1
Ahora daremos un ejemplo en el que se hace uso de \renewenvironment. Antes de ello se
denir un entorno al cual denominaremos comenta. Aqu el cdigo y el efecto:
\newcounter{contin}
\newenvironment{comenta}
{\noindent\slshape Comentario:
\begin{quote}\small\itshape}
{\stepcounter{contin}\hfill
(\arabic{contin})\end{quote}}
\begin{comenta}
El comando ...
\end{comenta}
Comentario:
El comando \newcounter dene un nue-
vo contador, en tanto que el comando
\stepcounter incrementa en una unidad
al contador denido anteriormente. Note-
mos que al nal el comando \arabic rea-
liza la tarea de imprimir el contador en
formato numrico (usar \alph si se quie-
re letras). (1)
Ejemplo 1.5
Se desea redenir el entorno comenta de modo que permita imprimir (junto al encabezado) el nombre
del autor del comentario. El cdigo de redenicin y su uso se da a continuacin
\renewenvironment{comenta}[1]{\begin{sloppypar}\noindent\slshape Comentario:
#1\begin{quote}\small\itshape}{\stepcounter{contin}\hspace*{\fill}
(\arabic{contin})\end{quote}\end{sloppypar}}
\begin{comenta}{El comentarista del manual}
Texto del entorno redefinido ...
\end{comenta}
Resultado 1.2
Note que se adicion (en la denicin de entrada y salida del entorno) a \begin{sloppypar} y
\end{sloppypar} respectivamente, para obtener textos con particiones silbicas mas tolerantes (da
mayor espaciado entre palabras). Tambin notese el cambio de \hfill por \hspace*{\fill}, para
este caso los efectos requeridos son los mismos pero el cdigo es ligeramente distinto.
Captulo
2
Comandos bsicos de programacin T
E
X
Pg.
2.1 Comando DEF . . . . . . . . 5
Comando def sin argumentos . . . 5
Comando def con argumentos . . . 6
2.2 Comando LET . . . . . . . . 7
2.3 Comando IF . . . . . . . . . . 8
Algunas acciones de IF . . . . . . . 8
NEWIF: extensin de IF . . . . . . 8
Aqu deniremos algunos comandos bsicos T
E
X los cuales permitirn crear un documento de clase
(cls) y estilo (sty). La idea es realizar una primera aproximacin a programacin en L
A
T
E
X, por lo
cual no se explicaran todos los comandos T
E
X en este captulo (mas aun, alguno de los comandos
que se presentan se complementan con otros no indicados aqu).
2.1. Comando DEF
Una manera T
E
X de denir nuevos comandos es haciendo uso del comando \def
1
, su sintaxis
queda establecida
\def{\nuevo_comando}{definicion}
Si el comando a denir, eventualmente se usar en modo matemtico entonces se debe agregar
en su denicin el comando \ensuremath, quedando
\def{\nuevo_comando}{\ensuremath{definicion}}
DEF sin argumentos
Se dene un comando para insertar un operador lgico matemtico (la implicacin) cuya sintaxis
L
A
T
E
X es \rightarrow, la cual cambiaremos a \imp
\def\imp{\rightarrow}
Ejemplo 2.6
1
Escribir en el prembulo o fuera de el (esto incluye el caso de escribir fuera de un documento .tex como por
ejemplo un documento de estilo, el cual posee extensin .sty) no hace diferencia, mas es recomendable escribir estas
sentencias dentro del prembulo, puesto que as se lleva mas control sobre todos los comandos creados, lo cual da mas
orden al documento.
5
6 CAPTULO 2. COMANDOS T
E
X
$p \imp q$
p q
Resultado 2.3
Ahora adaptamos el comando \imp para que pueda ser aplicado tanto en modo matemtico como
fuera de l
\def\imp{\ensuremath{\rightarrow}}
El smbolo de implicacin es \imp
$p \imp q$
El smbolo de implicacin es
p q
Resultado 2.4
DEF con argumentos
El comando \def admite (as como otros comandos) hasta 9 argumentos, de los cuales el primero
es opcional (esto es, si el usuario no proporciona dicho argumento el comando trabajar con un valor
por defecto). Para hacer referencia a los argumentos se hace uso de #n (n = 1, 2, . . . , 9) quedando
\def\nuevo_comando#1#2...#9{definicion}
Se dene un comando (vlido tanto en modo matemtico como fuera de el) para la ecuacin
de la esfera n-dimensional de radio r, este comando ser denominado \esfera y poseer tres
argumentos, en las cuales se indica la variable, dimensin y radio (respectivamente)
\def\esfera#1#2#3{\ensuremath{#1_1^2+#1_2^2+\cdots+#1_#2^2=#3^2}}
Ejemplo 2.7
La ecuacin de la esfera
$4$-dimensional de radio $2$
es \esfera{x}{4}{2}
La ecuacin de la esfera 4-dimensional de ra-
dio 2 es x
2
1
+ x
2
2
+ + x
2
4
= 2
2
Resultado 2.5
2.2. COMANDO LET 7
2.2. Comando LET
Si deseamos transferir la denicin de un comando preestablecido (incluyendo sus argumentos) a
un nuevo comando, entonces debemos usar \let, as
\let\nuevo_comando=\comando_anterior
Vamos a denir un comando para crear un nuevo prrafo cuyo texto sea en negrita y cursiva.
Para ello
creamos un comando temporal (lo llamaremos \temp) que haga dicha funcin
\def\temp{\par\bfseries\itshape}
luego pasamos la denicin del comando temporal a un nuevo comando
\let\newpar=\temp
Ejemplo 2.8
Un maestro de la Ley, que quera
ponerlo a prueba, se levant y le
dijo: Maestro, qu debo hacer para
conseguir la vida eterna?\newpar
Jess le dijo: Qu est escrito en
la Escritura? Qu lees en ella? El
hombre contest: Amars al Seor tu
Dios con todo tu corazn, con toda tu
alma, con todas tus fuerzas y con toda
tu mente; y amars a tu prjimo como a
ti mismo. Jess le dijo:
Excelente respuesta! Haz eso
y vivirs.
Un maestro de la Ley, que quera ponerlo a
prueba, se levant y le dijo: Maestro, qu
debo hacer para conseguir la vida eterna?
Jess le dijo: Qu est escrito en
la Escritura? Qu lees en ella? El
hombre contest: Amars al Seor
tu Dios con todo tu corazn, con toda
tu alma, con todas tus fuerzas y con
toda tu mente; y amars a tu prji-
mo como a ti mismo. Jess le dijo:
Excelente respuesta! Haz eso y vi-
virs.
Resultado 2.6
Cabe indicar que
al usar el cdigo \let\newpar=\par\bfseries\itshape no se obtendra el resultado deseado
(puede usted comprobarlo!), por ello la necesidad de crear un comando temporal.
aunque posteriormente se modique algo de la denicin de \temp el comando \newpar no
cambiar, puesto que \let saca una copia del comando \temp en su denicin inicial.
8 CAPTULO 2. COMANDOS T
E
X
2.3. Comando IF
Para producir diferentes resultados (o acciones) dependiente del valor de una variable, se debe
usar el comando \if, este genera una estructura de control (condicional). Su sintaxis es
\if<test> [parte a] \else [parte b] \fi
Acciones de IF
Si el resultado de <test> es verdadero, entonces se procesa las rdenes contenidas en [parte a]
y si es falso se procesa [parte b].
los comandos que no deben de faltar son \if y \fi los cuales inician y acaban la sentencia
respectivamente.
dentro de [parte a] o [parte b] pueden aparecer otros condicionales (a esto se le denomina
anidamiento), donde cada \if debe estar asociado a su respectivo \fi. Una posible estructura
de condicionales anidados seria
\if<test1>
\if<test2> [parte a] \else [parte b] \fi
\else
\if<test3> [parte c] \else [parte d] \fi
\fi
Comando NEWIF
Para crear un condicional con estados
2
preestablecidos, se usa el comando \newif. Su sintaxis
queda denido por
\newif\ifNuevoCondional
Al usar \newif se tiene a disposicin tres nuevos comandos: \if<test>, \NuevoCondicionaltrue y
su correspondiente \NuevoCondicionalFalse. As se obtienen tres estructuras distintas
\newif\ifNuevoCondional
\NuevoCondionaltrue
obtenemos que \NuevoCondicional se
inicia en verdadero (modo habilitado).
\newif\ifNuevoCondional
\NuevoCondionalfalse
obtenemos que \NuevoCondicional se
inicia en falso (modo deshabilitado).
\newif\ifNuevoCondional
\if<test> [parte a] \else [parte b] \fi
el \NuevoCondicional queda anidado.
2
Esto es: iniciar como habilitado o deshabilitado el comando creado.
2.3. COMANDO IF 9
Se dene un comando (de nombre \grafico) el cual permita incorporar leyendas al pie de un
grco, con el siguiente criterio
a) si la longitud de la leyenda es menor a la anchura del grco, entonces la leyenda se imprime
centrada con respecto al grco.
b) si la longitud es superior a la anchura del grco, entonces la leyenda se imprime con una
anchura igual a la del grco.
c) debe permitir elegir entre colocar o no un recuadro al grco.
Ejemplo 2.9
\newlength{\ancho}
\newif\ifrecuadro
\recuadrofalse
\def\grafico#1#2#3#4#5{%
\ifx#5R\recuadrotrue\else\ifx#5N%
\recuadrofalse\fi\fi
\vbox{\ifrecuadro\else\fboxrule0pt%
\fi\fboxsep0pt
\hbox{\fboxrule2pt\fboxsep2pt%
\fbox{\includegraphics[width=#2,%
height=#3]{#1}}}\vspace{\abovecaptionskip}%
\settowidth{\ancho}{#4}%
\ifdim\ancho<#2\hbox to#2{\hss#4\hss}\else
\hbox{\parbox{#2}{#4}}\fi}}
Ahora imprimimos la imagen con los criterios dados
\grafico{nombre-imagen}{ancho}{alto}%
{leyenda}{opcion-de-recuadro}
en donde para la opcin de recuadro,
podemos usar R o N para recuadrar
o no la grca respectivamente.
Esta es mi leyenda
Resultado 2.7
Unos comentarios adicionales con respecto a este cdigo:
el comando \newlength dene una nueva longitud, el cual facilita la comparacin de la anchura
del argumento #4 con respecto a la imagen.
el comando \ifx compara dos argumentos entre s, dando verdadero si son iguales y falso en
caso contrario. Su sintaxis general es: \ifxArg1Arg2.
el comando \settowidth iguala las dimensiones del comando \ancho al argumento #4.
el comando \ifdim es usado para comparar dos longitudes mediante la relacin <, > o =. Su
sintaxis general es: \ifdim Dim1 Relacion Dim2.
el comando \hss es usado para centrar el contenido de la leyenda (argumento #4) con respecto
al ancho de la imagen (argumento #2).
Captulo
3
Archivos de clase
Pg.
3.1 Finalidad . . . . . . . . . . . 11
3.2 Estructura . . . . . . . . . . . 11
Identicando un archivo de clase . 12
Declarando opciones de clase . . . . 12
Ejecutando las opciones de clase . . 12
Cargando la clase base y otros . . . 13
3.3 Ejemplo . . . . . . . . . . . . 13
Los archivos de clase poseen la extensin .cls, as un archivo de clase se distingue del archivo
principal (el cual posee extensin .tex) no solamente por su extensin, sino tambin por su uso
subordinado al archivo .tex.
Un archivo de clase debe ser invocado en el documento principal mediante la instruccin:
\documentclass{nombre-archivo-de-clase}
3.1. Finalidad
Cuando se requiere uniformizar el aspecto de todos los documentos que se vayan a producir (por
ejemplo para un revista, boletn, exmenes, notas personales, etc) disponer de un archivo de clase es
muy til. Para poder usar un archivo de clase es preciso (mas no estrictamente necesario) colocar el
archivo cls en la misma carpeta que el documento tex.
Ahora, no siempre es til crear un archivo de clase. En ocasiones resulta mas cmodo crear un
archivo de estilo (de extensin .sty) o varios de ellos. Por ejemplo si se desea dotar de caractersticas
diversas (estilo de fuente, encabezados, entornos personalizados, etc) al documento, sera una buena
opcin crear una serie de archivos .sty, puesto que as se obtendra una librera de archivos de
estilo los cuales pueden ser usados en otros documentos tex. Para un usuario experimentado puede
resultarle prctico colocar todo ello en un archivo de clase, sin embargo cuando se desea usar alguna
de las caractersticas en otro documento puede resultar laborioso seleccionar determinadas secciones
del archivo cls para aadirlas al nuevo documento.
3.2. Estructura
Los comandos T
E
X y L
A
T
E
X presentados hasta aqu permiten implementar ciertas caractersticas
al documento. Quedan muchos comandos por describir los cuales proporcionaran mayor libertad en
la dotacin de caractersticas, mas en lo que respecta a este manual procuramos mostrar que: unos
pocos comandos proporcionan resultados interesantes.
Por tanto se recomienda hacer uso de los siguientes libros para aanzar los conceptos aqu mos-
trados y conocer de nuevos comandos
a) T
E
X By Topic, de Victor Eijkhout.
b) L
A
T
E
X Companion, de Frank Mittelbach y Michel Goossens.
11
12 CAPTULO 3. CREANDO UN ARCHIVO DE CLASE CLS
Identicacin
En esta parte se dene el nombre que se usar cuando se invoque el archivo cls, as como algunas
anotaciones extras. Por lo general estos datos brindan informacin descriptiva sobre el archivo de
clase, lo cual facilita la lectura del conjunto de instrucciones ah contenidas.
\ProvidesFile{nombre-archivo.cls}[ao/mes/dia]
\typeout{anotaciones-extras}
Adicional a la informacin que se pueda establecer en este punto, sera favorable para el usuario
realizar comentarios (haciendo uso del smbolo %) para indicar la estructura general del archivo
de clase. A su vez, ir sealando (independiente de los comentarios dados al inicio) las lneas que
conforman un grupo de instrucciones y realizan una tarea especca (los cuales al nal conforman el
conjunto de caractersticas que se desea brindar al documento).
Declaracin de opciones
Existen diversas maneras de declarar opciones, ms es recomendable usar \DeclareOption por
ser ms eciente (sobre todo consume menos memoria).
Antes se deben denir las variables que se irn a usar en el archivo de clase, para ello se denen
nuevos condicionales con el comando \newif, as
\newif\ifargumento
Usaremos \argumentotrue o \argumentofalse para cargar una opcin por defecto. As, por ejemplo,
si no se desea cargar la opcin argumento en modo habilitado entonces usamos
\newif\ifargumento
\argumentofalse
posteriormente se debe declarar argumento como opcin a habilitar en el documento tex
1
, comple-
mentndose as el cdigo anterior
\DeclareOption{argumento}{\argumentotrue}
Ejecucin de opciones
Para leer las opciones que sern activadas al ser declaradas en la opcin de clase del archivo tex,
se debe escribir
\ProcessOptions
\ifargumento%
\argumentotrue%
\fi
1
Indicado en la primera lnea de cdigo con: \documentclass[argumento]{nombre-archivo-cls}.
3.3. EJEMPLO 13
Carga de la clase
A.- Clase base: aqu se especica si el archivo de clase est basado en una clase estndar
preestablecida como (article, book, report, etc) de L
A
T
E
X. As debemos usar
\LoadClass{clase-estandar}
en caso se desee cargar algunas opciones (de la clase estndar), se debe escribir
\LoadClass[opciones]{clase-estandar}
Se sugiere revisar los archivos de clase correspondientes a book y article, puesto que en ella se
encuentran cdigos relevantes que pueden ser de ayuda en la creacin de archivos de clase a futuro.
Por ejemplo, ver
para book http://www.tex.ac.uk/ctan/macros/latex/unpacked/book.cls
para article http://www.tex.ac.uk/ctan/macros/latex/unpacked/article.cls
B.- Paquetes: aqu se indican los paquetes que se harn uso (por defecto) en el documento clase
a crear. Para ello usamos
\RequirePackage{nombre-paquete}
C.- Deniciones: aqu se pueden incluir algunas deniciones las cuales pueden ser reutilizados
a lo largo del archivo cls o directamente (invocado) en el documento tex, as
\def\argumento#1#2...#n{instrucciones}
3.3. Ejemplo
Los ejemplos que se dan en esta seccin son adaptaciones del cdigo creado por Luis Varona
2
(universidad de la Rioja en Espaa) a quien agradezco su amable disposicin al autorizar el libre uso
del cdigo.
Se desea imprimir los datos de los autores de un documento al nal del mismo, para ello se
crear un archivo de clase de nombre clase0.cls, as como el comando \contact bajo el
formato
\contact{direccin autor 1}{email 1}{pagina web 1}
se habilitar el uso de este comando mediante una opcin de clase, el cual llamaremos
autocontact. Se explicar la estructura del archivo cls de acuerdo a lo establecido en este
captulo.
Ejemplo 3.10
2
Juan Luis Varona Malumbres, e-mail jvarona@unirioja.es, website http://www.unirioja.es/cu/jvarona
14 CAPTULO 3. CREANDO UN ARCHIVO DE CLASE CLS
Identicacin
\ProvidesFile{clase0.cls}[2013/01/01]
\typeout{Ejemplo de archivo de clase}
% ---------------------- CODIGO INICIAL --------------------------------%
% Creando la opcion autocontact
\newif\ifautocontact
\autocontactfalse % Se inicia en modo desactivado (false) por defecto
Codigo de clase para contact 3.8
Declaracin de opciones
DeclareOption{autocontact}{\autocontacttrue}
Codigo de clase para contact 3.9
Ejecucin de opciones
\ProcessOptions
\ifautocontact%
\autocontacttrue%
\fi
Codigo de clase para contact 3.10
Carga de la clase
A.- Clase base
\LoadClass{article}
Codigo de clase para contact 3.11
B.- Paquetes
Indicamos que no precisa especicar todos los paquetes aqu, por lo general se suele cargar los
mas comunes. Cada documento se va particularizando segn los atributos que se quiera obtener, por
ello es aconsejable optar por una de las siguientes opciones
revisar el archivo de clase antes de escribir el archivo tex para vericar que paquetes estn pre
cargados.
crear un comentario (usando %) al inicio del archivo cls (o del archivo tex) indicando los
paquetes pre cargados.
3.3. EJEMPLO 15
% --------- TEXTO EN ESPAOL Y SILABEO -------------------%
\RequirePackage[spanish]{babel}
\hyphenation{au-tor}
% --------- OTROS PAQUETES QUE SE DESEA PRECARGAR --------%
\RequirePackage{graphicx}
\RequirePackage{url}% Permite usar diversos caracteres que no se
% pueden escribir de forma directa
\RequirePackage{amsmath,amsthm}
\RequirePackage{amssymb}
\date{} % no pone la fecha
Codigo de clase para contact 3.12
C.- Deniciones
Iniciamos creando el entorno trivlist cuya funcin es poder ordenar los datos (en bloque) que
se ingresen en los campos del comando \contact, lo cual da un efecto de lista no numerada (o
sin vietas). Notar el uso del comando \let el cual transere las propiedades del comando \url a
\contacturl. Posteriormente se dene la estructura del bloque que se ir a imprimir al nal de la
pgina del documento, as tambin se aprovecha estos comandos para enlazarlos posteriormente a la
orden last page y as ser invocados al nal.
% ---- Se define un entorno corto para trivlist --------------%
\{block}{\begin{trivlist}\item{}}{\end{trivlist}}
\def\emailname{Correo electronico}
\def\webname{Pagina web}
\let\contacturl\url
% ------ Se define comandos para el last page -----------------%
\let\@contact=\empty
\newcommand{\contact}[3]{%
\expandafter\gdef\expandafter\@contact\expandafter{%
\@contact \vskip 2.00pt plus 0.75 pt minus 0.25pt\relax
\begin{block}
\footnotesize\scshape % tamao y tipo de letra
\begin{minipage}{\textwidth}%
\noindent
#1\ifx\empty #2\else\\[1.5pt]\normalfont\emailname: \contacturl{#2}\fi
\ifx\empty #3\else\\[1.5pt]\normalfont\webname: \contacturl{#3}\fi
\end{minipage}
\end{block}}}
\def\contactalert{Se debe usar \contact{Autor}%
{autor@email}{Pagina web} antes de \ begin{document}}
Codigo de clase para contact 3.13
16 CAPTULO 3. CREANDO UN ARCHIVO DE CLASE CLS
% Se imprime el contacto:
\newcommand{\printcontact}{
\medskip
\ifx\empty\@contact\noindent
{\footnotesize % tamao y tipo de letra
\contactalert
\par}%
\else\@contact\fi
\let\@contact\empty}
\ifautocontact%
\newcommand{\makelastpage}{\printcontact}
\else
\newcommand{\makelastpage}{\relax}
\fi
% ------- redefinicion de \end{document} mediante enddocument ------%
% se usa para cargar la orden last page
\let\endorigdocument\enddocument
\def\enddocument{\enlargethispage{2mm}\makelastpage\label{LastPage}
\endorigdocument}
\endinput
Codigo de clase para contact 3.14
Para acabar este ejemplo, haremos una breve explicacin sobre el uso del smbolo @ en algunos
comandos T
E
X:
el usuario tiene libertad para crear comandos con los nombres que crea mas convenientes, mas
sin embargo existen nombres que ya estn pre establecidos, sobre todo si los nombres son dados
en ingles.
al crear un documento cls se denen comandos cuyos nombres pueden caer dentro de la lista
de nombres que un usuario podra asignar a otro comando en la escritura de un documento tex
(subordinados al archivo cls).
debido a ello se hace necesario proteger el nombre de un comando creado en un archivo de clase
(incluso dentro de un archivo tex) haciendo uso del smbolo @. Esta practica se extiende (de
algn modo) cuando se quiere limitar la accin de un comando mediante el uso de un comando
no existente.
algunos de los comandos internos
3
de L
A
T
E
X poseen el smbolo @, en general varios de los
comandos T
E
X lo poseen. De modo que para no crear un comando que ya est pre denido por
algn archivo de clase en la instalacin L
A
T
E
X que se tenga, sera conveniente no abusar del uso
de @.
3
Los ladrillos bajo el cual esta diseado L
A
T
E
X.
Captulo
4
Archivos de estilo
Pg.
4.1 Finalidad . . . . . . . . . . . 17
4.2 Diferencia entre un CLS y un
STY . . . . . . . . . . . . . . 18
4.3 Ejemplo . . . . . . . . . . . . 18
Los archivos de estilo poseen extensin .sty, un archivo de estilo debe ser invocado en el documento
principal mediante la instruccin:
\usepackage{nombre-archivo-de-estilo}
4.1. Finalidad
Los archivos de estilo son usados en
a) la implementacin de caractersticas especiales
b) implementacin de comandos creados por el usuario
en el primer caso se recomienda revisar otros archivos de estilo que posean un comportamiento
similar a la caracterstica que se desea implementar, para luego a partir de los comandos T
E
X y
L
A
T
E
X proporcionados aqu y en los libros de referencia, realizar las modicaciones correspondientes.
En la siguiente direccin web se encontraran las contribuciones realizadas por usuarios de L
A
T
E
X.
En ella guran diversos archivos de estilo los cuales pueden ser aprovechados de forma directa o ser
modicados segn la necesidad
http://www.ctan.org/tex-archive/macros/latex/contrib/
Existen otras contribuciones que no se encuentran alojadas en la web anterior, por ejemplo se
recomienda recurrir a la siguiente web para encontrar diversas instrucciones (segn el tema de discu-
sin) que en su conjunto constituiran un archivo de estilo, naturalmente dichas instrucciones tienen
que estar relacionadas segn la(s) caracterstica(s) que se desee obtener
http://tex.stackexchange.com/
Una advertencia importante
Algunos documentos de estilo que se puedan encontrar en la web hacen uso de paquetes y/o
comandos de L
A
T
E
X3
1
. Motivo por el cual es preciso instalar dichos paquetes o tener los archivos en
la misma carpeta donde se esta trabajando.
1
Esta versin est en preparacin, la actual versin de MiKT
E
X (distribucin para Windows) es 2.9.4757.
17
18 CAPTULO 4. CREANDO UN ARCHIVO DE ESTILO STY
4.2. Diferencia entre un CLS y un STY
La diferencia entre los archivos de clase y estilo radica en que los archivos de estilo son elaborados
teniendo en cuenta la implementacin y/o modicacin de una caracterstica especca del documento
en tanto que los archivos de clase poseen un efecto mayor ya que dota de mayores caractersticas a
un documento.
En cuando a escritura de cdigo, la nica diferencia esencial para que un archivo de clase sea
un archivo de estilo viene dada por la instruccin
\LoadClass{article}
de esta manera, en vez de usar \documentclass{mi-archivo-de-clase} se usa
\documentclass{article}% book, report, beamer, etc
\usepackage{mi-archivo-de-estilo}
cuando se realiza la adaptacin de un archivo de clase a un archivo de estilo quiz sea necesario
aadir y/o modicar algunos comandos del archivo de clase, puesto ambos tipos de archivo poseen
un comportamiento global y local respectivamente.
4.3. Ejemplo
Se dar un ejemplo en la que se aade una cabecera descriptiva al inicio de un artculo. Este
es una adaptacin del cdigo creado por Luis Varona
2
(universidad de la Rioja en Espaa) para la
Revista de la Real Sociedad Matemtica Espaola (RSME).
Se desea imprimir a modo de encabezado (al inicio del documento) los datos correspondientes
a la publicacin peridica que realiza un grupo de investigacin. Entre los datos que se desea
imprimir se tiene: nombre del grupo de investigacin, volumen, ao, nmero de publicacin
y las pginas que abarca el artculo publicado (este ltimo es cargado de forma automtica).
Para ello se crear el archivo de estilo: cabecera.sty, la impresin de los datos se realizara
escribiendo las siguientes instrucciones en el archivo tex
\grupname{Nombre del grupo de investigacin}
\volume{XX}
\yearofpublication{XXXX}
\issuenumber{X}
se habilitar el uso de estos comandos mediante la declaracin \usepackage{cabecera}.
Ejemplo 4.11
Primero se dene los comandos a usar para la impresin de datos. Se aade el comando, que
permite colocar en la cabecera del documento (a partir de la segunda pgina) un nombre corto
para el grupo de investigacin, \shortgrupname. As el cdigo inicial para el documento de estilo
cabecera.sty es
2
Juan Luis Varona Malumbres, e-mail jvarona@unirioja.es, website http://www.unirioja.es/cu/jvarona
4.3. EJEMPLO 19
\def\yearofpublication#1{\def\theyearofpublication{#1}}
\def\volume#1{\def\thevolume{#1}}
\def\issuenumber#1{\def\theissuenumber{#1}}
\def\grupname#1{\def\thegrupname{#1}}
\grupname{nnnnnnnnnnn}
\yearofpublication{xxxx}
\volume{xx}
\issuenumber{x}
\def\shortgrupname#1{\def\theshortgrupname{#1}}
\shortgrupname{Nombre corto del grupo}
Codigo de estilo para cabecera 4.15
A continuacin se indica la estructura que tendr el encabezado. Se aade el comando, que
imprime el texto provisional indicando que el texto esta en revisin, \provisional
% Por si queremos indicar que la paginacion es provisional:
\def\theprovisional{}
\def\provisional{%
\def\theprovisional{ (provisional)}%
}
% Para la cabecera de la primera pagina de cada articulo:
\newcommand{\makefirstpageofarticle}{\markright{\footnotesize\scshape%
\thegrupname,Vol.~\thevolume\ (\theyearofpublication), N\um.~\theissuenumber,
P\ags.~\thepage--\pageref{LastPage}\theprovisional}
}
\def\theleftheading{\theshortgrupname}
\def\leftheading#1{\def\theleftheading{#1}\makestandardpage}
\newcommand{\makestandardpage}{%
\markboth{{\footnotesize\scshape \theleftheading}}%
{{\footnotesize\scshape \theshortgrupname}}%
}
Codigo de estilo para cabecera 4.16
Ahora se dene el estilo para cabecera.sty, los textos de la cabecera se imprimen a tamao
\footnotesize, y los nmeros de pgina en \small.
\def\ps@headingscabecera{%
\let\@oddfoot\@empty\let\@evenfoot\@empty
% \def\@evenhead{\thepage\hfil\slshape\leftmark}%ORIGINAL DE \ps@myheadings
\def\@evenhead{\small\thepage\hfil\slshape\leftmark}
% \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% ORIGINAL DE \ps@myheadings
\def\@oddhead{{\slshape\rightmark}\hfil\small\thepage}
\let\@mkboth\@gobbletwo
\let\sectionmark\@gobble
\let\subsectionmark\@gobble
}
Codigo de estilo para cabecera 4.17
20 CAPTULO 4. CREANDO UN ARCHIVO DE ESTILO STY
Las siguientes instrucciones permite incluir en la primera pgina del documento los datos de la
cabecera
\let\ps@firstpage\ps@headingscabecera
\def\@fb@botlist{\@botlist}
\def\@fb@topbarrier{\suppressfloats[t]}
\def\FloatBarrier{\par\begingroup \let\@elt\relax
\edef\@tempa{\@fb@botlist\@deferlist\@dbldeferlist}%
\ifx\@tempa\@empty
\else
\ifx\@fltovf\relax % indicator of recursion
\if@firstcolumn
\clearpage
\else
\null\newpage\FloatBarrier
\fi
\else
\newpage \let\@fltovf\relax
\FloatBarrier % recurse once only
\fi\fi \endgroup
\@fb@topbarrier }
% Se activa el tipo de pagina por defecto:
\pagestyle{headingscabecera}
Codigo de estilo para cabecera 4.18
Se complementa el cdigo anterior (poner atencin a los comentarios incluidos en el cdigo),
motivo por el cual no esta enmarcado
\newif\ifexistsfixedsectiontitle
\existsfixedsectiontitlefalse
\newif\ifalreadyonetitle
\alreadyonetitlefalse
\def\goodbreaksecondsemititle{\null\vskip 0em plus 3.5em\pagebreak[3]}
\let\@author\@empty % inicializado para usarlo en los "if"
% Para poder aadir un espacio previo (positivo o negativo)
% antes de los titulos
\newdimen{\thepreviousvspace}
\setlength{\thepreviousvspace}{0pt}
\def\previousvspace#1{\setlength{\thepreviousvspace}{#1}}
\renewcommand\maketitle
{\FloatBarrier\par
\begingroup
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
\long\def\@makefntext##1{\parindent 1em\noindent
\hb@xt@1.8em{%
\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
\if@twocolumn
\ifnum \col@number=\@ne
4.3. EJEMPLO 21
\@maketitle
\else
\twocolumn[\@maketitle]%
\fi
\else
\ifodd\thepage\else\cleardoublepage\fi % Empezar en pagina impar
\global\@topnum\z@ % Previene a las figuras ir a la parte superior
\@maketitle
\fi
\makefirstpageofarticle
\thispagestyle{firstpage}\@thanks
\endgroup
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\makestandardpage % Para que, a partir de ahora, use la cabecera estandar
\alreadyonetitletrue
}
\def\@maketitle{%
\ifodd\thepage\else\cleardoublepage\fi %Para que empiece en pagina impar
\null
\vskip 0.333em%
\vspace*{\thepreviousvspace}%
\begin{center}%
\let \footnote \thanks
{\large\bfseries \@title \par}%
\vskip 1.25em%
\if\@empty\@author\else % Por si no hay autor
{\par}\vskip .5em
{\bfseries
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\fi
{\large \@date}%
\end{center}%
\par
\vskip 2em}
Por ultimo se imprime la cantidad de pginas que abarca el artculo que se escribe:
\let\endorigdocument\enddocument
\def\enddocument{\enlargethispage{2mm}\label{LastPage}\endorigdocument}
Codigo de estilo para cabecera 4.19
NOTA: El comando \provisional en caso de ser usado debe ser colocado en el prembulo del
documento tex.

También podría gustarte