Latex

 ¿Qué es LATEX? 

LATEX es un conjunto de macros para TEX debido originalmente a Leslie Lamport para facilitar el uso de TEX.

Tanto TEX como LATEX son programas de código abierto, liberados bajo la licencia LPPL. Otra de las grandes ventajas de LATEX es que existen multitud de paquetes de código libre para generar distintos tipos de documentos que pueden descargarse desde el repositorio CRAN. La página principal sobre LATEX es The LaTeX project.

 Existen distintas distribuciones de LATEX y algunas de ellas son multiplataforma, es decir, están disponibles para diferentes sistemas operativos.  

Las distribuciones más comunes son:  

• TeXLive para Windows, Mac OSX y Linux. 

• MiKTeX para Windows, Mac OSX y Linux. 

• MacTeX para Mac OSX. 

En sus respectivas páginas está explicado el procedimiento de instalación de cada una. 

Junto a la distribución de LATEX es también habitual instalar algún editor de texto para escribir el código fuente. En realidad puede usarse cualquier editor de texto que ya esté instalado en nuestro sistema operativo, pero los existen entornos de edición especializados que facilitan muchas de las tareas del proceso de composición de documentos con LATEX. Los más comunes son: 

• TexMaker.: Es un editor de texto libre, multiplataforma, con muchos asistentes disponibles que permite previsualizar en tiempo real el documento final en pdf. 

• Texstudio: Es otro editor libre y multiplataforma que incorpora aún más asistentes que el anterior. 

• Vim: Es un editor de texto simple de propósito general que también es libre y multiplataforma. Incorpora paquetes o plugins específicos para facilitar la creación de documentos con LATEX. Especialmente indicado para trabajar desde la terminal. 

• Emacs: Es otro editor similar a Vim, muy extendido entre los usuarios que prefieren usar la terminal. 

• Visual Studio Code: Es un potente entorno de desarrollo multipropósito. Dispone de paquetes para los lenguajes de programación más comunes, entre ellos LATEX. Pero también se puede empezar a componer documentos sin necesidad de instalar nada en el ordenador, usando un editor on-line como por ejemplo Overleaf. 

A modo de ejemplo, empezaremos por crear un sencillo documento con el texto “Hola LATEX”. Para ello utilizaremos nuestro editor de texto preferido para crear un fichero de texto con el nombre main.tex y el siguiente contenido:


Aunque más adelante se verá la estructura general del código fuente de un documento en LATEX, a continuación se explica brevemente el contenido de este fichero: 
1. En la primera línea se especifica el tipo de documento (article). 
2. En la segunda línea se especifica el idioma del documento (spanish). 
3. La tercera línea marca el comienzo del documento. 
4. La cuarta línea contiene el texto del documento. \LaTeX es un comando que produce la salida LATEX. 
5. La quinta línea marca el final del documento.
Compilación 
Para obtener el documento final hay que compilar el fichero fuente. Existen diferentes formas de hacerlo y en los editores anteriores suele ser tan sencillo como hacer clic en un botón o pulsar una combinación de teclas, pero en última instancia todos ellos hacen una llamada al compilador de LATEX que es quien se encarga de convertir el código fuente en el documento final. Cada distribución de LATEX viene con varios compiladores. Los más habituales son: 
• latex: Es el compilador más antiguo y genera documentos en formato dvi, que es un formato independiente creado mucho antes que el formato pdf. 
• pdflatex: Es el compilador más usado y genera documentos en formato pdf. 
• xelatex: Es un compilador más moderno que admite caracteres Unicode en el código fuente y el uso de tipografías más modernas.
 
En una terminal, la compilación de este documento sería tecleando el comando latex main.tex, pdflatex main.tex o xelatex main.tex, dependiendo del compilador que se quiera usar. 
 

Al principio es muy habitual cometer errores en el código fuente, por lo que el proceso de compilación fallará. En ese caso es importante leer los mensajes de salida del compilador donde informará sobre el tipo de error y la línea donde se produjo el error, lo que facilitará su corrección. Algunos entornos de edición como por ejemplo, Overleaf son capaces de anticiparse a los errores de compilación y detectan errores de sintaxis o gramaticales indicando el lugar exacto del error.


