knitr / rmarkdown / Latex: ¿Cómo hacer referencias cruzadas de figuras y tablas?
Estoy tratando de hacer referencias cruzadas de figuras y tablas en un PDF producido con knitr / rmarkdown. Hay algunas preguntas sobre SO y tex.stackexchange (aquí yaquí, por ejemplo), que sugieren que la forma de hacer esto en línea es agregar\ref{fig:my_fig}
, dóndemy_fig
es la etiqueta del fragmento. Sin embargo, cuando lo intento en mirmarkdown
documento, me sale??
donde debe estar el número de la figura. Me gustaría saber cómo hacer que las referencias cruzadas funcionen correctamente.
Un ejemplo reproducible está abajo. Hay dos archivos: elrmarkdown
archivo más unheader.tex
archivo que he incluido solo en caso de que afecte la respuesta (aunque tengo el mismo problema si incluyo elheader.tex
archivo o no).
En elrmarkdown
En el archivo hay tres ejemplos de referencias cruzadas. El ejemplo 1 es una figura para la cual falla la referencia cruzada (??
se muestra en lugar del número de la figura). También hay un segundo intento comentado (basado enesta respuesta SO), donde intento configurar el entorno, la etiqueta y el título de la figura conlatex
marcado antes y después del fragmento, pero esto da como resultado unpandoc
error cuando trato de tejer el documento. El error es:
! Missing $ inserted.
<inserted text>
$
l.108 ![](testCrossRef_
El ejemplo 2 usaxtable
y trabajos de referencias cruzadas. El ejemplo 3 usakable
y la referencia cruzada falla.
Se incluye una captura de pantalla de la salida en PDF al final de esta publicación.
rmarkdown
archivo---
title: |
| My Title
author: |
| eipi10
| Department of Redundancy Department
date: "`r format(Sys.time(), '%B %e, %Y')`"
output:
pdf_document:
fig_caption: yes
includes:
in_header: header.tex
keep_tex: yes
fontsize: 11pt
geometry: margin=1in
graphics: yes
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message=FALSE, warning=FALSE, fig.height=2, fig.width=4)
```
# Example 1. Figure
This is a report. Take a look at Figure \ref{fig:fig1}.
```{r fig1, echo=FALSE, fig.cap="This is a caption"}
plot(mtcars$wt, mtcars$mpg)
```
<!-- Now, let's take a look at this other plot in Figure \ref{fig:fig2}. -->
<!-- \begin{figure} -->
<!-- ```{r fig2, echo=FALSE} -->
<!-- plot(mtcars$cyl, mtcars$mpg) -->
<!-- ``` -->
<!-- \caption{This is another caption} -->
<!-- \label{fig:fig2} -->
<!-- \end{figure} -->
# Example 2: `xtable`
Some more text. See Table \ref{tab:tab1} below.
```{r echo=FALSE, results="asis"}
library(xtable)
print.xtable(
xtable(mtcars[1:3,1:4], label="tab:tab1", caption="An xtable table"),
comment=FALSE)
```
# Example 3: `kable`
Some more text. See Table \ref{tab:tab2} below.
```{r tab2, echo=FALSE}
library(knitr)
kable(mtcars[1:3,1:4], caption="A `kable` table")
```
header.tex
archivo% Caption on top
% https://tex.stackexchange.com/a/14862/4762
\usepackage{floatrow}
\floatsetup[figure]{capposition=top}
\floatsetup[table]{capposition=top}
Salida PDF