Skip to content

Latest commit

 

History

History
543 lines (407 loc) · 22.6 KB

README.md

File metadata and controls

543 lines (407 loc) · 22.6 KB

Plantilla de LaTeX para memorias de la UC3M

Uso

La memoria consiste de un archivo principal report.tex, y un archivo de definición de clase uc3mreport.cls, el cual contiene toda la configuración.

El archivo report.tex actual es una simple plantilla para usar la clase uc3mreport. Ésta clase está basada en la clase article de LaTeX, con tamaño de letra 12.

Configuración

  • Puedes configurar el idioma de la memoria al incluir la clase. Esto afectará a algunas cosas como el nombre del índice.
    \documentclass[es]{uc3mreport}  % español
    \documentclass[en]{uc3mreport}  % inglés
  • También puedes configurar la (sub)carpeta para las imágenes, y así al usar una imagen no es necesario especificar este nombre.
    \graphicspath{{img/}}

Note

Ten en cuenta que la portada requiere de imágenes que serán buscadas en la raíz de esta carpeta

  • La portada y otros elementos dependen de la configuración de los "distintos atributos":
    • \author: Autor, o autores. Si se añade más de uno, añade \\ entre nombres. Es recomendable añadir también el NIA después del nombre, y precedido por --.
    • \degree: Grado que se cursa, e.g. Ingeniería Informática
    • \subject: Asignatura.
    • \group: Número del grupo, e.g. 89.
    • \year: Año académico, e.g. 2023-2024.
    • \lab: Denominación del laboratorio o práctica, e.g. Práctica 0.
    • \title: Título del laboratorio o práctica.
    • \professor: Nombre del profesor responsable.
      Puede ser omitido.
    • \author: Autor o autores. Usar \\ para separarlos.
    • \team: Nombre del equipo, e.g. Equipo 69. Puede ser omitido.
    • \shortauthor: Identificación pequeña del autor o autores, la cual aparecerá en el encabezado de cada página. Puede ser el nombre del equipo, e.g. Equipo 02, o el nombre corto del autor, e.g. J. Ibarra (o \abbreviateauthor{Javier}{Ibarra Ramos}). Puede ser omitido.
    • \shorttitle: Formato corto del título que poner en el header en lugar de <lab>: <title>. Puede ser omitido.

Estilos de página

La clase cuenta con dos estilos de página definidos:

  • fancy: Encabezado con denominación y título de la práctica, e identificación de los autores, pie de página con asignatura y año académico, número de página y páginas totales.
    En el autor, si se define \shortauthor se usará ese. Si no, y está definido \team, se usará el equipo. En cualquier otro caso se usará el autor definido.
  • simple: Pie de página con la página actual. Éste es el estilo aplicado a los índices.

Estos estilos se aplican automáticamente en los diferentes entornos, pero siempre puedes aplicarlos temporalmente con \thispagestyle{<style>}.

Macros

La clase también cuenta con ciertas macros predefinidas:

  • \makecover: Genera la portada con los atributos anteriormente definidos.
    • Puedes usar \makecover[old] para usar el logo antiguo (y objetivamente superior) de la UC3M.
  • \blankpage: Crea una página completamente en blanco.
  • \abbreviateauthor{<nombre(s)>}{<apellido(s)>}: Abrevia el nombre de un autor, útil para ponerlo en \shortauthor.

Entornos

La clase también cuenta con un entorno predefinido:

  • \begin{report} \end{report}: Empieza y acaba en página nueva, y aplica el estilo de página fancy.

Compilación

Primero debes instalar LaTeX.

  • Para Linux, instala texlive-full (tarda un rato).
  • Para Windows, instala MiKTeX, asegúrate de añadirlo al PATH, e instala Strawberry Perl. Si no está ya instalado, abre la MikTeX Console e instala el paquete latexmk desde la pestaña Packages.
  • Para MacOS, instala MacTeX e instala latexmk con:
    sudo tlmgr install latexmk
    

Important

Como vamos a usar archivos SVG, necesitas instalar Inkscape.

Si estás en Windows, asegúrate de añadir el ejecutable al PATH (suele estar en C:\Program Files\Inkscape\bin\).

Para compilar la memoria, usa:

latexmk -cd -shell-escape -pdf report.tex

How to...?