Esqueleto básico para pdflatex 
El esqueleto básico del código fuente de un documento en español para compilar con latex o pdflatex es el siguiente:


Antes de explicar las distintas partes de este esqueleto conviene mencionar varias cosas sobre la sintaxis de algunos elementos básicos: 
• Comandos: Los comandos comienzan siempre por la barra invertida (backslash) \. En muchas ocasiones van acompañados de argumentos obligatorios que se escriben entre llaves {...} y opcionales que se escriben entre corchetes [...]. 
• Entornos: Los entornos, a diferencia de los comandos, son bloques de código sobre los que se aplica alguna acción, y están delimitados siempre por un comando de apertura \begin y otro de cierre \end. 
• Comentarios: Al igual que en otros lenguajes del programación se pueden hacer comentarios en el código fuente que no serán interpretados por el compilador. Para ello se utiliza el símbolo de porcentaje % al comienzo del comentario. 
• Símbolos reservados: Existe una serie de símbolos que están reservados para funciones especiales. – \: Indica el inicio de un comando. – $: Declara el entorno matemático. – { }: Inicia y finaliza un grupo. – #: Indica el número de un argumento en la definición de comandos. – %: Indica el inicio de un comentarios. – &: Separa elementos en una tabla o fórmula. – ˆ: Escribe un superíndice. – _, Escribe un subíndice. – ~, Indica por dónde se puede partir una palabra al final de una línea. Para que aparezcan estos caracteres en el documento final es necesario escribirlos en el código fuente precedidos por la barra invertida (\$, \{, \}, \#, \%, \&, \ˆ, \_, \~) excepto la barra invertida que se escribe con el comando \backslash.

A continuación se explican las partes del esqueleto anterior. 

Clase de un documento

 La primera línea de un fichero con código LATEX indica la clase de documento que se va a generar mediante el comando \documentclass. 

En el ejemplo aparece un argumento obligatorio que indica el tipo de documento que se desea crear, artículo (article), pero se pueden crear otros tipos de documentos como informes (report), libros (book) o cartas (letter). . 

Y también aparecen dos argumentos opcionales, a4paper que indica el tamaño de la hoja en el documento final (a4), y 10pt que indica el tamaño base de la fuente utilizada en el documento (existe también 11pt y 12pt). 

Preámbulo 

El preámbulo es la parte que va después de la clase y antes del comienzo del cuerpo del documento. En parte suele utilizarse para la carga de los paquetes de macros que se van a utilizar en el documento y la configuración del documento. En el ejemplo el preámbulo comienza con la carga de tres paquetes mediante el comando \usepackage: el paquete inputenc que permite definir la codificación de los caracteres del código fuente (conviene utilizar la codificación utf8 sobre todo si se van a utilizar caracteres no ASCII); el paquete babel que permite definir el idioma del documento (spanish); y el paquete fontenc que especifique las codificaciones1 de las fuentes (T1). A continuación, se suelen configurar algunos aspectos del documento como podrían ser los márgenes, encabezados y pies, el título, autor y fecha, y otras muchas posibilidades. En el preámbulo también se pueden definir nuevos comandos LATEX o redefinir los ya existentes.

Cuerpo 

Contiene el texto del cuerpo del documento y tiene que ir dentro del entorno document. Suele empezar con el comando \maketitle si se desea empezar el documento con el título, autor y fecha que se hayan definido previamente en el preámbulo, y le sigue el comando \tableofcontents que introduce la tabla de contenidos en el documento. Finalmente iría el texto en sí con el contenido del documento.

Secciones y párrafos 

Secciones y subsecciones 

Normalmente un documento extenso se dividirá en secciones y subsecciones (o incluso capítulos si se trata de un libro). Para definir las secciones de un documento se utilizan los siguientes comandos: 

• \chapter{Título del capítulo}. Crea un nuevo capítulo con el título indicado y lo numera. Solo puede usarse cuando la clase del documento es book. 

• \section{Título de la sección}. Crea una nueva sección con el título indicado y la numera. 

• \subsection{Título de la subsección}. Crea una nueva subsección con el título indicado y la numera. 

• \subsubsection{Título de la subsubsección}. Crea una nueva subsubsección con el título indicado y la numera. Las secciones definidas con estos documentos aparecerán en la tabla de contenidos automáticamente. 

