Escribir en LaTeX
Apuntes del taller

Esta obra se encuentra bajo la licencia CC-by-SA 4.0.

cc-by-sa-small.png

Última actualización: domingo 21 de septiembre del 2025, a las 16:36:11.

1. Qué es

  • Es un lenguaje basado en macros.
  • Algunos perciben que la idea es similar a HTML.
  • Es Software Libre.
  • Sitio Oficial:

    https://www.latex-project.org

  • En cualquier distribución de GNU/Linux se instala con un paquete bajo el nombre «texlive».

¿Quién hizo ?

  • fue creado por Donald Knuth (Figura 1).
  • fue creado a partir de por Leslie Lamport (Figura 2).

Foto de Donald Knuth.

Figura 1: Donald Knuth.

Foto de Leslie Lamport.

Figura 2: Leslie Lamport.

1.1. Tips

  • ⚠️ Cuidado con los espacios.
  • Nos corta las palabras al final de la hoja con guiones (como hacemos cuando escribimos a mano).
  • Excelentes fórmulas matemáticas $$\sum^{\infty}_{i=1}\frac{a \cdot i}{\sqrt{b^2 \pm 5}}\,\,\forall{}a \ge 1$$
  • Hace muchas tareas automatizadas: tabla de contenidos, lista de figuras, referencias, tamaño de la letra, etc.
  • Se puede usar comandos propios (algo parecido a variables).

2. ¿Por qué ?

  • Se puede personalizar.
  • Crear documentación pensando en qué querés escribir y no cómo se escribe.
    • Nos enfocamos en el contenido → nos ahorra tiempo. 🎉
    • Cuando nos enfocamos en el cómo, podemos hacer templates → ¡nos ahorra tiempo! 🎉🎉
  • Se puede programar.
    • Con y podemos usar condicionales… aunque puede ser difícil de aprender.
    • También, con Lua podemos usar el lenguaje Lua directamente.
    • Podemos usar un lenguaje que nos guste que genere código .

      • Más adelante muestro un ejemplo.

      Aunque también existen otras bibliotecas para generar PDF directamente, genera un documento con muchas características.

Contras:

  • Es compilado… debemos ejecutar un programa que genere de código fuente el PDF.
    • Aunque podemos ignorar muchos de los errores y warnings.
    • A veces no es tan contra, porque automatiza muchas cosas.

3. Entornos

IDE y entornos para escribir :

  • www.overleaf.com

    Es un sitio Web para desarrollo colaborativo.

  • Texmaker (Figura 3).
  • Lyx
  • TeXstudio

texmaker.png

Figura 3: Captura de pantalla de TeXmaker

4. Documentación

Se puede encontrar más información en los siguientes sitios:

5. Cómo funciona

5.1. Proceso habitual

El proceso para generar un PDF desde un archivo se muestra en la Figura 4. Se describe en los siguientes pasos:

  1. Escribir el archivo fuente (p. ej.: informe.tex).
  2. Compilarlo (p. ej.: usando latexmk -pdf informe.tex o usando la IDE).
  3. Se obtiene la salida (p. ej.: informe.pdf).

proceso-compilacion.png

Figura 4: Pasos para generar el PDF.

5.2. Compiladores

Existen 3 compiladores principales:

PDF:
El tradicional. No tiene soporte Unicode (UTF-8), y requiere incluir paquetes para brindárselo.
Xe:
Con soporte Unicode y fuentes avanzadas (OTF, TTF, etc.).
Lua:
El más avanzado. Mismo soporte que xelatex pero se puede embeber código en lenguaje Lua. Se pueden escribir artículos en otros idiomas con diferente dirección de escritura (japonés, chino, coreano, árabe, etc.).

Para generar un documento PDF, cada compilador requiere de varias pasadas (ejecutar varias veces el compilador) y, en ocasiones, de otras herramientas. Para automatizar este proceso, se utiliza el programa latexmk. Éste detecta si es necesario ejecutar el compilador una o dos veces y si es preciso utilizar otro programa. Si se escribe LaTeX en una IDE o en Overleaf, es probable que la compilación utilice este comando. Localmente, en una terminal, se ejecuta de la siguiente manera:

  • para usar PDF: latexmk -pdf ARCHIVO.TEX
  • para usar Lua: latexmk -lualatex ARCHIVO.TEX
  • para usar Xe: latexmk -xelatex ARCHIVO.TEX

6. Comandos y ambientes

  • Sintaxis de los comandos:

    \comando[arg opcional][opcional2]{obligatorio1}{obligatorio2}

    Ojo con los espacios: \textbf{hello} no es lo mismo que \textbf {hello}.

  • Sintaxis de ambientes:
\begin{ambiente}[opcionales]
  Más texto LaTeX.
