martes, 7 de enero de 2014

Primeros pasos con LaTeX

En esta entrada, trato de dar una pequeña guía para cuando vamos a empezar a trabajar con LaTeX. Antes de nada, decir que LaTeX es un programa especializado en generar textos científicos y técnicos. La idea es que el usuario se esfuerce en escribir el contenido, no en hacer el formato. El formato lo hará LaTeX. Esto tiene ventajas pero también desventajas. Con LaTeX se nos facilitará mucho la vida cuando hacemos ecuaciones, referencias, citamos artículos o hacemos los índices. Pero también perdemos capacidad de decisión en el formato. Aunque podemos decir a LaTeX cómo queremos hacerlo, al final, lo hará él. Y muchas veces tendremos que ceder en algo. No olvides eso. Si quieres tener control absoluto del formato, mejor entonces que uses otra herramienta distinta.

1) Instalación.

En primer lugar, tenemos que instalar LaTeX. En el siguiente enlace explico cómo instalar TeXnicCenter en Windows, que es el editor de LaTeX que yo utilizo (click aquí), pero hay muchos otros editores.

Un problema común al trabajar con TeXnicCenter es que al compilar, el programa se quede esperando eternamente sin hacer nada. Esto puede ser porque TeXnicCenter quiere instalar un paquete, y MikTeX (la distribución de LaTeX para Windows) pide una solicitud (que no le llega) para su instalación. Para solucionarlo, en "Inicio / Todos los programas / MikTeX / Maintenance (Admin) / Settings (Admin) / General", en "Install missing packages on-the-fly", tenemos que poner "Yes".

El archivo de LaTeX en el que vamos a trabajar, es un archivo de texto con la extensión ".tex". Además, si usamos TeXnicCenter, podemos trabajar con un proyecto, que nos genera una estructura de árbol con nuestros elementos y es bastante cómodo. Esta información se almacena en un archivo con la extensión ".tcp". Al hacer click en el archivo ".tcp" se nos abrirá TeXnicCenter, y el archivo ".tex". Cuando compilamos en LaTeX, se generan muchos archivos. Y que son utilizados por LaTeX para hacer las referencias, la numeración, etc. No hay que preocuparse por esos otros archivos.

2) Para crear un proyecto en TeXnicCenter.

Primero creamos una carpeta de trabajo. Luego hacemos "File/New Project...", seleccionamos "General/Empty Project", le damos un nombre en "Project name", indicamos la dirección de la carpeta de trabajo en "Project path", ponemos ticks en "Uses BibTeX" y "Uses MakeIndex", y finalmente pinchamos OK.

3) Esqueleto del archivo ".tex".

TeXnicCenter nos abre el archivo ".tex", y escribimos lo siguiente.

\documentclass[a4paper,openright,10pt]{book}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}

\begin{document}

Hola

\end{document}

En la primera línea hemos dicho el tipo de documento {book} en este caso. También podría haber sido {article}, {report}, {beamer} (que es para hacer presentaciones), etc. También hemos indicado el tamaño del papel (a4paper), que los capítulos empiecen en páginas impares (openright), y el tamaño del texto (10pt).

A continuación  hemos indicado que vamos a trabajar en español, con [spanish]{babel}. Para inglés, hubierámos puesto [english]{babel}.

El paquete [latin1]{inputenc} sirve para poder trabajar con símbolos no anglosajones: ¿ ¡ á ü ñ... (Ver el siguiente punto).

Será entre \begin{document} y \end{document} donde escribiremos el texto nuestro documento.

Seleccionamos LaTeX->PS->PDF, compilamos con el botón flechitas, y por último, vemos el resultado con el botón de la lupa.


Y ya está. ¿Funcionó?

Como verás, en nuestra carpeta de trabajo ahora habrá muchos archivos. Los importantes son el ".tcp" y ".tex" con la información de nuestro trabajo y el resultado, con la extensión ".pdf".

Por cierto, normalmente hay que compilar un par de veces. En la primera, LaTeX calcula las referencias cruzadas, citas, número de páginas, etc. y en la segunda compilación, LaTeX pone correctamente dichas variables.

4) El paquete {inputenc}

Cuando trabajamos con símbolos no anglosajones (á ü ñ...), el paquete {inputenc} debería ser capaz de poder soportarlos, y para ello, dicho paquete puede utilizar distintas formas de codificación. El elegir una u otra depende de muchas cosas, del editor de LaTeX que usemos, de la versión de ese editor, de nuestro sistema operativo, etc...

Para ver qué codificación soporta nuestro editor, te sugiero lo siguiente. Escribe una palabra con acentos, y compila el archivo tex. Si te funciona con la opción [latin1], perfecto. Si no, prueba con la opción [utf8].

\usepackage[latin1]{inputenc}
Hola, ¿qué tal?

\usepackage[utf8]{inputenc}
Hola, ¿qué tal?

5) Funciones y paquetes de LaTeX.

Hay muchas funciones de LaTeX y muchos paquetes con funciones. No hay que saber el nombre de todas funciones, pero sí saber buscarlas en internet.