Existen versiones alternativas de estos comandos añadiendo un asterisco (\chapter*, \section*, \subsection*, \subsubsection*) que crean encabezados de sección sin numerar y que tampoco aparecerán en la tabla de contenidos.

Párrafos y cambios de línea

Para crear un párrafo nuevo basta dejar una o más líneas en blanco. Si se quiere hacer un cambio de línea dentro de un mismo párrafo, se utiliza el comando \newline o \\. 

Justificación 

Los párrafos se justifican por defecto a la izquierda y a la derecha. LATEX utiliza un algoritmo que permite partir las palabras al final de una línea para obtener párrafos con una buena estética (sin grandes espacios en blanco entre palabras). Pero también se pueden justificar solo a la izquierda, solo a la derecha o centrados entre los márgenes. Para ello se utilizan los siguientes entornos: 

• flushleft: Justifica el texto a la izquierda. 

• flushright: Justifica el texto a la derecha. 

• center: Justifica el texto centrado entre los márgenes.

 Formateo básico 

Existen multitud de comandos para dar formato al texto de un documento, pero en esta sección nos limitaremos a los más importantes. 

Negrita, cursiva y subrayado 

Para resaltar un texto habitualmente se utiliza negrita, cursiva o subrayado. Estos formatos se aplican con los siguientes comandos: 

• \textbf{...}: Pone el texto en negrita. 

• \textit{...}: Pone el texto en cursiva o itálica. 

• \emph{...}: Enfatiza el texto cambiando de estilo (si estamos en un entorno de cursiva pasa a normal y si estamos en un entorno de texto normal pasa a cursiva). 

• \underline{...}: Subraya el texto. 

Familias de tipos de letra 

Existen tres tipos de letra que se activan con los siguientes comandos: 

• \texrm{...}: Texto normal (con serif). Es el tipo por defecto. 

• \texsf{...}: Texto sin adornos (sin serif). 

• \texttt{...}: Texto de máquina de escribir o monoespaciado (caracteres con la misma anchura).

Perfiles de letra 

Para cada tipo de letra existen también varios perfiles que se activan con los siguientes comandos: 

• \textup{...}: Activa el perfil recto. Es el perfil por defecto. 

• \textit{...}: Activa el perfil de letra itálica. 

• \textsl{...}: Activa el perfil inclinado. 

• \textsc{...}: Activa el perfil de letra versalita (mayúsculas pequeñas)

Tamaños de letra 

A diferencia de otros procesadores donde el tamaño de la fuente se indica en puntos o pixels, en LATEX existen 10 tamaños predefinidos que se activan con los siguientes comandos, de menor a mayor tamaño: 

• \tiny 

• \scriptsize 

• \footnotesize 

• \small 

• \normalsize 

• \large 

• \Large 

• \LARGE 

• \huge 

• \Huge 

Existen paquetes que permiten definir tamaños más pequeños o mayores pero no suelen ser necesarios en un documento normal. 

Listas 

Existen tres tipos de listas, no ordenadas, ordenadas y descriptivas (en lugar de marcas o números los items de la lista están encabezados por texto), que se crean con los siguientes entornos: 

• itemize: Crea un lista sin numerar. 

• enumerate: Crea una lista enumerada. 

• description: Crea una lista de tipo descripción. 

Dentro de estos entornos, cada elemento de la lista debe empezar en una línea nueva con el comando \item. En el caso de las listas descriptivas, hay que proporcionar el texto del item de la lista como un argumento obligatorio. 

Tablas 

Las tablas son uno de los elementos más complejos de LATEX, ya que, aunque es fácil crear una tabla sencilla, aplicarles un formato más avanzado con justificación de columnas, fusión de columnas o filas, márgenes de columnas, líneas de división, etc. suele ser bastante más difícil, aunque algunos entornos de edición facilitan la tarea. 

Existen multitud de paquetes para personalizar las tablas pero en esta sección solo veremos lo más básico. Para crear una tabla se utiliza el entorno tabular. Este entorno tiene como argumento obligatorio el número de columnas de la tabla y su justificación, que se indica con una letra: l izquierda, r derecha y c centrada, (por ejemplo lcr indica tres columnas, la primera justificada a la izquierda, la segunda centrada y la tercera justificada a la derecha). 

