web-dev-qa-db-fra.com

légendes des figures, références utilisant knitr et démarquage en html

J'écris un fichier Rmd, qui sera traité par knitr en HTML. Il contient des morceaux R qui génèrent des chiffres, qui sont stockés sous forme d'URI de données en HTML.

1) Comment ajouter une légende à une telle image? J'aimerais avoir une légende qui dit quelque chose comme "Figure 3: bla bla bla", où le "3" est généré automatiquement.

2) Comment puis-je référencer plus tard cette image, c'est-à-dire "comme vous pouvez le voir sur la figure 3, bla bla".

37
Jack Tanner
  1. Vous pouvez créer les nombres des chiffres avec un simple compteur en R; voir n exemple ici . Le problème est de savoir si le rendu de démarque rendra la légende de la figure pour vous: R Markdown v1 ne le fera pas, mais v2 (basé sur Pandoc) le fera.
  2. Je ne sais pas. Il n'y a pas de moyen direct d'insérer une étiquette comme identifiant pour les chiffres, il n'est donc probablement pas possible de croiser les chiffres de référence avec Markdown pur. Une fois que vous avez des problèmes comme celui-ci, pensez (1) en ai-je vraiment besoin? (2) s'il est destiné à être un document avec une structure compliquée, je pense qu'il vaut mieux utiliser LaTeX directement (documents Rnw).
16
Yihui Xie

Je suis en retard à la fête, mais je voulais mentionner un petit paquet que j'ai récemment construit pour faire des sous-titres et des références croisées avec knitr. Il s'appelle kfigr et vous pouvez l'installer en utilisant devtools::install_github('mkoohafkan/kfigr'). Il est toujours en développement actif mais la fonctionnalité principale est là. N'oubliez pas de consulter la vignette, elle montre quelques exemples d'utilisation et définit certains crochets pour les légendes et les ancres des figures (je pourrai plus tard choisir que le package importe knitr et définisse ces crochets lors du chargement).

EDIT: kfigr est désormais disponible sur CRAN!

25
mikeck

Aussi très tard pour la fête, j'ai changé la suggestion de Yihuis ici qu'il a également lié ci-dessus pour faire du référencement.

```{r functions, include=FALSE}
# A function for captioning and referencing images
fig <- local({
    i <- 0
    ref <- list()
    list(
        cap=function(refName, text) {
            i <<- i + 1
            ref[[refName]] <<- i
            paste("Figure ", i, ": ", text, sep="")
        },
        ref=function(refName) {
            ref[[refName]]
        })
})
```
```{r cars, echo=FALSE, fig.cap=fig$cap("cars", "Here you see some interesting stuff about cars and such.")}
plot(cars)
```

What you always wanted to know about cars is shown in figure `r fig$ref("cars")`
11
user3355146

Une façon de faire les deux est décrite ici: http://rmflight.github.io/posts/2012/10/papersinRmd.html

Un autre est décrit ici (mais je ne sais pas s'il fait votre # 2). http://gforge.se/2014/01/fast-track-publishing-using-knitr-part-iii/

5
Tom

Une autre solution:

https://github.com/adletaw/captioner

Du README:

captioner() returns a captioner function for each set of figures, tables, etc. that you want to create. See the help files for more details.

For example:

> fig_nums <- captioner()

> fig_nums("my_pretty_figure", "my pretty figure's caption")

"Figure 1: my pretty figure's caption"

> fig_nums("my_pretty_figure", cite = TRUE)
2
Ed Hagen