tutorial the sheet guide examples español descargar definitive cheat r latex knitr r-markdown cross-reference

the - knitr/rmarkdown/Latex: ¿Cómo hacer referencias cruzadas de figuras y tablas?



r markdown tutorial pdf (2)

Estoy intentando hacer una referencia cruzada de figuras y tablas en un PDF producido con knitr / rmarkdown. Hay algunas preguntas sobre SO y tex.stackexchange ( here y here , por ejemplo), que sugieren que la forma de hacer esto en línea es agregar /ref{fig:my_fig} , donde my_fig es la etiqueta del fragmento. Sin embargo, cuando intento eso en mi documento rmarkdown , obtengo ?? donde debería estar el número de la figura. Me gustaría saber cómo hacer que las referencias cruzadas funcionen correctamente.

A continuación se muestra un ejemplo reproducible. Hay dos archivos: el archivo rmarkdown más un archivo header.tex que he incluido en caso de que afecte la respuesta (aunque tengo el mismo problema si header.tex archivo header.tex o no).

En el archivo rmarkdown hay tres ejemplos de referencias cruzadas. El ejemplo 1 es una figura para la cual fallan las referencias cruzadas (se muestra ?? en lugar del número de figura). También hay un segundo intento comentado (basado en here ), donde intento configurar el entorno, la etiqueta y el título de la figura con el marcado de latex antes y después del fragmento, pero esto produce un error de pandoc cuando intento tejer el documento. El error es:

! Missing $ inserted. <inserted text> $ l.108 ![](testCrossRef_

El ejemplo 2 utiliza xtable y trabajos de referencias cruzadas. El ejemplo 3 usa kable y las referencias cruzadas fallan.

Se incluye una captura de pantalla de la salida en PDF al final de esta publicación.

archivo rmarkdown

--- 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") ```

archivo header.tex

% Caption on top % https://tex.stackexchange.com/a/14862/4762 /usepackage{floatrow} /floatsetup[figure]{capposition=top} /floatsetup[table]{capposition=top}

Salida de PDF


Puede usar el formato de salida bookdown::pdf_document2 lugar de pdf_document , y la sintaxis para hacer referencia a una figura es /@ref(fig:chunk-label) ; Consulte la documentación para obtener más información: https://bookdown.org/yihui/bookdown/figures.html


Siguiendo no puedo generar / label {fig: mwe-plot} con knitr , al agregar /label{...} a los argumentos de los títulos , se producirán etiquetas en el archivo tex subyacente, es decir

```{r fig1, echo=FALSE, fig.cap="//label{fig:fig1}This is a caption"} plot(mtcars$wt, mtcars$mpg) ```

y

```{r tab2, echo=FALSE} library(knitr) kable(mtcars[1:3,1:4], caption="//label{tab:tab2}A `kable` table") ```