A continuación se introduce el contenido de la tabla, separando las filas con el comando de cambio de línea \\ y dentro de cada línea separando las celdas con el comando &.

Imágenes 

Para incluir una imagen o figura en un documento, además de disponer de la imagen del fichero en un formato gráfico adecuado, es necesario cargar en el preámbulo el paquete graphicx. Este paquete permite gestionar imágenes en los formatos gráficos jpg, png, tiff, eps y pdf (los tres primeros son formatos de mapas de bits y los dos últimos vectoriales). 

Una vez cargado el paquete, para insertar una imagen en el documento basta con utilizar el comando \includegraphics[opiones]{fichero}. Este comando tiene como argumento obligatorio es el nombre del fichero con la imagen (incluyendo la ruta en el sistema de ficheros local) y los siguientes argumentos opcionales para modificar el aspecto de la imagen: 

• height: Indica la altura de la imagen. Escala la imagen hasta esa altura. 

• width: Indica la anchura de la imagen. Escala la imagen hasta esa anchura. 

• scale: Factor de escalado de la imagen de 0 a 1. 

• angle: Ángulo de rotación de la imagen. Rota la imagen en el sentido de las agujas del reloj los grados indicados. 

Fórmulas matemáticas 

La escritura de fórmulas matemáticas es uno de los puntos fuertes de LATEX, y es por ello que se utiliza tanto para la creación de documentos científicos o técnicos con contenido matemático. Para escribir una fórmula es necesario cambiar al modo matemático. 

Existen distintas formas de activar el modo matemático: 

• $: Activa el modo matemático en linea, es decir, las fórmulas aparecerán en la misma linea que el texto que las rodea. Para desactivar este modo hay que volver a escribir el signo peso. 

• $$: Activa el modo matemático display (desplegado), de manera que las fórmulas aparecen en una línea aparte. 

• El entorno equation también activa el modo matemático display pero además asigna un número a la ecuación, para poder referenciarla en otras partes del documento.

Símbolos matemáticos 

Existe una infinidad de símbolos matemáticos que escriben mediante comandos. A continuación se muestran los más habituales.

Letras griegas: Para escribir letras griegas se utilizan los siguientes comandos:



Es posible declarar nuevos operadores o funciones cargando el paquete amsmath con el comando \DeclareMathOperator{comando}{texto}. Por ejemplo, para obtener las versión de la función seno en español se puede definir DeclareMathOperator{\sen}{sen} en el preámbulo y luego utilizar el comando \sen en el cuerpo para obtener la función seno en español. Otro paquete que incorpora aún más símbolos es amssymb.
Fracciones 
Para escribir fracciones simples en línea se puede usar el operador aritmético / (por ejemplo 3/4), pero para fracciones más complejas o fracciones en modo display, conviene utilizar el comando \frac{num}{den}, donde num es el numerador y den el denominador. A su vez, se pueden escribir más fracciones en el numerador o el denominador, anidando este comando.
Sumatorios, productorios e integrales 
Para escribir sumatorios se utiliza el comando \sum_{sub}ˆ{sup}, donde sub es el subíndice que indica el inicio de la suma y sup es el superíndice que indica el final de la suma. Si se quieren omitir los índices de inicio y final de la suma, basta con el comando \sum. De manera análoga, para escribir productorios se utiliza el comando \prod_{sub}ˆ{sup}, donde sub es el subíndice que indica el inicio del producto y sup es el superíndice que indica el final del producto. Si se quieren omitir los índices de inicio y final del producto, basta con el comando \prod.  
Del mismo modo, para escribir integrales definidas se utiliza el comando \int_{sub}ˆ{sup}, donde sub es el subíndice que indica el inicio de la integral y sup es el superíndice que indica el final de la integral. Para integrales indefinidas, basta con el comando \int.
Sombreros 
Es posible poner símbolos encima de otros símbolos, más conocidos como sombreros. Los siguientes comandos sirven para poner distintos tipos de sombreros: 
• \bar{...}: Linea horizontal para un carácter. 
• \overline{...}: Línea horizontal para varios caracteres. 
• \hat: Ángulo para un carácter. 
• \widehat: Ángulo para varios caracteres. 
• \vec{...}: Flecha para un carácter. 
• \overrightarrow{...}: Flecha para varios caracteres.
Matrices 
Las matrices se crean de manera similar a como se crean las tablas, pero utilizando el entorno array en lugar del entorno tabular. Para encerrar la matriz entre paréntesis se pone el comando \left( antes del entorno y el comando \right) después.
 El paquete amsmath incorpora varios entornos más específicos para matrices donde no es necesario especificar el número de columnas, y tampoco los delimitadores: 
