SlideShare a Scribd company logo
1 of 27
Download to read offline
Una Introducción
ELABORANDO DOCUMENTOS
DE CALIDAD

A
PROGRAMACIÓN EN L TEX

MOISÉS SAMUEL TOLEDO JULIÁN

A
Comunidad Peruana de L TEX

LIMA, PERÚ
2013
Índice general
Pág.
Portada

ii

Prólogo

v

A
1 Comandos L TEX
1.1 Definición de comandos nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Definición de entornos nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
1
2

2 Comandos TEX
2.1 Comando DEF . . . . .
Comando def sin argumentos
Comando def con argumentos
2.2 Comando LET . . . . .
2.3 Comando IF . . . . . . .
Algunas acciones de IF . . . .
NEWIF: extensión de IF . . .

.
.
.
.
.
.
.

5
5
5
6
7
8
8
8

.
.
.
.
.
.
.

11
11
11
12
12
12
13
13

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

3 Creando un archivo de clase CLS
3.1 Finalidad . . . . . . . . . . . . .
3.2 Estructura . . . . . . . . . . . . .
Identificando un archivo de clase . . .
Declarando opciones de clase . . . . . .
Ejecutando las opciones de clase . . . .
Cargando la clase base y otros . . . . .
3.3 Ejemplo . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

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
Prólogo
A
El presente manual de introducción a programación en L TEX está basado en la experiencia del
A
autor como usuario de L TEX, por ello los errores que se puedan encontrar a lo largo de este documento
es de total responsabilidad del autor.
A
En el primer capítulo se describe los comandos L TEX que son usados para la creación de entornos
y nuevos comandos. La utilidad de este capítulo es realizar un primer acercamiento a programación
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 capítulo se presentan 3 comandos TEX muy útiles para la creación de archivos de
clase y estilo, se describen también algunas extensiones de dichos comandos y otros recursos complementarios. Desde aquí se indica que los comandos presentados son apenas una pequeña parte del
total, por ello en este capítulo se indica la literatura adecuada para que el usuario pueda incrementar
sus conocimientos y así poseer mayores herramientas para crear características mas completas para
su documento.
En el tercer capítulo se describe la estructura de un archivo de clase, así también se proporciona
un ejemplo de aplicación. El usuario puede crear estructuras mas completas para su documento
A
L TEX, todo ello dependerá de su experiencia y sobre todo paciencia.
En el cuarto capítulo 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 líneas del presente prólogo, 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
También se puede dejar comentarios en las páginas
https://www.facebook.com/pages/LaTeX-OnLiNe/108938102529090
http://latexonline.wordpress.com/

Lima, 30 de enero del 2013.

v
Capítulo

1

A
Definiendo comandos L TEX

1.1
1.2

Pág.
Definición de comandos nuevos 1
Definición de entornos nuevos
2
Una de las principales ventajas de TEX es su flexibilidad y versatilidad. Estas cualidades se suelen
concretar, fundamentalmente, en que TEX no es un programa cerrado con un número grande de
comandos y entornos predefinidos, sino que es programable, permitiendo al usuario desarrollar sus
propios comandos y entornos, adaptándolos completamente a sus necesidades.
En este capítulo se explica la manera en que se definen nuevos comandos y entornos, haciendo uso
A
de la sintaxis de L TEX, dejando el uso de elementos nativos de TEX para el siguiente capítulo.

1.1.

Definición de comandos nuevos

A
En L TEX podemos definir 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) Redefiniciones de comandos ya existentes.
En las dos primeros casos usamos la instrucción 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 define un argumento opcional), aquí n = 1, 2, . . . , 9.
defecto: definición del argumento opcional, se indica el valor por defecto para el argumento opcional
de nombre.
Ejemplo 1.1
Se desea definir un “estilo de letra” para resaltar un texto con perfil sanserif e itálica. Dando
la opción de establecer el tamaño de letra. Para ello se define el comando estiloespecial
(cuyo argumento opcional esta definido en tamaño large), de la siguiente forma:
newcommand{estiloespecial}[2][large]{{#1itshapesffamily#2}}

1
2

A
CAPÍTULO 1. COMANDOS L TEX

Lo usamos como: estiloespecial{mi texto} si deseamos usar la opción por defecto, y para
modificar la opción por defecto a otro tamaño estiloespecial[footnotesize]{mi texto}.
Ejemplo 1.2
Para abreviar entornos que son de uso frecuente, como begin{itemize}, el cual podemos
simplificarlo como bi y end{itemize} como ei, las instrucciones serían:

newcommand{bi}{begin{itemize}}
newcommand{ei}{end{itemize}}

Tengamos en cuenta que:
i) El nombre del nuevo comando puede contener una o mas letras (mayúsculas o minúsculas) pero
no dígitos ni otros símbolos del teclado (como por ejemplo el símbolo @).
A
ii) Si el comando nombre ya existe, entonces L TEX emitirá un mensaje de error, en cuyo caso
debemos sustituir newcommand por providecommand.

iii) Se sugiere escribir las instrucciones (de definición de comandos) en el preámbulo del documento,
esto facilita las labores de revisión y sirve de modelo para futuros documentos.
Ejemplo 1.3
Podemos modificar el estilo de numeración de un determinado contador, por ejemplo para hacer
que los capítulos aparezcan numerados en romanos:

renewcommand{thechapter}{Roman{Chapter}}

1.2.

Definición de entornos nuevos

Para definir nuevos entornos o redefinir 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 número 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. DEFINICIÓN DE ENTORNOS NUEVOS

3

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

Resultado 1.1
La raíz de todas las pasiones es
el amor. De él nace la tristeza,
el gozo, la alegría y la desesperación.

begin{cita}{Lope de Vega}
La raíz de...
end{cita}

Lope de Vega

Ejemplo 1.5
Ahora daremos un ejemplo en el que se hace uso de renewenvironment. Antes de ello se
definirá un entorno al cual denominaremos comenta. Aquí el código y el efecto:
newcounter{contin}
newenvironment{comenta}
{noindentslshape Comentario:
begin{quote}smallitshape}
{stepcounter{contin}hfill
(arabic{contin})end{quote}}
begin{comenta}
El comando ...
end{comenta}

Comentario:
El comando newcounter define un nuevo contador, en tanto que el comando
stepcounter incrementa en una unidad
al contador definido anteriormente. Notemos que al final el comando arabic realiza la tarea de imprimir el contador en
formato numérico (usar alph si se quiere letras).
(1)

Se desea redefinir el entorno comenta de modo que permita imprimir (junto al encabezado) el nombre
del autor del comentario. El código de redefinición y su uso se da a continuación
Resultado 1.2
renewenvironment{comenta}[1]{begin{sloppypar}noindentslshape Comentario:
#1begin{quote}smallitshape}{stepcounter{contin}hspace*{fill}
(arabic{contin})end{quote}end{sloppypar}}
begin{comenta}{El comentarista del manual}
Texto del entorno redefinido ...
end{comenta}

Note que se adicionó (en la definición de entrada y salida del entorno) a begin{sloppypar} y
end{sloppypar} respectivamente, para obtener textos con particiones silábicas mas tolerantes (da
mayor espaciado entre palabras). También notese el cambio de hfill por hspace*{fill}, para
este caso los efectos requeridos son los mismos pero el código es ligeramente distinto.
Capítulo

2

Comandos básicos de programación TEX
2.1 Comando DEF . . . . .
Comando def sin argumentos
Comando def con argumentos
2.2 Comando LET . . . . .
2.3 Comando IF . . . . . . .
Algunas acciones de IF . . . .
NEWIF: extensión de IF . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

Pág.
5
5
6
7
8
8
8

Aquí definiremos algunos comandos básicos TEX los cuales permitirán crear un documento de clase
A
(cls) y estilo (sty). La idea es realizar una primera aproximación a programación en L TEX, por lo
cual no se explicaran todos los comandos TEX en este capítulo (mas aun, alguno de los comandos
que se presentan se complementan con otros no indicados aquí).

2.1.

Comando DEF

Una manera TEX de definir nuevos comandos es haciendo uso del comando def1 , su sintaxis
queda establecida
def{nuevo_comando}{definicion}
Si el comando a definir, eventualmente se usará en modo matemático entonces se debe agregar
en su definición el comando ensuremath, quedando
def{nuevo_comando}{ensuremath{definicion}}

DEF sin argumentos
Ejemplo 2.6
Se define un comando para insertar un operador lógico matemático (la implicación) cuya sintaxis
A
L TEX es rightarrow, la cual cambiaremos a imp
defimp{rightarrow}

1

Escribir en el preámbulo 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 extensión .sty) no hace diferencia, mas es recomendable escribir estas
sentencias dentro del preámbulo, puesto que así se lleva mas control sobre todos los comandos creados, lo cual da mas
orden al documento.

5
6

CAPÍTULO 2. COMANDOS TEX
Resultado 2.3
$p imp q$

p→q

Ahora adaptamos el comando imp para que pueda ser aplicado tanto en modo matemático como
fuera de él

defimp{ensuremath{rightarrow}}

Resultado 2.4
El símbolo de implicación es imp
$p imp q$

El símbolo de implicación es →
p→q

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

defnuevo_comando#1#2...#9{definicion}

Ejemplo 2.7
Se define un comando (válido tanto en modo matemático como fuera de el) para la ecuación
de la esfera n-dimensional de radio r, este comando será denominado esfera y poseerá tres
argumentos, en las cuales se indica la variable, dimensión y radio (respectivamente)