Por ejemplo, si queremos poner una carita. Para eso existe la función "\smiley", que está en el paquete {wasysym}, que tenemos que cargar. Si ese paquete no está en nuestro ordenador, TeXnicCenter se encargará de instalarlo por nosotros, la primera vez que lo usemos. Esa primera vez, la compilación puede tardar un poquito más que las siguientes veces.

\documentclass[a4paper,openright,10pt]{book}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{wasysym}

\begin{document}

Hola \smiley

\end{document}

Al final, el aprender LaTeX es básicamente saber qué paquete necesitamos cargar, para hacer lo que queremos hacer.

6) Espacios en blanco.

A LaTeX le da igual si entre dos palabras pones uno o más espacios. LaTeX siempre pone uno. Lo cuál ayuda a evitar esos pequeños errores de doble espacio entre palabras.

El símbolo de la carita que pusimos, tiene un problema. LaTeX no sabe si tiene que dejar o no espacio después de él. Y de hecho, no lo deja. Si queremos dejar un espacio, no lo podemos hacer con espacios, ya que como dije antes, LaTeX es inmune a eso. Para eso, usamos sencillamente el comando "\ ".

Hola \smiley        mundo.


 Hola \smiley \ mundo.


7) Símbolos especiales. 

Igual que en "\smiley", todas las funciones en LaTeX empiezan con "\". Además, hay otros símbolos especiales que se usan en LaTeX, como {}, &, $, %...

El símbolo % sirve para poner comentarios en el código. El resto de símbolos ya los irás viendo más adelante.

Para poder escribir estos símbolos en el documento final, hay que hacerlo con un código especial, como sigue:

% simbolos especiales
\{  \} \$ $\backslash$ \& \%


8) Ecuaciones.

Las ecuaciones se escriben dentro de \begin{equation} \end{equation}. Pero si quieres meter una ecuación o una variable dentro de un párrrafo de texto, se escribe entre $ $. Como se ve a continuación:

En la siguiente ecuación se calcula $x_1$.

\begin{equation}
x_1 = y^2
\end{equation}

 

Fíjate que LaTeX pone las variables en cursiva, y que ha numerado automáticamente la ecuación. Además, fíjate cómo se ponen subíndices y superíndices en las funciones. Para aprender más sobre ecuaciones matemáticas, mira la siguiente entrada (click aquí).

9) Referencias.

Con LaTeX es muy fácil trabajar con referencias cruzadas. Se pueden hacer referencias a capítulos, secciones, páginas, figuras, tablas... todo lo que quieras. Hacerlo es muy sencillo. Primero pones una etiqueta donde quieras con "\label{xxx}", y luego haces la referencia con "\ref{xxx}". Donde xxx es el nombre que tú quieras.

En la ecuación \ref{ec:x1}, se calcula $x_1$.

\begin{equation}\label{ec:x1}
x_1 = y^2
\end{equation}


A cada etiqueta le das el nombre que quieras. Al final, si tienes muchas referencias, es un poco lío. Lo que yo hago es, en el nombre de las etiquetas, poner un par de letras para indicar si el objeto es una ecuación, una tabla, un capítulo, una sección, etc. (Por ejemplo, {ec:....}, {ta:....}, {ca:...}, {se:...}.) Esto luego facilita mucho cuando estamos escribiendo.

En el siguiente enlace puedes ver más cosas sobre referencias cruzadas (click aquí).

10) Capítulos y secciones.

Un documento está divido en capítulos, secciones, subsecciones... (Por cierto, los capítulos no funcionan para documentos de tipo artículo.) Esto se hace muy fácilmente con los comandos siguientes. Además, para crear un índice de contenidos, basta con escribir "\tableofcontents".

\tableofcontents

\chapter{Animales terrestres}
\section{Unicornios}
\section{Quimeras}

\chapter{Animales voladores}
\section{Dragones}
\section{Pegasos}


Tienes más información sobre todo esto en el siguiente enlace (click aquí).

11) Dividir un documentos en varios archivos.

Si estamos haciendo un documento grande, una buena idea es dividir el archivo ".tex" en varios. Por ejemplo, un archivo ".tex" para cada capítulo. Más un archivo ".tex" padre, con la información del orden de los capítulos, los paquetes usados, etc.

Para ser ordenados, recomiendo crear una carpeta (dentro de la carpeta de nuestro proyecto) donde guardar los archivos ".tex" (excepto el padre). Y la llamo, por ejemplo, "capitulos".

Con "File/New File", creamos dos nuevos archivos ".tex", y los salvamos dentro de la carpeta recién creada. En este caso, los dos archivos que he creado son "terrestres.tex" y "voladores.tex".



Por último, tenemos el archivo ".tex" padre, que se encarga de llamar al reto de capítulos con la función "\include". El archivo ".tex" padre está en la carpeta del proyecto (no en la carpeta "capitulos").  Por cierto, los paquetes (\usepackage...) solo se escriben en el archivo padre. Nuestro archivo ".tex" padre es:

\documentclass[a4paper,openright,10pt]{book}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}

\begin{document}

\tableofcontents

\include{./capitulos/terrestres}
\include{./capitulos/voladores}

\end{document}