Obviamente, Google/DuckDuckGo es tu amigo, así que no dudes en preguntarle cosas. También puedes contar con la documentación de Overleaf, una magnífica herramienta donde aprender cosas de LaTeX. Más allá de ellos, LaTeX Stack Exchange es el StackOverflow para LaTeX, un foro para hacer preguntas y encontrar respuestas.

Aquí comentaremos algunos paquetes y trozos de código que hemos encontrado útiles a la hora de realizar las memorias. CTAN (Comprehensive TeX Archive Network) es el repositorio donde se alojan todos los paquetes de LaTeX, y todos ellos incluyen documentación. Si te atascas con algún paquete, o quieres investigar más, búscalo aquí.

Formato del texto

Se realiza a través de los siguientes comandos:

  • Negrita: \textbf{...}
  • Cursiva: \textit{...}
  • Subrayado: \underline{...}
  • Verbatim: \texttt{...}
  • URLs: \href{https://test.com}{...} (parte del paquete hyperref)

Párrafos y saltos de línea

LaTeX está pensado para permitir romper las líneas del código fuente sin romper las líneas del documento.

Por lo tanto, para empezar un nuevo párrafo, es necesario dejar una línea (o más) en blanco:

Y así fue como me convertí en un maestro Pokémon.

Pero el verdadero tesoro fueron los amigos que hicimos por el camino.

Note

El resto de líneas en blanco son ignoradas.

Para insertar un salto de línea manual, es necesario usar \\:

Mi carro me lo robaron, estando de romería\\
mi carro me lo robaron, anoche cuando dormía

Listas

Hay dos tipos de listas, enumeradas y no enumeradas:

\begin{enumerate}
  \item Uno
  \item Otro
\end{enumerate}
\begin{itemize}
  \item Primero
  \item Segundo
\end{itemize}

También puedes anidarlas (incluso combinando enumeradas y no enumeradas):

\begin{enumerate}
  \item Primero
  \begin{itemize}
    \item Primero A
    \item Primero B
  \end{itemize}
  \item Segundo
\end{enumerate}

Si quieres más control y configuración sobre las listas, échale un vistazo al paquete enumitem.

Estructura del documento

Puedes dividir jerárquicamente tu documento en distintos tipos de secciones. Dependiendo del tipo de documento, hay más o menos, pero para éste (article), tienes los siguientes:

  • \part: Parte; e.g. I. Empieza en una página nueva.
  • \section: Sección, o capítulo; e.g. 1..
  • \subsection: Subsección, o apartado; e.g. 1.1..
  • \subsubsection: Subapartado; e.g. 1.1.1..

Para empezar basta con usar el comando seguido del nombre de la sección:

\section{Mi sección}

Note

Las secciones se enumeran automáticamente.

Índices

Las partes se marcarán automáticamente en el índice, a no ser que incluyas un asterisco en el comando, e.g.:

\section*{Mi sección secreta}

Hay diferentes índices que puedes incluir:

\tableofcontents  % índice de contenidos
\listoffigures  % índice de figuras
\listoftables  % índice de tablas

Note

Al usar la plantilla uc3mreport, cada índice se creará en una página nueva.

Páginas nuevas

Usa \newpage para crear una página nueva.

Referencias

Puedes marcar cualquier punto del documento para referenciarlo más tarde. Ésto es parte del paquete hyperref.

Puedes crear una marca con label{<id>}, y luego referenciarlo de varias formas. Dependiendo de dónde esté la marca, si es un párrafo, una figura, una tabla, una ecuación, etc., se comporta de manera ligeramente distinta.

  • \ref{<id>}: Pone el número de la sección/figura/etc. a la que se refiere.
  • \nameref{<id>}: Pone el nombre de la sección/figura/etc. a la que se refiere.
  • \pageref{<id>}: Pone el número de página de la sección/figura/etc. a la que se refiere.

E.g.:

\section{Introducción}\label{sec:introduccion}

...

Como mencioné en la Sección \ref{sec:introduccion}, \textit{\nameref{sec:introduccion}}...

Notas a pie de página

Se usa el comando \footnote{...}. Se enumeran automáticamente.

Figuras

La clase uc3mreport provee el formato general de las figuras.

Lo más recomendable es que cada imagen vaya acompañada de una leyenda, o caption, que vayan numeradas, y que sea referenciable.

Veamos un ejemplo rápido para insertar una imagen raster (PNG, JPG), aquí lo tienes:

\begin{figure}[htb]
  \centering
  \includegraphics[width=0.8\textwidth]{figura.png}
  \caption{Mi figura}
  \label{fig:figura}
\end{figure}

Los parámetros más importantes son los siguientes:

  • Localización (parámetro del entorno figure). Lo más recomendable es usar htb, el cual intenta colocar la figura en el mejor sitio, buscando que esté o aproximadamente aquí (here), al principio de la siguiente página (top), o al final de la siguiente página (bottom). Si quieres que la figura aparezca exactamente en este punto del texto, usa H.

Note

También se puede hacer uso de \FloatBarrier (del paquete placeins) para prevenir que cualquier imagen pase de ese punto. En esta plantilla, ninguna imagen pasará de la sección en la que se ha incrustado.

  • Tamaño (parámetro width de \includegraphics). Escala la figura hasta el tamaño especificado. Lo más recomendable es que sea un porcentaje del ancho del texto, por ejemplo, un 80% con width=0.8\textwidth.
  • Path del archivo (argumento de \includegraphics). Esto indica dónde está localizado el archivo. En caso de haber configurado \graphicspath (lo cual es recomendable), la ruta es relativa a esa carpeta. En este caso, sería figura.png.
  • Caption. La leyenda de la figura. Pon aquí el texto que quieras, el cual también se verá reflejado en el índice de figuras en caso de existir. En caso de querer un texto diferente en el índice, usa \caption[<texto del índice>]{<texto del documento>}.
  • Label. Crea una referencia a la figura, la cual se puede luego usar para referenciar la figura, por ejemplo usando Figura \ref{fig:figura}. Es recomendable siempre referenciar las figuras en el texto, sobre todo si se usa una localización no exacta. Más información en el apartado Referencias

Figuras vectoriales

Para insertar imágenes SVG, usa \includesvg en lugar de \includegraphics, el cual es parte del paquete svg (incluído en la clase).

Note

Si la imagen SVG contiene texto, es recomendable usar el parámetro inkscapelatex=false para evitar que el texto de la imagen sea formateado por LaTeX.

E.g.:

\begin{figure}[htb]
  \centering
  \includesvg[inkscapelatex=false,width=0.8\textwidth]{figura.svg}
  \caption{Mi figura}
  \label{fig:figura}
\end{figure}

Note

Si el SVG viene de draw.io, recuerda quitar el wrapping y el texto formateado antes de exportarlo. Más información aquí.

Sub-figuras

El paquete subcaption incluye el entorno subfigure, para crear distintas sub-figuras dentro de la misma figura. Puedes especificar el tamaño de cada sub-figura, y lo recomendable es dejar el tamaño de las imágenes dentro de cada figura en el tamaño de línea (\linewidth).

Por ejemplo, para tener dos figuras una al lado de la otra:

\begin{figure}[htb]
  \centering
  \begin{subfigure}{.45\textwidth}
    \includegraphics[width=\linewidth]{fig1.png}
    \caption{Una cosa}
    \label{fig:fig1}
  \end{subfigure}
  \begin{subfigure}{.45\textwidth}
    \centering
    \includegraphics[width=\linewidth]{fig2.png}
    \caption{Otra cosa}
    \label{fig:fig2}
  \end{subfigure}
  \caption{Dos cosas}
\end{figure}

Tablas

Las tablas en LaTeX pueden llegar a ser algo complicadas. Si no quieres comerte la cabeza, puedes usar un generador de tablas como Tables Generator.

La estructura general de una tabla es la siguiente:

\begin{table}
    \centering
    \begin{tabular}{lr}
        \toprule
        Nombre  &  País    \\
        \midrule
        Carlos  &  España  \\
        Pierre  &  Francia \\
        \bottomrule
    \end{tabular}
    \caption{Nombres}
    \label{tab:nombres}
\end{table}
  • Se usa \centering para centrar la tabla
  • En el primer parámetro del entorno tabular es donde se especifican las columnas. En el ejemplo anterior, esto sería lr.
    Cada columna es representada por una letra, indicando su alineado, izquierda (l), derecha (r), o centrado (c). También se puede especificar el ancho de la columna (manteniendo el centrado) con M{<ancho>}, e.g. M{0.5cm}.
    Para añadir líneas entre columnas, se usa el caracter | en el mismo argumento, e.g. |l|r|.
  • Dentro del entorno tabular se especifican las filas de la tabla. Se delimitan los elementos de cada columna con el caracter &, y con \\ se especifica el fin de la columna.
    También se pueden añadir líneas horizontales, como son \hline o \toprule, \midrule y \bottomrule (del paquete booktabs).
  • Se le puede añadir una leyenda, en el entorno table, al igual que en las imágenes. Y por supuesto se pueden etiquetar.
  • Para hacer notas a pie de página desde las tablas, usa \tablenote (del paquete tablefootnote).

También puedes optar por usar el paquete threeparttable para generar tus tablas, el cual las organiza de una forma ligeramente distinta.

Ecuaciones

LaTeX tiene un modo «matemátcias» donde se pueden introducir fórmulas matemáticas. Por ejemplo la fórmula (x + 1)² = x² + 2x + 1. Para introducirla en LaTeX se puede poner la fórmula entre signos de dólar estadounidense ($).

La fórmula $(x + 1)^2 = x^2 + 2x + 1$ es muy utilizada.

Cuando se compila, se redenriza como:

La fórmula (x + 1)² = x² + 2x + 1 es muy utilizada.

En este caso, la fórmula está en la misma línea que el resto del texto (inline math mode). Otras formas de entrar en modo mates en la misma línea es usando:

  • $ ... $
  • \( ... \)
  • \begin{math} ... \end{math}

Pero la primera y la segunda, son las más utilizadas.

También se puede poner centrada en la siguiente línea, utilizando:

  • $$ ... $$
  • \[ ... \]
  • \begin{equation} ... \end{equation}

La única diferencia es que \begin{equation} numera la fórmula. Por ejemplo:

La fórmula

\[ (x + 1)^2 = x^2 + 2x + 1 \]

es muy utilizada.

Se renderiza como:

La fórmula

   (x + 1)² = x² + 2x + 1
   
es muy utilizada.

Y con \begin{equation}

La fórmula

\begin{equation}
   (x + 1)^2 = x^2 + 2x + 1
\end{equation}

es muy utilizada.

Se renderiza como:

La fórmula

   (x + 1)² = x² + 2x + 1                             (1)
   
es muy utilizada.

Símbolos matemáticos

Los símbolos +, =, <, > o - se pueden utilizar tal cual. Pero con LaTeX tenemos mucha más flexibilidad. Unos cuantos ejemplos:

  • · es \cdot
  • es \ne, es \le, es \ge
  • α es \alpha, β es \beta, γ es \gamma...
  • Γ es \Gamma, Δ es \Delta, Θ es \Theta...

Una forma y sencilla de buscar el símbolo que quieras es esta herramienta en línea. Dibujas el símbolo y te dice cómo https://detexify.kirelabs.org/classify.html

Fracciones, superíndices y subíndices

Para introducir una fracción se usa \frac{numerador}{denominador}.

El superíndice se hace con el acento circunflejo ^. Si hay más de un símbolo en el exponente. Para que pille todos hay que rodearlos entre llaves ({}). Por ejemplo:

  • : x^2
  • x⁴²: x^{42}
  • x⁴2: x^42

Para el subíndice se usa el guion bajo _ y se comporta igual que el superíndice. Se puede poner subíndice y superíndice:

  • xi2: x_i^2

Si se usa con el símbolo de integral \int, de sumatorio \sum o productorio \prod:

  • i=1n i = n · (n + 1): 2\sum_{i=1}^n i = n \cdot (n + 1)

Bloques de código

Organización del código

Nadie quiere tener un sólo archivo .tex de 2.000 líneas... ¿verdad?

LaTeX te permite separar cómodamente el contenido de tu documento en distintos archivos. Para ello, es recomendable usar el paquete import.

Incluír un archivo desde otro directorio es tan simple como usar \includefrom{subdir/}{file.tex}, o \import{subdir/}{file.tex} (para usar del mismo directorio, basta con dejar el primer argumento vacío, e.g. \import{}{file.tex})).

