rmarkdown - r markdown tables
Referencia de fragmentos usando knitr, r markdown y pandoc(pander) (2)
¡¡Todo es posible!!
Por favor vea esta esencia que hace lo que usted describe. Simplemente guárdelo y tráquelo para verlo en acción ... Por alguna razón, Rpub no quiso publicarlo (error desconocido).
Las pruebas con la conversión del .html
generado por knitr a .pdf
través de pandoc también dieron como resultado enlaces de trabajo, ¡lo cual es una buena ventaja!
El caballo de batalla es:
```{r setup, echo=FALSE, results=''hide''}
chunkref <- local({
function(chunklabel) {
sprintf(''[%s](#%s)'', chunklabel, chunklabel )
}
})
secref <- local({
function(seclabel) {
sprintf(''[%s](#%s)'', seclabel, seclabel )
}
})
pgref <- local({
function(n)
sprintf(''[Page-%i](#Page-%i)'', n, n)
})
sec <- local({
function(seclabel) {
sprintf(''# <a name="%s"/> %s'', seclabel, seclabel )
}
})
pgcount <- local({
pg <- 0
function(inc=T) {
if( inc ) { pg <<- pg + 1 }
return( pg )
}
})
pganchor <- local({
function(doLabel=T) {
if( doLabel) {
sprintf(''/n-----/nPage-%i/n<a name="Page-%i"/>/n'', pgcount(inc=F), pgcount() )
} else {
sprintf(''/n<a name="Page-%i"/>/n'', pgcount() )
}
}
})
knit_hooks$set( anchor = function(before, options, envir) {
if ( before ) {
sprintf(''<a name="%s"/>/n'', options$label )
}
})
knit_hooks$set( echo.label = function(before, options, envir) {
if ( before ) {
sprintf(''> %s'', options$label )
}
})
knit_hooks$set( pgbreak = function(before, options, envir) {
if ( !before ) {
pganchor();
}
})
````
Lo que permite crear múltiples tipos de referencias ...
Inline: `r sec("Introduction")` then `r secref("Introduction")`
O
Como opciones de chunk:
```{r car-summary, echo=T, warning=FALSE, anchor=T, pgbreak=T, echo.label=F}`
entonces
`r chunkref("car-summary")`
Incluso los enlaces de la parte superior de la página y los marcadores y etiquetas de la parte inferior de la página ...
Estoy teniendo problemas tratando de hacer referencia a fragmentos dentro de un documento de rebajas que estoy tratando de convertir a .pdf usando pandoc.convert.
Si /label{mylabel}
en el texto, puedo hacer referencia a esto por /ref{mylabel}
. Sin embargo, pensé que podría ser capaz de referirme a un trozo (o tabla / figura dentro de un trozo) de manera similar, pero no tengo suerte.
Por ejemplo, para el trozo:
```{r myplot, echo=FALSE, warning=FALSE}
plot(cars)
```
Aunque podría ser capaz de poner /ref{myplot}
o /ref{fig:myplot}
o incluso una referencia de /ref{fig:myplot}
interna [car plot](myplot)
. La documentación parece mencionar que las etiquetas se crean en función del nombre del fragmento y estos son los formatos sugeridos en relación con preguntas similares. Pero ninguno parece funcionar.
De manera similar para las tablas (que creo usando pander), tengo partes como:
```{r car_sum}
library(pander)
car_summary<-summary(cars)
pander(car_summary, caption = "This is a summary of cars")
```
Cuando se convierte a .pdf desde el archivo .md usando ''pandoc.convert'', las tablas reciben un buen título ''Tabla 3 Este es un resumen de autos'' y están numerados, pero parece que no puedo usar la etiqueta como referencia /ref{car_sum}
y siempre se muestra como ''??''. Algunos foros parecen mencionar que debes incluir ''tab:'' o ''fig:'' antes del nombre de la etiqueta, pero esto todavía no funciona para mí.
¿Se puede hacer una referencia de fragmentos dentro del texto? Si es así, ¿qué se debe escribir para hacer esto correctamente para que funcione en el documento final y muestre algo como ''ver la Tabla 2''?
Solución más fácil para referirse a las figuras: ponga esto en el campo fig.cap
(doble //
para escapar de la primera /
):
fig.cap="//label{mylabel}Caption of my figure."
Luego, use /autoref{mylabel}
para referirse a la figura en el texto principal.
Estoy usando RStudio con Rmarkdown. Documento completo de RMD:
---
output: pdf_document
---
```{r fig.cap="//label{mylabel}Caption of my figure."}
plot(1)
```
The generated figure is /autoref{mylabel}.