Skip to contents

This function is called automatically by knitr to display a flextable in R Markdown and Quarto documents. You do not need to call it directly.

Supported output formats: HTML, Word (docx), PDF and PowerPoint (pptx). For other formats (e.g., github_document, beamer_presentation), the table is rendered as a PNG image.

Usage

# S3 method for class 'flextable'
knit_print(x, ...)

Arguments

x

a 'flextable' object, see flextable-package to learn how to create 'flextable' object.

...

unused.

Getting started

No special setup is needed: place a flextable object in a code chunk and it will be rendered in the output document.

Add a caption with set_caption():

ft <- set_caption(ft, caption = "My table caption")

In Quarto documents, use chunk options tbl-cap and label instead:

```{r}
#| label: tbl-mytable
#| tbl-cap: "My table caption"
ft
```

Captions

Recommended method: use set_caption() to define the caption directly on the flextable object. When set_caption() is used, chunk options related to captions are ignored.

Alternative (R Markdown only): use knitr chunk options tab.cap and tab.id:

DescriptionChunk optionDefault
Caption texttab.capNULL
Caption id/bookmarktab.idNULL
Caption on top of the tabletab.topcaptionTRUE
Caption sequence identifiertab.lp"tab:"
Word style for captionstab.cap.styleNULL

Bookdown: cross-references use the pattern \@ref(tab:chunk_label). The usual bookdown numbering applies.

Quarto: cross-references use @tbl-chunk_label. To embed cross-references or other Quarto markdown inside flextable cells, use as_qmd() with the flextable-qmd extension (see use_flextable_qmd()).

Chunk options

Use knitr::opts_chunk$set(...) to set defaults for the whole document.

All formats:

  • ft.align: table alignment, one of 'left', 'center' (default) or 'right'.

HTML:

  • ft.htmlscroll: TRUE or FALSE (default) to enable horizontal scrolling. See set_table_properties() for finer control.

Word:

  • ft.split: allow rows to break across pages (TRUE by default).

PDF:

  • ft.tabcolsep: space between text and cell borders (default 0 pt).

  • ft.arraystretch: row height multiplier (default 1.5).

  • ft.latex.float: floating placement. One of 'none' (default), 'float', 'wrap-r', 'wrap-l', 'wrap-i', 'wrap-o'.

PowerPoint:

  • ft.left, ft.top: top-left coordinates of the table placeholder in inches (defaults: 1 and 2).

Word with officedown

When using officedown::rdocx_document(), additional caption options are available:

DescriptionChunk optionDefault
Numbering prefixtab.cap.pre"Table "
Numbering suffixtab.cap.sep": "
Title number depthtab.cap.tnd0
Caption prefix formattingtab.cap.fp_textfp_text_lite(bold=TRUE)
Title number / table number separatortab.cap.tns"-"

Quarto

flextable works natively in Quarto documents for HTML, PDF and Word.

The flextable-qmd Lua filter extension enables Quarto markdown inside flextable cells: cross-references (@tbl-xxx, @fig-xxx), bold/italic, links, math, inline code and shortcodes. See as_qmd() and use_flextable_qmd() for setup instructions.

PDF limitations

The following properties are not supported in PDF output: padding, line_spacing and row height. Justified text is converted to left-aligned.

To use system fonts, set latex_engine: xelatex in the YAML header (the default pdflatex engine does not support them).

See add_latex_dep() when caching flextable results.

PowerPoint limitations

PowerPoint only supports fixed table layout. Use autofit() to adjust column widths. Images inside table cells are not supported (this is a PowerPoint limitation).

HTML note

HTML output uses Shadow DOM to isolate table styles from the rest of the page.

Examples

if (FALSE) { # \dontrun{
library(rmarkdown)
if (pandoc_available() &&
  pandoc_version() > numeric_version("2")) {
  demo_loop <- system.file(
    package = "flextable",
    "examples/rmd",
    "demo.Rmd"
  )
  rmd_file <- tempfile(fileext = ".Rmd")
  file.copy(demo_loop, to = rmd_file, overwrite = TRUE)
  render(
    input = rmd_file, output_format = "html_document",
    output_file = "demo.html"
  )
}
} # }