Notxor tiene un blog

Defenestrando la vida

Minicurso de LaTeX para psicólogos III

2021-03-26

Hasta ahora hemos trabajado un poco con LaTeX, he hablado de sus ventajas e inconvenientes, hemos trasteado con las fuentes y, espero, que hayamos visto que el león no es tan fiero como lo pintan. Por otro lado, aún nos quedan un montón de cosas que ver y un largo camino que recorrer. En esta entrega del minicurso hablaré de los enlaces e hipervínculos tanto internos como externos. También veremos algo sobre entornos y la colocación o desplazamiento de objetos sobre la página.

Los avances que vayamos haciendo en nuestro fichero de prueba los podéis ir comprobando si le echáis un ojo a:

Enlaces

En la pasada entrega ya vimos cómo manejaba LaTeX la posibilidad de realizar referencias a objetos de la estructura interna del documento. Podemos citar el apartado o figura o tabla que queremos explicar por su numeración de forma sencilla. Esto es facilitarnos la vida, pero ya que estamos generando un archivo pdf que posiblemente se lea por pantalla, es posible que quieras hacerlo navegable, es decir: poder habilitar enlaces donde poder pinchar y que nos lleve a esa localización de forma cómoda.

Como puedes suponer, y como vengo diciendo en las anteriores entregas, para conseguir estos enlaces pinchables hay que instalar un paquete.

\usepackage{hyperref}

Poniendo la instrucción anterior en el preámbulo de nuestro documento esos enlaces se generan solos cuando utilizamos el comando \ref o \pageref. Cuando pasemos el cursor en pantalla sobre esas referencias, cambiará de forma indicando que se puede pinchar ahí.

Captura-pantalla_enlaces-coloraos.png

¡Eh! Han aparecido unos rectángulos horribles en el índice. Sí, y no sólo en el índice, sino también en todas las referencias internas que haya en el documento. No debes alarmarte, al imprimir en papel no se muestran, es sólo un efecto que delimita las áreas donde se puede pinchar y no afecta a la calidad de impresión. Si queremos utilizar el documento sólo para difundirlo de manera electrónica, es recomendable quitar ese horror visual. Para ello hay una opción hidelinks que podemos utilizar así:

\usepackage[hidelinks]{hyperref}

Esa opción lo que hace es que se muestren los enlaces como texto normal, sin el horrible rectángulo rojo. Sin embargo, al pasar por encima el cursor, éste seguirá cambiando de forma e indicando que se puede pinchar sobre él1. Otra forma de eliminar ese horrible recuadro rojo es utilizar la opción [colorlinks=true], que suele ser lo mejor si pensamos que el documento se distribuirá en su formato electrónico y no impreso.

\usepackage[colorlinks=true]{hyperref}

Con esa opción lo que hace hyperref es colorear el texto:

Captura-pantalla_color-texto-enlaces.png

Ahora, en lugar de un recuadro rojo, tenemos todo el texto de ese color. ¿Se puede cambiar? Por supuesto. De momento lo podemos hacer a un color estándar como blue, pero aprovecharé para mostrar más opciones de configuración de hyperref. Y como esas opciones se harían la importación del paquete un pequeño suplicio, éste provee un comando de configuración que podemos utilizar. Por ejemplo:

\usepackage{hyperref}       % Habilitación de enlaces
\hypersetup{                % Configuración de los enlaces y el pdf
   breaklinks=true,
   colorlinks=true,
   linkcolor=blue,
   citecolor=green,
   filecolor=cyan,
   pdfauthor={Notxor},
   pdftitle={Documento básico de ejemplo},
   pdfkeywords={latex, tutorial},
   pdflang={Spanish},
   pdfpagemode={UseOutLines},
   pdfpagelayout={OneColumn}}

Todas esas opciones que figuran en el comando \hypersetup, podrían ponerse como opciones a la hora de cargar el paquete \hyperref pero harían que la lectura de esas opciones nos confundiera. Al separar la carga de la configuración ganamos en claridad para el ojo humano. He puesto muchas opciones que además las podemos dividir en dos grupos. El primero grupo se refiere al aspecto de los enlaces:

  • beaklinks=true habilita la posibilidad de que los enlaces puedan dividirse entre dos líneas. Por defecto no es así y si un enlace cae al final de una línea se mostrará en una línea escribiendo en el margen o incluso perdiéndose fuera de la página.
  • colorlinks=true habilita el uso de colores para los enlaces, como ya habíamos visto antes.
  • linkcolor define el color con el que se mostrarán los colores de los enlaces normales.
  • citecolor define el color de los enlaces de las citas bibliográficas.
  • filecolor define el color de los enlaces a ficheros externos.

El siguiente grupo de opciones se refiere a las opciones para definir en el fichero pdf generado. Algunas son opciones para los metadatos del mismo, pero otras nos permiten controlar cómo queremos que una herramienta de visualización lo abra:

  • pdfauthor nos permite establecer quién es el autor del documento, se puede proporcionar una lista separada por comas.
  • pdftitle nos permite establecer el título en los metadatos del fichero.
  • pdfkeywords estable etiquetas en los metadatos que pueden facilitar su búsqueda por herramientas externas.
  • pdflang permite establecer el idioma del fichero.
  • pdfpagemode permite establecer que cuando se abra el fichero con el visor correspondiente nos permita navegar por el índice, o muestre una lista de miniaturas, etc.
  • pdfpagelayout indica al visor de documento si debe mostrar el documento en dos columnas, o en una, o como una colección de miniaturas, etc.

Todas esas opciones, y más, están perfectamente explicadas en la documentación del paquete hyperref y no está de más leerla.

Otros enlaces

El paquete nos proporciona más funcionalidades que vamos a repasar en este apartado. Por ejemplo, nos permite crear un enlace a cualquier label que tengamos definida en el documento. La sintaxis es muy sencilla:

\hyperref[etiqueta]{texto del enlace}

Por ejemplo, podemos llamar a las etiquetas que tenemos definidas en nuestro documento de pruebas de la siguiente manera:

\section{Enlaces}

Desde cualquier sitio podemos enlazar otras secciones utilizando el
comando \verb|\hyperref|. Por ejemplo, podemos
\hyperref[sec:fuentes]{referenciar una sección} y también
\hyperref[tab:fuentes]{referenciar una tabla}.

El resultado en nuestro documento será algo así:

Captura-pantalla_enlaces-random.png

Como se puede apreciar, nos marca en azul2 los enlaces.

Como hemos visto, al importar el paquete hyperref todas las referencias se nos convierten automáticamente en enlace. Es posible que no queramos que sea así, es decir: queremos que se muestren correctamente las referencias a la página o al elemento, pero no queremos generar el consiguiente enlace. Para ello, el paquete hyperref nos proporciona los comandos \ref* y \pageref* que funcionan de manera idéntica a sus homólogos generales. Para verlo en nuestro ejemplo vamos a añadir el siguiente texto en nuestro documento de pruebas:

En este caso podemos referenciar la sección \ref*{sec:fuentes} en la
página \pageref*{sec:fuentes} pero se generan los enlaces
correspondientes.

Al visualizar el resultado vemos que aunque las referencias están correctamente escritas, no hay enlace, ni coloreado ni oculto.

Captura-pantalla_referencias-sin-enlace.png

Normalmente necesitamos enlazar a secciones, tablas o figuras de nuestro documento, pero también es posible que nos interese crear un enlace a cualquier sitio del documento que no sea una cabecera. hyperref nos proporciona un mecanismo para hacerlo de forma sencilla. Podemos utilizar dos comandos que al funcionar de manera conjunta nos proporcionan esa funcionalidad:

\hypertarget{etiqueta}{texto}
proporciona un lugar al que queremos llegar desde cualquier otro lugar del fichero.
\hyperlink{etiqueta}{texto}
produce el enlace a la etiqueta que esté definida por \hypertarget.

Pues vamos a ello: ¡Más madera para nuestro fichero de ejemplo!:

% [...]
% Al final del apartado de «Estructura y enlaces internos he añadido
Me interesa enlazar este punto de aquí \hypertarget{un-enlace}{para
enlazarlo desde cualquier parte del archivo}. Por ejemplo, he creado
una \emph{etiqueta} para poder enlazar a esta zona del fichero.
% [...]

\section{Enlaces}

Desde cualquier sitio podemos enlazar otras secciones utilizando el
comando \verb|\hyperref|. Por ejemplo, podemos
\hyperref[sec:fuentes]{referenciar una sección} y también
\hyperref[tab:fuentes]{referenciar una tabla}.

En este caso podemos referenciar la sección \ref*{sec:fuentes} en la
página \pageref*{sec:fuentes} pero se generan los enlaces
correspondientes.

También puedo enlazar cualquier parte del fichero utilizando los
comandos \verb|\hypertarget| e \verb|\hyperlink| y por eso puedo
enlazar \hyperlink{un-enlace}{cualquier lugar}.

El resultado es:

Captura-pantalla_hyperlinks.png

También se pueden enlazar contenidos en la web con el comando de sintaxis:

\href[opciones]{URL}{texto}

He añadido para probarlo el siguiente texto al final del apartado de enlaces:

Llamar a ficheros externos es realmente fácil utilizando el comando
\verb|\href| como por ejemplo
\href{https://notxor.nueva-actitud.org}{este blog}. Podéis encontrar
más información
\href{https://ctan.javinator9889.com/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf}{en este enlace}.
También podemos abrir ficheros:

\href{./texto-prueba.tex}{Este mismo fichero en el editor por defecto}.

Se puede apreciar que no sólo se pueden llamar URLs que estén en la web, también podemos enlazar archivos externos que estén en el path de nuestro pdf. Tened en cuenta que si eso es así, es posible que nuestro enlace no funcione si no se encuentra el archivo enlazado.

Captura-pantalla_enlaces-externos.png

Estos enlaces aparecen coloreados en magenta. Se puede configurar también el color en las opciones del paquete hyperref. Para más detalles, como siempre, os remito a la documentación del paquete.

Notas al pie

Una de las funcionalidades más habituales de las referencias y es una de las cosas que LaTeX sabe manejar muy bien. En realidad, las notas al pie no necesitan que sepas nada sobre enlaces, las hace LaTeX de manera automágica. Simplemente tienes que escribir lo que quieras como parámetro de un comando \footnote{...} y aparecerá en nuestro pie de página lo que escribamos, que pueden ser párrafos enteros, tablas, imágenes, cualquier elemento LaTeX. Si no cabe en el pie de página se expandirá por los pies de las páginas siguientes. Aunque es raro que se necesite hacer aclaraciones tan largas, es posible.

Para acabar con los enlaces\footnote{En este caso no se acaba con los
enlaces, nos falta hablar de los índices de \emph{palabras clave} que lo
dejo para otra entrega:

No se puede tener todo...} hablo de los pies de página.

Podemos ver el resultado del código anterior en la siguiente imagen:

Captura-pantalla_nota-al-pie.png

También se pueden hacer anotaciones en el margen, pero dejo esta peculiaridad para que lo investiguéis... no estaréis esperando que lo cuente todo en esta introducción a LaTeX.

Entornos

Un entorno es todo lo que coloquemos entre una etiqueta \begin{...} y una etiqueta \end{...}. Por supuesto, las dos etiquetas deben ser del mismo tipo. Hay múltiples y numerosos entornos que tienen varios efectos sobre cómo se muestra el contenido. Por supuesto, estos entornos se pueden anidar unos dentro de otros. Por ejemplo, todo nuestro documento se encuentra contenido entre etiquetas \begin{document} y \end{document} y dentro de éstas se pueden abrir todos los entornos que se quiera. Sólo hay que recordar que se deben cerrar los entornos internos antes que los externos, de manera que un entorno debe estar contenido completamente por su entorno maestro o padre.

De alineación

Hay entornos que nos permiten desplazar nuestro texto y alinearlo de las tres maneras habituales: izquierda, centro y derecha. Para ello utilizaremos entornos que responden a las opciones flushleft, center y flushright, respectivamente. Para ilustrar cómo funcionan estos entornos he escrito el siguiente código:

\section{Entornos}

\subsection{Entornos de alineación}

\begin{flushleft}
  Este párrafo estará alineado \fbox{a la izquierda}\\
  las líneas se ajustarán, como deben, al margen\\
  de ese lado.
\end{flushleft}
\hrule
\begin{center}
  Este párrafo mostrará sus \fbox{líneas centradas} en el\\
  espacio destinado al texto.\\
  cada una de las líneas centradas, independientemente\\
  de su longitud.
\end{center}
\hrule
\begin{flushright}
  Por último, podemos alinear todo nuestro texto\\
  \fbox{a la derecha} como está este párrafo.

  Incluso si hay varios párrafos\\
  mantendrá la alineación.
\end{flushright}

En el código anterior he introducido el comando \hrule para separar visualmente los entornos mediante una línea horizontal. Dicho código hace lo siguiente:

Captura-pantalla_entornos-alineacion.png

En este apartado incluiré también el entorno minipage. Este entorno nos permite dividir el ancho de la página en distintas páginas o recuadro, espacio horizontal o como lo quieras llamar. Como puede ser un poco confuso explicar así en vacío a qué nos referimos con esto, mejor lo explico sobre un ejemplo:

Hay veces que conviene poder dividir el ancho del texto en
\emph{trozos} más pequeños que nos permitan jugar un poco con el
diseño de la página

\vspace{0.3cm}
\begin{minipage}[c]{0.4\linewidth}
  \begin{center}
    \fbox{\Huge{\LaTeXe}}    
  \end{center}
\end{minipage}
\hfill
\begin{minipage}[c]{0.5\linewidth}
  El texto de la izquierda está hecho con la instrucción
  \verb|\fbox{\Huge{\LaTeXe}}| para ilustrar el funcionamiento del
  entorno \texttt{minipage}.
\end{minipage}
\vspace{0.3cm}

Los entornos \texttt{minipage} son excelentes amigos para ello. Pero
sólo sirve para zonas pequeñas. Si deseamos que el diseño de varias
columnas se mantenga entre páginas, es mejor utilizar el paquete
\texttt{multicolumn}.

He enmarcado las migipage con párrafos normales para poder comparar entre las dos formas. El entorno minipage reserva tanto espacio vertical como necesite la minipágina más alta. La alineación vertical se controla con el parámetro a la hora de definir las minipáginas. En este caso, ambas están alineadas verticalmente en el centro con el parámetro c. También se pueden alinear arriba con t (top) o en la parte baja con b (bottom). El último dato es el ancho, que lo podemos definir directamente con Ncm como en muchos otros sitios. En este caso he preferido dividirlo en función del ancho de la línea: la primera página es el 40% del ancho del texto, mientras que la segunda es el 50%.

Además, he preferido separar ambas minipáginas con un espacio de tres milímetros del párrafo anterior y del posterior, utilizando el comando \vspace{0.3cm}. También, como el ancho total de las dos minipáginas es el 90% de la línea, entre ambas he añadido una instrucción \hfill para rellenar con blanco el espacio entre las minipáginas.

El resultado del código anterior lo podemos visualizar aquí:

Captura-pantalla_minipaginas.png

Entornos de lista

Otros entornos importantes en nuestros documentos son las listas, que podemos definir de tres tipos: enumeraciones, lista de ítem y descripciones. Por supuesto hay más tipos, pero con esos tres vamos a ver lo básico:

  1. Las listas numeradas las conseguimos con el entorno enumerate.
  2. Las listas de ítems las hacemos con el entorno itemize.
  3. Con el entorno description la definición \item recibe un parámetro que es el término que describimos en el cuerpo.
  4. En cualquier otro entorno poner un parámetro al ítem modifica su entorno y muestra como símbolo el contenido de ese parámetro.
  5. Se pueden anidar varias listas, pero sólo hasta una profundidad de cuatro. Si se intentan anidar más, LaTeX dará un error.

El siguiente código muestra todos estos aspectos:

\subsection{Entornos de lista}

\begin{enumerate}
\item Listas numeradas:

  \begin{enumerate}
    \item Uno
    \item Dos Otra lista más interna
      \begin{enumerate}
      \item Uno
      \item Dos
      \item Tres
        \begin{enumerate}
        \item Uno
        \item Dos
        \item Tres
        \end{enumerate}
      \end{enumerate}
    \item Tres
    \end{enumerate}

\item Listas sin numerar:
  \begin{itemize}
    \item Uno
    \item[$\bullet$] Dos
    \item[$\spadesuit$] Tres
  \end{itemize}

\item Lista de descripciones:
  \begin{description}
  \item[Uno] Este es el uno.
  \item[Dos] Este es el dos.
  \item[Tres] Este es el tres.
  \end{description}
\end{enumerate}

El resultado es el siguiente:

Captura-pantalla_listas.png

Por supuesto, hay más cosas que referentes a las listas. Se puede modificar, por ejemplo, el aspecto de la numeración, utilizar números romanos o letras o definir las etiquetas a nuestro gusto. Pero esas acciones implican, o bien, la inclusión de otros paquetes o la definición de macros. Un aspecto sobre el que aún no he hablado y que reservo para más adelante, cuando ya estemos más habituados a su funcionamiento.

Entornos de estilo

Llamo entorno de estilo a aquel que modifique el aspecto del texto que contiene. Por ejemplo, el entorno quote nos permite citar brevemente a otros autores de forma sencilla y LaTeX modificará el aspecto del texto para que quede remarcado que pertenece a otro autor.

Aparte del entorno quote existe otro muy similar llamado quotation. La diferencia fundamental entre ambos es que quotation soporta citas largas que se pueden desplegar en varias páginas incluso. Otro detalle entre ambos, es que el primero no utiliza sangrías en la primera línea, lo que puede hacer confuso encontrar un párrafo atendiendo sólo a su margen izquierdo.

Otros entornos que podríamos describir en este apartado serían verbatim y verse. Ya había hablado del comando \verb, el entorno verbatim proporciona una manera sencilla de visualizar comandos de LaTeX o también nos puede servir para incluir algo de código de programación en nuestro documento. No abundaré mucho sobre ésto, porque es un minicurso para psicólogos y, de todas formas, existen mejores maneras de introducir el código en el documento. Pero haré también una pequeña referencia al entorno verse. Este entorno nos proporciona una buena manera de escribir, como su nombre indica, versos.

A modo de resumen y lo que está por venir

En resumen, sigo necesitando más espacio para lo que quiero hablar. Como se puede apreciar lo que se puede hablar sólo con lo básico de LaTeX es muy amplio. Si a eso añadimos la complejidad que pueden aportar el manejo de paquetes, podría estar escribiendo cientos de artículos y no se agotaría el tema.

En la próxima entrega quiero hablar sobre entornos flotantes, como las figuras y las tablas. Sin que sirva de precedente incluiré un paquete que se llama longtables que como su nombre indica nos sirve para definir tablas que pueden ocupar más de una página. Lo incluyo, porque es habitual encontrar en textos de psicología con grandes tablas donde se ordenan de alguna manera diversos conceptos y para hacer eso, se necesita ese paquete.

Os recuerdo que en la introducción de este artículo hay enlace a los ficheros TeX y PDF con los ejemplos.

Footnotes:

1

El cambio de cursor depende de la aplicación que utilicemos para leer el pdf y es posible que las aplicaciones más sencillas no lo muestren, o incluso no puedan utilizar el enlace por no tener habilitada esa característica.

2

Recuerda que cambiamos el color de los enlaces en el punto anterior, si no lo hiciste puede que te aparezca en rojo.

Categoría: latex

Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en Mastodon y en Diaspora con el nick de Notxor.

También se ha abierto un grupo en Telegram, para usuarios de esa red.

Disculpen las molestias.