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 …
- Los objetos pueden no existir cuando se escribe una parte del mismo.
- En documentos muy largos o compuestos por varios subdocumentos puede ser muy complejo enlazar.
Cuando utilizamos una etiqueta para definir al objeto a enlazar:
No es necesario que realmente exista, puede que la figura esté por realizar y, que incluso termine por descartase.
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, ejemplochap:conclusiones
sec
: para captítulos, ejemplosec:introConclusiones
subsec
: para captítulos, ejemplosubsec:resultadosMetA
tab
: para tablas, ejemplotab:consumoRegiones
fig
: para figuras, ejemplofig:ajusteModeloConsumo
eq
: para ecuaciones, ejemploeq:modeloParabolico
app
: para apéndice, ejemploapp: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.
```{r iris5p, echo=FALSE, message=FALSE}
kable( iris[ 1:5, ],
caption = "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:
(ref:irispe) Encabezado de la tabla con los ~~cinco~~ **tres** primeros elementos de iris (el encabezado debe estar en una sola línea).
```{r irispe, echo=FALSE, message=FALSE}
kable( iris[ 1:3, ],
caption = "(ref:irispe)" )
```
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:
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:
```{r bookdownLogo, echo=FALSE, fig.align='center', fig.cap="El logo del proyecto bookdown."}
include_graphics( "bookdownLogo.png" )
```
Lo que proporciona el siguiente resultado:
Cuando trabajamos con bookdown
:
(ref:bookdownLogo) El logo del proyecto bookdown.
```{r bookdownLogo, echo=FALSE, fig.align='center', fig.cap='(ref:bookdonwLogo)'}
include_graphics( "bookdownLogo.png" )
```
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.
\begin{equation}
f\left(k\right) = \binom{n}{k} p^k\left(1-p\right)^{n-k}
(\#eq:binomial)
\end{equation}
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]\tag{2.2} y
para la [relatividad]\tag{2.1} ...
... tenemos la ecuación para la distribución binomial \@ref(eq:binomial)
para la relatividad \@ref(eq:relatividad) ...
… 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.
```{example, name="Un ejemplito.", label="ejemplito"}
Un ejemplo completito se puede encontrar en el libro ...
Cuando uses estos recursos ten en cuenta:
1. No abusar de ellos.
2. ...
```
Ejemplo 2.1 (Un ejemplito.) Un ejemplo completito se puede encontrar en el libro … Cuando uses estos recursos ten en cuenta:
- 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.