pander
pander copied to clipboard
add support for bookdown table references
As per the bookdown docs at https://bookdown.org/yihui/bookdown/tables.html:
If you decide to use other R packages to generate tables [in
bookdown], you have to make sure the label for the table environment appears in the beginning of the table caption in the form(\#label)(again, label must have the prefixtab:).
And as others also noticed (see related tickets below), the standard markdown table caption requires an extra reference so that bookdown can pick it up.
Please note that I'm not familiar with bookdown and especially not with bookdwown internals, so would love to get some help from the community here. Eg we have
- to figure out if
panderis called within abookdowndocument OR add an extra optional argument inpandoc.tableandpander - add the extra
(\\#tab:foobar)prefix in the table caption - come up with what to write instead of
foobar
@yihui, can you help out with some pointers on how to do this properly?
Related tickets and questions:
- #258: referencing tables within a markdown document
- #291: using captions in a bookdown document
- SO 45651426: missing table numbers when using
panderinbookdown
I have found that maybe pander can know about if it called from within bookdown is by checking knitr::opts_knit$get('bookdown.internal.label').
The other issue is how to label the tables. My take would be to automatically number them as table-1, table-2,...
Any thoughts?
Poking through the code of knitr::kable, it looks like generating the labels from the chunk title is pretty straightforward and only takes a few lines of code, plus a call to create_label(). @yihui would it be inappropriate to just take those few lines from the source of kable() and put them in the appropriate part of pander()? Could pander just call knitr::create_label() rather than recreating its own copy of that function?