From 281d3d001ca8b44b5076fab3cdb9c2dac67c45e9 Mon Sep 17 00:00:00 2001 From: Marco Colombo Date: Sun, 11 Jan 2026 11:20:03 +0100 Subject: [PATCH 1/2] Report the LaTeX error from stderr when build_manual() fails. This parses the stderr text for the "LaTeX Error:" line and reports it if it's found. --- R/build-manual.R | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/R/build-manual.R b/R/build-manual.R index 0c9112db2..4b041e50d 100644 --- a/R/build-manual.R +++ b/R/build-manual.R @@ -17,7 +17,10 @@ build_manual <- function(pkg = ".", path = NULL) { ), fail_on_status = TRUE, stderr = "2>&1", spinner = FALSE), error = function(e) { cat(e$stdout) - cli::cli_abort("Failed to build manual") + msg <- regmatches(e$stderr, + regexpr("LaTeX Error:.*", e$stderr, perl = TRUE)) + cli::cli_abort(c("x" = msg, + "!" = "Failed to build manual")) }) cat(msg$stdout) From b54eafd40b08a587e3f1ac555e4fa254bd6f342a Mon Sep 17 00:00:00 2001 From: Marco Colombo Date: Mon, 12 Jan 2026 23:17:31 +0100 Subject: [PATCH 2/2] Print the entire stderr buffer in case of error. --- R/build-manual.R | 6 ++---- R/utils.R | 7 +++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/R/build-manual.R b/R/build-manual.R index 4b041e50d..923a703b1 100644 --- a/R/build-manual.R +++ b/R/build-manual.R @@ -14,12 +14,10 @@ build_manual <- function(pkg = ".", path = NULL) { "--force", paste0("--output=", path, "/", name), pkg$path - ), fail_on_status = TRUE, stderr = "2>&1", spinner = FALSE), + ), fail_on_status = TRUE, spinner = FALSE), error = function(e) { cat(e$stdout) - msg <- regmatches(e$stderr, - regexpr("LaTeX Error:.*", e$stderr, perl = TRUE)) - cli::cli_abort(c("x" = msg, + cli::cli_abort(c("x" = no_wrap(e$stderr), "!" = "Failed to build manual")) }) diff --git a/R/utils.R b/R/utils.R index 3ea06488a..105a2c7d1 100644 --- a/R/utils.R +++ b/R/utils.R @@ -44,3 +44,10 @@ is_testing <- function() { is_rstudio_running <- function() { !is_testing() && rstudioapi::isAvailable() } + +# Suppress cli wrapping +no_wrap <- function(x) { + x <- gsub(" ", "\u00a0", x, fixed = TRUE) + x <- gsub("\n", "\f", x, fixed = TRUE) + x +}