Bioconductor R Markdown format is build on top of R package bookdown (Xie, Allaire, and Grolemund 2018), which in turn relies on rmarkdown and pandoc to compile the final output document. Therefore, unless you are using RStudio, you will need a recent version of pandoc (>= 1.17.2). See the pandoc installation instructions for details on installing pandoc for your platform.
To enable the Bioconductor style in your R Markdown vignette you need to:
Edit the DESCRIPTION
file by adding
VignetteBuilder: knitr
Suggests: BiocStyle, knitr, rmarkdown
Specify BiocStyle::html_document
or
BiocStyle::pdf_document
as output format and add vignette
metadata in the document header:
---
title: "Vignette Title"
author: "Vignette Author"
package: PackageName
output:
BiocStyle::html_document
vignette: >
%\VignetteIndexEntry{Vignette Title}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
The vignette
section is required in order to instruct
R how to build the vignette.1 The package
field which should
contain the package name is used to print the package version in the
output document header. It is not necessary to specify date
as by default the document compilation date will be automatically
included. See the following section for details on specifying author
affiliations and abstract.
BiocStyle’s html_document
and pdf_document
format functions extend the corresponding original rmarkdown
formats, so they accept the same arguments as html_document
and pdf_document
, respectively. For example, use
toc_float: true
to obtain a floating TOC as in this
vignette.
Apart from the default markdown engine implemented in the rmarkdown package, it is also possible to compile Bioconductor documents with the older markdown v1 engine from the package markdown. There are some differences in setup and the resulting output between these two engines.
To use the markdown vignette builder engine:
Edit the DESCRIPTION
file to include
VignetteBuilder: knitr
Suggests: BiocStyle, knitr
Specify the vignette engine in the .Rmd
files
(inside HTML comments)
<!--
%% \VignetteEngine{knitr::knitr}
-->
Add the following code chunk at the beginning of your
.Rmd
vignettes
```{r style, echo = FALSE, results = 'asis'}
BiocStyle::markdown()
```
The way of attaching CSS files when using markdown
differs from how this is done with rmarkdown.
In the former case additional style sheets can be used by providing them
to the BiocStyle::markdown
function. To include
custom.css
file use
```{r style, echo = FALSE, results = 'asis'}
BiocStyle::markdown(css.files = c('custom.css'))
```
Abstract can be entered in the corresponding field of the document front matter, as in the example below.
---
title: "Full title for title page"
shorttitle: "Short title for headers"
author: "Vignette Author"
package: PackageName
abstract: >
Document summary
output:
BiocStyle::pdf_document
---
The shorttitle
option specifies the title used in
running headers instead of the document title.2
BiocStyle introduces the following macros useful when referring to R packages:
Biocpkg("IRanges")
for Bioconductor
software, annotation and experiment data packages, including a link to
the release landing page or if the package is only in devel, to the
devel landing page, IRanges.
CRANpkg("data.table")
for R packages
available on CRAN, including a link to the FHCRC CRAN mirror landing
page, data.table.
Githubpkg("rstudio/rmarkdown")
for R
packages available on GitHub, including a link to the package
repository, rmarkdown.
Rpackage("MyPkg")
for R packages that are
not available on Bioconductor, CRAN or GitHub;
MyPkg.
These are meant to be called inline, e.g.,
`r Biocpkg("IRanges")`
.
The line length of output code chunks is set to the optimal width of
typically 80 characters, so it is not neccessary to adjust it manually
through options("width")
.
BiocStyle comes with three predefined figure sizes. Regular figures not otherwise specified appear indented with respect to the paragraph text, as in the example below.
In addition to regular figures, BiocStyle provides small and
wide figures which can be specified by fig.small
and
fig.wide
code chunk options. Wide figures are left-aligned
with the paragraph and extend on the right margin, as Figure
@ref(fig:wide). Small figures are meant for possibly rectangular plots
which are centered with respect to the text column, see Figure
@ref(fig:small).
Alt (alternative) text is used by screen readers to provide a
description of an image to visually impaired readers. If you provide a
figure caption with fig.cap
the same text will
automatically be used as the alt text for the image. However, if you
want to include an image without a caption, or you wish to provide
different information in the alt text to the caption, this can be done
via the fig.alt
code chunk option. As an example, the code
chunk below was used to include the first image shown in this section,
so that its intention could be conveyed to someone using a screen
reader.
```{r no-cap, fig.alt="A default sized example figure without a caption."}
plot(cars)
```
You may also want to consider the color palette used in your figures,
to ensure they are accessible to color impaired readers.
BiocStyle doesn’t provide a specific color palette, but many
options are available in packages from CRAN. There have also been significant
efforts made to improve the default colors provided by
palette()
in R-4.0.0. Bioconductor contains some domain
specific packages that focus on color blind friendly visualizations
e.g. dittoSeq
for single-cell and bulk RNA-sequencing data.
Like figures, tables with captions will also be numbered and can be
referenced. The caption is entered as a paragraph starting with
Table:
6, which may appear either before or after
the table. When adding labels, make sure that the label appears at the
beginning of the table caption in the form (\#tab:label)
,
and use \@ref(tab:label)
to refer to it. For example, Table
@ref(tab:table) has been produced with the following code.
Fruit | Price
------- | -----
bananas | 1.2
apples | 1.0
oranges | 2.5
: (\#tab:table) A simple table. With caption.
Fruit | Price |
---|---|
bananas | 1.2 |
apples | 1.0 |
oranges | 2.5 |
The function knitr::kable()
will automatically generate
a label for a table environment, which is the chunk label prefixed by
tab:
, see Table @ref(tab:mtcars).
mpg | cyl | disp | hp | drat | wt | qsec | vs | |
---|---|---|---|---|---|---|---|---|
Mazda RX4 | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 |
Mazda RX4 Wag | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 |
Datsun 710 | 22.8 | 4 | 108.0 | 93 | 3.85 | 2.320 | 18.61 | 1 |
Hornet 4 Drive | 21.4 | 6 | 258.0 | 110 | 3.08 | 3.215 | 19.44 | 1 |
Hornet Sportabout | 18.7 | 8 | 360.0 | 175 | 3.15 | 3.440 | 17.02 | 0 |
Valiant | 18.1 | 6 | 225.0 | 105 | 2.76 | 3.460 | 20.22 | 1 |
Duster 360 | 14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 |
Merc 240D | 24.4 | 4 | 146.7 | 62 | 3.69 | 3.190 | 20.00 | 1 |
Merc 230 | 22.8 | 4 | 140.8 | 95 | 3.92 | 3.150 | 22.90 | 1 |
Merc 280 | 19.2 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.30 | 1 |
To number and reference equations, put them in equation environments
and append labels to them following the syntax
(\#eq:label)
7, e.g.,
\begin{equation}
f\left(k\right) = \binom{n}{k} p^k\left(1-p\right)^{n-k}
(\#eq:binom)
\end{equation}
renders the equation below.
You may then refer to Equation @ref(eq:binom) by
\@ref(eq:binom)
. Note that in HTML output only labeled
equations will appear numbered.
Apart from referencing figures (Section @ref(figures)), tables
(Section @ref(tables)), and equations (Section @ref(equations)), you can
also use the same syntax \@ref(label)
to reference
sections, where label
is the section ID. By default, Pandoc
will generate IDs for all section headers, e.g.,
# Hello World
will have an ID hello-world
. In
order to avoid forgetting to update the reference label after you change
the section header, you may also manually assign an ID to a section
header by appending {#id}
to it.
When a referenced label cannot be found, you will see two question marks like @ref(non-existing-label), as well as a warning message in the R console when rendering the document.
Footnotes are displayed as side notes on the right margin8, which has the advantage that they appear close to the place where they are defined.
If you wish to include a list of references you can use the special
section title # References
9, and provide a bibtex
file in the vignette header. A list of all references used in the text
will be automatically inserted after this heading. By default the
references section will continue the section level numbering used
throughout the document. To suppress the numbering, as seen in this
vignette, you can use the Bookdown syntax for unnumbered
sections e.g. {-}
or {.unnumbered}
.
Everything after the list of references will be considered as
appendices. See below for an example of the formatting change.
For more details on how to include a bibliography please see the
relevant chapter of bookdown.org.
Here is the output of sessionInfo()
on the system on
which this document was compiled running pandoc 3.2.1:
## R version 4.4.2 (2024-10-31)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.1 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so; LAPACK version 3.12.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=C
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## time zone: Etc/UTC
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] BiocStyle_2.35.0
##
## loaded via a namespace (and not attached):
## [1] digest_0.6.37 R6_2.5.1 fastmap_1.2.0
## [4] xfun_0.49 maketools_1.3.1 cachem_1.1.0
## [7] knitr_1.49 htmltools_0.5.8.1 rmarkdown_2.29
## [10] buildtools_1.0.0 lifecycle_1.0.4 cli_3.6.3
## [13] sass_0.4.9 jquerylib_0.1.4 compiler_4.4.2
## [16] sys_3.4.3 tools_4.4.2 evaluate_1.0.1
## [19] bslib_0.8.0 yaml_2.3.10 BiocManager_1.30.25
## [22] jsonlite_1.8.9 rlang_1.1.4
\VignetteIndexEntry
should match the
title
of your vignette↩︎
only relevant to PDF output↩︎
for PDF output it will be placed in a floating figure environment↩︎
for cross-references to work the chunk label may only contain alphanumeric characters (a-z, A-Z, 0-9), slashes (/), or dashes (-)↩︎
do not forget the leading backslash!↩︎
or just :
↩︎
due to technical constraints equation labels must start
with eq:
↩︎
this is a side note entered as a footnote↩︎
it must be exactly this!↩︎