PDF de programación - Apuntes de LATEX Capítulo 8: Nociones de Programación LATEX

Imágen de pdf Apuntes de LATEX Capítulo 8: Nociones de Programación LATEX

Apuntes de LATEX Capítulo 8: Nociones de Programación LATEXgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 8 de Octubre del 2017)
1.280 visualizaciones desde el 8 de Octubre del 2017
513,4 KB
31 paginas
Creado hace 15a (04/11/2008)
Apuntes de LATEX

Capítulo 8: Nociones de Programación LATEX

El compilador TEX contiene aproximadamente 300 secuencias de control (comandos)
llamadas primitivas. Éstas son operaciones de bajo nivel que no pueden ser descompues-
tas en acciones más simples. El resto de lo que propiamente se llama TEX, unas 600
instrucciones, son “macros”, es decir, comandos definidos a partir de las 300 primitivas,
haciendo uso de las capacidades de compilador (es decir, lenguaje de programación) de
TEX. Asimismo, el procesador de textos LATEX es otro conjunto de macros construidas
a partir de comandos TEX. En éste capítulo se introducirán las herramientas básicas
de programación disponibles en TEX, útiles para definir nuevos comandos ó entornos,
modificar parámetros, automatizar tareas, en definitiva personalizar nuestro documento.

1. Nuevos Comandos y Entornos

1.1. Comandos

En ésta sección describiremos cómo utilizar el comando \newcommand para definir
nuevos comandos LATEX que puedan ayudarnos a simplificar el realizar tareas repetitivas.
Repasaremos ahora el uso de este tipo de comandos, desde una perspectiva más formal.
Para la definición de un nuevo comando se dispone de tres posibilidades:

\newcommand{\NombreComando}[NumArg][ArgDefecto]{Definición}
\renewcommand{\NombreComando}[NumArg][ArgDefecto]{Definición}
\providecommand{\NombreComando}[NumArg][ArgDefecto]{Definición}

donde \NombreComando es el nombre que queremos asignar al nuevo comando, NumArg
indica el número de argumentos que va a tener (comprendido entre 1 y 9), ArgDefecto
es el valor por defecto de un argumento optativo (el primero de ellos), y Definición
contiene la definición del comando, donde los distintos argumentos se denotan como
#1, #2, etc...

Entre estas tres versiones existen diferencias importantes. \newcommand se utiliza para
definir nuevos comandos, por lo que debemos estar seguros de que el comando a definir
no existe. \renewcommand se utiliza para redefinir comandos ya existentes, reescribiendo
y borrado la definición anterior del comando. Finalmente, \providecommand define el
nuevo comando sólo en el caso de que el comando no exista; en caso contrario la nueva
definición carece de efecto.

Para cada una de estas tres posibilidades existen versiones con y sin asterisco; las ver-
siones con asterisco (\newcommand*{\NombreComando}[NumArg]{ArgDef}{Def}, etc...)

1

no permiten que los argumentos puedan extenderse a más de un párrafo, mientras que las
versiones sin asterisco (\newcommand{\NombreComando}[NumArg]{ArgDef}{Def}, etc...)
permiten que los argumentos se extiendan a más de un párrafo.

Ejemplos:

Imaginemos que queremos que un texto aparezca con tipo de letra sansserif e itálico;
podemos entonces definir el comando \nuevotipo, dependiente de un parámetro
(el texto a cambiar de tipo):
\newcommand{\nuevotipo}[1]{{\itshape\sffamily #1}}
tras lo cual, escribiendo \nuevotipo{texto sansserif} obtendríamos texto sans-
serif.

Cambiemos ahora el ejemplo anterior; supongamos que, además, se quiere que, por
defecto, el texto aparezca en tamaño \large, aunque ésto último sea también una
opción modificable; definiríamos entonces:
\newcommand{\nuevotipo}[2][\large]{{#1\itshape\sffamily #2}}
lo cual hace que escribiendo \nuevotipo{texto sansserif} resulte texto sansse-
rif, mientras que con \nuevotipo[\small]{texto sansserif} obtendríamos texto
sansserif

Veamos ahora otro ejemplo útil para la escritura de expresiones matemáticas; ima-
ginemos que la expresión (x1, x2, . . . , xn) aparece frecuentemente en nuestro docu-
mento. Podemos entonces definir:
\newcommand{\vect}{(x_1,x_2,\dots,x_n)}
con lo cual, cada vez que escribamos $\vect$ (el nombre del nuevo comando)
se imprimirá (x1, x2, . . . , xn). Todos los nuevos comandos conviene situarlos en el
preámbulo.

Ahora compliquemos un poco el ejemplo con la introducción de argumentos varia-
bles. Si por ejemplo escribimos:
\newcommand{\vect}[1]{(#1_1,#1_2,\dots,#1_n)}
(añadiendo un argumento, que se sustituye en la fórmula con "#1"), escribiendo
$\vect{x}$ obtendríamos (x1, x2, . . . , xn), con $\vect{a}$ se tendría (a1, a2, . . . , an),
etc...

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

Practiquemos ahora la definición de comandos con argumentos optativos, que to-
man un determinado valor por defecto. Por ejemplo, construyamos:
\newcommand{\nuevovector}[2][x]{(#1_1,#1_2,\dots,#1_#2)}
donde la “x” entre paréntesis es el valor por defecto del argumento opcional (siempre

2

el número 1). Entonces, escribiendo: $\nuevovector{n}$ ó $\nuevovector{p}$
obtendríamos (x1, x2, . . . , xn) y (x1, x2, . . . , xp) respectivamente, mientras que aña-
diendo un argumento optativo cambiaríamos su valor por defecto de “x”:
$\nuevovector[a]{n}$ −→ (a1, a2, . . . , an).

Ejercicio: Escribir un comando dependiente de dos argumentos que calcule la deri-
vada parcial respecto de una función f respecto a una variable x, de forma que se puedan
elegir tanto f como x:

∂f
∂x

Ejercicio: Definir un nuevo comando, dependiente de dos argumentos (párrafos de
texto) que los coloque enmarcados, con anchura 0.3\textwidth por defecto (cada pá-
rrafo), aunque modificable, unidos por una línea de longitud 2cm, y todo ello centrado;

ejemplo ejemplo ejemplo
ejemplo ejemplo ejemplo
ejemplo ejemplo ejemplo
ejemplo ejemplo ejemplo

ejemplo ejemplo ejemplo
ejemplo ejemplo ejemplo
ejemplo ejemplo ejemplo
ejemplo ejemplo ejemplo

1.2. Entornos

También es posible definir nuevos entornos, o redefinir entornos ya existentes; para

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

\begin{NuevoEntorno}{Arg1}...{ArgN}
Texto y comandos
\end{NuevoEntorno}

Al igual que en el caso de los comandos, existen versiones sin y con asterisco, con el
mismo significado, es decir, que respectivamente admiten ó no argumentos de más de un
párrafo.

Por ejemplo, construyamos un entorno que cree una minipágina de anchura variable

(por defecto media página), centrada, y con el texto en negrita:

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

y tras definir éste nuevo entorno, tecleando:

3

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

obtenemos:

Ejemplo de texto con una anchura es-
tándar de media página, centrado, y en
tipo de letra negrita

ó, si queremos emplear el argumento optativo y reducir la anchura del texto a 0.3 veces
la anchura de texto (\textwidth):

\begin{mientorno}[0.3]
Ejemplo de texto con una anchura de un tercio de página, centrado, y
en tipo de letra negrita
\end{mientorno}

Ejemplo de texto con
una anchura de un ter-
cio de página, centra-
do, y en tipo de letra
negrita

Es importante tener en cuenta que los argumentos de un entorno sólo pueden uti-
lizarse en la definición de entrada (DefEntrada). Si los necesitamos en la definición de
salida, podemos utilizar el “truco” de guardarlos convenientemente, empleando un co-
mando \newcommand para ello. En el siguiente ejemplo, creamos un entorno cita para
escribir citas, dando el nombre del autor como argumento:

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

Tras lo cual, por ejemplo:

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

produce:

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

Andres Fernández

2. Compilación por trozos: \input e \include

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

4

El comando input{Fichero.tex} produce que el compilador, al encontrar esta
instrucción, lee el fichero indicado en el argumento y continúa compilando dicho
fichero. En el argumento del comando podemos dar, si el fichero no se encuentra
en el directorio actual, el camino hasta él. Debe tenerse cuidado de que instruccio-
nes clave como \documentclass ó \begin{document} no se dupliquen. Entonces,
para escribir un libro, por ejemplo, podemos tener un documento con la siguiente
estructura:

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

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

Una alternativa más cómoda es utilizar, en vez de \input, el comando \include{Fichero}
(es esencial omitir la extensión .tex en éste caso). Entonces, en el preámbulo se
puede colocar el comando \includeonly{Fichero1,Fichero2,...}, que hace que
sólo se incluyan en la compilación los ficheros que aparecen en el argumento. Es
importante mencionar que al comenzar y terminar, la orden \include induce un
salto de página (más exactamente, un comando \clearpage, que además “expulsa”
elementos flotantes pendientes), por lo qu
  • Links de descarga
http://lwp-l.com/pdf7150

Comentarios de: Apuntes de LATEX Capítulo 8: Nociones de Programación LATEX (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad