Referencias cruzadas

00R team

Enero 2019

1 Introducción

En la actualidad es posible realizar referencias cruzadas a los distintos elementos de un documento; tanto en \(\LaTeX\) como en R Markdown, e incluso en procesadores de texto tales como Word o Writer. Sin embargo, el modo de trabajar es totalmente distinto pues, en estos últimos, la referencia a un objeto se hace clicando sobre él; por contra los primeros usan un sistema de etiquetas.

Si analizamos las ventajas e inconvenientes del primer método vemos que en documentos cortos puede ser muy fácil, sólo tengo que clicar sobre el elemento y después …

Pero …

  1. Los objetos pueden no existir cuando se escribe una parte del mismo.
  2. En documentos muy largos o compuestos por varios subdocumentos puede ser muy complejo enlazar.

Cuando utilizamos una etiqueta para definir al objeto a enlazar:

  1. No es necesario que realmente exista, puede que la figura esté por realizar y, que incluso termine por descartase.

  2. Si deseo cambiar el contenido asociado a la etiqueta, solo tengo que hacerlo en la definición de la figura, no he de pensar en el resto del documento.

Si somos razonablemente cuidadosos, trabajar con etiquetas tiene muchas ventajas, y no te preocupes, mientras no exista el destino para la etiqueta en el texto tendrás un elegante mensaje de error. Dos interrogaciones en negrita: ??, nos avisan de que hay una etiqueta sin objeto asociado, por lo general un error al escribirla.

Como ya se ha dicho, markdown permite trabajar con referencias cruzadas, pero el esquema de trabajo de \(\LaTeX\) es mucho más potente y de esto se aprovecha muy bien la librería bookdown. Inicialmente vamos a utilizarla para libros, memorias o documentos largos, como veremos en el siguiente módulo; pero que también puede aprovecharse para documentos mas cortos como vamos a ver ahora.

Por otro lado, seguro que estas pensando en las referencias bibliográficas. Estas también son referencias cruzadas pero dadas sus diferencias apreciables las dejamos para un documento a parte (acceso).

2 Etiquetas para los apartados y secciones

Este procedimiento puede realizarse tanto con R Mardown o con la ayuda de bookdown. La diferencia está la posibilidad de utilizar la función \@ref(), como vamos a ver.

2.1 Apartados

Para etiquetar una sección o apartado definimos una etiqueta y la escribimos al final del título del apartado, entre llaves y precedida de #:

Este código proporciona un enlace interno (internal link) al que puedes referirte en el texto como a cualquier otro tipo del enlace:

Esto produce el siguiente texto:

    … tal como indicábamos en la introducción

Si clicamos sobre introducción iremos a la introducción de este documento.

Como cualquier otro tipo de enlace cabe hacer:


Veamos el mismo procedimiento con ayuda de bookdown; en este caso, cuando queremos referirnos en el texto a esta sección escribimos:

que devuelve

    … tal como se indica en la sección 1

Al clicar sobre este enlace iremos a la introducción de este documento.

Una buena práctica es anteponer palabras clave que identifican el tipo de elemento a la propia etiqueta. De este modo es posible distinguir fácilmente, con una misma etiqueta, tres enlaces diferentes. El truco consiste en separar la palabra clave de la propia etiqueta con dos puntos :. Por ejemplo, para la etiqueta areaEstudio podrías tener un apartado (sec:areaEstudio) y una figura (fig:areaEstudio), e incluso una tabla (tab:areaEstudio). Las claves más habituales para los distintos elementos son:

  • chap: para captítulos, ejemplo chap:conclusiones
  • sec: para captítulos, ejemplo sec:introConclusiones
  • subsec: para captítulos, ejemplo subsec:resultadosMetA
  • tab: para tablas, ejemplo tab:consumoRegiones
  • fig: para figuras, ejemplo fig:ajusteModeloConsumo
  • eq: para ecuaciones, ejemplo eq:modeloParabolico
  • app: para apéndice, ejemplo app:resultadosEncuesta

Veremos en los siguientes apartados como etiquetar (labeling) otros elementos.

2.2 Etiquetando las tablas

Cuando queremos añadir una tabla debemos tener en cuenta dos elementos asociados: la etiqueta y la cabecera de la tabla.

En R Markdown incluimos estos elementos dependiendo de la función que va a generar la tabla. El siguiente chunk nos proporcionará un ejemplo claro de tabla; desactivamos la visualización del código y los mensajes del sistema, tal como vimos en el módulo anterior.

Tabla 2.1: Encabezado de la tabla con los cinco primeros elementos de iris.
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa

Para referenciar la tabla en el texto lo hacemos:

que nos devuelve:

    … tal como muestra la tabla

Sin embargo, lo adecuado, es que se indique la referencia de la tabla, para ello, con bookdown escribimos:

que devuelve:

    … en la tabla 2.1 aparece …

Si recurrimos a bookdown el procedimiento es el siguiente:

Definimos la cabecera en una línea de texto externa al chunk, en una y solo una. La etiqueta del chunk es la etiqueta para referenciarlo. Automáticamente, determinará si es el chunk proporciona una tabla o una figura. El resultado:

Tabla 2.2: Encabezado de la tabla con los cinco tres primeros elementos de iris (el encabezado debe estar en una sola línea).
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa

Como en el caso anterior al citar en el documento tenemos que hacer uso de la función \@ref():

Consiguiendo el resultado deseado:

    … en la tabla 2.2 tenemos …

Cabe ser barroco como en el caso de los apartados.

2.3 Etiquetando las figuras

En el caso de las figuras procedemos de forma similar a las tablas, en el caso de R Markdown recurrimos a:

Lo que proporciona el siguiente resultado:

El logo del proyecto bookdown.

Figura 2.1: El logo del proyecto bookdown.

Cuando trabajamos con bookdown:

Como en los casos anteriores nos referimos a la figura mediante:

    … tal como refleja la figura del logo

Alternativamente con bookdown

    … en la figura 2.1 tenemos …

2.4 Ecuaciones

Aunque se recurra poco a ellas en muchos trabajos, en otros las ecuaciones son habituales. Para etiquetarlas y poder referirnos a ellas utilizamos:

que devuelve:

\[ E = m \cdot c ^ 2 \\ \tag{2.1}\]

la etiqueta se separa de la ecuación por \\ para facilitar la lectura. Alternativamente se puede utilizar la siguiente notación, pero no se visualiza la ecuación al vuelo en RStudio.

que nos devuelve como en el caso anterior la ecuación numerada:

\[\begin{equation} f\left(k\right) = \binom{n}{k} p^k\left(1-p\right)^{n-k} \tag{2.2} \end{equation}\]

Ahora podemos referirnos a estas ecuaciones como hemos visto en tablas y figuras:

   … tenemos la ecuación para la distribución binomial y para la relatividad

   … tenemos la ecuación para la distribución binomial (2.2) para la relatividad (2.1)

2.5 Otros

Muy de pasada citaremos los casos de ejemplos, teoremas, lemas, … para más información consulta en este enlace.

Ejemplo 2.1 (Un ejemplito.) Un ejemplo completito se puede encontrar en el libro … Cuando uses estos recursos ten en cuenta:

  1. No abusar de ellos.

Puesto que este tipo de elementos solo está disponible en bookdown lo citaremos ... en el ejemplo \@ref(exm:ejemplito) ... que nos devuelve: … en el ejemplo 2.1

3 Referencias en la práctica

Descarga el archivo editColaRefCruzadas.zip y abre el fichero ejemploRefCruzadas.Rmd. Este fichero reune todo lo necesario para analizar las distintas situaciones habituales en referencias cruzadas. Teje el documento y lee detenidamente el código. Usa versiones de los ejemplos en tus propios documentos. Da prioridad a etiquetar adecuadamente los apartados, tablas y figuras.