defesfera#1#2#3{ensuremath{#1_1^2+#1_2^2+cdots+#1_#2^2=#3^2}}

Resultado 2.5
La ecuación de la esfera
$4$-dimensional de radio $2$
es esfera{x}{4}{2}

La ecuación de la esfera 4-dimensional de radio 2 es x2 + x2 + · · · + x2 = 22
1
2
4
2.2. COMANDO LET

2.2.

7

Comando LET

Si deseamos transferir la definición de un comando preestablecido (incluyendo sus argumentos) a
un nuevo comando, entonces debemos usar let, así

letnuevo_comando=comando_anterior
Ejemplo 2.8
Vamos a definir un comando para crear un nuevo párrafo cuyo texto sea en negrita y cursiva.
Para ello
creamos un comando temporal (lo llamaremos temp) que haga dicha función

deftemp{parbfseriesitshape}

luego pasamos la definición del comando temporal a un nuevo comando

letnewpar=temp

Resultado 2.6
Un maestro de la Ley, que quería
ponerlo a prueba, se levantó y le
dijo: ‘‘Maestro, ¿qué debo hacer para
conseguir la vida eterna?’’newpar
Jesús le dijo: ‘‘¿Qué está escrito en
la Escritura? ¿Qué lees en ella?’’ El
hombre contestó: ‘‘Amarás al Señor tu
Dios con todo tu corazón, con toda tu
alma, con todas tus fuerzas y con toda
tu mente; y amarás a tu prójimo como a
ti mismo.’’ Jesús le dijo:
‘‘¡Excelente respuesta! Haz eso
y vivirás.’’

Un maestro de la Ley, que quería ponerlo a
prueba, se levantó y le dijo: “Maestro, ¿qué
debo hacer para conseguir la vida eterna?”
Jesús le dijo: “¿Qué está escrito en
la Escritura? ¿Qué lees en ella?” El
hombre contestó: “Amarás al Señor
tu Dios con todo tu corazón, con toda
tu alma, con todas tus fuerzas y con
toda tu mente; y amarás a tu prójimo como a ti mismo.” Jesús le dijo:
“¡Excelente respuesta! Haz eso y vivirás.”

Cabe indicar que
al usar el código letnewpar=parbfseriesitshape no se obtendría el resultado deseado
(puede usted comprobarlo!), por ello la necesidad de crear un comando temporal.
aunque posteriormente se modifique algo de la definición de temp el comando newpar no
cambiará, puesto que let saca una copia del comando temp en su definición inicial.
8

CAPÍTULO 2. COMANDOS TEX

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 definido por

newififNuevoCondional
Al usar newif se tiene a disposición tres nuevos comandos: if<test>, NuevoCondicionaltrue y
su correspondiente NuevoCondicionalFalse. Así se obtienen tres estructuras distintas
newififNuevoCondional
NuevoCondionaltrue
obtenemos que NuevoCondicional se
inicia en verdadero (modo habilitado).

newififNuevoCondional
NuevoCondionalfalse
obtenemos que NuevoCondicional se
inicia en falso (modo deshabilitado).

newififNuevoCondional
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

Ejemplo 2.9
Se define un comando (de nombre grafico) el cual permita incorporar leyendas al pie de un
gráfico, con el siguiente criterio
a) si la longitud de la leyenda es menor a la anchura del gráfico, entonces la leyenda se imprime
centrada con respecto al gráfico.
b) si la longitud es superior a la anchura del gráfico, entonces la leyenda se imprime con una
anchura igual a la del gráfico.
c) debe permitir elegir entre colocar o no un recuadro al gráfico.

