pander icon indicating copy to clipboard operation
pander copied to clipboard

add support for bookdown table references

Open daroczig opened this issue 8 years ago • 2 comments

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 prefix tab:).

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 pander is called within a bookdown document OR add an extra optional argument in pandoc.table and pander
  • 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 pander in bookdown

daroczig avatar Aug 13 '17 22:08 daroczig

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?

lselzer avatar Feb 15 '18 18:02 lselzer

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?

connorp avatar Aug 03 '19 18:08 connorp