• matrix: Matriz sin delimitadores (equivalente al entorno array) 
• pmatrix: Matriz encerrada entre paréntesis. 
• vmatrix: Matriz encerrada entre barras verticales (por ejemplo para determinates). 
• Vmatrix: Matriz encerrada ente dobles barras verticales. 
• bmatrix: Matriz encerrada entre corchetes. 
• Bmatrix: Matriz encerrada entre llaves.

Teoremas 
Para crear denificiones, teoremas, proposiciones, corolarios y otros tipos de enunciados de sebe cargar el paquete amsthm y definir los tipos de enunciados en el preámbulo con el comando \newtheorem{entorno}{texo}, donde entorno es el nombre del entorno y texto el texto que aparecerá en el documento final como encabezado del enunciado. Estos entornos admiten como argumento opcional un texto que se utiliza para dar nombre al enunciado. Los enunciados definidos con este comando aparecen por defecto numerados para poder referenciarlos en otras partes del documento, pero se pueden definir entornos no numerados con la variante del comando anterior \newtheorem*{entorno}{texo} Para demostraciones se puede utilizar el entorno proof.

Referencias cruzadas y notas a pie
Otro de los puntos fuertes de LATEX es la gestión de las referencias cruzadas, es decir, referencias a otras partes del documento, así como las notas a pie de página. 
Referencias cruzadas 
Como se ha visto, muchos elementos de un documento están enumerados: capítulos, secciones, figuras, tablas, ecuaciones, teoremas, páginas, etc. Para poder referenciarlos, cada elemento debe tener asignada una etiqueta única. Para asignar una etiqueta a cualquier elemento numerado se utiliza el comando \label{etiqueta}. Este comando debe ubicarse justo antes o después del elemento que quiere etiquetar. Posteriormente, para hacer una referencia al elemento en otra parte del documento se utiliza el comando \ref{etiqueta}.
 Citas y referencias bibliográficas 
Al igual que con las referencias cruzadas, LATEX hace un maravilloso trabajo con las citas de referencias bibliográficas. Para ello se apoya en otro programa de gestión de referencias bibliográficas llamado BibTeX, que viene incluido en la distribución estándar de LATEX. BibTeX permite crear una base de datos de distintos tipos de documentos que después se pueden citar en nuestro documento y después listar al final del documento las referencias bibliográficas citadas con diferentes formatos. También existe otro gestor de referencias bibliográficas llamado biber que soporta la codificación de caracteres unicode, y por tanto es más apropiado si vamos a compilar nuestro documento con xelatex. Para incluir referencias bibliográficas en un documento primero hay que crear una base de datos con las fuentes bibliográficas que vayamos a usar en un documento. Esa base de datos se crea en un fichero de texto independiente con el formato que requiere BibTex con extensión .bib. La sintaxis para crear una nueva entrada bibliográfica en la base de datos es un poco compleja al principio, pero afortunadamente existen bastantes aplicaciones de gestión bibliográfica, como Zotero, Mendely, EndNote o RefWorks o BibSonomy que incluyen la posibilidad de exportar la bibliografía en ese formato.
 Obsérvese que cada entrada bibliográfica empieza por el tipo de documento (book, article, etc.) y está descrita por varios campos: title (título), author (autor), journal (revista), year (año), etc. El primer campo es una clave que identifica al documento de manera única y que se utilizará posteriormente para citarlo. Una vez creada la base de datos, para citar cualquier referencia contenida en ella, hay que cargar en el preámbulo el paquete biblatex e indicar la ubicación de la base de datos con el comando addbibresource{bibliografia.bib}, donde bibliografia.bib es el nombre del fichero con la base de datos bibliográfica (incluida la ruta), y luego escribir el comando \cite{clave}, donde clave es la clave de la entrada bibliográfica en la base de datos, en el lugar donde se quiera hacer la referencia. Finalmente para listar las referencias bibliográficas citadas en el documento basta con insertar el comando \printbibliography.