Resultado 2.7
newlength{ancho}
newififrecuadro
recuadrofalse
defgrafico#1#2#3#4#5{%
ifx#5Rrecuadrotrueelseifx#5N%
recuadrofalsefifi
vbox{ifrecuadroelsefboxrule0pt%
fifboxsep0pt
hbox{fboxrule2ptfboxsep2pt%
fbox{includegraphics[width=#2,%
height=#3]{#1}}}vspace{abovecaptionskip}%
settowidth{ancho}{#4}%
ifdimancho<#2hbox to#2{hss#4hss}else
hbox{parbox{#2}{#4}}fi}}

en donde para la opción de recuadro,
podemos usar R o N para recuadrar
o no la gráfica respectivamente.

Ahora imprimimos la imagen con los criterios dados
grafico{nombre-imagen}{ancho}{alto}%
{leyenda}{opcion-de-recuadro}

Esta es mi leyenda

Unos comentarios adicionales con respecto a este código:
• el comando newlength define una nueva longitud, el cual facilita la comparación 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 relación <, > 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).
Capítulo

3

Archivos de clase
3.1 Finalidad . . . . . . . . . .
3.2 Estructura . . . . . . . . . .
Identificando un archivo de clase
Declarando opciones de clase . . .
Ejecutando las opciones de clase .
Cargando la clase base y otros . .
3.3 Ejemplo . . . . . . . . . . .

Pág.
. 11
. 11
. 12
. 12
. 12
. 13
. 13

Los archivos de clase poseen la extensión .cls, así un archivo de clase se distingue del archivo
principal (el cual posee extensión .tex) no solamente por su extensión, sino también por su uso
subordinado al archivo .tex.
Un archivo de clase debe ser invocado en el documento principal mediante la instrucción:
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, boletín, exámenes, 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 cómodo crear un
archivo de estilo (de extensión .sty) o varios de ellos. Por ejemplo si se desea dotar de características
diversas (estilo de fuente, encabezados, entornos personalizados, etc) al documento, sería una buena
opción crear una serie de archivos .sty, puesto que así se obtendría una librería de archivos de
estilo los cuales pueden ser usados en otros documentos tex. Para un usuario experimentado puede
resultarle práctico colocar todo ello en un archivo de clase, sin embargo cuando se desea usar alguna
de las características en otro documento puede resultar laborioso seleccionar determinadas secciones
del archivo cls para añadirlas al nuevo documento.

3.2.

Estructura

A
Los comandos TEX y L TEX presentados hasta aquí permiten implementar ciertas características
al documento. Quedan muchos comandos por describir los cuales proporcionarían mayor libertad en
la dotación de características, 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 afianzar los conceptos aquí mostrados y conocer de nuevos comandos

a) TEX By Topic, de Victor Eijkhout.
A
b) L TEX Companion, de Frank Mittelbach y Michel Goossens.

11
12

CAPÍTULO 3. CREANDO UN ARCHIVO DE CLASE CLS

Identificación
En esta parte se define el nombre que se usará cuando se invoque el archivo cls, así como algunas
anotaciones extras. Por lo general estos datos brindan información descriptiva sobre el archivo de
clase, lo cual facilita la lectura del conjunto de instrucciones ahí contenidas.

ProvidesFile{nombre-archivo.cls}[año/mes/dia]
typeout{anotaciones-extras}
Adicional a la información que se pueda establecer en este punto, sería favorable para el usuario
realizar comentarios (haciendo uso del símbolo %) para indicar la estructura general del archivo
de clase. A su vez, ir señalando (independiente de los comentarios dados al inicio) las líneas que
conforman un grupo de instrucciones y realizan una tarea específica (los cuales al final conforman el
conjunto de características que se desea brindar al documento).

Declaración de opciones
Existen diversas maneras de declarar opciones, más es recomendable usar DeclareOption por
ser más eficiente (sobre todo consume menos memoria).
Antes se deben definir las variables que se irán a usar en el archivo de clase, para ello se definen
nuevos condicionales con el comando newif, así

newififargumento
Usaremos argumentotrue o argumentofalse para cargar una opción por defecto. Así, por ejemplo,
si no se desea cargar la opción argumento en modo habilitado entonces usamos

newififargumento
argumentofalse
posteriormente se debe declarar argumento como opción a habilitar en el documento tex1 , complementándose así el código anterior

DeclareOption{argumento}{argumentotrue}

Ejecución de opciones
Para leer las opciones que serán activadas al ser declaradas en la opción de clase del archivo tex,
se debe escribir

ProcessOptions
ifargumento%
argumentotrue%
fi
1

Indicado en la primera línea de código con: documentclass[argumento]{nombre-archivo-cls}.
3.3. EJEMPLO

13

Carga de la clase
A.- Clase base: aquí se especifica si el archivo de clase está basado en una clase estándar
A
preestablecida como (article, book, report, etc) de L TEX. Así debemos usar

LoadClass{clase-estandar}
en caso se desee cargar algunas opciones (de la clase estándar), 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 códigos relevantes que pueden ser de ayuda en la creación 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 harán uso (por defecto) en el documento clase
a crear. Para ello usamos

RequirePackage{nombre-paquete}
C.- Definiciones: aquí se pueden incluir algunas definiciones las cuales pueden ser reutilizados
a lo largo del archivo cls o directamente (invocado) en el documento tex, así

defargumento#1#2...#n{instrucciones}

3.3.

Ejemplo

Los ejemplos que se dan en esta sección son adaptaciones del código creado por Luis Varona2
(universidad de la Rioja en España) a quien agradezco su amable disposición al autorizar el libre uso
del código.
Ejemplo 3.10
Se desea imprimir los datos de los autores de un documento al final del mismo, para ello se
creará un archivo de clase de nombre clase0.cls, así como el comando contact bajo el
formato

contact{dirección autor 1}{email 1}{pagina web 1}
se habilitará el uso de este comando mediante una opción de clase, el cual llamaremos
autocontact. Se explicará la estructura del archivo cls de acuerdo a lo establecido en este
capítulo.

2

Juan Luis Varona Malumbres, e-mail jvarona@unirioja.es, website http://www.unirioja.es/cu/jvarona
14

CAPÍTULO 3. CREANDO UN ARCHIVO DE CLASE CLS

Identificación
Codigo de clase para contact 3.8
ProvidesFile{clase0.cls}[2013/01/01]
typeout{Ejemplo de archivo de clase}
% ---------------------- CODIGO INICIAL --------------------------------%
% Creando la opcion autocontact
newififautocontact
autocontactfalse % Se inicia en modo desactivado (false) por defecto

Declaración de opciones
Codigo de clase para contact 3.9
DeclareOption{autocontact}{autocontacttrue}

Ejecución de opciones
Codigo de clase para contact 3.10
ProcessOptions
ifautocontact%
autocontacttrue%
fi

Carga de la clase
A.- Clase base
Codigo de clase para contact 3.11
LoadClass{article}

B.- Paquetes
Indicamos que no precisa especificar todos los paquetes aquí, por lo general se suele cargar los
mas comunes. Cada documento se va particularizando según 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 verificar que paquetes están pre
cargados.
crear un comentario (usando %) al inicio del archivo cls (o del archivo tex) indicando los
paquetes pre cargados.
3.3. EJEMPLO

15

Codigo de clase para contact 3.12
% --------- TEXTO EN ESPAÑOL 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

C.- Definiciones
Iniciamos creando el entorno trivlist cuya función 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 viñetas). Notar el uso del comando let el cual transfiere las propiedades del comando url a
contacturl. Posteriormente se define la estructura del bloque que se irá a imprimir al final de la
página del documento, así también se aprovecha estos comandos para enlazarlos posteriormente a la
orden last page y así ser invocados al final.
Codigo de clase para contact 3.13
% ---- Se define un entorno corto para trivlist --------------%
{block}{begin{trivlist}item{}}{end{trivlist}}
defemailname{Correo electronico}
defwebname{Pagina web}
letcontacturlurl
% ------ Se define comandos para el last page -----------------%
let@contact=empty
newcommand{contact}[3]{%
expandaftergdefexpandafter@contactexpandafter{%
@contact vskip 2.00pt plus 0.75 pt minus 0.25ptrelax
begin{block}
footnotesizescshape % tamaño y tipo de letra
begin{minipage}{textwidth}%
noindent
#1ifxempty #2else[1.5pt]normalfontemailname: contacturl{#2}fi
ifxempty #3else[1.5pt]normalfontwebname: contacturl{#3}fi
end{minipage}
end{block}}}
defcontactalert{Se debe usar contact{Autor}%
{autor@email}{Pagina web} antes de  begin{document}}
16

CAPÍTULO 3. CREANDO UN ARCHIVO DE CLASE CLS
Codigo de clase para contact 3.14
% Se imprime el contacto:
newcommand{printcontact}{
medskip
ifxempty@contactnoindent
{footnotesize % tamaño y tipo de letra
contactalert
par}%
else@contactfi
let@contactempty}
ifautocontact%
newcommand{makelastpage}{printcontact}
else
newcommand{makelastpage}{relax}
fi
% ------- redefinicion de end{document} mediante enddocument ------%
%
se usa para cargar la orden last page
letendorigdocumentenddocument
defenddocument{enlargethispage{2mm}makelastpagelabel{LastPage}
endorigdocument}
endinput

Para acabar este ejemplo, haremos una breve explicación sobre el uso del símbolo @ en algunos
comandos TEX:
• el usuario tiene libertad para crear comandos con los nombres que crea mas convenientes, mas
sin embargo existen nombres que ya están pre establecidos, sobre todo si los nombres son dados
en ingles.
• al crear un documento cls se definen comandos cuyos nombres pueden caer dentro de la lista
de nombres que un usuario podría 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 símbolo @. Esta practica se extiende (de
algún modo) cuando se quiere limitar la acción de un comando mediante el uso de un comando
no existente.
A
• algunos de los comandos internos 3 de L TEX poseen el símbolo @, en general varios de los
comandos TEX lo poseen. De modo que para no crear un comando que ya esté pre definido por
A
algún archivo de clase en la instalación L TEX que se tenga, sería conveniente no abusar del uso
de @.

3

A
Los ladrillos bajo el cual esta diseñado L TEX.
Capítulo

4

Archivos de estilo
4.1
4.2
4.3

Finalidad . . .
Diferencia entre
STY . . . . . .
Ejemplo . . . .

Pág.
. . . . . . . . 17
un CLS y un
. . . . . . . . 18
. . . . . . . . 18

Los archivos de estilo poseen extensión .sty, un archivo de estilo debe ser invocado en el documento
principal mediante la instrucción:
usepackage{nombre-archivo-de-estilo}

4.1.

Finalidad

Los archivos de estilo son usados en
a) la implementación de características especiales
b) implementación de comandos creados por el usuario
en el primer caso se recomienda revisar otros archivos de estilo que posean un comportamiento
similar a la característica que se desea implementar, para luego a partir de los comandos TEX y
A
L TEX proporcionados aquí y en los libros de referencia, realizar las modificaciones correspondientes.
A
En la siguiente dirección web se encontraran las contribuciones realizadas por usuarios de L TEX.
En ella figuran diversos archivos de estilo los cuales pueden ser aprovechados de forma directa o ser
modificados según 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 (según el tema de discusión) que en su conjunto constituirían un archivo de estilo, naturalmente dichas instrucciones tienen
que estar relacionadas según la(s) característica(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
A
comandos de L TEX31 . Motivo por el cual es preciso instalar dichos paquetes o tener los archivos en
la misma carpeta donde se esta trabajando.
1

Esta versión está en preparación, la actual versión de MiKTEX (distribución para Windows) es 2.9.4757.

17
18

CAPÍTULO 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 implementación y/o modificación de una característica específica del documento
en tanto que los archivos de clase poseen un efecto mayor ya que dota de mayores características a
un documento.
En cuando a escritura de código, la única diferencia esencial para que un archivo de clase sea
un archivo de estilo viene dada por la instrucción
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 adaptación de un archivo de clase a un archivo de estilo quizá sea necesario
añadir y/o modificar 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 añade una cabecera descriptiva al inicio de un artículo. Este
es una adaptación del código creado por Luis Varona2 (universidad de la Rioja en España) para la
Revista de la Real Sociedad Matemática Española (RSME).

Ejemplo 4.11
Se desea imprimir a modo de encabezado (al inicio del documento) los datos correspondientes
a la publicación periódica que realiza un grupo de investigación. Entre los datos que se desea
imprimir se tiene: nombre del grupo de investigación, volumen, año, número de publicación
y las páginas que abarca el artículo publicado (este último es cargado de forma automática).
Para ello se creará el archivo de estilo: cabecera.sty, la impresión de los datos se realizara
escribiendo las siguientes instrucciones en el archivo tex

grupname{Nombre del grupo de investigación}
volume{XX}
yearofpublication{XXXX}
issuenumber{X}
se habilitará el uso de estos comandos mediante la declaración usepackage{cabecera}.

Primero se define los comandos a usar para la impresión de datos. Se añade el comando, que
permite colocar en la cabecera del documento (a partir de la segunda página) un nombre corto
para el grupo de investigación, shortgrupname. Así el código 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

Codigo de estilo para cabecera 4.15
defyearofpublication#1{deftheyearofpublication{#1}}
defvolume#1{defthevolume{#1}}
defissuenumber#1{deftheissuenumber{#1}}
defgrupname#1{defthegrupname{#1}}
grupname{nnnnnnnnnnn}
yearofpublication{xxxx}
volume{xx}
issuenumber{x}
defshortgrupname#1{deftheshortgrupname{#1}}
shortgrupname{Nombre corto del grupo}

A continuación se indica la estructura que tendrá el encabezado. Se añade el comando, que
imprime el texto provisional indicando que el texto esta en revisión, provisional
Codigo de estilo para cabecera 4.16
% Por si queremos indicar que la paginacion es provisional:
deftheprovisional{}
defprovisional{%
deftheprovisional{ (provisional)}%
}
% Para la cabecera de la primera pagina de cada articulo:
newcommand{makefirstpageofarticle}{markright{footnotesizescshape%
thegrupname,Vol.~thevolume (theyearofpublication), N’um.~theissuenumber,
P’ags.~thepage--pageref{LastPage}theprovisional}
}
deftheleftheading{theshortgrupname}
defleftheading#1{deftheleftheading{#1}makestandardpage}
newcommand{makestandardpage}{%
markboth{{footnotesizescshape theleftheading}}%
{{footnotesizescshape theshortgrupname}}%
}

Ahora se define el estilo para cabecera.sty, los textos de la cabecera se imprimen a tamaño
footnotesize, y los números de página en small.
Codigo de estilo para cabecera 4.17
defps@headingscabecera{%
let@oddfoot@emptylet@evenfoot@empty
% def@evenhead{thepagehfilslshapeleftmark}%ORIGINAL DE ps@myheadings
def@evenhead{smallthepagehfilslshapeleftmark}
% def@oddhead{{slshaperightmark}hfilthepage}% ORIGINAL DE ps@myheadings
def@oddhead{{slshaperightmark}hfilsmallthepage}
let@mkboth@gobbletwo
letsectionmark@gobble
letsubsectionmark@gobble
}
20

CAPÍTULO 4. CREANDO UN ARCHIVO DE ESTILO STY

Las siguientes instrucciones permite incluir en la primera página del documento los datos de la
cabecera
Codigo de estilo para cabecera 4.18
letps@firstpageps@headingscabecera
def@fb@botlist{@botlist}
def@fb@topbarrier{suppressfloats[t]}
defFloatBarrier{parbegingroup let@eltrelax
edef@tempa{@fb@botlist@deferlist@dbldeferlist}%
ifx@tempa@empty
else
ifx@fltovfrelax % indicator of recursion
if@firstcolumn
clearpage
else
nullnewpageFloatBarrier
fi
else
newpage let@fltovfrelax
FloatBarrier % recurse once only
fifi endgroup
@fb@topbarrier }
% Se activa el tipo de pagina por defecto:
pagestyle{headingscabecera}

Se complementa el código anterior (poner atención a los comentarios incluidos en el código),
motivo por el cual no esta enmarcado
newififexistsfixedsectiontitle
existsfixedsectiontitlefalse
newififalreadyonetitle
alreadyonetitlefalse
defgoodbreaksecondsemititle{nullvskip 0em plus 3.5empagebreak[3]}
let@author@empty % inicializado para usarlo en los "if"
% Para poder añadir un espacio previo (positivo o negativo)
% antes de los titulos
newdimen{thepreviousvspace}
setlength{thepreviousvspace}{0pt}
defpreviousvspace#1{setlength{thepreviousvspace}{#1}}
renewcommandmaketitle
{FloatBarrierpar
begingroup
renewcommandthefootnote{@fnsymbolc@footnote}%
def@makefnmark{rlap{@textsuperscript{normalfont@thefnmark}}}%
longdef@makefntext##1{parindent 1emnoindent
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
ifoddthepageelsecleardoublepagefi % Empezar en pagina impar
global@topnumz@
% Previene a las figuras ir a la parte superior
@maketitle
fi
makefirstpageofarticle
thispagestyle{firstpage}@thanks
endgroup
globallet@thanks@empty
globallet@author@empty
globallet@date@empty
globallet@title@empty
makestandardpage % Para que, a partir de ahora, use la cabecera estandar
alreadyonetitletrue
}
def@maketitle{%
ifoddthepageelsecleardoublepagefi %Para que empiece en pagina impar
null
vskip 0.333em%
vspace*{thepreviousvspace}%
begin{center}%
let footnote thanks
{largebfseries @title par}%
vskip 1.25em%
if@empty@authorelse % 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 páginas que abarca el artículo que se escribe:
Codigo de estilo para cabecera 4.19
letendorigdocumentenddocument
defenddocument{enlargethispage{2mm}label{LastPage}endorigdocument}

NOTA: El comando provisional en caso de ser usado debe ser colocado en el preámbulo del
documento tex.

More Related Content

What's hot

Manual de mathcad 14 en español
Manual de mathcad 14 en españolManual de mathcad 14 en español
Manual de mathcad 14 en españolinfante1992
 
Algebra lineal problemas_resueltos
Algebra lineal problemas_resueltosAlgebra lineal problemas_resueltos
Algebra lineal problemas_resueltosmathbmc
 
Aplicaciones de la transformada de fourier para deteccion de daños
Aplicaciones de la transformada de fourier para deteccion de dañosAplicaciones de la transformada de fourier para deteccion de daños
Aplicaciones de la transformada de fourier para deteccion de dañosJavier Gonzales
 
Tensor de Esfuerzos
Tensor de EsfuerzosTensor de Esfuerzos
Tensor de EsfuerzosIvo Fritzler
 
5.4 integrales en_coordenadas_polares
5.4 integrales en_coordenadas_polares5.4 integrales en_coordenadas_polares
5.4 integrales en_coordenadas_polaresortari2014
 
Examenes de mecanica de fluidos de la universidad nacional de piura
Examenes de mecanica de fluidos de la universidad nacional de piuraExamenes de mecanica de fluidos de la universidad nacional de piura
Examenes de mecanica de fluidos de la universidad nacional de piuraJenner Davis
 
Solucionario dinamica 10 edicion russel hibbeler
Solucionario dinamica 10 edicion russel hibbelerSolucionario dinamica 10 edicion russel hibbeler
Solucionario dinamica 10 edicion russel hibbelerLeonel Ventura
 
Semejanza-de-Triangulos-para-Cuarto-de-Secundaria.doc
Semejanza-de-Triangulos-para-Cuarto-de-Secundaria.docSemejanza-de-Triangulos-para-Cuarto-de-Secundaria.doc
Semejanza-de-Triangulos-para-Cuarto-de-Secundaria.docRoxana Haydee Espinoza Diaz
 
4. ed capítulo iv análisis estructural
4. ed capítulo iv análisis estructural4. ed capítulo iv análisis estructural
4. ed capítulo iv análisis estructuraljulio sanchez
 
167820324 texto-guia-mecanica-suelos-ii-umss
167820324 texto-guia-mecanica-suelos-ii-umss167820324 texto-guia-mecanica-suelos-ii-umss
167820324 texto-guia-mecanica-suelos-ii-umssEdson Cossio
 
Esfuerzo y deformacion mediante circulo de Mohr
Esfuerzo y deformacion mediante circulo de MohrEsfuerzo y deformacion mediante circulo de Mohr
Esfuerzo y deformacion mediante circulo de MohrKevynVargas3
 
Ecuaciones diferenciales
Ecuaciones diferencialesEcuaciones diferenciales
Ecuaciones diferencialesJuan Martinez
 

What's hot (20)

Manual de mathcad 14 en español
Manual de mathcad 14 en españolManual de mathcad 14 en español
Manual de mathcad 14 en español
 
Algebra lineal problemas_resueltos
Algebra lineal problemas_resueltosAlgebra lineal problemas_resueltos
Algebra lineal problemas_resueltos
 
Ejercicios de-granulometria
Ejercicios de-granulometriaEjercicios de-granulometria
Ejercicios de-granulometria
 
Aplicaciones de la transformada de fourier para deteccion de daños
Aplicaciones de la transformada de fourier para deteccion de dañosAplicaciones de la transformada de fourier para deteccion de daños
Aplicaciones de la transformada de fourier para deteccion de daños
 
Tensor de Esfuerzos
Tensor de EsfuerzosTensor de Esfuerzos
Tensor de Esfuerzos
 
Teorema de cauchy
Teorema de cauchyTeorema de cauchy
Teorema de cauchy
 
Metodos numericos con matlab
Metodos numericos con matlabMetodos numericos con matlab
Metodos numericos con matlab
 
5.4 integrales en_coordenadas_polares
5.4 integrales en_coordenadas_polares5.4 integrales en_coordenadas_polares
5.4 integrales en_coordenadas_polares
 
Examenes de mecanica de fluidos de la universidad nacional de piura
Examenes de mecanica de fluidos de la universidad nacional de piuraExamenes de mecanica de fluidos de la universidad nacional de piura
Examenes de mecanica de fluidos de la universidad nacional de piura
 
Cuaderno de ejercicios dinamica
Cuaderno de ejercicios dinamicaCuaderno de ejercicios dinamica
Cuaderno de ejercicios dinamica
 
Qcad Formato A4
Qcad   Formato A4Qcad   Formato A4
Qcad Formato A4
 
Integrales dobles
Integrales doblesIntegrales dobles
Integrales dobles
 
Solucionario dinamica 10 edicion russel hibbeler
Solucionario dinamica 10 edicion russel hibbelerSolucionario dinamica 10 edicion russel hibbeler
Solucionario dinamica 10 edicion russel hibbeler
 
Semejanza-de-Triangulos-para-Cuarto-de-Secundaria.doc
Semejanza-de-Triangulos-para-Cuarto-de-Secundaria.docSemejanza-de-Triangulos-para-Cuarto-de-Secundaria.doc
Semejanza-de-Triangulos-para-Cuarto-de-Secundaria.doc
 
Ejemplo de teorema de lagrange
Ejemplo de teorema de lagrangeEjemplo de teorema de lagrange
Ejemplo de teorema de lagrange
 
Ppt integrales triples
Ppt   integrales triplesPpt   integrales triples
Ppt integrales triples
 
4. ed capítulo iv análisis estructural
4. ed capítulo iv análisis estructural4. ed capítulo iv análisis estructural
4. ed capítulo iv análisis estructural
 
167820324 texto-guia-mecanica-suelos-ii-umss
167820324 texto-guia-mecanica-suelos-ii-umss167820324 texto-guia-mecanica-suelos-ii-umss
167820324 texto-guia-mecanica-suelos-ii-umss
 
Esfuerzo y deformacion mediante circulo de Mohr
Esfuerzo y deformacion mediante circulo de MohrEsfuerzo y deformacion mediante circulo de Mohr
Esfuerzo y deformacion mediante circulo de Mohr
 
Ecuaciones diferenciales
Ecuaciones diferencialesEcuaciones diferenciales
Ecuaciones diferenciales
 

Viewers also liked

Manual de latex
Manual de latex Manual de latex
Manual de latex ivan10204
 
La tex edicion de textos cientificos latex 2014- mora. w, borbon. a
La tex   edicion de textos cientificos latex 2014- mora. w, borbon. aLa tex   edicion de textos cientificos latex 2014- mora. w, borbon. a
La tex edicion de textos cientificos latex 2014- mora. w, borbon. aCésar Caisedo
 
عمل العروض التقديمية باستخدام برنامج مقدمه في استخدام برنامج Latex
عمل العروض التقديمية باستخدام برنامج مقدمه في استخدام برنامج Latexعمل العروض التقديمية باستخدام برنامج مقدمه في استخدام برنامج Latex
عمل العروض التقديمية باستخدام برنامج مقدمه في استخدام برنامج Latexresearchcenterm
 
LATEX and BEAMER for Beginners
LATEX and BEAMER for Beginners LATEX and BEAMER for Beginners
LATEX and BEAMER for Beginners Tilak Devaraj
 
Beamer guide By KiJoo Kim (a.k.a. Daisyweb)
Beamer guide By KiJoo Kim (a.k.a. Daisyweb)Beamer guide By KiJoo Kim (a.k.a. Daisyweb)
Beamer guide By KiJoo Kim (a.k.a. Daisyweb)mustainmtn
 
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente? LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente? emateucr
 
calculo en varias variales
calculo en varias varialescalculo en varias variales
calculo en varias varialesMiguel Rodriguez
 
funcion de herramientas de sketch Up
funcion de herramientas de sketch Up  funcion de herramientas de sketch Up
funcion de herramientas de sketch Up kasroca
 
Curso LaTeX. UAM, 2012
Curso LaTeX. UAM, 2012Curso LaTeX. UAM, 2012
Curso LaTeX. UAM, 2012Mariano Rico
 

Viewers also liked (20)

Manual de latex
Manual de latex Manual de latex
Manual de latex
 
La tex edicion de textos cientificos latex 2014- mora. w, borbon. a
La tex   edicion de textos cientificos latex 2014- mora. w, borbon. aLa tex   edicion de textos cientificos latex 2014- mora. w, borbon. a
La tex edicion de textos cientificos latex 2014- mora. w, borbon. a
 
La tex
La texLa tex
La tex
 
Que es el sketch up
Que es el sketch upQue es el sketch up
Que es el sketch up
 
Mejorar documento en LaTeX
Mejorar documento en LaTeXMejorar documento en LaTeX
Mejorar documento en LaTeX
 
Sketch up
Sketch upSketch up
Sketch up
 
Manual LyX: Con "L" de LaTeX
Manual LyX: Con "L" de LaTeXManual LyX: Con "L" de LaTeX
Manual LyX: Con "L" de LaTeX
 
عمل العروض التقديمية باستخدام برنامج مقدمه في استخدام برنامج Latex
عمل العروض التقديمية باستخدام برنامج مقدمه في استخدام برنامج Latexعمل العروض التقديمية باستخدام برنامج مقدمه في استخدام برنامج Latex
عمل العروض التقديمية باستخدام برنامج مقدمه في استخدام برنامج Latex
 
LATEX and BEAMER for Beginners
LATEX and BEAMER for Beginners LATEX and BEAMER for Beginners
LATEX and BEAMER for Beginners
 
Beamer guide By KiJoo Kim (a.k.a. Daisyweb)
Beamer guide By KiJoo Kim (a.k.a. Daisyweb)Beamer guide By KiJoo Kim (a.k.a. Daisyweb)
Beamer guide By KiJoo Kim (a.k.a. Daisyweb)
 
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente? LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
 
CALCULO MIT
CALCULO MITCALCULO MIT
CALCULO MIT
 
calculo en varias variales
calculo en varias varialescalculo en varias variales
calculo en varias variales
 
Pstricks y tikz
Pstricks y tikzPstricks y tikz
Pstricks y tikz
 
algebra lineal
algebra linealalgebra lineal
algebra lineal
 
funcion de herramientas de sketch Up
funcion de herramientas de sketch Up  funcion de herramientas de sketch Up
funcion de herramientas de sketch Up
 
Presentacion latex
Presentacion latexPresentacion latex
Presentacion latex
 
Latex in arabic
Latex in arabicLatex in arabic
Latex in arabic
 
Curso LaTeX. UAM, 2012
Curso LaTeX. UAM, 2012Curso LaTeX. UAM, 2012
Curso LaTeX. UAM, 2012
 
User guide solid edge
User guide solid edgeUser guide solid edge
User guide solid edge
 

Similar to Manual de programacion LaTeX

Tutorial shell scripts
Tutorial shell scriptsTutorial shell scripts
Tutorial shell scriptsScreenMedia
 
Compilador sobre conversión de unidades
Compilador sobre conversión de unidadesCompilador sobre conversión de unidades
Compilador sobre conversión de unidadesDiego Guaman
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje cmundofranco
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje cvictdiazm
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje cmary219122
 
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_ireneromaweb
 
Curso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje CCurso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje Cguestbc0748
 
Administración básica de ubuntu server parte 3
Administración básica de ubuntu server   parte 3Administración básica de ubuntu server   parte 3
Administración básica de ubuntu server parte 3Santiago Márquez Solís
 
Comandos basicos linux
Comandos basicos linuxComandos basicos linux
Comandos basicos linuxvictdiazm
 
Comandos linux unix de manipulación de archivos y directorios
Comandos linux unix de manipulación de archivos y directoriosComandos linux unix de manipulación de archivos y directorios
Comandos linux unix de manipulación de archivos y directorioskarlosp316
 
Cap. 5 lpi linux essentials traducido a español
Cap. 5 lpi linux essentials traducido a españolCap. 5 lpi linux essentials traducido a español
Cap. 5 lpi linux essentials traducido a españolWilmer Lizunde Damiano
 

Similar to Manual de programacion LaTeX (20)

Tutorial shell scripts
Tutorial shell scriptsTutorial shell scripts
Tutorial shell scripts
 
Tutorial_Latex.pdf
Tutorial_Latex.pdfTutorial_Latex.pdf
Tutorial_Latex.pdf
 
Compilador sobre conversión de unidades
Compilador sobre conversión de unidadesCompilador sobre conversión de unidades
Compilador sobre conversión de unidades
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje c
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje c
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje c
 
Introduccion al assembler[1]
Introduccion al assembler[1]Introduccion al assembler[1]
Introduccion al assembler[1]
 
Introduccion al assembler
Introduccion al assemblerIntroduccion al assembler
Introduccion al assembler
 
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
 
Curso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje CCurso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje C
 
Administración básica de ubuntu server parte 3
Administración básica de ubuntu server   parte 3Administración básica de ubuntu server   parte 3
Administración básica de ubuntu server parte 3
 
LaTeX: Glossaries
LaTeX: GlossariesLaTeX: Glossaries
LaTeX: Glossaries
 
linux comando
linux comandolinux comando
linux comando
 
Comandos basicos linux
Comandos basicos linuxComandos basicos linux
Comandos basicos linux
 
Comando de linux
Comando de linuxComando de linux
Comando de linux
 
tutorial0.pdf
tutorial0.pdftutorial0.pdf
tutorial0.pdf
 
Comandos linux unix de manipulación de archivos y directorios
Comandos linux unix de manipulación de archivos y directoriosComandos linux unix de manipulación de archivos y directorios
Comandos linux unix de manipulación de archivos y directorios
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Cap. 5 lpi linux essentials traducido a español
Cap. 5 lpi linux essentials traducido a españolCap. 5 lpi linux essentials traducido a español
Cap. 5 lpi linux essentials traducido a español
 
Tutorial latex
Tutorial latexTutorial latex
Tutorial latex
 

Recently uploaded

Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024AndreRiva2
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicaFlor Idalia Espinoza Ortega
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 

Recently uploaded (20)

Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamica
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 

Manual de programacion LaTeX

  • 2. ELABORANDO DOCUMENTOS DE CALIDAD A PROGRAMACIÓN EN L TEX MOISÉS SAMUEL TOLEDO JULIÁN A Comunidad Peruana de L TEX LIMA, PERÚ 2013
  • 3. Índice general Pág. Portada ii Prólogo v A 1 Comandos L TEX 1.1 Definición de comandos nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Definición de entornos nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 Comandos TEX 2.1 Comando DEF . . . . . Comando def sin argumentos Comando def con argumentos 2.2 Comando LET . . . . . 2.3 Comando IF . . . . . . . Algunas acciones de IF . . . . NEWIF: extensión de IF . . . . . . . . . . 5 5 5 6 7 8 8 8 . . . . . . . 11 11 11 12 12 12 13 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Creando un archivo de clase CLS 3.1 Finalidad . . . . . . . . . . . . . 3.2 Estructura . . . . . . . . . . . . . Identificando un archivo de clase . . . Declarando opciones de clase . . . . . . Ejecutando las opciones de clase . . . . Cargando la clase base y otros . . . . . 3.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
  • 4.
  • 5. Prólogo A El presente manual de introducción a programación en L TEX está basado en la experiencia del A autor como usuario de L TEX, por ello los errores que se puedan encontrar a lo largo de este documento es de total responsabilidad del autor. A En el primer capítulo se describe los comandos L TEX que son usados para la creación de entornos y nuevos comandos. La utilidad de este capítulo es realizar un primer acercamiento a programación 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 capítulo se presentan 3 comandos TEX muy útiles para la creación de archivos de clase y estilo, se describen también algunas extensiones de dichos comandos y otros recursos complementarios. Desde aquí se indica que los comandos presentados son apenas una pequeña parte del total, por ello en este capítulo se indica la literatura adecuada para que el usuario pueda incrementar sus conocimientos y así poseer mayores herramientas para crear características mas completas para su documento. En el tercer capítulo se describe la estructura de un archivo de clase, así también se proporciona un ejemplo de aplicación. El usuario puede crear estructuras mas completas para su documento A L TEX, todo ello dependerá de su experiencia y sobre todo paciencia. En el cuarto capítulo 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 líneas del presente prólogo, 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 También se puede dejar comentarios en las páginas https://www.facebook.com/pages/LaTeX-OnLiNe/108938102529090 http://latexonline.wordpress.com/ Lima, 30 de enero del 2013. v
  • 6.
  • 7. Capítulo 1 A Definiendo comandos L TEX 1.1 1.2 Pág. Definición de comandos nuevos 1 Definición de entornos nuevos 2 Una de las principales ventajas de TEX es su flexibilidad y versatilidad. Estas cualidades se suelen concretar, fundamentalmente, en que TEX no es un programa cerrado con un número grande de comandos y entornos predefinidos, sino que es programable, permitiendo al usuario desarrollar sus propios comandos y entornos, adaptándolos completamente a sus necesidades. En este capítulo se explica la manera en que se definen nuevos comandos y entornos, haciendo uso A de la sintaxis de L TEX, dejando el uso de elementos nativos de TEX para el siguiente capítulo. 1.1. Definición de comandos nuevos A En L TEX podemos definir 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) Redefiniciones de comandos ya existentes. En las dos primeros casos usamos la instrucción 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 define un argumento opcional), aquí n = 1, 2, . . . , 9. defecto: definición del argumento opcional, se indica el valor por defecto para el argumento opcional de nombre. Ejemplo 1.1 Se desea definir un “estilo de letra” para resaltar un texto con perfil sanserif e itálica. Dando la opción de establecer el tamaño de letra. Para ello se define el comando estiloespecial (cuyo argumento opcional esta definido en tamaño large), de la siguiente forma: newcommand{estiloespecial}[2][large]{{#1itshapesffamily#2}} 1
  • 8. 2 A CAPÍTULO 1. COMANDOS L TEX Lo usamos como: estiloespecial{mi texto} si deseamos usar la opción por defecto, y para modificar la opción por defecto a otro tamaño estiloespecial[footnotesize]{mi texto}. Ejemplo 1.2 Para abreviar entornos que son de uso frecuente, como begin{itemize}, el cual podemos simplificarlo como bi y end{itemize} como ei, las instrucciones serían: newcommand{bi}{begin{itemize}} newcommand{ei}{end{itemize}} Tengamos en cuenta que: i) El nombre del nuevo comando puede contener una o mas letras (mayúsculas o minúsculas) pero no dígitos ni otros símbolos del teclado (como por ejemplo el símbolo @). A ii) Si el comando nombre ya existe, entonces L TEX emitirá un mensaje de error, en cuyo caso debemos sustituir newcommand por providecommand. iii) Se sugiere escribir las instrucciones (de definición de comandos) en el preámbulo del documento, esto facilita las labores de revisión y sirve de modelo para futuros documentos. Ejemplo 1.3 Podemos modificar el estilo de numeración de un determinado contador, por ejemplo para hacer que los capítulos aparezcan numerados en romanos: renewcommand{thechapter}{Roman{Chapter}} 1.2. Definición de entornos nuevos Para definir nuevos entornos o redefinir 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 número 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.
  • 9. 1.2. DEFINICIÓN DE ENTORNOS NUEVOS 3 Ejemplo 1.4 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}} Resultado 1.1 La raíz de todas las pasiones es el amor. De él nace la tristeza, el gozo, la alegría y la desesperación. begin{cita}{Lope de Vega} La raíz de... end{cita} Lope de Vega Ejemplo 1.5 Ahora daremos un ejemplo en el que se hace uso de renewenvironment. Antes de ello se definirá un entorno al cual denominaremos comenta. Aquí el código y el efecto: newcounter{contin} newenvironment{comenta} {noindentslshape Comentario: begin{quote}smallitshape} {stepcounter{contin}hfill (arabic{contin})end{quote}} begin{comenta} El comando ... end{comenta} Comentario: El comando newcounter define un nuevo contador, en tanto que el comando stepcounter incrementa en una unidad al contador definido anteriormente. Notemos que al final el comando arabic realiza la tarea de imprimir el contador en formato numérico (usar alph si se quiere letras). (1) Se desea redefinir el entorno comenta de modo que permita imprimir (junto al encabezado) el nombre del autor del comentario. El código de redefinición y su uso se da a continuación Resultado 1.2 renewenvironment{comenta}[1]{begin{sloppypar}noindentslshape Comentario: #1begin{quote}smallitshape}{stepcounter{contin}hspace*{fill} (arabic{contin})end{quote}end{sloppypar}} begin{comenta}{El comentarista del manual} Texto del entorno redefinido ... end{comenta} Note que se adicionó (en la definición de entrada y salida del entorno) a begin{sloppypar} y end{sloppypar} respectivamente, para obtener textos con particiones silábicas mas tolerantes (da mayor espaciado entre palabras). También notese el cambio de hfill por hspace*{fill}, para este caso los efectos requeridos son los mismos pero el código es ligeramente distinto.
  • 10.
  • 11. Capítulo 2 Comandos básicos de programación TEX 2.1 Comando DEF . . . . . Comando def sin argumentos Comando def con argumentos 2.2 Comando LET . . . . . 2.3 Comando IF . . . . . . . Algunas acciones de IF . . . . NEWIF: extensión de IF . . . . . . . . . . . . . . . . . . . . . . . . Pág. 5 5 6 7 8 8 8 Aquí definiremos algunos comandos básicos TEX los cuales permitirán crear un documento de clase A (cls) y estilo (sty). La idea es realizar una primera aproximación a programación en L TEX, por lo cual no se explicaran todos los comandos TEX en este capítulo (mas aun, alguno de los comandos que se presentan se complementan con otros no indicados aquí). 2.1. Comando DEF Una manera TEX de definir nuevos comandos es haciendo uso del comando def1 , su sintaxis queda establecida def{nuevo_comando}{definicion} Si el comando a definir, eventualmente se usará en modo matemático entonces se debe agregar en su definición el comando ensuremath, quedando def{nuevo_comando}{ensuremath{definicion}} DEF sin argumentos Ejemplo 2.6 Se define un comando para insertar un operador lógico matemático (la implicación) cuya sintaxis A L TEX es rightarrow, la cual cambiaremos a imp defimp{rightarrow} 1 Escribir en el preámbulo 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 extensión .sty) no hace diferencia, mas es recomendable escribir estas sentencias dentro del preámbulo, puesto que así se lleva mas control sobre todos los comandos creados, lo cual da mas orden al documento. 5
  • 12. 6 CAPÍTULO 2. COMANDOS TEX Resultado 2.3 $p imp q$ p→q Ahora adaptamos el comando imp para que pueda ser aplicado tanto en modo matemático como fuera de él defimp{ensuremath{rightarrow}} Resultado 2.4 El símbolo de implicación es imp $p imp q$ El símbolo de implicación es → p→q 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 defnuevo_comando#1#2...#9{definicion} Ejemplo 2.7 Se define un comando (válido tanto en modo matemático como fuera de el) para la ecuación de la esfera n-dimensional de radio r, este comando será denominado esfera y poseerá tres argumentos, en las cuales se indica la variable, dimensión y radio (respectivamente) defesfera#1#2#3{ensuremath{#1_1^2+#1_2^2+cdots+#1_#2^2=#3^2}} Resultado 2.5 La ecuación de la esfera $4$-dimensional de radio $2$ es esfera{x}{4}{2} La ecuación de la esfera 4-dimensional de radio 2 es x2 + x2 + · · · + x2 = 22 1 2 4
  • 13. 2.2. COMANDO LET 2.2. 7 Comando LET Si deseamos transferir la definición de un comando preestablecido (incluyendo sus argumentos) a un nuevo comando, entonces debemos usar let, así letnuevo_comando=comando_anterior Ejemplo 2.8 Vamos a definir un comando para crear un nuevo párrafo cuyo texto sea en negrita y cursiva. Para ello creamos un comando temporal (lo llamaremos temp) que haga dicha función deftemp{parbfseriesitshape} luego pasamos la definición del comando temporal a un nuevo comando letnewpar=temp Resultado 2.6 Un maestro de la Ley, que quería ponerlo a prueba, se levantó y le dijo: ‘‘Maestro, ¿qué debo hacer para conseguir la vida eterna?’’newpar Jesús le dijo: ‘‘¿Qué está escrito en la Escritura? ¿Qué lees en ella?’’ El hombre contestó: ‘‘Amarás al Señor tu Dios con todo tu corazón, con toda tu alma, con todas tus fuerzas y con toda tu mente; y amarás a tu prójimo como a ti mismo.’’ Jesús le dijo: ‘‘¡Excelente respuesta! Haz eso y vivirás.’’ Un maestro de la Ley, que quería ponerlo a prueba, se levantó y le dijo: “Maestro, ¿qué debo hacer para conseguir la vida eterna?” Jesús le dijo: “¿Qué está escrito en la Escritura? ¿Qué lees en ella?” El hombre contestó: “Amarás al Señor tu Dios con todo tu corazón, con toda tu alma, con todas tus fuerzas y con toda tu mente; y amarás a tu prójimo como a ti mismo.” Jesús le dijo: “¡Excelente respuesta! Haz eso y vivirás.” Cabe indicar que al usar el código letnewpar=parbfseriesitshape no se obtendría el resultado deseado (puede usted comprobarlo!), por ello la necesidad de crear un comando temporal. aunque posteriormente se modifique algo de la definición de temp el comando newpar no cambiará, puesto que let saca una copia del comando temp en su definición inicial.
  • 14. 8 CAPÍTULO 2. COMANDOS TEX 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 definido por newififNuevoCondional Al usar newif se tiene a disposición tres nuevos comandos: if<test>, NuevoCondicionaltrue y su correspondiente NuevoCondicionalFalse. Así se obtienen tres estructuras distintas newififNuevoCondional NuevoCondionaltrue obtenemos que NuevoCondicional se inicia en verdadero (modo habilitado). newififNuevoCondional NuevoCondionalfalse obtenemos que NuevoCondicional se inicia en falso (modo deshabilitado). newififNuevoCondional if<test> [parte a] else [parte b] fi el NuevoCondicional queda anidado. 2 Esto es: iniciar como habilitado o deshabilitado el comando creado.
  • 15. 2.3. COMANDO IF 9 Ejemplo 2.9 Se define un comando (de nombre grafico) el cual permita incorporar leyendas al pie de un gráfico, con el siguiente criterio a) si la longitud de la leyenda es menor a la anchura del gráfico, entonces la leyenda se imprime centrada con respecto al gráfico. b) si la longitud es superior a la anchura del gráfico, entonces la leyenda se imprime con una anchura igual a la del gráfico. c) debe permitir elegir entre colocar o no un recuadro al gráfico. Resultado 2.7 newlength{ancho} newififrecuadro recuadrofalse defgrafico#1#2#3#4#5{% ifx#5Rrecuadrotrueelseifx#5N% recuadrofalsefifi vbox{ifrecuadroelsefboxrule0pt% fifboxsep0pt hbox{fboxrule2ptfboxsep2pt% fbox{includegraphics[width=#2,% height=#3]{#1}}}vspace{abovecaptionskip}% settowidth{ancho}{#4}% ifdimancho<#2hbox to#2{hss#4hss}else hbox{parbox{#2}{#4}}fi}} en donde para la opción de recuadro, podemos usar R o N para recuadrar o no la gráfica respectivamente. Ahora imprimimos la imagen con los criterios dados grafico{nombre-imagen}{ancho}{alto}% {leyenda}{opcion-de-recuadro} Esta es mi leyenda Unos comentarios adicionales con respecto a este código: • el comando newlength define una nueva longitud, el cual facilita la comparación 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 relación <, > 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).
  • 16.
  • 17. Capítulo 3 Archivos de clase 3.1 Finalidad . . . . . . . . . . 3.2 Estructura . . . . . . . . . . Identificando un archivo de clase Declarando opciones de clase . . . Ejecutando las opciones de clase . Cargando la clase base y otros . . 3.3 Ejemplo . . . . . . . . . . . Pág. . 11 . 11 . 12 . 12 . 12 . 13 . 13 Los archivos de clase poseen la extensión .cls, así un archivo de clase se distingue del archivo principal (el cual posee extensión .tex) no solamente por su extensión, sino también por su uso subordinado al archivo .tex. Un archivo de clase debe ser invocado en el documento principal mediante la instrucción: 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, boletín, exámenes, 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 cómodo crear un archivo de estilo (de extensión .sty) o varios de ellos. Por ejemplo si se desea dotar de características diversas (estilo de fuente, encabezados, entornos personalizados, etc) al documento, sería una buena opción crear una serie de archivos .sty, puesto que así se obtendría una librería de archivos de estilo los cuales pueden ser usados en otros documentos tex. Para un usuario experimentado puede resultarle práctico colocar todo ello en un archivo de clase, sin embargo cuando se desea usar alguna de las características en otro documento puede resultar laborioso seleccionar determinadas secciones del archivo cls para añadirlas al nuevo documento. 3.2. Estructura A Los comandos TEX y L TEX presentados hasta aquí permiten implementar ciertas características al documento. Quedan muchos comandos por describir los cuales proporcionarían mayor libertad en la dotación de características, 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 afianzar los conceptos aquí mostrados y conocer de nuevos comandos a) TEX By Topic, de Victor Eijkhout. A b) L TEX Companion, de Frank Mittelbach y Michel Goossens. 11
  • 18. 12 CAPÍTULO 3. CREANDO UN ARCHIVO DE CLASE CLS Identificación En esta parte se define el nombre que se usará cuando se invoque el archivo cls, así como algunas anotaciones extras. Por lo general estos datos brindan información descriptiva sobre el archivo de clase, lo cual facilita la lectura del conjunto de instrucciones ahí contenidas. ProvidesFile{nombre-archivo.cls}[año/mes/dia] typeout{anotaciones-extras} Adicional a la información que se pueda establecer en este punto, sería favorable para el usuario realizar comentarios (haciendo uso del símbolo %) para indicar la estructura general del archivo de clase. A su vez, ir señalando (independiente de los comentarios dados al inicio) las líneas que conforman un grupo de instrucciones y realizan una tarea específica (los cuales al final conforman el conjunto de características que se desea brindar al documento). Declaración de opciones Existen diversas maneras de declarar opciones, más es recomendable usar DeclareOption por ser más eficiente (sobre todo consume menos memoria). Antes se deben definir las variables que se irán a usar en el archivo de clase, para ello se definen nuevos condicionales con el comando newif, así newififargumento Usaremos argumentotrue o argumentofalse para cargar una opción por defecto. Así, por ejemplo, si no se desea cargar la opción argumento en modo habilitado entonces usamos newififargumento argumentofalse posteriormente se debe declarar argumento como opción a habilitar en el documento tex1 , complementándose así el código anterior DeclareOption{argumento}{argumentotrue} Ejecución de opciones Para leer las opciones que serán activadas al ser declaradas en la opción de clase del archivo tex, se debe escribir ProcessOptions ifargumento% argumentotrue% fi 1 Indicado en la primera línea de código con: documentclass[argumento]{nombre-archivo-cls}.
  • 19. 3.3. EJEMPLO 13 Carga de la clase A.- Clase base: aquí se especifica si el archivo de clase está basado en una clase estándar A preestablecida como (article, book, report, etc) de L TEX. Así debemos usar LoadClass{clase-estandar} en caso se desee cargar algunas opciones (de la clase estándar), 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 códigos relevantes que pueden ser de ayuda en la creación 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 harán uso (por defecto) en el documento clase a crear. Para ello usamos RequirePackage{nombre-paquete} C.- Definiciones: aquí se pueden incluir algunas definiciones las cuales pueden ser reutilizados a lo largo del archivo cls o directamente (invocado) en el documento tex, así defargumento#1#2...#n{instrucciones} 3.3. Ejemplo Los ejemplos que se dan en esta sección son adaptaciones del código creado por Luis Varona2 (universidad de la Rioja en España) a quien agradezco su amable disposición al autorizar el libre uso del código. Ejemplo 3.10 Se desea imprimir los datos de los autores de un documento al final del mismo, para ello se creará un archivo de clase de nombre clase0.cls, así como el comando contact bajo el formato contact{dirección autor 1}{email 1}{pagina web 1} se habilitará el uso de este comando mediante una opción de clase, el cual llamaremos autocontact. Se explicará la estructura del archivo cls de acuerdo a lo establecido en este capítulo. 2 Juan Luis Varona Malumbres, e-mail jvarona@unirioja.es, website http://www.unirioja.es/cu/jvarona
  • 20. 14 CAPÍTULO 3. CREANDO UN ARCHIVO DE CLASE CLS Identificación Codigo de clase para contact 3.8 ProvidesFile{clase0.cls}[2013/01/01] typeout{Ejemplo de archivo de clase} % ---------------------- CODIGO INICIAL --------------------------------% % Creando la opcion autocontact newififautocontact autocontactfalse % Se inicia en modo desactivado (false) por defecto Declaración de opciones Codigo de clase para contact 3.9 DeclareOption{autocontact}{autocontacttrue} Ejecución de opciones Codigo de clase para contact 3.10 ProcessOptions ifautocontact% autocontacttrue% fi Carga de la clase A.- Clase base Codigo de clase para contact 3.11 LoadClass{article} B.- Paquetes Indicamos que no precisa especificar todos los paquetes aquí, por lo general se suele cargar los mas comunes. Cada documento se va particularizando según 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 verificar que paquetes están pre cargados. crear un comentario (usando %) al inicio del archivo cls (o del archivo tex) indicando los paquetes pre cargados.
  • 21. 3.3. EJEMPLO 15 Codigo de clase para contact 3.12 % --------- TEXTO EN ESPAÑOL 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 C.- Definiciones Iniciamos creando el entorno trivlist cuya función 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 viñetas). Notar el uso del comando let el cual transfiere las propiedades del comando url a contacturl. Posteriormente se define la estructura del bloque que se irá a imprimir al final de la página del documento, así también se aprovecha estos comandos para enlazarlos posteriormente a la orden last page y así ser invocados al final. Codigo de clase para contact 3.13 % ---- Se define un entorno corto para trivlist --------------% {block}{begin{trivlist}item{}}{end{trivlist}} defemailname{Correo electronico} defwebname{Pagina web} letcontacturlurl % ------ Se define comandos para el last page -----------------% let@contact=empty newcommand{contact}[3]{% expandaftergdefexpandafter@contactexpandafter{% @contact vskip 2.00pt plus 0.75 pt minus 0.25ptrelax begin{block} footnotesizescshape % tamaño y tipo de letra begin{minipage}{textwidth}% noindent #1ifxempty #2else[1.5pt]normalfontemailname: contacturl{#2}fi ifxempty #3else[1.5pt]normalfontwebname: contacturl{#3}fi end{minipage} end{block}}} defcontactalert{Se debe usar contact{Autor}% {autor@email}{Pagina web} antes de begin{document}}
  • 22. 16 CAPÍTULO 3. CREANDO UN ARCHIVO DE CLASE CLS Codigo de clase para contact 3.14 % Se imprime el contacto: newcommand{printcontact}{ medskip ifxempty@contactnoindent {footnotesize % tamaño y tipo de letra contactalert par}% else@contactfi let@contactempty} ifautocontact% newcommand{makelastpage}{printcontact} else newcommand{makelastpage}{relax} fi % ------- redefinicion de end{document} mediante enddocument ------% % se usa para cargar la orden last page letendorigdocumentenddocument defenddocument{enlargethispage{2mm}makelastpagelabel{LastPage} endorigdocument} endinput Para acabar este ejemplo, haremos una breve explicación sobre el uso del símbolo @ en algunos comandos TEX: • el usuario tiene libertad para crear comandos con los nombres que crea mas convenientes, mas sin embargo existen nombres que ya están pre establecidos, sobre todo si los nombres son dados en ingles. • al crear un documento cls se definen comandos cuyos nombres pueden caer dentro de la lista de nombres que un usuario podría 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 símbolo @. Esta practica se extiende (de algún modo) cuando se quiere limitar la acción de un comando mediante el uso de un comando no existente. A • algunos de los comandos internos 3 de L TEX poseen el símbolo @, en general varios de los comandos TEX lo poseen. De modo que para no crear un comando que ya esté pre definido por A algún archivo de clase en la instalación L TEX que se tenga, sería conveniente no abusar del uso de @. 3 A Los ladrillos bajo el cual esta diseñado L TEX.
  • 23. Capítulo 4 Archivos de estilo 4.1 4.2 4.3 Finalidad . . . Diferencia entre STY . . . . . . Ejemplo . . . . Pág. . . . . . . . . 17 un CLS y un . . . . . . . . 18 . . . . . . . . 18 Los archivos de estilo poseen extensión .sty, un archivo de estilo debe ser invocado en el documento principal mediante la instrucción: usepackage{nombre-archivo-de-estilo} 4.1. Finalidad Los archivos de estilo son usados en a) la implementación de características especiales b) implementación de comandos creados por el usuario en el primer caso se recomienda revisar otros archivos de estilo que posean un comportamiento similar a la característica que se desea implementar, para luego a partir de los comandos TEX y A L TEX proporcionados aquí y en los libros de referencia, realizar las modificaciones correspondientes. A En la siguiente dirección web se encontraran las contribuciones realizadas por usuarios de L TEX. En ella figuran diversos archivos de estilo los cuales pueden ser aprovechados de forma directa o ser modificados según 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 (según el tema de discusión) que en su conjunto constituirían un archivo de estilo, naturalmente dichas instrucciones tienen que estar relacionadas según la(s) característica(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 A comandos de L TEX31 . Motivo por el cual es preciso instalar dichos paquetes o tener los archivos en la misma carpeta donde se esta trabajando. 1 Esta versión está en preparación, la actual versión de MiKTEX (distribución para Windows) es 2.9.4757. 17
  • 24. 18 CAPÍTULO 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 implementación y/o modificación de una característica específica del documento en tanto que los archivos de clase poseen un efecto mayor ya que dota de mayores características a un documento. En cuando a escritura de código, la única diferencia esencial para que un archivo de clase sea un archivo de estilo viene dada por la instrucción 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 adaptación de un archivo de clase a un archivo de estilo quizá sea necesario añadir y/o modificar 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 añade una cabecera descriptiva al inicio de un artículo. Este es una adaptación del código creado por Luis Varona2 (universidad de la Rioja en España) para la Revista de la Real Sociedad Matemática Española (RSME). Ejemplo 4.11 Se desea imprimir a modo de encabezado (al inicio del documento) los datos correspondientes a la publicación periódica que realiza un grupo de investigación. Entre los datos que se desea imprimir se tiene: nombre del grupo de investigación, volumen, año, número de publicación y las páginas que abarca el artículo publicado (este último es cargado de forma automática). Para ello se creará el archivo de estilo: cabecera.sty, la impresión de los datos se realizara escribiendo las siguientes instrucciones en el archivo tex grupname{Nombre del grupo de investigación} volume{XX} yearofpublication{XXXX} issuenumber{X} se habilitará el uso de estos comandos mediante la declaración usepackage{cabecera}. Primero se define los comandos a usar para la impresión de datos. Se añade el comando, que permite colocar en la cabecera del documento (a partir de la segunda página) un nombre corto para el grupo de investigación, shortgrupname. Así el código 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
  • 25. 4.3. EJEMPLO 19 Codigo de estilo para cabecera 4.15 defyearofpublication#1{deftheyearofpublication{#1}} defvolume#1{defthevolume{#1}} defissuenumber#1{deftheissuenumber{#1}} defgrupname#1{defthegrupname{#1}} grupname{nnnnnnnnnnn} yearofpublication{xxxx} volume{xx} issuenumber{x} defshortgrupname#1{deftheshortgrupname{#1}} shortgrupname{Nombre corto del grupo} A continuación se indica la estructura que tendrá el encabezado. Se añade el comando, que imprime el texto provisional indicando que el texto esta en revisión, provisional Codigo de estilo para cabecera 4.16 % Por si queremos indicar que la paginacion es provisional: deftheprovisional{} defprovisional{% deftheprovisional{ (provisional)}% } % Para la cabecera de la primera pagina de cada articulo: newcommand{makefirstpageofarticle}{markright{footnotesizescshape% thegrupname,Vol.~thevolume (theyearofpublication), N’um.~theissuenumber, P’ags.~thepage--pageref{LastPage}theprovisional} } deftheleftheading{theshortgrupname} defleftheading#1{deftheleftheading{#1}makestandardpage} newcommand{makestandardpage}{% markboth{{footnotesizescshape theleftheading}}% {{footnotesizescshape theshortgrupname}}% } Ahora se define el estilo para cabecera.sty, los textos de la cabecera se imprimen a tamaño footnotesize, y los números de página en small. Codigo de estilo para cabecera 4.17 defps@headingscabecera{% let@oddfoot@emptylet@evenfoot@empty % def@evenhead{thepagehfilslshapeleftmark}%ORIGINAL DE ps@myheadings def@evenhead{smallthepagehfilslshapeleftmark} % def@oddhead{{slshaperightmark}hfilthepage}% ORIGINAL DE ps@myheadings def@oddhead{{slshaperightmark}hfilsmallthepage} let@mkboth@gobbletwo letsectionmark@gobble letsubsectionmark@gobble }
  • 26. 20 CAPÍTULO 4. CREANDO UN ARCHIVO DE ESTILO STY Las siguientes instrucciones permite incluir en la primera página del documento los datos de la cabecera Codigo de estilo para cabecera 4.18 letps@firstpageps@headingscabecera def@fb@botlist{@botlist} def@fb@topbarrier{suppressfloats[t]} defFloatBarrier{parbegingroup let@eltrelax edef@tempa{@fb@botlist@deferlist@dbldeferlist}% ifx@tempa@empty else ifx@fltovfrelax % indicator of recursion if@firstcolumn clearpage else nullnewpageFloatBarrier fi else newpage let@fltovfrelax FloatBarrier % recurse once only fifi endgroup @fb@topbarrier } % Se activa el tipo de pagina por defecto: pagestyle{headingscabecera} Se complementa el código anterior (poner atención a los comentarios incluidos en el código), motivo por el cual no esta enmarcado newififexistsfixedsectiontitle existsfixedsectiontitlefalse newififalreadyonetitle alreadyonetitlefalse defgoodbreaksecondsemititle{nullvskip 0em plus 3.5empagebreak[3]} let@author@empty % inicializado para usarlo en los "if" % Para poder añadir un espacio previo (positivo o negativo) % antes de los titulos newdimen{thepreviousvspace} setlength{thepreviousvspace}{0pt} defpreviousvspace#1{setlength{thepreviousvspace}{#1}} renewcommandmaketitle {FloatBarrierpar begingroup renewcommandthefootnote{@fnsymbolc@footnote}% def@makefnmark{rlap{@textsuperscript{normalfont@thefnmark}}}% longdef@makefntext##1{parindent 1emnoindent hb@xt@1.8em{% hss@textsuperscript{normalfont@thefnmark}}##1}% if@twocolumn ifnum col@number=@ne
  • 27. 4.3. EJEMPLO 21 @maketitle else twocolumn[@maketitle]% fi else ifoddthepageelsecleardoublepagefi % Empezar en pagina impar global@topnumz@ % Previene a las figuras ir a la parte superior @maketitle fi makefirstpageofarticle thispagestyle{firstpage}@thanks endgroup globallet@thanks@empty globallet@author@empty globallet@date@empty globallet@title@empty makestandardpage % Para que, a partir de ahora, use la cabecera estandar alreadyonetitletrue } def@maketitle{% ifoddthepageelsecleardoublepagefi %Para que empiece en pagina impar null vskip 0.333em% vspace*{thepreviousvspace}% begin{center}% let footnote thanks {largebfseries @title par}% vskip 1.25em% if@empty@authorelse % 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 páginas que abarca el artículo que se escribe: Codigo de estilo para cabecera 4.19 letendorigdocumentenddocument defenddocument{enlargethispage{2mm}label{LastPage}endorigdocument} NOTA: El comando provisional en caso de ser usado debe ser colocado en el preámbulo del documento tex.