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

vestland picture vestland · Jul 2, 2015 · Viewed 7.5k times · Source

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.

Answer

vestland picture vestland · Jul 4, 2015

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.