\end{ambiente}

7. Formato básico de un documento

El formato básico es:

\documentclass{CLASE}

PREAMBULO

(paquetes, definiciones de comandos, configuraciones, etc.)

\begin{document}

CUERPO

(contenido del documento)

\end{document}

COMENTARIOS

(esta región no se procesa)

7.1. clases de documentos

Todo documento empieza con describir su clase:

\documentclass[OPCIONES]{CLASE}

7.1.1. article

\documentclass{article}

%% Preámbulo

\begin{document}

%% Cuerpo del documento
\section{Sección 1}
\subsection{Sección 2}

\end{document}
  • No se puede separar en capítulos.
  • Para informes o artículos chicos.

La Figura 5 muestra cómo resulta el código anterior.

articleclass.pdf.png

Figura 5: Ejemplo de un article.

7.1.2. report

\documentclass{report}

%% Preámbulo

\begin{document}

%% Cuerpo del documento
\chapter{Capítulo 1}
\section{Sección 1}
\subsection{Sección 2}

\end{document}

La Figura 6 muestra cómo resulta el código anterior.

reportclass.pdf.png

Figura 6: Ejemplo de un report.

7.1.3. book

\documentclass{book}

%% Preámbulo

\begin{document}

%% Cuerpo del documento
\chapter{Capítulo 1}
\section{Sección 1}
\subsection{Sección 2}

\end{document}

La Figura 7 muestra cómo resulta el código anterior.

bookclass.pdf.png

Figura 7: Ejemplo de un book.

7.2. Lo ideal es agregar paquetes

En el preámbulo se pueden agregar paquetes que nos incluyen comandos nuevos. Se recomiendan:

amsmath:
símbolos matemáticos.
graphics:
permite agregar imágenes con \includegraphics{PATH}
polyglossia:
configura al idioma español con \setmainlanguage{spanish}.
  • Si se utiliza PDFLaTeX, mejor usar babel así:

    \usepackage[spanish]{babel}
    
geometry:
configura tamaño de márgenes.

Se escriben así:

\usepackage{amsmath} 
\usepackage{graphicx}
\usepackage{hyperref}

% Si se usa LuaLaTeX o XeLaTeX:
\usepackage{polyglossia}
\setmainlanguage{spanish}
% Si se usa PDFLaTeX:
% \usepackage[spanish]{babel}

\usepackage[margin=2cm]{geometry}

8. Cuidado con los espacios

¡ es muy sensible a los espacios!

  1. Varios espacios entre palabras no afectan. se encarga de acomodar el texto adecuadamente.

    Varias palabras separadas así.

    Es lo mismo que:

    Varias palabras separadas así.

  2. Varias líneas en blanco se consideran como una.

Ejemplo:

Párrafos se separan con una o más líneas en blanco.
Por eso, este no es un párrafo, porque no tiene una
línea en blanco entremedio.

Pero este sí es un párrafo nuevo.



Y este también.

Resultado:

Párrafos se separan con una o más líneas en blanco. Por eso, este no es un párrafo, porque no tiene una línea en blanco entremedio.

Pero este sí es un párrafo nuevo.

Y este también.

9. Fuentes

9.1. Estilos de fuentes

\textbf{Texto negrita}

\textit{itálica}

\emph{Texto con énfasis: itálica, pero dentro de otro
énfasis es \emph{normal}.}

\textsf{Sans Serif}

\texttt{Monoespaciado}

Resultado:

9.2. Tamaño de las fuentes

  • El comando afecta desde donde aparece hasta el final del ambiente, llave que cierra o el documento.
    • Observar que se rodea entre llaves para limitar su efecto.
  • No se indica el tamaño de forma explícita.
    • lo calcula relativo a un tamaño fijo que aparece en el parámetro opcional de la clase (p. ej. el siguiente declara que el tamaño normal de la fuente es de 12pt: \documentclass[12pt,a4paper]{article}).
    • Con cambiar en un solo lugar, se cambia el tamaño de todo el documento.
lorem {\tiny         lorem ipsum} ipsum

lorem {\scriptsize   lorem ipsum} ipsum

lorem {\footnotesize lorem ipsum} ipsum

lorem {\normalsize   lorem ipsum} ipsum

lorem {\small        lorem ipsum} ipsum

lorem {\normalsize   lorem ipsum} ipsum

lorem {\large        lorem ipsum} ipsum

lorem {\Large        lorem ipsum} ipsum

lorem {\LARGE        lorem ipsum} ipsum

lorem {\huge         lorem ipsum} ipsum

lorem {\Huge         lorem ipsum} ipsum

El resultado:

10. Organizando el documento

10.1. Título y autor

hace puede hacer una portada simple.

\documentclass{article}

