Search code examples
rlatexrstudioknitrxtable

How to suppress automatic table name and number in an .Rmd file using xtable or knitr::kable?


I'd like to name my tables from R scripts without the automatic Table 1:... prefix when using xtable() or knitr::kable() in an .Rmd file. Output is a pdf document.

Here's a reproducible example from an .Rmd file:

---
title: "Suppress automatic table name and number"
output: pdf_document
---

```{r myirischunk, results = 'asis', tab.cap = NULL, echo = TRUE}
library(xtable)

print(knitr::kable(head(iris), caption = "I sure wish it would say Table    1.a"))
print(knitr::kable(head(iris), caption = "Please stop"))
print(xtable(head(iris), caption = "Same thing with xtable"))
```

I've seen similar questions with some suggestions here, but I can't seem to get it to work in an .Rmd file.


Solution

  • It turns out that I needed to add the following in the YAML section:

    header-includes:
        - \usepackage{caption}
    

    AND the following somewhere before the code chunk:

    \captionsetup[table]{labelformat=empty}
    

    Now it works:

    ---
    title: "Suppress automatic table name and number"
    output: pdf_document
    header-includes:
        - \usepackage{caption}
    ---
    
    \captionsetup[table]{labelformat=empty}
    
    ```{r myirischunk, results = 'asis', tab.cap = NULL, echo = TRUE}
    print(knitr::kable(head(iris), caption = "Table 21.a - My very own table name"))
    ```
    

    This has also been described here:

    Get rid of captions using texreg in markdown

    And yes, I'm a bit embarrased that I didn't find that answer straight away.

    Anyway, thanks to daroczig for pointing me in the tex direction instead of trying to solve the problem using chunk options or something like that.