diff --git a/DESCRIPTION b/DESCRIPTION index cf711e5a..767690ed 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: flextable Type: Package Title: Functions for Tabular Reporting -Version: 0.9.6.006 +Version: 0.9.6.007 Authors@R: c( person("David", "Gohel", role = c("aut", "cre"), email = "david.gohel@ardata.fr"), diff --git a/NEWS.md b/NEWS.md index e2ef601d..3864d497 100644 --- a/NEWS.md +++ b/NEWS.md @@ -12,6 +12,7 @@ loops or `if` statements. ## Issues - fix issue with `as_image()` when the table contains no text. +- fix font instruction issue with PDF and quarto # flextable 0.9.5 diff --git a/R/latex_str.R b/R/latex_str.R index bb4ed534..c8b30204 100644 --- a/R/latex_str.R +++ b/R/latex_str.R @@ -432,6 +432,11 @@ get_pdf_engine <- function() { rd <- grep("--pdf-engine", pandoc_args) if (length(rd)) { engine <- pandoc_args[rd + 1] + } else if (is_in_quarto()) { + engine <- rmarkdown::metadata$`pdf-engine` + if (is.null(engine) || engine == "") { + engine <- "xelatex" + } } else { engine <- "pdflatex" } diff --git a/tests/testthat/test-latex.R b/tests/testthat/test-latex.R index 48f65aa5..0302f020 100644 --- a/tests/testthat/test-latex.R +++ b/tests/testthat/test-latex.R @@ -7,3 +7,25 @@ test_that("white spaces are protected", { str <- flextable:::gen_raw_latex(ft) expect_true(grepl("{\\ }", str, fixed = TRUE)) }) + + +test_that("fonts are defined in latex", { + gdtools::register_liberationsans() + ft <- flextable::flextable(head(cars, n = 1)) |> + flextable::font(fontname = "Liberation Sans", part = "body") + + # R Markdown with pdflatex + knitr::opts_knit$set("quarto.version"=NULL) + latex_str <- flextable:::gen_raw_latex(ft, quarto = FALSE) + expect_no_match(latex_str, regexp = "Liberation Sans", fixed = TRUE) + + knitr::opts_knit$set("rmarkdown.pandoc.args"= c("--pdf-engine", "xelatex")) + latex_str <- flextable:::gen_raw_latex(ft, quarto = FALSE) + expect_match(latex_str, regexp = "Liberation Sans", fixed = TRUE) + knitr::opts_knit$set("rmarkdown.pandoc.args"= NULL) + + # quarto + knitr::opts_knit$set("quarto.version"=1) + latex_str <- flextable:::gen_raw_latex(ft, quarto = TRUE) + expect_match(latex_str, regexp = "Liberation Sans", fixed = TRUE) +})