% Algunos paquetes para que quede mejor
\usepackage{amsmath} 
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{polyglossia}
\setmainlanguage{spanish}
\usepackage[margin=2cm]{geometry}

\author{Christian Gimenez}
\date{19 de septiembre del 2025}
\title{Mi documento de ejemplo}

\begin{document}

\maketitle

Mucho texto aquí.

\end{document}  

Un ejemplo se muestra en la Figura 8.

titulo.pdf.png

Figura 8: Ejemplo de un título y del comando maketitle.

10.2. Secciones

Los documentos se dividen en secciones, subsecciones, etc. Los libros y reportes técnicos también se dividen en capítulos. En se escribe así:

\chapter{Capítulo 1} % \chapter{} se utiliza solo con book y report.
Texto...

\section{Sección 1}
Texto...

\subsection{Sección 1.1}
Texto...

\subsubsection{Sección 1.1.1}
Texto...

10.3. nos ahorra tiempo…

Se puede utilizar \tableofcontents para que nos haga una tabla de contenidos de forma automática.

\documentclass{article}

% Algunos paquetes para que quede mejor
\usepackage{amsmath} 
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{polyglossia}
\setmainlanguage{spanish}
\usepackage[margin=2cm]{geometry}

\begin{document}

\tableofcontents

%% Cuerpo del documento
% \chapter{Capítulo 1} % chapter solo funciona en report o book.
\section{Sección primera}
texto de la sección primera...

\subsection{Subsección primera}
Más texto...

\section{Sección segunda}
Mucho más texto...

\subsection{Subsección segunda}
Pueden haber más cosas...

\subsubsection{Subsubsección segunda}
Más... mucho más texto.

\end{document}

Compilado, el PDF generado se muestra en la Figura 9.

secciones.pdf.png

Figura 9: Ejemplo de secciones y de una tabla de contenidos.

11. Ejemplo: programar un documento

En el ejemplo siguiente, se muetra un código Ruby que genera código . En vez de puts se podría utilizar un objeto File para guardar la salida en un archivo.

# Podríamos leer el nombre desde terminal también, con #gets
nombre='Christian'
saludo='Este es un saludo desde Ruby'

def encabezado(nombre)
  puts <<~STR_DOC
    \\documentclass{article}
    %% Paquetes
    \\author{#{nombre}}
    \\begin{document}
  STR_DOC
end

def documento(saludo)
  puts '\Huge'
  puts 'Escribiremos un saludo configurado desde Ruby:'
  puts 
  puts "\\emph{#{saludo}}"
  puts 
  puts 'El saludo se hizo el día:'
  fecha=Time.now
  puts fecha.ctime
  puts 
  puts "Y 25 * 31 + 2 es: #{25 * 31 + 2}"
  puts
  puts "Y con terminal:"
  puts `date` # date se ejecuta en terminal y Ruby muestra el resultado
end

def fin
  puts '\end{document}'
end

encabezado nombre
documento saludo
fin

Si ejecutan el código, generará lo siguiente:

Resulta en la Figura 10.

ejruby.pdf.png

Figura 10: Usando Ruby para generar LaTeX.

12. Licencia de esta obra

Excepto en los lugares que se ha indicado lo contrario:

Escribir en LaTeX por Christian Gimenez se distribuye bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC-by-SA 4.0).

Creative Commons

by

Share Alike

Para ver una copia de esta licencia, visite la página Web:

https://creativecommons.org/licenses/by-sa/4.0/deed.es

A continuación se citará el resumen que se encuentra en dicha página Web:

Con CC-by-SA 4.0 usted puede:

Compartir:
Copiar y redistribuir el material en cualquier medio o formato para cualquier propósito, incluso comercialmente.
Adaptar:
Remezclar, transformar y construir a partir del material para cualquier propósito, incluso comercialmente.

Creative Commons Creative Commons (cc)

by Atribución (by)

Usted debe dar crédito de manera adecuada, brindar un enlace a la licencia, e indicar si se han realizado cambios. Puede hacerlo en cualquier forma razonable, pero no de forma tal que sugiera que usted o su uso tienen el apoyo de la licenciante.

Share Alike CompartirIgual (SA)

Si remezcla, transforma o crea a partir del material, debe distribuir su contribución bajo la misma licencia del original.

12.1. Licencia de las imágenes

Donald Knuth. Foto obtenida desde Wikimedia. Bajo licencia Creative Commons Attribution-Share Alike 2.0 Generic. Ver en Wikimedia.


Leslie Lamport Foto obtenida desde Wikimedia. El autor autoriza la utilización de la foto para cualquier propósito. Ver en Wikimedia.

Fecha: 19 de septiembre del 2025

Autor: Christian Gimenez

Created: 2025-09-21 dom 16:36

Validate