Existen diferentes estilos para las citaciones y para el listado con las referencias bibliográficas que se pueden indicar en la carga del paquete biblatex con el parámetro opcional style. Por ejemplo si en lugar de números en las citaciones queremos que aparezca las iniciales del autor y el año, hay que seleccionar el estilo style=alphabetic. En el siguiente enlace existe un listado exahustivo de los diferentes estilos de citación. Por último si en lugar de bibtex se quiere usar biber para gestionar las referencias bibliográficas, hay que indicarlo también ebn la carga del paquete biblatex mediante el parámetro opcional backend=biber. 

Diseño de página 
Existen distintos parámetros que determinan el aspecto final de una página con texto. En este capítulo veremos como modificar las dimensiones de la página, los márgenes, y cómo introducir encabezados y pies. 
Dimensiones y márgenes 
Aunque es posible definir el tamaño de la página como un argumento del comando que define la clase del documento \documentclass, si queremos tener mayor control sobre las dimensiones del documento, así como de los márgenes, conviene utilizar el paquete geometry. El paquete geometry permite definir las dimensiones de la página mediante un argumento opcional con distintos tamaños de página predefinidos (a4paper, a5paper, b1paper, letterpaper, etc.), pero también es posible definir nuestras propias dimensiones con los siguientes argumentos: 
• paperheight=x establece la longitud vertical de la página en x (es necesario indicar las unidades pt,mm o cm). 
• paperwidth=x establece la longitud horizontal de la página en x. Por defecto la orientación del documento es vertical, pero puede ponerse en formato horizontal o apaisado con el argumento landscape.
También permite definir los márgenes del documento mediante los siguientes argumentos: 
• margin=x establece los cuatro márgenes (izquierdo, derecho, superior e inferior) con tamaño x (es necesario indicar las unidades pt,mm o cm). 
• left=x establece el margen izquierdo con tamaño x. 
• right=x establece el margen derecho con tamaño x. 
• top=x establece el margen superior con tamaño x. 
• bottom=x establece el margen inferior con tamaño x. 
Encabezados y pies de página   
LATEX incluye encabezados y pies de página automáticos dependiendo del tipo de documento. Para las clases article y report no hay encabezado y el pie es el número de página, mientras que para la clase book el encabezado incluye la página y la sección a la que corresponde la página. No obstante, el usuario puede definir sus propios encabezados y pies mediante el paquete fancyhdr. 
Una vez cargado este paquete y antes de definir el texto del encabezado y del pie, hay que cambiar el estilo de página (plain por defecto) a fancy, y para ello se utiliza el comando \pagestyle{fancy} que indica al compilador que se van a usar un encabezado y pie personalizados. 
A continuación hay que definir el texto del encabezado y del pie. El paquete fancyhdr divide tanto el encabezado como el pie de página en tres áreas (izquierda, centro y derecha) e incorpora comandos para escribir en cada una de ellas. El texto del área de la izquierda siempre se justifica a la izquierda, el del área del centro se justifica centrado y el del área derecha justificado a la derecha. Por otro lado, para documentos a doble cara, se distingue también entre encabezados y pies de páginas pares e impares. Para definir el encabezado y el pie de página se utilizan los comandos -\fancyhead[opcion]{texo} añade el texto al encabezado de página en el area que se indique en el argumento opcional opcion, que puede ser L (área de la izquierda), C (área del centro) o R (área de la derecha), aunque para documentos a doble cara también se puede especificar el encabezado para páginas pares añadiendo una E o impares añadiendo una O. -\fancyfoot[opcion]{texo} añade el texto al pie en el area que se indique en el argumento opcional opcion.
Por defecto fancyhdr introduce una línea horizontal para separar el encabezado. Es posible modificar el grosor de la línea redefiniendo los comandos \headrulewith y \footrulewith. Por ejemplo, si no queremos que aparezca la línea se escribiría \renewcommand{\headrulewidth}{0pt}.
Finalmente, el espacio entre el encabezado y el cuerpo del texto también se controla con el paquete geometry con la opción headsep=x. Del mismo modo, la separación entre el pie y el cuerpo se controla con la opción footskip=x.






 


Comentarios