-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
This question was originally posted on Stack Overflow and was recommended for a feature request here.
By default, bookdown formats figure and table captions as with a colon (:
) between the figure/table number and the caption:
Figure 2.1: Here is a nice figure!
As noted by Yihui on Stack Overflow, this is hardcoded by bookdown in parse_fig_labels()
.
Lines 647 to 672 in 5782b2f
switch(type, fig = { | |
if (length(grep('^<p class="caption', content[i - 0:1])) == 0) { | |
# remove these labels, because there must be a caption on this or | |
# previous line (possible negative case: the label appears in the alt | |
# text of <img>) | |
labs[[i]] = character(length(lab)) | |
next | |
} | |
labs[[i]] = paste0(label_prefix(type), num, ': ') | |
k = max(figs[figs <= i]) | |
content[k] = paste(c(content[k], sprintf('<span id="%s"></span>', lab)), collapse = '') | |
}, tab = { | |
if (length(grep('^<caption', content[i - 0:1])) == 0) next | |
labs[[i]] = sprintf( | |
'<span id="%s">%s</span>', lab, paste0(label_prefix(type), num, ': ') | |
) | |
}, eq = { | |
labs[[i]] = sprintf('\\tag{%s}', num) | |
k = max(eqns[eqns <= i]) | |
content[k] = sub( | |
'(<span class="math display")', sprintf('\\1 id="%s"', lab), content[k] | |
) | |
}, { | |
labs[[i]] = paste0(label_prefix(type), num, ' ') | |
}) | |
} |
It would be nice to be able to control the separator (e.g., use a .
or <br/>
if we wanted the figure/table number and caption on separate lines).
Relatedly (but maybe a separate issue), it would also be useful to be able to apply CSS to figure/table numbers and captions separately (e.g., bold figure number and italic caption, as required by APA).
Currently, figure captions are all inside a single paragraph tag (e.g., Figure 2.1 here), so it's not possible to apply styling to the elements separately.
<p class="caption">
Figure 2.1: Here is a nice figure!
</p>
Tables put the table number inside a <span>
, so it's possible to style the two pieces separately with CSS in HTML output.
<caption>
<span id="tab:nice-tab">Table 2.1: </span>
Here is a nice table!
</caption>
For both figure and table captions in LaTeX output, the {caption} package can be used to apply styling to the individual pieces, as well as set the separator.
By filing an issue to this repo, I promise that
- I have fully read the issue guide at https://yihui.org/issue/.
- I have provided the necessary information about my issue.
- If I'm asking a question, I have already asked it on Stack Overflow or RStudio Community, waited for at least 24 hours, and included a link to my question there.
- If I'm filing a bug report, I have included a minimal, self-contained, and reproducible example, and have also included
xfun::session_info('bookdown')
. I have upgraded all my packages to their latest versions (e.g., R, RStudio, and R packages), and also tried the development version:remotes::install_github('rstudio/bookdown')
. - If I have posted the same issue elsewhere, I have also mentioned it in this issue.
- I have learned the Github Markdown syntax, and formatted my issue correctly.
I understand that my issue may be closed if I don't fulfill my promises.