figure captions, references using knitr and markdown to html

前端 未结 5 781
迷失自我
迷失自我 2020-12-05 04:00

I\'m writing an Rmd file, to be processed by knitr into HTML. It contains some R chunks that generate figures, which get stored as data URIs in HTML.

1) How do I add

相关标签:
5条回答
  • 2020-12-05 04:40
    1. You can create the figure numbers with a simple counter in R; see one example here. The problem is whether the markdown renderer will render the figure caption for you: R Markdown v1 won't, but v2 (based on Pandoc) will.
    2. I do not know. There is no direct way to insert a label as an identifier for figures, so it is probably not possible to cross reference figures with pure Markdown. Once you've got issues like this, think (1) do I really need it? (2) if it is intended to be a document with a complicated structure, I think it is better to use LaTeX directly (Rnw documents).
    0 讨论(0)
  • 2020-12-05 04:48

    I'm late to the party, but I wanted to mention a small package I recently built to do figure captioning and cross-referencing with knitr. It is called kfigr and you can install it using devtools::install_github('mkoohafkan/kfigr'). It is still in active development but the main functionality is there. Be sure to check out the vignette, it shows some usage examples and defines some hooks for figure captions and anchors (I may later choose to have the package import knitr and define those hooks on load).

    EDIT: kfigr is now available on CRAN!

    0 讨论(0)
  • 2020-12-05 04:53

    Also very late to the party I changed Yihuis suggestion here that he also linked above to do referencing.

    ```{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")`
    
    0 讨论(0)
  • 2020-12-05 05:00

    Another solution:

    https://github.com/adletaw/captioner

    From the 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)
    
    0 讨论(0)
  • 2020-12-05 05:02

    One way to do both of these is described here: http://rmflight.github.io/posts/2012/10/papersinRmd.html

    Another is described here (but I don't know if it does your #2). http://gforge.se/2014/01/fast-track-publishing-using-knitr-part-iii/

    0 讨论(0)
提交回复
热议问题