El archivo "terrestres.tex" es:

\chapter{Animales terrestres}
\section{Unicornios}
\section{Quimeras}

Y el archivo "voladores.tex" es:

\chapter{Animales voladores}
\section{Dragones}
\section{Pegasos}

El capítulo padre es el que tenemos que compilar. Al  compilarlo, llamará a los demás archivos. Todo funciona igual que si solo tuviéramos un único archivo ".tex", pero ahora todo está más ordenadito y es más fácil de encontrar las cosas. Además, si un día queremos compilar un solo capítulo, basta con poner un % delante de los "\include" del resto de capítulos, para que pasen a ser comentarios.
12) Bibliografía, figuras, tablas...

Ya tienes aquí las ideas más importantes para trabajar con LaTeX. Al final, no era tan díficil, ¿no crees? Claro que me faltó explicar muchas cosas. Pero lo básico ya lo sabes. Si quieres mirar cómo se añade la bibliografía, puedes ver la siguiente entrada (click aquí). Para incluir figuras, puedes ver la siguiente entrada (click aquí). Y para incluir tablas, puedes mirar esta otra (click aquí). Por último, el formato (negrita, tamaño del texto, etc.) lo explico en esta otra (click aquí).

10 comentarios:

Unknown dijo...

Gracias por hacer un blog sobre LaTeX.
Hay bastante información por la red, pero tutoriales sencillitos para hacer pequeños documentos no hay muchos.
No empezamos a usarlo para escribir una tesis, hay bastantes pasos intermedios.
LaTeX es muy potente y versatil pero requiere cierta curva de aprendizaje y cuesta un poco al principio.

Un saludo y gracias

Luis dijo...

Hola, gracias y ¡suerte con LaTeX! :-)

mangel dijo...

Hola!!

La verdad es que se agradece un blog que "empiece de cero", jejejeje.

Por cierto, no sé si esta es la manera más propicia o el canal más adecuado, pero probando tus ejemplos, he tenido errores al intentar meter un fórmula dentro del texto (entre símbolos $):

Si no te importa, te paso el código que he compilado:
\documentclass[a4paper,openright,10pt]{book}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{wasysym}
\begin{document}
Hola \smiley \ mundo
\{\\
\}\\
\$\\
$\backslash$\\
\&\\
\%\\
En la siguiente ecuación se calcula $x_1$
\begin{equation}
x_1=y^2
\end{equation}
\end{document}

Los errores que me dan son estos:

latex> ! Missing $ inserted.
latex> ! Extra }, or forgotten $.
latex> ! Missing $ inserted.

Muchisimas gracias, de verdad... y enhorabuena por el blog. Ya tienes un fiel seguidor!! jejejje

Saludos

Luis dijo...

Hola Mangel, ¿qué tal?

Tienes razón, había un error en el código. El problema está en el acento de "ecuación". TeXnicCenter no reconocía ese símbolo y salían problemas. Para solucionarlo, hay que poner:

\usepackage[utf8]{inputenc}

Voy a corregirlo en el blog.
Hasta luego

mangel dijo...

Muchisimas gracias Luis!!

Se ha solucionado cambiando el paquete latin1 por utf8. Al poner los dos paquetes a la vez, tampoco compilaba bien. Pero al quitar latin1 parece que sí compila bien, tanto "ñ" como vocales acentuadas.

Lo dicho, muchísimas gracias.

Un saludo

Luis dijo...

Me alegro. :-)

Claudia March Piris dijo...

Hola:

He seguido los pasos de la instalación y no puedo compilar el programa.
He instalado el TeXnicCenter y el MikTex, y tengo el Adobe Reader.
Mi problema es cuando llego al punto:

"Seleccionamos LaTeX->PS->PDF, compilamos con el botón flechitas, y por último, vemos el resultado con el botón de la lupa."

Cuando hago click en la barra blanca (Output Profile) no me aparece ninguna opció.
Además, el botón de flechitas está inabilitado.

¿Cuál puede ser mi error?

Muchas gracias

Luis dijo...

Hola Claudia,
en Build/Define Output Profiles, puedes editar y añadir las opciones de compilación. Añade la que te falta, indicando tu versión de Adobe. Puedes seguir como ejemplo, los capturas de pantalla de esta otra entrada:

http://minisconlatex.blogspot.fr/2014/02/errores-con-texniccenter.html

Hasta luego

ancamar dijo...

No soy capaz de que me reconozca las tíldes ni la ñ cuando intento juntar documentos.
Ejemplo:

1. Archívo padre
\documentclass[a4paper,openright,12pt]{book}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}

\include{./capitulos/introduccion}
\end{document}

2. Este es el archivo .tex por separado llamado introduccion
\chapter{Introducción}
\section{Planteamiento del problema}
castaña, habitación

Al compilar el archivo padre me saltan errores como "package inputenc error unicode char u+147"

antonio sobrino dijo...

me esta ayudando el blog mucho para hacer un trabajo, pero hay algo que no me funciona bien a veces me compila y otras no me salen este errores que no llevo a comprender y no soy capaz de solucionarlos esto es una locura,alguien dispuesto a ayudarme?