Note

La principal diferencia entre \includefrom e \import es que \includefrom compila los distintos archivos de forma separada, y los reutiliza si no han cambiado, reduciendo considerablemente el tiempo de compilación al hacer cambios en documentos grandes. Sin embargo, debido a esto, \includefrom siempre añade los contenidos del archivo en una página nueva, mientras que \import no.

Es recomendable organizar tu código de la siguiente manera:

report/
├─ img/
├─ parts/
│  ├─ introduction.tex
│  ├─ development.tex
│  ├─ conclusions.tex
├─ report.tex
├─ references.bib
├─ uc3mreport.cls

Y, en report.tex, incluír los archivos dentro del entorno report:

\begin{report}
  \includefrom{parts/}{introduction.tex}
  \includefrom{parts/}{development.tex}
  \includefrom{parts/}{conclusions.tex}
  ...
\end{report}

Macros

Las macros son pequeñas funciones que puedes definir y usar a lo largo de tu código. Son útiles para automatizar cosas, o añadir funcionalidades. Los paquetes de LaTeX están llenos de ellas.

Se definen con \newcommand, e.g.:

\newcommand{\helloworld}{Hello, world!}

La macro anterior incluiría el texto Hello, world! en el sitio donde la llames con \helloworld.

Las macros también admiten argumentos. Especificas el número de argumentos entre corchetes en la definición:

\newcommand{\hello}[2]{Hello, #1 and #2!}

La macro ahora toma dos parámetros, los cuales son sustituídos por el #1 (primer argumento) y el #2 (segundo argumento), al llamarla con \hello{Jose}{Pepe}, lo que resultaría en Hello, Jose and Pepe!.

También puedes especificar argumentos opcionales, los cuales tienen un valor por defecto:

\newcommand{\hello}[3][Hello]{#1, #2 and #3!}

El argumento opcional es siempre el primero, en el caso anterior sería Hello. Para sobreescribir el opcional, lo especificamos entre corchetes: \hello[Hola]{Jose}{Pepe}, lo que resultaría en Hola, Jose and Pepe!.

Bibliografía

Para añadir referencias y bibliografía en LaTeX se usa el paquete biblatex. Ésta plantilla está configurada para seguir el estilo IEEE.

Éste paquete te permite usar archivos .bib para guardar todas las referencias, y para cargarlo necesitas especificarlo con \addbibresource{<file>}. Después, puedes imprimir la bibliografía con \printbibliography. En report.tex tienes esto ya preparado para ser configurado.

Tip

Si no quieres incluír bibliografía, borra estas secciones de report.tex

Añadir referencias

Las referencias se guardan en el .bib. Hay distintos tipos de referencias, dependiendo de lo que estés referenciando, pero en general siguen la misma estructura:

@book{cicero45finibus,
  author         = {Cicero, Marcus Tullius},
  title          = {De Finibus Bonorum Et Malorum},
  year           = {45 BCE}
  ...
}

Lo primero es el tipo de referencia, lo cual afecta a cómo se pondrá en la bibliografía. Luego viene la key, o el ID por el que haremos la referencia en el texto. Después vienen los distintos parámetros. Rellena los que puedas y borra el resto.

Tip

En references.bib tienes plantillas para los tipos de referencias más usados: libros (book), artículos (article), páginas web (online), y estándares IEEE (techreport).

Tip

Muchos recursos, como Google Scholar o la biblioteca de la UC3M te permiten exportar las referencias directamente en formato BibTeX, para poder pegarlas directamente en references.bib.

Tip

Muchos artículos publicados online cuentan con un DOI, un identificador global. Es recomendable rellenar esta propiedad cuando la encuentres, puesto que permite acceder cómodamente a ellos.

Citar

En el texto, se cita con \cite{key}, incluyendo la key del elemento a citar.

Tip

\cite usa el estilo de cita por defecto del documento. Si quieres usar uno específico, tienes \parencite y \supercite.
Si quieres incluír el texto en tu cita, usa \textcquote{key}{text}.

Apéndices

Usa el entorno appendices para definir tus apéndices. Para cada apéndice, usa una \section.

VS Code

Algunas extensiones útiles:

Important

Si estás usando esta extensión, por favor añade el parámetro -shell-escape (ver LaTeX Workshop FAQ)

Tip

Puedes habilitar el conteo de palabras estableciendo latex-workshop.wordcount a onSave en los ajustes. Más información aquí.

  • LTeX+: Corrector ortográfico.

Tip

Puedes cambiar el idioma del corrector a través del parámetro ltex.language en la configuración de VS Code

Ejemplos

Aquí te dejamos algunos ejemplos de memorias hechas con esta plantilla: